В некоторых случаях может потребоваться ограничить приложение Hasura ограниченным числом операций GraphQL (запросы/мутации/подписки). Причиной этого может быть предотвращение чрезмерного раскрытия данных, очистки API и защита вашего приложения и данных.

Hasura позволяет ограничить количество и тип доступных операций с помощью функции «Список разрешений». «Список разрешений» представляет собой список разрешенных операций GraphQL, которые могут выполняться в вашем приложении. Таким образом, Hasura GraphQL Engine выполняет только операции, указанные в «Списке разрешений».

Кроме того, существует способ автоматического создания списка разрешений на основе кода внешнего интерфейса. Таким образом, список разрешений и ваш интерфейсный код всегда синхронизируются!

В статье представлены 3 способа создания списков разрешений в Hasura, последний из которых полностью автоматизирован.

Включить «Список разрешений»

Функция «Список разрешений» по умолчанию отключена. Вам нужно перейти к настройкам вашего проекта и включить его.

Установите для переменной среды HASURA_GRAPHQL_ENABLE_ALLOWLIST значение true, как показано на рисунке.

Разрешить список операций в Hasura

В качестве примера возьмем следующее приложение Hasura. Это простое приложение, которое хранит пользователей. У каждого пользователя есть идентификатор и имя.

Перейдите на вкладку API и нажмите Allow List в верхней части страницы (справа).

Откроется менеджер «Список разрешенных». Здесь вы можете добавлять, изменять и удалять операции в вашем «списке разрешенных».

При нажатии на кнопку Add Operation открывается новое модальное окно, в котором вы можете добавить разрешенную операцию. Есть 3 способа добавить операцию:

  1. напишите это вручную
  2. загрузить файл с операцией/операциями
  3. выберите его из раскрывающегося списка Quick Add (он отображает последнюю выполненную операцию)

После того, как вы добавите операцию, вы увидите ее на странице «Список разрешений».

Еще один способ создать белый список

Есть еще один способ управлять своим «списком разрешенных». Перейдите на вкладку MONITORING и нажмите на опцию Allow Lists.

Если вы перейдете на страницу NEW OPERATIONS, вы увидите выполненные вами операции, которых еще нет в «Списке разрешенных». Это означает, что Hasura Cloud позволяет вам выбирать из списка ранее выполненных операций и добавлять нужные в «список разрешенных».

Вместо того, чтобы вручную записывать операции, вы можете выбрать те, которые хотите добавить в «Список разрешенных», и нажать кнопку Add to Allowlist.

После этого вы должны увидеть их на странице ALLOWED OPERATIONS.

Автоматически создавать белый список

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

К счастью, есть способ автоматизировать это с помощью библиотеки генератора кода GraphQL. Генератор кода GraphQL автоматически генерирует код из вашей схемы и операций GraphQL. Он также имеет плагин @graphql-codegen/hasura-allow-list, который автоматизирует создание AllowList на основе запросов GraphQL, найденных в вашем интерфейсном коде.

После того, как вы настроите @graphql-codegen в своем проекте, добавьте в файл codegen следующее:

import type { CodegenConfig } from '@graphql-codegen/cli';

const config: CodegenConfig = {
 generates: {
  'path/to/metadata/allow_list.yaml': {
    plugins: ['hasura-allow-list']
  }
 }
}

export default config;Now that the process of creating the “AllowList” is fully automated, the “AllowList” and your front-end code are always in sync.

Теперь, когда процесс создания «AllowList» полностью автоматизирован, «AllowList» и ваш интерфейсный код всегда синхронизированы.

Примечание. Плагин работает только в экосистеме JavaScript.

Важно отметить, что это плагин сообщества, а не официальное решение Hasura.

Дополнительные ресурсы:

Первоначально опубликовано на https://hasura.io 19 января 2023 г.