Sdílet prostřednictvím


Použití tajných klíčů ze služby Azure Key Vault v kanálů Azure

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Azure Key Vault umožňuje vývojářům bezpečně ukládat a spravovat citlivé informace, jako jsou klíče rozhraní API, přihlašovací údaje nebo certifikáty. Služba Azure Key Vault podporuje dva typy kontejnerů: trezory a spravované fondy HSM (Hardware Security Module). Trezory můžou ukládat klíče, tajné kódy a certifikáty založené na softwaru i HSM, zatímco spravované fondy HSM podporují výhradně klíče založené na HSM.

V tomto kurzu se naučíte, jak:

  • Vytvoření služby Azure Key Vault pomocí Azure CLI
  • Přidání tajného kódu a konfigurace přístupu ke službě Azure Key Vault
  • Použití tajných kódů v kanálu

Požadavky

Získání ukázkového kódu

Pokud už máte vlastní úložiště, přejděte k dalšímu kroku. Jinak naimportujte do úložiště Azure následující ukázkové úložiště.

  1. Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.

  2. Vyberte Úložiště a pak vyberte Importovat. Zadejte následující adresu URL úložiště a pak vyberte Importovat.

    https://github.com/MicrosoftDocs/pipelines-dotnet-core
    

Vytvoření služby Azure Key Vault

  1. Přihlaste se k webu Azure Portal a pak vyberte tlačítko Cloud Shell v pravém horním rohu.

  2. Pokud máte k vašemu účtu přidružené více než jedno předplatné Azure, zadejte výchozí předplatné pomocí následujícího příkazu. Můžete použít az account list k vygenerování seznamu vašich předplatných.

    az account set --subscription <YOUR_SUBSCRIPTION_NAME_OR_ID>
    
  3. Nastavte výchozí oblast Azure. Můžete použít az account list-locations k vygenerování seznamu dostupných oblastí.

    az config set defaults.location=<YOUR_REGION>
    
  4. Vytvoříte novou skupinu prostředků.

    az group create --name <YOUR_RESOURCE_GROUP_NAME>
    
  5. Vytvořte novou službu Azure Key Vault.

    az keyvault create \
      --name <YOUR_KEY_VAULT_NAME> \
      --resource-group <YOUR_RESOURCE_GROUP_NAME>
    
  6. Vytvořte v trezoru klíčů Azure nový tajný klíč.

    az keyvault secret set \
      --name <YOUR_SECRET_NAME> \
      --value <YOUR_ACTUAL_SECRET> \
      --vault-name <YOUR_KEY_VAULT_NAME>
    

Nastavení ověřování

Vytvoření spravované identity přiřazené uživatelem

  1. Přihlaste se k webu Azure Portal a pak na panelu hledání vyhledejte službu Spravované identity .

  2. Vyberte Vytvořit a vyplňte požadovaná pole následujícím způsobem:

    • Předplatné: V rozevírací nabídce vyberte své předplatné.
    • Skupina prostředků: Vyberte existující skupinu prostředků nebo vytvořte novou.
    • Oblast: V rozevírací nabídce vyberte oblast.
    • Název: Zadejte název spravované identity přiřazené uživatelem.
  3. Až budete hotovi, vyberte Zkontrolovat a vytvořit .

  4. Po dokončení nasazení vyberte Přejít k prostředku a zkopírujte hodnoty ID předplatného a klienta , které se mají použít v nadcházejících krocích.

  5. Přejděte na Vlastnosti nastavení>a zkopírujte hodnotu ID tenanta spravované identity pro pozdější použití.

Nastavení zásad přístupu trezoru klíčů

  1. Přejděte na web Azure Portal a pomocí panelu hledání vyhledejte trezor klíčů, který jste vytvořili dříve.

  2. Vyberte Zásady přístupu a pak vyberte Vytvořit a přidejte novou zásadu.

  3. V části Oprávnění k tajným kódům zaškrtněte políčka Získat a Seznam .

  4. Vyberte Další a pak vložte ID klienta spravované identity, kterou jste vytvořili dříve, do panelu hledání. Vyberte spravovanou identitu.

  5. Vyberte Další a pak ještě jednou další .

  6. Zkontrolujte nové zásady a po dokončení vyberte Vytvořit .

Vytvoření připojení služby

  1. Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.

  2. Vyberte připojení Služby nastavení projektu>a pak výběrem možnosti Nové připojení služby vytvořte nové připojení služby.

  3. Vyberte Azure Resource Manager a pak vyberte Další.

  4. Jako typ identity vyberte spravovanou identitu z rozevírací nabídky.

  5. Krok 1: Podrobnosti o spravované identitě vyplňte následující pole:

    • Předplatné pro spravovanou identitu: Vyberte předplatné obsahující vaši spravovanou identitu.

    • Skupina prostředků pro spravovanou identitu: Vyberte skupinu prostředků hostující spravovanou identitu.

    • Spravovaná identita: V rozevírací nabídce vyberte spravovanou identitu.

  6. Pro krok 2: Obor Azure vyplňte pole následujícím způsobem:

    • Úroveň rozsahu připojení služby: Vyberte předplatné.

    • Předplatné pro připojení ke službě: Vyberte předplatné, ke které bude vaše spravovaná identita přistupovat.

    • Skupina prostředků pro připojení ke službě: (Volitelné) Zadejte omezení přístupu ke spravované identitě na jednu skupinu prostředků.

  7. Krok 3: Podrobnosti o připojení služby:

    • Název připojení služby: Zadejte název připojení služby.

    • Referenční informace ke správě služeb: (volitelné) informace o kontextu z databáze ITSM.

    • Popis: (Volitelné) Přidejte popis.

  8. V části Zabezpečení zaškrtněte políčko Udělit oprávnění pro přístup ke všem kanálům a povolte tak, aby všechna kanály používala toto připojení služby. Pokud tuto možnost nevyberete, musíte ručně udělit přístup ke každému kanálu, který používá toto připojení služby.

  9. Výběrem možnosti Uložit ověřte a vytvořte připojení služby.

    Snímek obrazovky znázorňující, jak vytvořit připojení služby ARM spravované identity

