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

Vytvoření úložiště

Pokud už máte vlastní úložiště, přejděte k dalšímu kroku. V opačném případě inicializujete úložiště podle následujících pokynů. K nastavení kanálu použijeme toto úložiště Azure.

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

  2. Vyberte Úložiště a pak vyberte Inicializovat a inicializovat hlavní větev pomocí souboru README.

    Snímek obrazovky znázorňující, jak inicializovat úložiště pomocí souboru README

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í zásad přístupu trezoru klíčů

Abychom mohli získat přístup ke službě Azure Key Vault, musíme nastavit instanční objekt pro udělení přístupu ke službě Azure Pipelines. Podle tohoto průvodce vytvořte instanční objekt pomocí Azure CLI a pokračujte dalšími kroky v této části.

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

    Snímek obrazovky znázorňující, jak vyhledat službu Azure Key Vault

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

  3. V části Oprávnění tajných kódů vyberte Získat a Seznam.

  4. Vyberte Další a pak vyberte instanční objekt, který jste vytvořili dříve. Instanční objekt je objekt, který představuje aplikaci nebo službu, která požaduje přístup k prostředkům Azure.

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

  6. Zkontrolujte zásady a pak vyberte Vytvořit , až budete hotovi.

Poznámka:

Služby Azure Key Vault, které používají řízení přístupu na základě role v Azure (Azure RBAC), se nepodporují.

Přidat přiřazení role

V dalším kroku vytvoříme připojení služby ARM pomocí instančního objektu. Než budeme moct připojení ověřit, musíme instančnímu objektu udělit přístup pro čtení na úrovni předplatného:

  1. Přechod na web Azure Portal

  2. Na levém navigačním panelu vyberte Předplatná a pak vyhledejte a vyberte své předplatné.

  3. Vyberte Řízení přístupu a pak vyberte Přidat>přiřazení role.

    Snímek obrazovky znázorňující, jak přidat nové přiřazení role na úrovni předplatného

  4. Na kartě Role vyberte Čtenářa pak vyberte Další.

  5. Vyberte Uživatele, skupinu nebo instanční objekt a pak vyberte Vybrat členy.

    Snímek obrazovky znázorňující, jak přidat členy k přiřazení role v Azure

  6. Pomocí vyhledávacího panelu vyhledejte instanční objekt a pak ho vyberte znaménko +a pak klikněte na tlačítko Vybrat .

  7. Vyberte Zkontrolovat a přiřadit, zkontrolujte nastavení a pak znovu vyberte Zkontrolovat a přiřadit , abyste potvrdili své volby a přidali přiřazení role.

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. Vyberte instanční objekt (ruční) a pak vyberte Další.

  5. Jako úroveň rozsahu vyberte Azure Cloud for Environment a Předplatné a pak zadejte ID předplatného a název předplatného.

  6. Vyplňte následující pole informacemi, které jste získali při vytváření instančního objektu, a po dokončení vyberte Ověřit :

    • ID instančního objektu: ID vaší aplikace instančního objektu.
    • Klíč instančního objektu: Heslo instančního objektu.
    • ID tenanta: Tenant instančního objektu.
  7. Po úspěšném ověření zadejte název a popis (volitelné) připojení ke službě a zaškrtněte políčko Udělit přístup všem kanálům .

  8. Vyberte Ověřit a až skončíte, uložte ho.

    Snímek obrazovky znázorňující, jak vytvořit nové připojení služby Azure Resource Manager pomocí instančního objektu

  1. Přihlaste se ke své kolekci Azure DevOps a přejděte do svého projektu.

  2. Vyberte Nastavení projektu>Připojení>služby Připojení Nové připojení služby a pak vyberte Azure Resource Manager a vytvořte nové připojení služby ARM.

  3. Zadejte název připojení služby a pak jako úroveň oboru vyberte Azure Cloud for Environment a Subscription.

  4. Zadejte ID předplatného a název předplatného.

  5. Vyplňte následující pole informacemi, které jste získali při vytváření instančního objektu, a po dokončení vyberte Ověřit připojení :

    • ID klienta instančního objektu: ID vaší aplikace instančního objektu
    • Klíč instančního objektu: Heslo instančního objektu.
    • ID tenanta: Tenant instančního objektu.
  6. Zaškrtněte políčko Povolit všem kanálům, aby používaly toto připojení, a až budete hotovi, vyberte OK.

    Snímek obrazovky znázorňující, jak vytvořit nové připojení služby ARM pomocí instančního objektu v Azure DevOps Serveru 2019

