Omgevingsgeheimen gebruiken met de Azure Developer CLI

De Azure Developer CLI (azd) ondersteunt het verwijzen naar Azure Key Vault-geheimen in uw projectomgeving (het .env bestand). Dit biedt een veilige optie voor het werken met gevoelige gegevens in uw azd projecten. Deze geheimen kunnen worden geïntegreerd met verschillende azd functies, zoals hooks en CI/CD-pijplijnconfiguraties.

Vereiste voorwaarden

Een Key Vault-geheim instellen

Als u een Key Vault-geheim wilt instellen, voert u de azd env set-secret <name> opdracht uit, waarbij <name> de sleutel zich in de omgeving bevindt die verwijst naar het Key Vault-geheim. Nadat u het geheim hebt ingesteld, haalt azd automatisch de waarde op uit de Sleutelkluis in de volgende scenario's.

Bicepparameters

Als u een Bicep-parameter wilt koppelen aan de waarde van een Azure Key Vault-geheim, voert u de volgende stappen uit:

  1. Annoteer de Bicep-parameter als beveiligd door de @secure() sleutelwoord te gebruiken.
  2. Maak een toewijzing in het main.parameters.json bestand die de Bicep-parameter koppelt aan de bijbehorende sleutelnaam in de omgeving die verwijst naar het Azure Key Vault-geheim.

Opmerking

Omgevingsgeheimen worden momenteel niet ondersteund wanneer u Bicep-parameterbestanden (.bicepparam) gebruikt.

Voorbeeld

Vanuit een azd project, voer azd env set-secret MY_SECRET uit en volg de aanwijzingen om een bestaande Azure Key Vault-sleutel te selecteren of een nieuwe sleutel aan te maken. Nadat de opdracht is voltooid, bevat de sleutel MY_SECRET een verwijzing naar een Key Vault-geheim. Voeg of selecteer de Bicep-parameter waarmee u de waarde wilt gebruiken en geef deze als veilig aan:

@secure()
param secureParameter string

Maak de toewijzing in het main.parameters.json bestand:

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

De volgende keer dat u het Azure Key Vault-geheim uitvoert azd up of azd provisiongebruikt azd als de waarde voor uw parameter.

Haken

azd kan automatisch Azure Key Vault-geheimen ophalen wanneer een hook wordt uitgevoerd. Standaard, wanneer azd een hook uitvoert, worden alle sleutel-waardeparen uit de projectomgeving (het .env bestand) ingesteld in de omgeving van de hook. Verwijzingen naar Key Vault-geheimen worden echter niet automatisch omgezet in de bijbehorende geheime waarden.

Volg deze stappen om deze verwijzingen op te lossen:

  1. Maak een toewijzing van de sleutel in de omgeving naar een nieuwe sleutel waar het Key Vault-geheim is opgelost.
  2. Gebruik het secrets-veld in de hookdefinitie om deze toewijzing te maken.

Voorbeeld

Voer in een azd-project azd env set-secret MY_SECRET uit en volg de instructies om een bestaand Azure Key Vault-geheim te selecteren of een nieuw geheim te maken. Nadat de opdracht is voltooid, verwijst de sleutel MY_SECRET naar een Key Vault-geheim. Maak een hookdefinitie die geschikt is voor uw besturingssysteem.

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

De volgende keer dat u azd provision uitvoert, wordt de preprovision-hook uitgevoerd die MY_SECRET oplost naar SECRET_RESOLVE.

Pijplijnconfiguratie

azd vereenvoudigt het proces van het instellen van continue integratie (CI) voor uw toepassing. Of u GitHub of Azure DevOps gebruikt, voert u azd pipeline config uit en volgt u de begeleide stappen om CI/CD te configureren.

Als onderdeel van de automatische configuratie, creëert azd geheimen en variabelen voor je CI/CD-implementatiewerkstroom. U kunt ook uw eigen variabelen en geheimen definiëren met behulp van de pipeline configuratie in azure.yaml. De namen die u definieert, komen overeen met sleutels in uw azd omgeving (.env). Als een sleutel een geheime verwijzing bevat (akvs), azd past u ander gedrag toe, afhankelijk van of u deze toevoegt als een variabele of een geheim:

Methode CI/CD-waarde opgeslagen Geheime draaiing Ideaal voor
variables Key Vault-referentie (akvs://...) Automatisch: pijplijn leest altijd de meest recente waarde uit Key Vault. Wanneer de CI/CD-service-principal leestoegang heeft tot Key Vault.
secrets Werkelijke geheime waarde Handmatig — herhaal azd pipeline config na rotatie. Wanneer u de leestoegang voor Key Vault niet aan de service-principal kunt toewijzen.

Opmerking

Wanneer u variables gebruikt, probeert azd een rol voor leestoegang toe te wijzen aan de service-principal die wordt gebruikt door de CI/CD-werkstroom. Als u niet over voldoende machtigingen beschikt om de leesrol voor de Sleutelkluis toe te wijzen, mislukt de bewerking. Gebruik in plaats daarvan secrets.

Voorbeeld

Vanuit een geïnitialiseerd azd-project, voer azd env set-secret SECURE_KEY uit en volg de prompts. Nadat de opdracht is voltooid, toont azd env get-values de referentie:

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

Voeg SECURE_KEY toe aan de variables- of secrets-lijst in 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

Wanneer u azd pipeline config uitvoert, wordt SECURE_KEY als een CI/CD-variabele ingesteld met de Key Vault-verwijzing als waarde. Als SECURE_KEY ook gekoppeld aan een Bicep-invoerparameter of een hookdefinitie is, azd wordt de geheime waarde tijdens uitvoering automatisch omgezet.