Použití tajných kódů prostředí pomocí Azure Developer CLI

Azure Developer CLI (azd) podporuje odkazování na tajné kódy služby Azure Key Vault v rámci vašeho projektového prostředí ( .env soubor). To poskytuje bezpečnou možnost pro práci s citlivými daty ve vašich azd projektech. Tyto tajemství se integrují s různými azd funkcemi, jako jsou hooky a konfigurace pipeline CI/CD.

Předpoklady

Nastavení tajného kódu služby Key Vault

Pokud chcete nastavit tajný klíč služby Key Vault, spusťte azd env set-secret <name> příkaz, kde <name> je klíč v prostředí, které odkazuje na tajný klíč služby Key Vault. Po nastavení tajného klíče azd automaticky načte hodnotu ze služby Key Vault v následujících scénářích.

Parametry Bicep

Pokud chcete přidružit parametr Bicep k hodnotě tajného kódu služby Azure Key Vault, postupujte takto:

  1. Označte parametr Bicep jako zabezpečený pomocí klíčového slova @secure().
  2. Vytvořte v main.parameters.json souboru mapování, které propojuje parametr Bicep s odpovídajícím klíčovým názvem v prostředí, které odkazuje na tajemství služby Azure Key Vault.

Poznámka:

Tajemství prostředí momentálně nejsou podporována, když používáte soubory parametrů Bicep (.bicepparam).

Příklad

azd V projektu spusťte azd env set-secret MY_SECRET a postupujte podle pokynů a vyberte existující tajný klíč služby Azure Key Vault nebo vytvořte nový. Po dokončení příkazu obsahuje klíč MY_SECRET odkaz na tajný klíč služby Key Vault. Přidejte nebo vyberte parametr Bicep, se kterým chcete hodnotu použít, a určete ho jako zabezpečený:

@secure()
param secureParameter string

Vytvořte mapování v main.parameters.json souboru:

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

Při příštím spuštění azd up nebo azd provision bude azd používat tajný kód služby Azure Key Vault jako hodnotu vašeho parametru.

Háčky

azd může automaticky načíst tajné kódy služby Azure Key Vault při spuštění háku. Ve výchozím nastavení se při azd spuštění háku nastaví všechny páry klíč-hodnota z prostředí projektu ( .env soubor) v prostředí háku. Odkazy na tajné kódy služby Key Vault se ale automaticky nepřeloží na odpovídající hodnoty tajných kódů.

Pokud chcete tyto odkazy vyřešit, postupujte takto:

  1. Vytvořte mapování z klíče v prostředí na nový klíč, ve kterém je vyřešeno tajemství služby Key Vault.
  2. secrets K vytvoření tohoto mapování použijte pole v definici háku.

Příklad

azd V projektu spusťte azd env set-secret MY_SECRET a postupujte podle pokynů a vyberte existující tajný klíč služby Azure Key Vault nebo vytvořte nový. Po dokončení příkazu odkazuje klíč MY_SECRET na tajemství služby Key Vault. Vytvořte definici háku odpovídající vašemu operačnímu systému.

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

Při příštím spuštění azd provision se preprovision háček spustí a přeloží MY_SECRET do SECRET_RESOLVE.

Konfigurace kanálu

azd zjednodušuje proces nastavení kontinuální integrace (CI) pro vaši aplikaci. Bez ohledu na to, jestli používáte GitHub nebo Azure DevOps, spusťte azd pipeline config a postupujte podle pokynů ke konfiguraci CI/CD.

V rámci automatické konfigurace azd vytváří tajné kódy a proměnné pro pracovní postup nasazení CI/CD. Můžete také definovat vlastní proměnné a tajné klíče pomocí pipeline konfiguraci v azure.yaml. Názvy, které definujete, odpovídají klíčům ve vašem azd prostředí (.env). Pokud klíč obsahuje odkaz na tajný kód (akvs), použije jiné chování v závislosti na tom, azd jestli ho přidáte jako proměnnou nebo tajný klíč:

Přístup Uložená hodnota CI/CD Rotace tajných klíčů Nejvhodnější pro
variables Referenční informace ke službě Key Vault (akvs://...) Automaticky – datový kanál vždy čte nejnovější hodnotu z Key Vaultu. Pokud má principál služby CI/CD přístup ke čtení z Key Vault.
secrets Skutečná hodnota tajného kódu Manuálně – opětovné spuštění azd pipeline config po otočení. Pokud k instančnímu objektu nemůžete přiřadit přístup pro čtení služby Key Vault.

Poznámka:

Při použití variables se azd pokusí přiřadit roli s oprávněním pro čtení k služebnímu principálu používanému pracovním postupem CI/CD. Pokud nemáte dostatečná oprávnění k přiřazení role pro čtení pro službu Key Vault, operace selže. Místo toho použijte secrets.

Příklad

Z inicializovaného azd projektu spusťte azd env set-secret SECURE_KEY a postupujte podle pokynů. Po dokončení azd env get-values příkazu se zobrazí odkaz:

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

Přidat SECURE_KEY do seznamu variables nebo secrets do seznamu v 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

Při spuštění azd pipeline configSECURE_KEY se nastaví jako proměnná CI/CD s odkazem na službu Key Vault jako její hodnota. Pokud SECURE_KEY je také namapován na vstupní parametr Bicep nebo definici háku, azd automaticky vyřeší tajnou hodnotu v době běhu.