Använda miljöhemligheter med Azure Developer CLI

Azure Developer CLI (azd) har stöd för att referera till Azure Key Vault-hemligheter i din projektmiljö ( .env filen). Detta ger ett säkert alternativ för att arbeta med känsliga data i dina azd projekt. Dessa hemligheter integreras med olika azd funktioner, till exempel krokar och CI/CD-pipelinekonfigurationer.

Förutsättningar

Ange en Key Vault-hemlighet

Om du vill ange en Key Vault-hemlighet, kör kommandot azd env set-secret <name>, där <name> är nyckeln i miljön som hänvisar till Key Vault-hemligheten. När du har angett hemligheten azd hämtar automatiskt värdet från Key Vault i följande scenarier.

Bicep-parametrar

Följ dessa steg för att associera en Bicep-parameter med värdet för en Azure Key Vault-hemlighet:

  1. Kommentera parametern Bicep som skyddad med hjälp av nyckelordet @secure() .
  2. Skapa en mappning i main.parameters.json filen som länkar Bicep-parametern till motsvarande nyckelnamn i miljön som refererar till Azure Key Vault-hemligheten.

Anmärkning

Miljöhemligheter stöds för närvarande inte när du använder Bicep-parameterfiler (.bicepparam).

Exempel

Från ett azd projekt kör azd env set-secret MY_SECRET och följer du anvisningarna för att antingen välja en befintlig Azure Key Vault-hemlighet eller skapa en ny. När kommandot har slutförts innehåller nyckeln MY_SECRET en referens till en Key Vault-hemlighet. Lägg till eller välj den Bicep-parameter som du vill använda värdet med och ange det som säkert:

@secure()
param secureParameter string

Skapa mappningen i main.parameters.json filen:

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

Nästa gång du kör azd up eller azd provisionanvänder azd du Azure Key Vault-hemligheten som värde för parametern.

Hookar

azd kan automatiskt hämta Azure Key Vault-hemligheter när en krok körs. Som standard sätts alla nyckel/värde-par från projektmiljön (.env-filen) i krokens miljö när azd kör en krok. Referenser till Key Vault-hemligheter matchas dock inte automatiskt med motsvarande hemliga värden.

Lös dessa referenser genom att följa dessa steg:

  1. Skapa en mappning från nyckeln i miljön till en ny nyckel där Key Vault-hemligheten har lösts.
  2. Använd fältet secrets i krokdefinitionen för att skapa den här mappningen.

Exempel

Från ett azd projekt kör azd env set-secret MY_SECRET och följer du anvisningarna för att antingen välja en befintlig Azure Key Vault-hemlighet eller skapa en ny. När kommandot har slutförts refererar nyckeln MY_SECRET till en Key Vault-hemlighet. Skapa en krokdefinition som är lämplig för operativsystemet.

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

Nästa gång du kör azd provision, kommer preprovision-hooken att köras och löser upp MY_SECRET till SECRET_RESOLVE.

Pipelinekonfiguration

azd förenklar processen med att konfigurera kontinuerlig integrering (CI) för ditt program. Oavsett om du använder GitHub eller Azure DevOps kör azd pipeline config och följer du de guidade stegen för att konfigurera CI/CD.

Som en del av den automatiska konfigurationen azd skapar du hemligheter och variabler för ditt CI/CD-distributionsarbetsflöde. Du kan också definiera dina egna variabler och hemligheter med hjälp av konfigurationen pipeline i azure.yaml. De namn som du definierar motsvarar nycklar i din azd miljö (.env). Om en nyckel innehåller en hemlig referens (akvs), azd tillämpas olika beteende beroende på om du lägger till den som en variabel eller en hemlighet:

Tillvägagångssätt Lagrat värde för CI/CD Hemlig rotation Bäst för
variables referens till Key Vault (akvs://...) Automatisk – pipelinen läser alltid det senaste värdet från Key Vault. När CI/CD-tjänstens huvudnamn har läsbehörighet för Key Vault.
secrets Verkligt hemligt värde Manuell – kör azd pipeline config igen efter rotation. När du inte kan tilldela Key Vault läsbehörighet till tjänstens huvudkonto.

Anmärkning

När du använder variables, försöker azd tilldela en läsåtkomstroll till tjänstens huvudkonto som används av CI/CD-arbetsflödet. Om du inte har tillräcklig behörighet för att tilldela läsrollen för Nyckelvalvet misslyckas åtgärden. Använd secrets i stället.

Exempel

Från ett initierat azd projekt, kör azd env set-secret SECURE_KEY och följ anvisningarna. När kommandot har slutförts azd env get-values visar referensen:

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

Lägg till SECURE_KEY i antingen variables listan eller secrets i 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

När du kör azd pipeline config anges SECURE_KEY som en CI/CD-variabel, där Key Vault-referensen utgör dess värde. Om SECURE_KEY även mappas till en Bicep-indataparameter eller en hook-definition, löser azd automatiskt det hemliga värdet vid körning.