Přístup k privátnímu trezoru klíčů z kanálu
Azure Key Vault nabízí zabezpečené řešení pro správu přihlašovacích údajů, jako jsou klíče, tajné kódy a certifikáty s bezproblémovým zabezpečením. Pomocí Azure Pipelines můžete zjednodušit proces přístupu a používání trezorů klíčů, což usnadňuje ukládání a načítání přihlašovacích údajů.
V určitých scénářích organizace upřednostňují zabezpečení omezením přístupu k trezorům klíčů výhradně na určené virtuální sítě Azure, aby zajistily nejvyšší úroveň zabezpečení kritických aplikací.
V tomto kurzu se naučíte, jak:
- Vytvoření instančního objektu služby
- Vytvoření připojení služby
- Konfigurace příchozích přístupových bodů
- Dotazování privátního trezoru klíčů Azure z 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.
An Azure Key Vault. Pokud jste to ještě neudělali, vytvořte novou službu Azure Key Vault .
Přístup k privátnímu trezoru klíčů
Azure Pipelines umožňuje vývojářům propojit službu Azure Key Vault se skupinou proměnných a mapovat na ni tajné kódy selektivního trezoru. Přístup k trezoru klíčů, který se používá jako skupina proměnných:
Z Azure DevOps během doby konfigurace skupiny proměnných.
Z agenta v místním prostředí během modulu runtime úlohy kanálu.
Vytvoření instančního objektu služby
Začněte vytvořením nového instančního objektu, který vám umožní přístup k prostředkům Azure. V dalším kroku budete muset vytvořit nové připojení služby ARM v Azure DevOps a pak před ověřením a uložením připojení služby v Azure DevOps nastavit federované přihlašovací údaje pro instanční objekt v Azure.
Přejděte na Azure Portal.
Otevřete Cloud Shell z řádku nabídek a pak vyberte Bash.
Spuštěním následujícího příkazu vytvořte nový instanční objekt:
az ad sp create-for-rbac --name YOUR_SERVICE_PRINCIPAL_NAME
Nezapomeňte zkopírovat výstup, protože ho použijeme k vytvoření připojení služby v dalším kroku.
Vytvoření připojení služby
Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.
Vyberte Nastavení projektu>Připojení>služby Nová připojení služby.
Vyberte Azure Resource Manager a pak vyberte Další.
Jako typ identity vyberte v rozevírací nabídce možnost Registrace aplikace (automatická).
U přihlašovacích údajů ponechte výchozí doporučenou hodnotu: Federace identit úloh.
V části Úroveň rozsahu vyberte **Předplatné a pak v rozevírací nabídce vyberte své předplatné.
Vyberte skupinu prostředků, pokud chcete omezit přístup pouze na zadanou skupinu prostředků.
Zadejte název připojení ke službě a zaškrtněte políčko Udělit přístup všem kanálům a povolte tak používání tohoto připojení služby všem kanálům.
Až budete hotovi, zvolte tlačítko Uložit.
Vytvoření federovaných přihlašovacích údajů
Přejděte na web Azure Portal, zadejte ID klienta instančního objektu do vyhledávacího panelu a pak vyberte svou aplikaci.
V části Spravovat vyberte Certifikáty a tajné>kódy federovaných přihlašovacích údajů.
Vyberte Přidat přihlašovací údaje a pak pro scénář federovaných přihlašovacích údajů vyberte Jiný vystavitel.
Jako vystavitele vložte následující adresu URL a nahraďte zástupný symbol identifikátorem GUID vaší organizace. ID vaší organizace najdete tak, že přejdete do nastavení>organizace a Microsoft Entra> Stáhne seznam organizací Azure DevOps připojených k vašemu adresáři.
https://vstoken.dev.azure.com/<ORGANIZATION_ID>
Jako identifikátor předmětu vložte následující adresu URL a nahraďte zástupný text názvem organizace, názvem projektu a názvem připojení služby.
sc://ORGANIZATION_NAME/PROJECT_NAME/SERVICE_CONNECTION_NAME
Zadejte název federovaných přihlašovacích údajů a po dokončení vyberte Přidat.
Vytvoření připojení služby
Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.
Vyberte Nastavení projektu>Připojení>služby Nová připojení služby.
Vyberte Azure Resource Manager, >Další a pak vyberte Instanční objekt (ruční)>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.
Zadejte informace o instančním objektu a pak vyberte Ověřit.
Po úspěšném ověření pojmenujte připojení služby, přidejte popis 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.
Tip
Pokud nemůžete ověřit připojení instančního objektu, udělte čtenáři instančního objektu přístup k vašemu předplatnému.
Vytvoření připojení služby
Přihlaste se ke své kolekci Azure DevOps a přejděte do svého projektu.
Vyberte Nastavení projektu>Připojení>služby Nová připojení služby.
Vyberte Azure Resource Manager, pojmenujte připojení ke službě a pak vyberte Azure Cloud for Environment a Subscription pro úroveň oboru.
Zadejte ID předplatného a název předplatného.
Zadejte informace o instančním objektu a pak vyberte Ověřit připojení.
Zaškrtněte políčko Povolit všem kanálům, aby používaly toto připojení, a až budete hotovi, vyberte OK.
Tip
Pokud nemůžete ověřit připojení instančního objektu, udělte čtenáři instančního objektu přístup k vašemu předplatnému.
Přístup k privátnímu trezoru klíčů z Azure DevOps
V této části prozkoumáme dvě metody přístupu k privátnímu trezoru klíčů z Azure DevOps. Nejprve pomocí skupin proměnných propojíme a mapujeme tajné kódy z našeho trezoru klíčů a následně nastavíme příchozí přístup tím, že povolíme rozsahy statických IP adres. Vytvoříme příchozí přístup, protože Azure Pipelines používá publikujte veřejnou IP adresu Azure DevOps při dotazování služby Azure Key Vault ze skupiny proměnných. Proto se můžeme úspěšně připojit k naší službě Azure Key Vault přidáním příchozích připojení k bráně firewall služby Azure Key Vault.
Pro druhý přístup si ukážeme dynamické přidání IP adresy agenta hostovaného Microsoftem do seznamu povolených adres služby Key Vault, dotazování na trezor klíčů a následné odebrání IP adresy po dokončení. Tento druhý přístup je určený pro demonstrační účely a není doporučeným přístupem služby Azure Pipelines.
1. Mapování tajných kódů trezoru klíčů pomocí skupiny proměnných
Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.
Vyberte Knihovnu> kanálů a pak vyberte + Skupina proměnných.
Pojmenujte skupinu proměnných a pak výběrem přepínače povolte tajné kódy odkazu ze služby Azure Key Vault jako tlačítko proměnné .
Vyberte připojení služby, které jste vytvořili dříve, vyberte trezor klíčů a pak vyberte Autorizovat.
V části Proměnné vyberte Přidat a přidejte tajný kód a až budete hotovi, vyberte Uložit .
Poznámka:
Ujistěte se, že vaše připojení ke službě má oprávnění Získat a seznam a že je instančnímu objektu přiřazena role Uživatele tajných kódů služby Key Vault ve vašem privátním trezoru klíčů.
1.1 Nastavení oprávnění připojení služby
Přejděte do trezoru klíčů Azure a pak vyberte Zásady přístupu.
Vyberte Vytvořit a v části Oprávnění k tajným kódům přidejte oprávnění Získat a Vypsat a pak vyberte Další.
Přidejte připojení ke službě na panelu hledání, vyberte ho a pak vyberte Další.
Znovu vyberte Další , zkontrolujte nastavení a po dokončení vyberte Zkontrolovat a vytvořit .
1.2 Nastavení oprávnění instančního objektu
Přejděte do trezoru klíčů Azure a pak vyberte Řízení přístupu (IAM).
Vyberte Přidat>přiřazení> role a pak vyberte kartu Role.
Vyberte roli uživatele tajných kódů služby Key Vault a pak vyberte Další.
Vyberte Vybrat členy>, přidejte váš instanční objekt>.
Až budete hotovi, vyberte Zkontrolovat a přiřadit .
Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.
Vyberte Knihovnu> kanálů a pak vyberte + Skupina proměnných.
Pojmenujte skupinu proměnných a pak výběrem přepínače povolte tajné kódy odkazu ze služby Azure Key Vault jako tlačítko proměnné .
V rozevírací nabídce vyberte připojení služby Azure, které jste vytvořili dříve, a pak vyberte svůj trezor klíčů.
Pokud se zobrazí chybová zpráva: Zadané připojení služby Azure musí mít oprávnění ke správě tajných kódů Get, List ve vybraném trezoru klíčů. Jak je znázorněno výše. Přejděte do trezoru klíčů na webu Azure Portal, vyberte Řízení přístupu (IAM)>Přidat uživatele>tajných kódů trezoru klíčů přiřazení>role a pak přidejte instanční objekt a až budete hotovi, vyberte Zkontrolovat a přiřadit.
Přidejte tajné kódy a až budete hotovi, vyberte Uložit .
2. Konfigurace příchozího přístupu z Azure DevOps
Pokud chcete povolit přístup k trezoru klíčů z Azure DevOps, musíte udělit přístup z konkrétních statických rozsahů IP adres. Tyto rozsahy jsou určeny geografickým umístěním vaší organizace Azure DevOps.
Přihlaste se ke své organizaci Azure DevOps.
Vyberte Nastavení organizace.
Přejděte do části Přehled, kde najdete zeměpisné umístění uvedené v dolní části stránky.
Vyhledejte zeměpisné rozsahy IP adres V4.
Nakonfigurujte trezor klíčů tak, aby umožňoval přístup ze statických rozsahů IP adres.
3. Dotazování privátního trezoru klíčů se skupinou proměnných
V tomto příkladu použijeme skupinu proměnných, která je nastavená dříve a autorizovaná s instančním objektem, k dotazování a zkopírování tajného kódu z privátní služby Azure Key Vault jednoduše pomocí propojené skupiny proměnných. Azure Pipelines používá publikovanou veřejnou IP adresu při dotazování služby Azure Key Vault ze skupiny proměnných, proto se ujistěte, že jste nakonfigurovali příchozí přístup , aby fungoval správně:
variables:
- group: mySecret-VG
steps:
- task: CmdLine@2
inputs:
script: 'echo $(mySecret) > secret.txt'
- task: CopyFiles@2
inputs:
Contents: secret.txt
targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
Alternativní metoda – Dynamicky povolte IP adresu agenta hostovaného Microsoftem
V tomto druhém přístupu začneme dotazováním IP adresy agenta hostovaného Microsoftem na začátku našeho kanálu. Pak ji přidáme do seznamu povolených trezorů klíčů, budeme pokračovat ve zbývajících úkolech a nakonec odebereme IP adresu ze seznamu povolených bran firewall trezoru klíčů.
Poznámka:
Tento přístup je určený jenom pro demonstrační účely a není doporučeným přístupem služby Azure Pipelines.
- task: AzurePowerShell@5
displayName: 'Allow agent IP'
inputs:
azureSubscription: 'YOUR_SERVICE_CONNECTION_NAME'
azurePowerShellVersion: LatestVersion
ScriptType: InlineScript
Inline: |
$ip = (Invoke-WebRequest -uri "http://ifconfig.me/ip").Content
Add-AzKeyVaultNetworkRule -VaultName "YOUR_KEY_VAULT_NAME" -ResourceGroupName "YOUR_RESOURCE_GROUP_NAME" -IpAddressRange $ip
echo "##vso[task.setvariable variable=agentIP]ip"
- task: AzureKeyVault@2
inputs:
azureSubscription: 'YOUR_SERVICE_CONNECTION_NAME'
KeyVaultName: 'YOUR_KEY_VAULT_NAME'
SecretsFilter: '*'
RunAsPreJob: false
- task: AzurePowerShell@5
displayName: 'Remove agent IP'
inputs:
azureSubscription: 'YOUR_SERVICE_CONNECTION_NAME'
azurePowerShellVersion: LatestVersion
ScriptType: InlineScript
Inline: |
$ipRange = $env:agentIP + "/32"
Remove-AzKeyVaultNetworkRule -VaultName "YOUR_KEY_VAULT_NAME" -IpAddressRange $ipRange
condition: succeededOrFailed()
Důležité
Ujistěte se, že instanční objekt, který používáte pro přístup k trezoru klíčů z vašeho kanálu, obsahuje roli přispěvatele trezoru klíčů v rámci řízení přístupu (IAM) vašeho trezoru klíčů.
Přístup k privátnímu trezoru klíčů z místního agenta
Pokud chcete mít možnost přistupovat k privátnímu trezoru klíčů z agenta Azure Pipelines, budete muset použít agenta v místním prostředí (Windows, Linux, Mac) nebo agenty škálovací sady. Důvodem je to, že agenti hostovaní Microsoftem, jako jsou jiné obecné výpočetní služby, nejsou zahrnuti v seznamu důvěryhodných služeb trezoru klíčů.
Pokud chcete vytvořit připojení k vašemu privátnímu trezoru klíčů, musíte poskytnout připojení k dohledu konfigurací privátního koncového bodu pro váš trezor klíčů. Tento koncový bod musí být směrovatelný a musí mít jeho privátní název DNS, který je možné přeložit z agenta kanálu v místním prostředí.
1. Konfigurace příchozího přístupu z agenta v místním prostředí
Podle pokynů vytvořte virtuální síť.
Na webu Azure Portal najděte službu Azure Key Vault pomocí panelu hledání v horní části stránky.
Jakmile ve výsledcích hledání najdete trezor klíčů, vyberte ho a pak přejděte na Nastavení>sítě.
Vyberte připojení privátního koncového bodu a pak vyberte Vytvořit a vytvořte nový privátní koncový bod.
Vyberte skupinu prostředků, která je hostitelem virtuální sítě, kterou jste vytvořili dříve. Zadejte název a název síťového rozhraní pro vaši instanci a ujistěte se, že jste vybrali stejnou oblast jako virtuální síť, kterou jste vytvořili dříve. Až budete hotovi, vyberte Další .
Jako metodu připojení vyberte Připojit k prostředku Azure v mém adresáři a v rozevírací nabídce pro typ prostředku zvolte Microsoft.KeyVault/vaults. V rozevírací nabídce vyberte prostředek. Cílový dílčí prostředek se automaticky vyplní hodnotou: trezor. Až budete hotovi, vyberte Další .
Na kartě Virtuální síť vyberte virtuální síť a podsíť, které jste vytvořili dříve, a zbývající pole ponechte jako výchozí. Až budete hotovi, vyberte Další .
Pokračujte na kartách DNS a Značky a přijměte výchozí nastavení. Na kartě Zkontrolovat a vytvořit vyberte Po dokončení vytvořit možnost Vytvořit.
Po nasazení prostředku přejděte na připojení privátního koncového bodu sítě trezoru >klíčů k nastavení>sítě>, váš privátní koncový bod by měl být uvedený se schváleným stavem připojení. Pokud propojíte s prostředkem Azure v jiném adresáři, budete muset počkat, až vlastník prostředku schválí vaši žádost o připojení.
2. Povolení virtuální sítě
Přejděte na web Azure Portal a vyhledejte službu Azure Key Vault.
Vyberte Nastavení>sítě a ujistěte se, že jste na kartě Brány firewall a virtuální sítě .
Vyberte Přidat virtuální síť>Přidat existující virtuální sítě.
V rozevírací nabídce vyberte své předplatné a pak vyberte virtuální síť, kterou jste vytvořili dříve, a pak vyberte podsítě.
Po dokončení vyberte Přidat a posuňte se do dolní části stránky a vyberte Použít , aby se změny uložily.
3. Dotazování privátního trezoru klíčů z místního agenta
Následující příklad používá agenta nastavený na virtuálním počítači virtuální sítě k dotazování privátního trezoru klíčů prostřednictvím skupiny proměnných:
pool: Self-hosted-pool
variables:
group: mySecret-VG
steps:
- task: CmdLine@2
inputs:
script: 'echo $(mySecret) > secret.txt'
- task: CopyFiles@2
inputs:
Contents: secret.txt
targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
Pokud nechcete udělovat příchozí přístup Azure DevOps k vašemu privátnímu trezoru klíčů, můžete k dotazování trezoru klíčů použít úlohu AzureKeyVault . Musíte ale zajistit, aby virtuální síť hostující vašeho agenta byla povolena v nastavení brány firewall trezoru klíčů.
pool: Self-hosted-pool
steps:
- task: AzureKeyVault@2
inputs:
azureSubscription: '$(SERVICE_CONNECTION_NAME)'
keyVaultName: $(KEY_VAULT_NAME)
SecretsFilter: '*'
- task: CmdLine@2
inputs:
script: 'echo $(mySecret) > secret.txt'
- task: CopyFiles@2
inputs:
Contents: secret.txt
targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
Odstraňování potíží
Pokud dochází k následujícím chybám, při řešení tohoto problému postupujte podle kroků v této části:
Public network access is disabled and request is not from a trusted service nor via an approved private link.
To znamená, že veřejný přístup je zakázaný a není nastavené připojení privátního koncového bodu ani výjimky brány firewall. Postupujte podle kroků v části [#configure-inbound-access-from-a-self-hosted-agent] a nakonfigurujte příchozí přístup z Azure DevOps pro nastavení přístupu k vašemu privátnímu trezoru klíčů.
Request was not allowed by NSP rules and the client address is not authorized and caller was ignored because bypass is set to None Client address: <x.x.x.x>
Tato chybová zpráva značí, že veřejný přístup trezoru klíčů je zakázaný a políčko Povolit důvěryhodné služby Microsoft obejít tuto možnost brány firewall, ale IP adresa klienta nebyla přidána do brány firewall trezoru klíčů. Přejděte do trezoru klíčů na webu Azure Portal a pak na webu Azure>Portal nastavte sítě a přidejte IP adresu klienta do seznamu povolených bran firewall.
Error: Client address is not authorized and caller is not a trusted service.
Ujistěte se, že do seznamu povolených seznamů povolených trezorů klíčů přidáte rozsahy IPV4 vaší zeměpisu. Podrobnosti najdete v tématu Konfigurace příchozího přístupu z Azure DevOps . Případně můžete přejít k dynamickému povolení IP adresy agenta hostovaného Microsoftem, abyste se dozvěděli, jak přidat IP adresu klienta do brány firewall trezoru klíčů během běhu.