Vytvoření nového 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 Použít klasický editor k vytvoření klasického kanálu.

  4. Vyberte Git Azure Repos, vyberte úložiště a výchozí větev a pak vyberte Pokračovat.

  5. Vyberte šablonu kanálu .Net Desktopu.

  6. V tomto příkladu budeme potřebovat jenom poslední dva úkoly. Stiskněte klávesu CTRL a pak vyberte prvních pět úkolů, klikněte pravým tlačítkem myši a zvolte Odebrat vybrané úkoly a odstraňte je.

    Snímek obrazovky znázorňující, jak odstranit více úloh kanálu

  7. Vyberte + , pokud chcete přidat nový úkol. Vyhledejte úlohu příkazového řádku , vyberte ji a pak ji vyberte Přidat a přidejte ji do kanálu. Po přidání ho nakonfigurujte následujícím způsobem:

    • Zobrazovaný název: Vytvoření souboru
    • Skript: echo $(YOUR_SECRET_NAME) > secret.txt

    Snímek obrazovky znázorňující, jak nakonfigurovat úlohu příkazového řádku

  8. Vyberte + , pokud chcete přidat nový úkol. Vyhledejte úlohu služby Azure Key Vault , vyberte ji a pak ji výběrem možnosti Přidat* přidejte do kanálu. Po přidání ho nakonfigurujte následujícím způsobem:

    • Zobrazovaný název: Azure Key Vault
    • Předplatné Azure: Vyberte připojení instančního objektu, které jste vytvořili dříve.
    • Trezor klíčů: Výběr trezoru klíčů
    • Filtr tajných kódů: Čárkami oddělený seznam názvů tajných kódů nebo nechte * pro stažení všech tajných kódů z vybraného trezoru klíčů.

    Snímek obrazovky znázorňující, jak nastavit úlohu služby Azure Key Vault v klasických kanálech

  9. Vyberte úlohu Kopírovat soubory a vyplňte požadovaná pole následujícím způsobem:

    • Zobrazovaný název: Kopírovat soubor
    • Obsah: secret.txt
    • Cílová složka: $(build.artifactstagingdirectory)

    Snímek obrazovky znázorňující, jak nastavit úlohu kopírování souborů v klasických kanálech

  10. Vyberte úlohu Publikovat artefakty a vyplňte požadovaná pole následujícím způsobem:

    • Zobrazovaný název: Publikování artefaktu
    • Cesta k publikování: $(build.artifactstagingdirectory)
    • Název artefaktu: drop
    • Umístění publikování artefaktů: Azure Pipelines

    Snímek obrazovky znázorňující, jak nastavit úlohu publikování artefaktů v klasických kanálech

  11. Vyberte Uložit a frontu a pak vyberte Spustit , aby se spustil kanál.

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

  13. Výběrem rozevíracího>seznamu secret.txt stáhněte publikovaný artefakt.

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

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

  1. Přihlaste se ke své kolekci Azure DevOps a přejděte do svého projektu.

  2. Vyberte Kanály a pak vyberte Sestavení.

  3. Vyberte Nový>kanál buildu.

  4. Vyberte Použít klasický editor k vytvoření nového klasického kanálu buildu.

  5. Vyberte Azure Repos Git, vyberte úložiště a výchozí větev a pak vyberte Pokračovat.

  6. Vyberte šablonu kanálu .Net Desktop a pak vyberte Použít.

  7. V tomto příkladu budeme potřebovat jenom poslední dva úkoly. Stiskněte klávesu CTRL a pak vyberte prvních pět úkolů, klikněte pravým tlačítkem myši a zvolte Odebrat vybrané úkoly a odstraňte je.

    Snímek obrazovky znázorňující odstranění více úloh kanálu v klasických kanálech v Azure DevOps Serveru 2019

  8. Vyberte + , pokud chcete přidat nový úkol. Vyhledejte úlohu příkazového řádku , vyberte ji a pak ji vyberte Přidat a přidejte ji do kanálu. Po přidání ho nakonfigurujte následujícím způsobem:

    • Zobrazovaný název: Vytvoření souboru
    • Skript: echo $(YOUR_SECRET_NAME) > secret.txt

    Snímek obrazovky znázorňující, jak nakonfigurovat úlohu příkazového řádku v klasických kanálech v Azure DevOps Serveru 2019

  9. Vyberte + , pokud chcete přidat nový úkol. Vyhledejte úlohu služby Azure Key Vault , vyberte ji a pak ji výběrem možnosti Přidat* přidejte do kanálu. Po přidání ho nakonfigurujte následujícím způsobem:

    • Zobrazovaný název: Azure Key Vault
    • Předplatné Azure: Vyberte připojení instančního objektu, které jste vytvořili dříve.
    • Trezor klíčů: Výběr trezoru klíčů
    • Filtr tajných kódů: Čárkami oddělený seznam názvů tajných kódů nebo nechte * pro stažení všech tajných kódů z vybraného trezoru klíčů.

    Snímek obrazovky znázorňující, jak nastavit úlohu služby Azure Key Vault v klasickém kanálu v Azure DevOps Serveru 2019

  10. Vyberte úlohu Kopírovat soubory a vyplňte požadovaná pole následujícím způsobem:

    • Zobrazovaný název: Kopírovat soubor
    • Obsah: secret.txt
    • Cílová složka: $(build.artifactstagingdirectory)

    Snímek obrazovky znázorňující, jak nastavit úlohu kopírování souborů v klasických kanálech v Azure DevOps Serveru 2019

  11. Vyberte úlohu Publikovat artefakty a vyplňte požadovaná pole následujícím způsobem:

    • Zobrazovaný název: Publikování artefaktu
    • Cesta k publikování: $(build.artifactstagingdirectory)
    • Název artefaktu: drop
    • Umístění publikování artefaktů: Azure Pipelines

    Snímek obrazovky znázorňující, jak nastavit úlohu publikování artefaktů v klasických kanálech v Azure DevOps Serveru 2019

  12. Vyberte Uložit a frontu a pak výběrem možnosti Uložit a frontu spusťte kanál buildu.

  13. Po dokončení spuštění kanálu vyberte Artefakty a pak vyberte drop.

  14. V nově otevřeném okně vyberte rozevírací>secret.txt, vyberte ikonu se třemi tečkou (...) a pak vyberte stáhnout a uložte textový soubor.

  15. Otevřete textový soubor, který jste právě stáhli, měl by 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:

$ErrorActionPreference="Stop";
$Credential = Get-Credential;
Connect-AzAccount -SubscriptionId <YOUR_SUBSCRIPTION_ID> -Credential $Credential;
$spn=(Get-AzureRmADServicePrincipal -SPN <YOUR_SERVICE_PRINCIPAL_ID>);
$spnObjectId=$spn.Id;
Set-AzureRmKeyVaultAccessPolicy -VaultName key-vault-tutorial -ObjectId $spnObjectId -PermissionsToSecrets get,list;