Логотип Аурабаза
аурабазадокументы
документы›Edge Functions›Secrets and environment

Секреты и переменные среды

Как передать ключ Stripe или любой параметр функции, не прописывая это в коде, и что на самом деле защищает платформа.

6 мин читать·Уровень средний·Пересмотрено 12 окт. 2026 г.
Этот текст на английском языке был создан автоматически на основе французского оригинала и еще не проверялся.
Эта страница была переведена автоматически. Английская версия является авторитетной.
#
Писать

1. Установите переменную

Каждая переменная принадлежит одной функции. Для установки переменных требуется ключ service_role.

terminalbash
aura secrets set --function checkout STRIPE_SECRET_KEY=sk_live_… WEBHOOK_SECRET=whsec_…
aura secrets list --function checkout     # значения маскированы: STRIPE_SECRET_KEY sk_l***
aura secrets unset --function checkout WEBHOOK_SECRET
terminalbash
curl -X PUT "$AURA_URL/v1/functions/checkout/env" \
  -H "apikey: $AURA_SERVICE_ROLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"vars":[{"key":"STRIPE_SECRET_KEY","value":"sk_live_…"}]}'

PUT /env заменяет весь набор переменных отправленным вами списком. aura secrets set и unset считывают текущие значения, изменяют названные вами ключи и записывают результат обратно.

Перераспределение сохранит ваши секреты

Развертывание нового кода с помощью aura functions deploy оставляет переменные нетронутыми.

#
Читать

2. Прочитайте его в функции

aurabase/functions/checkout/index.tstypescript
Deno.serve(async (req) => {
  const key = Deno.env.get('STRIPE_SECRET_KEY')
  if (!key) return new Response('STRIPE_SECRET_KEY is not set', { status: 500 })
  // … вызвать Stripe с помощью `key`
  return Response.json({ ok: true })
})

Переменные считываются при каждом вызове: изменение применяется к следующему вызову.

#
Введенный

3. Переменные, которые добавляет платформа.

ПеременнаяЦенить
AURABASE_PROJECT_IDИдентификатор проекта. Всегда устанавливайте.
AURABASE_FUNCTION_NAMEИмя функции. Всегда устанавливайте.
AURABASE_URLURL-адрес платформы, если его определяет оператор платформы.
AURABASE_ANON_KEYКлюч платформы, если его определяет оператор.

Вы не можете переопределить эти имена. Среда хоста не видна вашей функции: при реальном запуске Deno.env.get('PATH') вернул undefined.

Чтобы вызвать свой собственный проект из функции, сохраните ключ service_role как секрет этой функции и отправьте его в заголовке apikey HTTP-запроса. Никогда не пересылайте ключ пользователя и никогда не помещайте ключ service_role в браузер.

#
Защита

4. Что зашифровано

ПутьЗашифровано в состоянии покоя
PUT /v1/functions/{name}/envДа, , если для службы настроен ключ шифрования (FN_ENV_ENCRYPTION_KEY, AES-256-GCM). Без него значения сохраняются в том виде, в каком они были отправлены, и служба регистрирует предупреждение при запуске.
aura secrets set / unsetНет: CLI записывает через PATCH, который сохраняет значения в том виде, в каком они были отправлены.
env_vars в запросе на развертываниеНет, причина та же.

В нашем локальном тесте значение, записанное PUT /env, было возвращено без изменений по определению функции, поскольку ключ не был настроен.

Прежде чем полагаться на шифрование, обратитесь к оператору своей платформы.

Шифрование секретов зависит от развертывания, и только путь PUT /env может их зашифровать. Путь CLI сохраняет их как заданные. Пока CLI не использует PUT /env, используйте приведенный выше HTTP-вызов для получения производственных секретов.

Чтение секретов обратно также ограничено. GET /v1/functions/{name}/env возвращает расшифрованные значения и, как и GET /v1/functions/{name}, требует ключа service_role. Открытый ключ получает 403.

#
Правила

5. Правила, которым следует следовать

  • Никогда не прописывайте секрет в index.ts жестко. Исходный код функции сохраняется в вашем проекте и возвращается любому вызывающему объекту service_role.
  • Никогда не регистрируйте секрет. Вывод console.log попадает в журналы среды выполнения.
  • Используйте одну переменную для каждой функции с самым узким ключом, который работает (ограниченный ключ от вашего провайдера, а не главный ключ).
  • Поменяйте ключ, установив новое значение и ничего не перераспределяя: он будет использоваться при следующем вызове.
Последнее обновление · 12 окт. 2026 г.