Asegura tus puntos finales de GraphQL con Tyk en 5 minutos

Rate this content
Bookmark

Si tienes APIs de GraphQL existentes o planeas construirlas en el futuro, únete a nosotros para una sesión de 5 minutos en la que te mostraremos cómo asegurarlas rápidamente utilizando Tyk.

8 min
02 Jul, 2021

Video Summary and Transcription

Esta charla relámpago explora cómo asegurar los puntos finales de GraphQL utilizando Tyk, abordando problemas como la autorización, la seguridad del esquema y la protección contra ataques de denegación de servicio. Tyk proporciona funciones de seguridad completas sin necesidad de complementos adicionales. Admite varios modos de autenticación, límites de velocidad, limitación de tráfico y límites de profundidad de consulta. La demostración muestra cómo Tyk y GraphQL pueden asegurar fácilmente las APIs mediante la adición de encabezados de autorización, la restricción de acceso a campos específicos y la imposición de límites de profundidad de consulta.

Available in English

1. Introducción a la seguridad de los puntos finales de GraphQL

Short description:

En esta charla relámpago, exploraremos cómo asegurar tus puntos finales de GraphQL en cinco minutos utilizando Tyke. Abordaremos problemas como agregar autorización, asegurar el esquema y protegernos contra ataques de denegación de servicio. Tyke proporciona seguridad completa, eliminando la necesidad de complementos adicionales. Demostraremos el proceso asegurando la API de países de TrevorBlades a través del proxy de Tyke.

Mi nombre es Matt Tanner. Soy un evangelista de productos aquí en Tyke, y voy a guiarlos a través de esto.

Entonces, yendo directo al grano, dado que tenemos un tiempo limitado, veamos algunos problemas que vamos a resolver al asegurar GraphQL. El primero es agregar autorización. Agregar rápidamente mecanismos de autorización, asegurar el esquema, asegurándonos de que solo usuarios específicos tengan acceso a campos específicos, y también ver cómo protegernos contra ataques de denegación de servicio. ¿Cómo lo hacemos? Bueno, tenemos seguridad completa, que es una frase que nos gusta usar en Tyke para decir que todo lo que está dentro de nuestra puerta de enlace está incluido. No hay complementos ni nada de eso que necesites agregar. Y para eso, lo vamos a agregar directamente. Luego, como parte de eso, vamos a agregar permisos basados en campos para asegurar el esquema, y también vamos a agregar límites de profundidad de consulta para esos ataques de denegación de servicio.

Veamos cómo funciona. Vamos a ir directamente a ello. Voy a salir de esto. Y aquí estoy en el panel de control de Tyke. Lo primero que voy a hacer es mostrarte lo que quiero asegurar. Hay esta API de países de TrevorBlades, una API de GraphQL, que en este momento está completamente abierta. Y puedo acceder a ella. No hay seguridad, ningún tipo de seguridad en absoluto. Lo que voy a hacer es hacer un proxy a través de Tyke y luego asegurarlo usando Tyke. Voy a copiar esto. Esto es como si fuera tu API. Vienes a Tyke y vamos a APIs. Agregar nueva API. La voy a llamar countries. Es una API de GraphQL. Vamos a hacer un proxy a un servicio de GraphQL existente, y verás que tengo la URL de países de TrevorBlades ahí. Ahora, en este punto, aunque no lo creas, ya tenemos algo de autorización incorporada. Ahora hemos hecho un proxy a ella. Si voy al playground, que está integrado en Tyke, y ejecuto, si simplemente oculto esto aquí, ocultar controles de reunión. Si vengo aquí y copio esta consulta, y vuelvo aquí y ejecuto esta consulta, verás que dice que falta el campo de autorización.

2. Securing GraphQL Endpoints

Short description:

Soportamos varios modos de autenticación como tokens de autenticación, TLS mutuo, OAuth 2.0 y JOTS. Para acceder a la API, es necesario generar claves y crear una política. La política incluye configuraciones para limitar la velocidad, el throttle y la profundidad de la consulta. Se pueden establecer permisos basados en campos para restringir el acceso a campos específicos. Por último, se agregan claves a la política y se puede acceder al playground de proxy de GraphQL a través de la API.

¡Eso es genial! Eso significa que ya estamos aplicando un token de autenticación. ¿Dónde se especifica eso? Bueno, en nuestra configuración aquí abajo. Soportamos varias cosas diferentes, pero hoy vamos a usar tokens de autenticación solo por brevedad. También soportamos TLS mutuo, OAuth 2.0, JOTS, todos esos buenos modos de autenticación.

