Segredos e variáveis de ambiente
Como passar uma chave Stripe ou qualquer configuração para uma função sem escrevê-la no código e o que a plataforma realmente protege.
1. Defina uma variável
Cada variável pertence a uma função. A configuração de variáveis precisa de uma chave service_role.
PUT /env substitui todo o conjunto de variáveis pela lista que você envia. aura secrets set e unset leem os valores atuais, alteram as chaves que você nomeia e escrevem o resultado de volta.
A implantação do novo código com aura functions deploy deixa as variáveis intactas.
2. Leia na função
As variáveis são lidas a cada chamada: uma alteração se aplica à próxima chamada.
3. Variáveis que a plataforma adiciona
| Variável | Valor |
|---|---|
AURABASE_PROJECT_ID | A identificação do projeto. Sempre definido. |
AURABASE_FUNCTION_NAME | O nome da função. Sempre definido. |
AURABASE_URL | A URL da plataforma, quando o operador da plataforma a define. |
AURABASE_ANON_KEY | Uma chave de plataforma, quando o operador a define. |
Você não pode substituir esses nomes. O ambiente do host não é visível para sua função: em uma execução real Deno.env.get('PATH') retornou undefined.
Para chamar seu próprio projeto a partir de uma função, armazene uma chave service_role como um segredo dessa função e envie-a no cabeçalho apikey de uma solicitação HTTP. Nunca encaminhe a chave de um usuário e nunca coloque uma chave service_role em um navegador.
4. O que está criptografado
| Caminho | Criptografado em repouso |
|---|---|
PUT /v1/functions/{name}/env | Sim, se o serviço tiver uma chave de criptografia configurada (FN_ENV_ENCRYPTION_KEY, AES-256-GCM). Sem ele, os valores são armazenados conforme enviados e o serviço registra um aviso na inicialização. |
aura secrets set / unset | Não: a CLI grava por meio de PATCH, que armazena os valores conforme enviados. |
env_vars em uma solicitação de implantação | Não, pelo mesmo motivo. |
Em nosso teste local, um valor escrito por PUT /env foi retornado inalterado pela definição da função, pois nenhuma chave foi configurada.
Se os segredos serão criptografados depende da implantação e somente o caminho PUT /env pode criptografá-los. O caminho CLI os armazena conforme especificado. Até que a CLI use PUT /env, use a chamada HTTP acima para segredos de produção.
A leitura dos segredos também é restrita. GET /v1/functions/{name}/env retorna os valores descriptografados e, como GET /v1/functions/{name}, requer uma chave service_role. Uma chave pública recebe 403.
5. Regras a seguir
- Nunca codifique um segredo em
index.ts. O código-fonte de uma função é armazenado em seu projeto e retornado para qualquer chamadorservice_role. - Nunca registre um segredo. A saída de
console.logtermina nos logs do tempo de execução. - Use uma variável por função, com a chave mais restrita que funcione (uma chave restrita do seu provedor, não a chave mestra).
- Gire uma chave definindo o novo valor e não reimplantando nada: a próxima chamada a utilizará.