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
Organizace Azure DevOps a projekt Pokud jste to ještě neudělali, vytvořte organizaci nebo projekt.
Předplatné Azure. Pokud ho ještě nemáte, vytvořte si bezplatný účet Azure.
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.
Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.
Vyberte Úložiště a pak vyberte Inicializovat a inicializovat hlavní větev pomocí souboru README.
Vytvoření služby Azure Key Vault
Přihlaste se k webu Azure Portal a pak vyberte tlačítko Cloud Shell v pravém horním rohu.
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>
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>
Vytvoříte novou skupinu prostředků.
az group create --name <YOUR_RESOURCE_GROUP_NAME>
Vytvořte novou službu Azure Key Vault.
az keyvault create \ --name <YOUR_KEY_VAULT_NAME> \ --resource-group <YOUR_RESOURCE_GROUP_NAME>
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.
Přejděte na web Azure Portal a pak pomocí panelu hledání vyhledejte trezor klíčů, který jste vytvořili dříve.
Vyberte Zásady přístupu a pak vyberte Vytvořit a vytvořte novou zásadu.
V části Oprávnění tajných kódů vyberte Získat a Seznam.
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.
Vyberte Další a pak další ještě jednou.
Zkontrolujte zásady a pak vyberte Vytvořit , až budete hotovi.
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:
Přechod na web Azure Portal
Na levém navigačním panelu vyberte Předplatná a pak vyhledejte a vyberte své předplatné.
Vyberte Řízení přístupu a pak vyberte Přidat>přiřazení role.
Na kartě Role vyberte Čtenář a pak vyberte Další.
Vyberte Uživatele, skupinu nebo instanční objekt a pak vyberte Vybrat členy.
Pomocí vyhledávacího panelu vyhledejte instanční objekt a pak ho vyberte znaménko +a pak klikněte na tlačítko Vybrat .
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
Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.
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.
Vyberte Azure Resource Manager a pak vyberte Další.
Vyberte instanční objekt (ruční) a pak vyberte Další.
Jako úroveň rozsahu vyberte Azure Cloud for Environment a Předplatné a pak zadejte ID předplatného a název předplatného.
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.
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 .
Vyberte Ověřit a až skončíte, uložte ho.
Přihlaste se ke své kolekci Azure DevOps a přejděte do svého projektu.
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.
Zadejte název připojení služby a pak jako úroveň oboru vyberte Azure Cloud for Environment a Subscription.
Zadejte ID předplatného a název předplatného.
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.
Zaškrtněte políčko Povolit všem kanálům, aby používaly toto připojení, a až budete hotovi, vyberte OK.
Vytvoření nového kanálu
Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.
Vyberte Kanály a pak vyberte Nový kanál.
Vyberte Použít klasický editor k vytvoření klasického kanálu.
Vyberte Git Azure Repos, vyberte úložiště a výchozí větev a pak vyberte Pokračovat.
Vyberte šablonu kanálu .Net Desktopu.
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.
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
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íčů.
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)
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
Vyberte Uložit a frontu a pak vyberte Spustit , aby se spustil kanál.
Po dokončení spuštění kanálu se vraťte do souhrnu kanálu a vyberte publikovaný artefakt.
Výběrem rozevíracího>seznamu secret.txt stáhněte publikovaný artefakt.
Otevřete textový soubor, který jste právě stáhli, měl by textový soubor obsahovat tajný kód z trezoru klíčů Azure.
Přihlaste se ke své kolekci Azure DevOps a přejděte do svého projektu.
Vyberte Kanály a pak vyberte Sestavení.
Vyberte Nový>kanál buildu.
Vyberte Použít klasický editor k vytvoření nového klasického kanálu buildu.
Vyberte Azure Repos Git, vyberte úložiště a výchozí větev a pak vyberte Pokračovat.
Vyberte šablonu kanálu .Net Desktop a pak vyberte Použít.
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.
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
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íčů.
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)
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
Vyberte Uložit a frontu a pak výběrem možnosti Uložit a frontu spusťte kanál buildu.
Po dokončení spuštění kanálu vyberte Artefakty a pak vyberte drop.
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.
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:
Pokud jste vytvořili novou organizaci pro hostování projektu, podívejte se, jak odstranit organizaci, jinak projekt odstraňte.
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;