Секреты и переменные среды
Как передать ключ Stripe или любой параметр функции, не прописывая это в коде, и что на самом деле защищает платформа.
1. Установите переменную
Каждая переменная принадлежит одной функции. Для установки переменных требуется ключ service_role.
PUT /env заменяет весь набор переменных отправленным вами списком. aura secrets set и unset считывают текущие значения, изменяют названные вами ключи и записывают результат обратно.
Развертывание нового кода с помощью aura functions deploy оставляет переменные нетронутыми.
2. Прочитайте его в функции
Переменные считываются при каждом вызове: изменение применяется к следующему вызову.
3. Переменные, которые добавляет платформа.
| Переменная | Ценить |
|---|---|
AURABASE_PROJECT_ID | Идентификатор проекта. Всегда устанавливайте. |
AURABASE_FUNCTION_NAME | Имя функции. Всегда устанавливайте. |
AURABASE_URL | URL-адрес платформы, если его определяет оператор платформы. |
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попадает в журналы среды выполнения. - Используйте одну переменную для каждой функции с самым узким ключом, который работает (ограниченный ключ от вашего провайдера, а не главный ключ).
- Поменяйте ключ, установив новое значение и ничего не перераспределяя: он будет использоваться при следующем вызове.