Sdílet prostřednictvím


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

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:

  1. Z Azure DevOps během doby konfigurace skupiny proměnných.

  2. Z agenta v místním prostředí během modulu runtime úlohy kanálu.

Diagram znázorňující dvě různé cesty pro přístup k privátnímu trezoru klíčů

Vytvoření instančního objektu služby

Začněme vytvořením nového instančního objektu, což nám umožní přístup k prostředkům Azure. Dále vytvoříme nové připojení služby ARM v Azure DevOps pomocí tohoto instančního objektu, abychom mohli dotazovat službu Azure Key Vault ze služby Azure Pipelines.

  1. Přejděte na Azure Portal.

  2. Otevřete Cloud Shell a pak vyberte Bash.

  3. 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
    
  4. 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

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

  2. Vyberte Nastavení projektu>Připojení>služby Nová připojení služby.

  3. Vyberte Azure Resource Manager, >Další a pak vyberte Instanční objekt (ruční)>Další.

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

  5. Zadejte informace o instančním objektu a pak vyberte Ověřit.

  6. 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.

  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 Nová připojení služby.

  3. Vyberte Azure Resource Manager, pojmenujte připojení ke službě a pak vyberte Azure Cloud for Environment a Subscription pro úroveň oboru.

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

  5. Zadejte informace o instančním objektu a pak vyberte Ověřit připojení.

  6. 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

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

  2. Vyberte Knihovnu> kanálů a pak vyberte + Skupina proměnných.

  3. 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é .

  4. V rozevírací nabídce vyberte připojení služby Azure, které jste vytvořili dříve, a pak vyberte svůj trezor klíčů.

    Snímek obrazovky znázorňující, jak propojit skupinu proměnných se službou Azure Key Vault s chybou označující chybějící oprávnění k získání a výpisu

  5. 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.

    Snímek obrazovky znázorňující přidání instančního objektu jako tajného uživatele pro Azure Key Vault

  6. 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.

  1. Přihlaste se ke své organizaci Azure DevOps.

  2. Vyberte Nastavení organizace.

  3. Přejděte do části Přehled, kde najdete zeměpisné umístění uvedené v dolní části stránky.

    Snímek obrazovky znázorňující, jak najít zeměpisné umístění vaší organizace Azure DevOps

  4. Vyhledejte zeměpisné rozsahy IP adres V4.

  5. 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í

  1. Podle pokynů vytvořte virtuální síť.

  2. Na webu Azure Portal najděte službu Azure Key Vault pomocí panelu hledání v horní části stránky.

  3. Jakmile ve výsledcích hledání najdete trezor klíčů, vyberte ho a pak přejděte na Nastavení>sítě.

  4. Vyberte připojení privátního koncového bodu a pak vyberte Vytvořit a vytvořte nový privátní koncový bod.

    Snímek obrazovky znázorňující, jak vytvořit nové připojení privátního koncového bodu pro Azure Key Vault

  5. 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ší .

    Snímek obrazovky znázorňující, jak nakonfigurovat kartu Základy při vytváření nové instance privátního koncového bodu pro službu Azure Key Vault

  6. 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ší .

    Snímek obrazovky znázorňující, jak nakonfigurovat kartu prostředku při vytváření nové instance privátního koncového bodu pro službu Azure Key Vault

  7. 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ší .

  8. 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.

  9. 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í.

    Snímek obrazovky zobrazující schválené připojení privátního koncového bodu

2. Povolení virtuální sítě

  1. Přejděte na web Azure Portal a vyhledejte službu Azure Key Vault.

  2. Vyberte Nastavení>sítě a ujistěte se, že jste na kartě Brány firewall a virtuální sítě .

  3. Vyberte Přidat virtuální síť>Přidat existující virtuální sítě.

  4. 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ě.

  5. 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.

    Snímek obrazovky znázorňující, jak přidat existující virtuální síť do brány firewall služby Azure Key Vault

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.