Use os segredos do ambiente com o Azure Developer CLI

O Azure Developer CLI (azd) suporta referenciar segredos do Azure Key Vault no ambiente do seu projeto (no ficheiro .env). Isto oferece uma opção segura para trabalhar com dados sensíveis nos seus azd projetos. Estes segredos integram-se com várias azd funcionalidades, como ganchos e configurações de pipelines CI/CD.

Pré-requisitos

Defina um segredo no Cofre de Chaves

Para definir um segredo Key Vault, execute o azd env set-secret <name> comando onde <name> é a chave no ambiente que faz referência ao segredo Key Vault. Após definir o segredo, azd recupera automaticamente o valor do Key Vault nos seguintes cenários.

Parâmetros do bíceps

Para associar um parâmetro Bicep ao valor de um segredo do Azure Key Vault, siga estes passos:

  1. Anote o parâmetro Bicep como seguro, usando a palavra-chave @secure().
  2. Crie um mapeamento no main.parameters.json ficheiro que ligue o parâmetro Bicep ao nome da chave correspondente no ambiente que faz referência ao segredo do Azure Key Vault.

Observação

Os segredos do ambiente não são atualmente suportados quando se usam ficheiros de parâmetros Bicep (.bicepparam).

Exemplo

A partir de um azd projeto, execute azd env set-secret MY_SECRET e siga as instruções para selecionar um segredo existente do Azure Key Vault ou criar um novo. Após a conclusão do comando, a chave MY_SECRET mantém uma referência a um segredo do Cofre da Chave. Adicione ou selecione o parâmetro Bicep com o qual quer usar o valor e designe-o como seguro:

@secure()
param secureParameter string

Crie o mapeamento no main.parameters.json ficheiro:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      "secureParameter": {
        "value": "${MY_SECRET}"
      }
    }
}

Da próxima vez que executares azd up ou azd provision, azd usa o segredo Azure Key Vault como valor para o teu parâmetro.

Ganchos

azd pode recuperar automaticamente secretos do Azure Key Vault quando um hook é executado. Por padrão, quando o azd executa um hook, todos os pares chave-valor do ambiente do projeto (o ficheiro .env) são configurados no ambiente do hook. No entanto, as referências aos segredos do Key Vault não são automaticamente resolvidas para os respetivos valores secretos.

Para resolver estas referências, siga estes passos:

  1. Crie um mapeamento da chave no ambiente para uma nova chave onde o segredo do Key Vault é resolvido.
  2. Use o secrets campo na definição do gancho para criar este mapeamento.

Exemplo

A partir de um azd projeto, execute azd env set-secret MY_SECRET e siga as instruções para selecionar um segredo existente do Azure Key Vault ou criar um novo. Após o comando terminar, a chave MY_SECRET faz referência a um segredo do Cofre da Chave. Crie uma definição de hook adequada ao seu sistema operativo.

hooks:
  preprovision: 
    run: 'echo ".env value: $MY_SECRET \nResolved secret: $SECRET_RESOLVE"'
    shell: sh
    interactive: true
    secrets:
      SECRET_RESOLVE: MY_SECRET

Na próxima vez que executar azd provision, o gancho preprovision executa e resolve MY_SECRET em SECRET_RESOLVE.

Configuração do pipeline

azd Simplifica o processo de configuração da integração contínua (CI) para a sua aplicação. Quer uses GitHub ou Azure DevOps, executa azd pipeline config e segue os passos guiados para configurar CI/CD.

Como parte da configuração automática, azd cria segredos e variáveis para o seu fluxo de trabalho de implementação de CI/CD. Também pode definir as suas próprias variáveis e segredos usando a pipeline configuração em azure.yaml. Os nomes que defines correspondem a chaves no teu azd ambiente (.env). Se uma chave contém uma referência secreta (akvs), azd aplica comportamentos diferentes dependendo se a adiciona como variável ou como segredo:

Abordagem Valor CI/CD armazenado Rotação secreta Melhor para
variables Referência ao Cofre da Chave (akvs://...) Automático — o pipeline lê sempre o valor mais recente do Key Vault. Quando o principal de serviço CI/CD tem acesso à leitura do Key Vault.
secrets Valor real secreto Manual — repetição azd pipeline config após a rotação. Quando não conseguires atribuir acesso de leitura ao Key Vault para o principal do serviço.

Observação

Quando utiliza variables, azd tenta atribuir uma função de acesso de leitura ao principal de serviço utilizado pelo fluxo de trabalho CI/CD. Se não tiver permissões suficientes para atribuir o papel de leitura ao Key Vault, a operação falha. Utilize secrets em substituição.

Exemplo

A partir de um projeto inicializado azd , execute azd env set-secret SECURE_KEY e siga os prompts. Depois de o comando terminar, azd env get-values mostra a referência:

SECURE_KEY="akvs://faa080af-c1d8-40ad-9cce-000000000000/vivazqu-kv/SECURE-KEY-kv-secret"

Adicione SECURE_KEY à lista de variables ou secrets em azure.yaml:

# yaml-language-server: $schema=https://raw.githubusercontent.com/Azure/azure-dev/main/schemas/v1.0/azure.yaml.json
name: your-project-name
pipeline:
  variables:
    - SECURE_KEY

Quando executa azd pipeline config, SECURE_KEY é definido como uma variável CI/CD com a referência Key Vault como seu valor. Se SECURE_KEY também for mapeado para um parâmetro de entrada do Bicep ou para uma definição de gancho, azd resolve automaticamente o valor secreto em tempo de execução.