Přístup k tajným kódům trezoru klíčů z kanálu

  1. Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.

  2. Vyberte Kanály a pak vyberte Nový kanál.

  3. Vyberte Git Azure Repos (YAML) a pak vyberte své úložiště.

  4. Vyberte šablonu úvodního kanálu .

  5. Výchozí kanál bude obsahovat skript, který spouští příkazy echo. Ty nejsou potřeba, abychom je mohli odstranit.

  6. Přidejte úlohu AzureKeyVault a nahraďte zástupné symboly názvem připojení služby, které jste vytvořili dříve, a názvem trezoru klíčů. Soubor YAML by se měl podobat následujícímu fragmentu kódu:

    trigger:
    - main
    
    pool:
      vmImage: ubuntu-latest
    
    steps:
    - task: AzureKeyVault@2
      displayName: Azure Key Vault
      inputs:
        azureSubscription: 'SERVICE_CONNECTION_NAME'
        KeyVaultName: 'KEY_VAULT_NAME'
        SecretsFilter: '*'
        RunAsPreJob: false
    
  7. Pojďme přidat následující úlohy pro kopírování a publikování tajného kódu. Tento příklad je určený pouze pro demonstrační účely a neměl by být implementován v produkčním prostředí.

    trigger:
    - main
    
    pool:
      vmImage: ubuntu-latest
    
    steps:
    - task: AzureKeyVault@2
      displayName: Azure Key Vault
      inputs:
        azureSubscription: 'SERVICE_CONNECTION_NAME'
        KeyVaultName: 'KEY_VAULT_NAME'
        SecretsFilter: '*'
        RunAsPreJob: false
    
    - task: CmdLine@2
      displayName: Create file
      inputs:
        script: 'echo $(SECRET_NAME) > secret.txt'
    
    - task: CopyFiles@2
      displayName: Copy file
      inputs:
        Contents: secret.txt
        targetFolder: '$(Build.ArtifactStagingDirectory)'
    
    - task: PublishBuildArtifacts@1
      displayName: Publish Artifact
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)'
        ArtifactName: 'drop'
        publishLocation: 'Container'
    
  8. Vyberte Uložit a spusťte a pak ho ještě jednou vyberte, aby se změny potvrďi a aktivovaly kanál. Pokud se zobrazí výzva k povolení přístupu kanálu k prostředkům Azure, může se zobrazit výzva k povolení. Kanál budete muset schválit jenom jednou.

  9. Vyberte úlohu CmdLine a zobrazte protokoly.

    Snímek obrazovky zobrazující protokoly úloh příkazového řádku

  10. Po dokončení spuštění kanálu se vraťte do souhrnu kanálu a vyberte publikovaný artefakt.

    Snímek obrazovky znázorňující publikovaný artefakt na kartě souhrnu

  11. Vyberte rozevírací>secret.txt a stáhněte si ho.

    Snímek obrazovky znázorňující, jak stáhnout publikovaný artefakt

  12. Otevřete textový soubor, který jste právě stáhli, měl by textový soubor obsahovat tajný kód z trezoru klíčů Azure.

Upozorňující

Tento kurz je určen pouze pro vzdělávací účely. Osvědčené postupy zabezpečení a způsob bezpečné práce s tajnými kódy najdete v tématu Správa tajných kódů v serverových aplikacích pomocí služby Azure Key Vault.

Vyčištění prostředků

Pomocí následujícího postupu odstraňte prostředky, které jste vytvořili:

  1. Pokud jste vytvořili novou organizaci pro hostování projektu, podívejte se, jak odstranit organizaci, jinak projekt odstraňte.

  2. Všechny prostředky Azure vytvořené během tohoto kurzu jsou hostované v jedné skupině prostředků. Spuštěním následujícího příkazu odstraňte skupinu prostředků a všechny její prostředky.

    az group delete --name <YOUR_RESOURCE_GROUP_NAME>
    

Často kladené dotazy

Otázka: Zobrazuje se mi následující chyba: "Uživatel nebo skupina nemá oprávnění k seznamu tajných kódů", co mám dělat?

A: Pokud dojde k chybě, která značí, že uživatel nebo skupina nemá oprávnění k seznamu tajných kódů pro trezor klíčů, spusťte následující příkazy pro autorizaci aplikace pro přístup ke klíči nebo tajnému kódu ve službě Azure Key Vault:

az account set --subscription <YOUR_SUBSCRIPTION_ID>

az login

$spnObjectId = az ad sp show --id <YOUR_SERVICE_PRINCIPAL_ID>

az keyvault set-policy --name <YOUR_KEY_VAULT_NAME> --object-id $spnObjectId --secret-permissions get list