Para acceder a esto ahora, necesito generar algunas claves. Para tener claves, necesito crear una política. Vamos a guardar esto. Vamos a ir a políticas, que está aquí en la esquina. Agregar política. Voy a cubrir mi API de países. Vamos a ir a configuraciones aquí. Solo voy a llamar a esta política de países. Las claves que genero nunca van a caducar. Luego, voy a ir a derechos de acceso, y hay algunas cosas que vamos a hacer. Para establecer límites y cuotas por API, voy a activar esto. Esto nos permitiría aplicar límites de velocidad, throttle, cuotas de uso, todas esas cosas. No nos preocuparemos por eso hoy.

Lo que nos preocupa aquí es el límite de profundidad de consulta. Lo que voy a hacer es establecer la profundidad máxima de la consulta en cinco. Te lo demostraré en un momento. Con eso, ahora se aplicará. También voy a establecer permisos basados en campos para no permitir que ninguno de mis usuarios de esta política acceda. Como puedes ver, puedes ver todos los tipos disponibles a través de esta API, así como todos los campos individualmente. No quiero que tengan acceso al código de continente o al código de país. Luego voy a crear la política. Ahí vamos. La política ha sido creada, y ahora voy a ir a claves. Voy a agregar una clave para esta política, crear clave, y con eso, mi clave está creada. Ahora, si vuelvo a APIs, voy a abrir en una nueva pestaña, voy a ir a países, que es nuestro playground de proxy de GraphQL creado.

3. Securing APIs with Tyke and GraphQL

Short description:

Agregué un encabezado de autorización con nuestra clave para emitir la consulta. Después de eliminar el campo bloqueado, ejecuté la consulta y obtuve acceso a la API utilizando el token de autenticación. A continuación, demostré la restricción de código en el tipo continente y tipo país. Luego, mostré la limitación de profundidad de consulta ejecutando una consulta anidada. Finalmente, eliminé los campos restringidos y recibí datos. Sin embargo, cuando intenté ir un nivel más profundo y consultar los nombres de los países, se superó el límite de profundidad. Esto demuestra lo fácil que es asegurar las APIs con Tyke y nuestras características de GraphQL.

Recuerda nuevamente que no pudimos emitir esa consulta. Voy a agregar un encabezado de solicitud con un encabezado de autorización que incluye nuestra clave. Voy a volver y tomar nuestra consulta que teníamos y la pegaré aquí. Y ahora simplemente voy a quitar el código porque bloqueamos ese campo y quería que esto funcionara. Y voy a ejecutar esto. Y como puedes ver, ahora tenemos acceso a la API. Estoy usando ese token de autenticación para acceder a ella.

Ahora agreguemos nuestro código, al cual no tenemos acceso. Entonces, código de países y continente, no tenemos acceso a estos campos. ¿Qué sucede si intento acceder a ellos? El código está restringido en el tipo continente, así que si lo elimino, luego mi código está restringido en el tipo país y puedo quitar eso y listo. Y ahora podré hacer eso.

Y por último, lo que quiero mostrarte es una consulta anidada y voy a demostrar la limitación de profundidad de consulta que hemos establecido aquí. Pegar esto aquí. Como puedes ver, tengo algunas redundancias en la consulta. Hago eso. Oh, necesito volver aquí y ejecutar esto. ¿Me falta otro corchete? Debe ser eso. Ahí vamos. Bien. Como puedes ver, el campo código está restringido en el tipo continente, así que simplemente vamos a eliminar eso rápidamente. Código, código, código. Ahora ejecutamos esto y obtenemos algunos data de vuelta. Ahora, ¿qué sucede si agrego uno más aquí y digo, países. ¿Puedo hacer name y ejecutar esto? Límite de profundidad excedido. Ahora puedes ver que a nivel de la puerta de enlace, incluso sin ir a ese servicio backend, las cosas se están cortando y así de fácil es asegurar las APIs con Tyke y nuestras características de GraphQL. Eso es todo. Muchas gracias.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

GraphQL Galaxy 2021GraphQL Galaxy 2021
32 min
From GraphQL Zero to GraphQL Hero with RedwoodJS
Top Content
We all love GraphQL, but it can be daunting to get a server up and running and keep your code organized, maintainable, and testable over the long term. No more! Come watch as I go from an empty directory to a fully fledged GraphQL API in minutes flat. Plus, see how easy it is to use and create directives to clean up your code even more. You're gonna love GraphQL even more once you make things Redwood Easy!
Vue.js London Live 2021Vue.js London Live 2021
24 min
Local State and Server Cache: Finding a Balance
Top Content
How many times did you implement the same flow in your application: check, if data is already fetched from the server, if yes - render the data, if not - fetch this data and then render it? I think I've done it more than ten times myself and I've seen the question about this flow more than fifty times. Unfortunately, our go-to state management library, Vuex, doesn't provide any solution for this.For GraphQL-based application, there was an alternative to use Apollo client that provided tools for working with the cache. But what if you use REST? Luckily, now we have a Vue alternative to a react-query library that provides a nice solution for working with server cache. In this talk, I will explain the distinction between local application state and local server cache and do some live coding to show how to work with the latter.
GraphQL Galaxy 2022GraphQL Galaxy 2022
16 min
Step aside resolvers: a new approach to GraphQL execution
Though GraphQL is declarative, resolvers operate field-by-field, layer-by-layer, often resulting in unnecessary work for your business logic even when using techniques such as DataLoader. In this talk, Benjie will introduce his vision for a new general-purpose GraphQL execution strategy whose holistic approach could lead to significant efficiency and scalability gains for all GraphQL APIs.

