Używanie tajnych danych środowiskowych z interfejsem wiersza polecenia Azure CLI

Azure Developer CLI (azd) obsługuje odwoływanie się do sekretów Azure Key Vault w środowisku projektowym (pliku .env). Zapewnia to bezpieczną opcję pracy z poufnymi danymi w azd projektach. Sekrety te integrują się z różnymi azd funkcjami, takimi jak haki i konfiguracje potoków CI/CD.

Wymagania wstępne

Ustaw sekret Key Vault

Aby ustawić sekret Key Vault, uruchom azd env set-secret <name> polecenie, gdzie <name> jest kluczem w środowisku odwołującym się do sekretu Key Vault. Po ustawieniu klucza tajemnicy azd automatycznie pobiera wartość z Key Vault w następujących scenariuszach.

Parametry Bicep

Aby powiązać parametr Bicep z wartością sekretem usługi Azure Key Vault, wykonaj następujące kroki:

  1. Dodaj adnotację do parametru Bicep jako zabezpieczony przy użyciu słowa kluczowego @secure() .
  2. Utwórz mapowanie w pliku main.parameters.json, które łączy parametr Bicep z odpowiednią nazwą klucza w środowisku odwołującym się do tajemnicy usługi Azure Key Vault.

Uwaga / Notatka

Sekrety środowiska nie są obecnie obsługiwane podczas używania tych plików parametrów Bicep (.bicepparam).

Przykład

Z poziomu projektu azd uruchom azd env set-secret MY_SECRET i postępuj zgodnie z monitami, żeby wybrać istniejący sekret Azure Key Vault lub utworzyć nowy. Po zakończeniu wykonywania polecenia klucz MY_SECRET przechowuje odwołanie do tajemnicy usługi Key Vault. Dodaj lub wybierz parametr Bicep, z którym chcesz użyć wartości i wyznaczyć go jako bezpieczny:

@secure()
param secureParameter string

Utwórz mapowanie w main.parameters.json pliku:

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

Podczas następnego uruchomienia azd up lub azd provision, azd używa wpisu tajnego usługi Azure Key Vault jako wartości parametru.

Punkty zaczepienia

azd może automatycznie pobierać sekrety Azure Key Vault, gdy uruchomiony zostanie hook. Domyślnie, gdy azd uruchamia hak, wszystkie pary klucz-wartość ze środowiska projektu (pliku .env) są ustawiane w środowisku haka. Odwołania do tajemnic usługi Key Vault nie są jednak automatycznie rozpoznawane z ich odpowiednimi wartościami.

Aby rozwiązać te odwołania, wykonaj następujące kroki:

  1. Utwórz mapowanie klucza ze środowiska na nowy klucz, gdzie ustalono tajny wpis usługi Key Vault.
  2. secrets Użyj pola w definicji haka, aby utworzyć to mapowanie.

Przykład

W projekcie azd uruchom polecenie azd env set-secret MY_SECRET i postępuj zgodnie z instrukcjami, aby wybrać istniejącą tajemnicę w usłudze Azure Key Vault lub utworzyć nową. Po zakończeniu polecenia klucz MY_SECRET odnosi się do sekretu w usłudze Key Vault. Utwórz definicję haka odpowiednią dla systemu operacyjnego.

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

Następnym razem, gdy uruchomisz azd provision polecenie, uruchamiany jest preprovision hook i rozpoznaje MY_SECRET jako SECRET_RESOLVE.

Konfiguracja pipeline'u

azd Upraszcza proces konfigurowania ciągłej integracji dla aplikacji. Niezależnie od tego, czy używasz GitHub, czy Azure DevOps, uruchom azd pipeline config i wykonaj kroki zgodnie z instrukcjami, aby skonfigurować CI/CD.

W ramach automatycznej konfiguracji azd tworzy sekrety i zmienne dla procesu CI/CD. Możesz również zdefiniować własne zmienne i wpisy tajne przy użyciu pipeline konfiguracji w pliku azure.yaml. Nazwy, które definiujesz, odpowiadają kluczom w azd środowisku (.env). Jeśli klucz zawiera odwołanie do wpisu tajnego (akvs), azd stosuje różne zachowanie w zależności od tego, czy dodajesz go jako zmienną, czy wpis tajny:

Metoda Przechowywana wartość w kontekście CI/CD Rotacja sekretów Najlepsze dla
variables Dokumentacja usługi Key Vault (akvs://...) Automatyczne — potok danych zawsze odczytuje najnowszą wartość z usługi Key Vault. Gdy jednostka usługi CI/CD ma dostęp do odczytu z Azure Key Vault.
secrets Rzeczywista wartość tajna Ręczne — ponowne uruchamianie azd pipeline config po rotacji. Jeśli nie możesz przypisać dostępu do odczytu Key Vault do głównego obiektu usługi.

Uwaga / Notatka

Gdy używasz variables programu, azd próbuje przypisać rolę dostępu do odczytu do jednostki usługi używanej przez przepływ pracy CI/CD. Jeśli nie masz wystarczających uprawnień do przypisania roli odczytu dla usługi Key Vault, operacja zakończy się niepowodzeniem. Użyj secrets zamiast tego.

Przykład

W zainicjowanym azd projekcie uruchom azd env set-secret SECURE_KEY i postępuj zgodnie z instrukcjami. Po zakończeniu polecenia azd env get-values zostanie wyświetlone odwołanie:

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

Dodaj SECURE_KEY do listy variables lub secrets w 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

Po uruchomieniu azd pipeline config, SECURE_KEY ustawiana jest jako zmienna CI/CD z odwołaniem do Key Vault jako jej wartością. Jeśli SECURE_KEY jest również przypisany do parametru wejściowego Bicep lub definicji haka, azd automatycznie rozpoznaje tajną wartość podczas wykonywania.