Как обезопасить конечную точку призмы, развернутую на героку - PullRequest
0 голосов
/ 22 июня 2019

Я развернул призму PostgreSQL и сервер йоги на героку,

но конечная точка graphql общедоступна, и любой может ее изменить.

существует ли простой способ сделать это, как это делает хасура: https://docs.hasura.io/1.0/graphql/manual/deployment/securing-graphql-endpoint.html

PS: я не использовал докер для его развертывания, я развернул все через мастер призмы в: консоль призмы

1 Ответ

0 голосов
/ 21 июля 2019

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

Я не очень знаком с консолью Prisma, но если вы развернете свой сервер Prisma на Heroku с помощью чего-то вроде prisma.yml файла, тогда вы можете указать строку secret:, например: secret: ${env: PRISMA_SECRET}. Затем вы можете установить Config Var в настройках вашего сервера Prisma на Heroku, где ключом является PRISMA_SECRET, а значением является случайная строка. Я считаю, что вы хотите сделать то же самое при использовании команды prisma deploy. Так что вы prisma.yml должны выглядеть примерно так:

endpoint: ${env:PRISMA_ENDPOINT_PROD}
datamodel: datamodel.graphql
secret: ${env:PRISMA_SECRET}
hooks:
  post-deploy:
      - graphql get-schema -p prisma

Затем вам нужно будет указать тот же секрет на вашем сервере Yoga, чтобы он мог получить доступ к серверу Prisma. С этим трудно справиться, не увидев код для сервера Yoga, но мой использует пакет prisma-binding, подобный следующему:

const { Prisma } = require('prisma-binding');

const db = new Prisma({
    typeDefs: 'src/generated/prisma.graphql',
    endpoint: process.env.PRISMA_ENDPOINT_PROD,
    secret: process.env.PRISMA_SECRET,
    debug: false, // Turn on to console.log queries and mutations
});

module.exports = db;

Вы можете видеть, что сервер Yoga подключается к базе данных Prisma с указанным секретом. Сервер Yoga развернут в Heroku, и я указал переменную среды PRISMA_SECRET в настройках Heroku для сервера Yoga.

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

Если вы хотите, чтобы больше кода следовало, вы можете просмотреть этот GitHub repo от Wes Bos, который он использует для своего курса под названием «Fullstack Advanced React & GraphQL».

...