Улучшенная безопасность с поддержкой GraphQL Armor для Yoga Server 2


Эта статья была опубликована в среду, 24 августа 2022 года, автором Laurin Quast @ The Guild Blog

Мы очень рады представить совместимость GraphQL Armor с Yoga 2.

Когда экосистема GraphQL сталкивается с безопасностью

Несколько недель назад компания GraphQL Security, Escape, выпустила GraphQL Armor, промежуточное программное обеспечение с открытым исходным кодом для добавления слоя безопасности поверх конечных точек GraphQL и смягчения распространенных атак.

GraphQL Armor блокирует неправомерные запросы, устанавливая разумные и продуманные ограничения на запросы. На наш взгляд, это лучшее решение, когда использование персистентных операций невозможно, например, при создании публичного GraphQL API. Кроме того, даже если вы создаете внутренний API, эти инструменты могут быть полезны для предотвращения слишком тяжелых запросов GraphQL. Этот технический подход также дополняет существующий набор плагинов для усиления конечных точек:

  • GraphQL Authz и use-operation-field-permissions для контроля доступа & бизнес-логика
  • use-generic-auth и use-auth0 для авторизации.

Таким образом, мы решили работать вместе с командой Escape, чтобы постоянно улучшать стандарты безопасности и настройки по умолчанию для сообщества Yoga и GraphQL.

Почему вы не можете использовать лучшие практики безопасности производства в Yoga по умолчанию?

Что вы получаете, используя GraphQL Armor?

Armor поставляется из коробки с набором плагинов, которые применяют лучшие практики безопасности к любому производственному GraphQL-серверу:

  • Ограничение псевдонимов
  • Ограничение символов
  • Ограничение стоимости
  • Ограничение глубины
  • Ограничение директив
  • Предложение отключенного поля

Новые правила добавляются еженедельно. И мы более чем открыты для отзывов и предложений!

Обратите внимание, что конфигурация по умолчанию была разработана с учетом сохранения: Добавление Armor в производственный проект не должно мешать легитимным запросам из коробки.

Как выглядит использование GraphQL Armor с Yoga?

GraphQL Armor полагается на плагины Envelop для своих правил безопасности.

Приступить к работе очень просто: npm install -S @escape.tech/graphql-armor (или yarn add @escape.tech/graphql-armor).

Затем возьмем минималистичный сервер Yoga:

import { createServer } from '@graphql-yoga/node'

import { schema } from './schema'

export function initServer() {
  const server = createServer({
    schema
  })
  return server
}
Войти в полноэкранный режим Выход из полноэкранного режима

Добавление GraphQL-брони — это просто вопрос добавления нескольких плагинов-конвертов:

import { EnvelopArmor } from '@escape.tech/graphql-armor'
import { createServer } from '@graphql-yoga/node'

import { schema } from './schema'

const armor = new EnvelopArmor()
const enhancements = armor.protect()

export function initServer() {
  const server = createServer({
    schema,
    plugins: [...enhancements.plugins]
  })
  return server
}
Вход в полноэкранный режим Выход из полноэкранного режима

Этот пример можно найти в нашем репозитории примеров github.com/dotansimha/graphql-yoga

Присоединяйтесь к нам в создании будущего GraphQL Security

Команда Escape активно работает над улучшением Armor и его поддержки для Yoga Server.
Это только начало большого сотрудничества между нашими командами для обеспечения лучшей безопасности для всей экосистемы GraphQL.
Впереди еще много интересного!
Не стесняйтесь заходить на GitHub Armor, чтобы ⭐ поставить звезду, 🗣️ обсудить, 🎉 попросить их о новых функциях и многое другое:

github.com/Escape-Technologies/graphql-armor

До скорых встреч! 🤟

Оцените статью
devanswers.ru
Добавить комментарий