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.
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ě.
Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.
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
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í ověřování
Vytvoření spravované identity přiřazené uživatelem
Přihlaste se k webu Azure Portal a pak na panelu hledání vyhledejte službu Spravované identity .
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.
Až budete hotovi, vyberte Zkontrolovat a vytvořit .
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.
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íčů
Přejděte na web Azure Portal a pomocí panelu hledání vyhledejte trezor klíčů, který jste vytvořili dříve.
Vyberte Zásady přístupu a pak vyberte Vytvořit a přidejte novou zásadu.
V části Oprávnění k tajným kódům zaškrtněte políčka Získat a Seznam .
Vyberte Další a pak vložte ID klienta spravované identity, kterou jste vytvořili dříve, do panelu hledání. Vyberte spravovanou identitu.
Vyberte Další a pak ještě jednou další .
Zkontrolujte nové zásady a po dokončení vyberte Vytvořit .
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ší.
Jako typ identity vyberte spravovanou identitu z rozevírací nabídky.
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.
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ů.
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.
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.
Výběrem možnosti Uložit ověřte a vytvořte připojení služby.
Přístup k tajným kódům trezoru klíčů z 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 Git Azure Repos (YAML) a pak vyberte své úložiště.
Vyberte šablonu úvodního kanálu .
Výchozí kanál bude obsahovat skript, který spouští příkazy echo. Ty nejsou potřeba, abychom je mohli odstranit.
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
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'
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.
Vyberte úlohu CmdLine a zobrazte protokoly.
Po dokončení spuštění kanálu se vraťte do souhrnu kanálu a vyberte publikovaný artefakt.
Vyberte rozevírací>secret.txt a stáhněte si ho.
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:
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:
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