Workshops on related topic

GraphQL Galaxy 2021GraphQL Galaxy 2021
140 min
Build with SvelteKit and GraphQL
Top Content
Featured WorkshopFree
Have you ever thought about building something that doesn't require a lot of boilerplate with a tiny bundle size? In this workshop, Scott Spence will go from hello world to covering routing and using endpoints in SvelteKit. You'll set up a backend GraphQL API then use GraphQL queries with SvelteKit to display the GraphQL API data. You'll build a fast secure project that uses SvelteKit's features, then deploy it as a fully static site. This course is for the Svelte curious who haven't had extensive experience with SvelteKit and want a deeper understanding of how to use it in practical applications.

Table of contents:
- Kick-off and Svelte introduction
- Initialise frontend project
- Tour of the SvelteKit skeleton project
- Configure backend project
- Query Data with GraphQL
- Fetching data to the frontend with GraphQL
- Styling
- Svelte directives
- Routing in SvelteKit
- Endpoints in SvelteKit
- Deploying to Netlify
- Navigation
- Mutations in GraphCMS
- Sending GraphQL Mutations via SvelteKit
- Q&A
React Advanced Conference 2022React Advanced Conference 2022
95 min
End-To-End Type Safety with React, GraphQL & Prisma
Featured WorkshopFree
In this workshop, you will get a first-hand look at what end-to-end type safety is and why it is important. To accomplish this, you’ll be building a GraphQL API using modern, relevant tools which will be consumed by a React client.
Prerequisites: - Node.js installed on your machine (12.2.X / 14.X)- It is recommended (but not required) to use VS Code for the practical tasks- An IDE installed (VSCode recommended)- (Good to have)*A basic understanding of Node.js, React, and TypeScript
GraphQL Galaxy 2022GraphQL Galaxy 2022
112 min
GraphQL for React Developers
Featured Workshop
There are many advantages to using GraphQL as a datasource for frontend development, compared to REST APIs. We developers in example need to write a lot of imperative code to retrieve data to display in our applications and handle state. With GraphQL you cannot only decrease the amount of code needed around data fetching and state-management you'll also get increased flexibility, better performance and most of all an improved developer experience. In this workshop you'll learn how GraphQL can improve your work as a frontend developer and how to handle GraphQL in your frontend React application.
React Summit 2022React Summit 2022
173 min
Build a Headless WordPress App with Next.js and WPGraphQL
Top Content
WorkshopFree
In this workshop, you’ll learn how to build a Next.js app that uses Apollo Client to fetch data from a headless WordPress backend and use it to render the pages of your app. You’ll learn when you should consider a headless WordPress architecture, how to turn a WordPress backend into a GraphQL server, how to compose queries using the GraphiQL IDE, how to colocate GraphQL fragments with your components, and more.
GraphQL Galaxy 2020GraphQL Galaxy 2020
106 min
Relational Database Modeling for GraphQL
Top Content
WorkshopFree
In this workshop we'll dig deeper into data modeling. We'll start with a discussion about various database types and how they map to GraphQL. Once that groundwork is laid out, the focus will shift to specific types of databases and how to build data models that work best for GraphQL within various scenarios.
Table of contentsPart 1 - Hour 1      a. Relational Database Data Modeling      b. Comparing Relational and NoSQL Databases      c. GraphQL with the Database in mindPart 2 - Hour 2      a. Designing Relational Data Models      b. Relationship, Building MultijoinsTables      c. GraphQL & Relational Data Modeling Query Complexities
Prerequisites      a. Data modeling tool. The trainer will be using dbdiagram      b. Postgres, albeit no need to install this locally, as I'll be using a Postgres Dicker image, from Docker Hub for all examples      c. Hasura
GraphQL Galaxy 2021GraphQL Galaxy 2021
48 min
Building GraphQL APIs on top of Ethereum with The Graph
WorkshopFree
The Graph is an indexing protocol for querying networks like Ethereum, IPFS, and other blockchains. Anyone can build and publish open APIs, called subgraphs, making data easily accessible.

In this workshop you’ll learn how to build a subgraph that indexes NFT blockchain data from the Foundation smart contract. We’ll deploy the API, and learn how to perform queries to retrieve data using various types of data access patterns, implementing filters and sorting.

By the end of the workshop, you should understand how to build and deploy performant APIs to The Graph to index data from any smart contract deployed to Ethereum.