İngilizce dilinde oku

Aracılığıyla paylaş


İşlem hattınızdan özel anahtar kasasına erişme

Özel bir Azure Key Vault'a erişmek için bir yöntem seçin

Azure Key Vault anahtarlar, gizli diziler ve sertifikalar gibi kimlik bilgilerini sorunsuz güvenlikle yönetmek için güvenli bir çözüm sunar. Azure Pipelines'ı kullanarak anahtar kasalarına erişme ve bunları kullanma sürecini kolaylaştırarak kimlik bilgilerini depolamayı ve almayı zahmetsiz hale getirebilirsiniz.

Bazı senaryolarda kuruluşlar, kritik uygulamalar için en yüksek güvenlik düzeyini sağlamak üzere anahtar kasalarına erişimi yalnızca belirlenen Azure sanal ağlarıyla kısıtlayarak güvenliği önceliklendirir.

Bu öğreticide şunların nasıl yapıldığını öğrenirsiniz:

  • Hizmet sorumlusu oluşturma
  • Hizmet bağlantısı oluşturma
  • Gelen erişim noktalarınızı yapılandırma
  • İşlem hattınızdan özel bir Azure anahtar kasası sorgulama

Önkoşullar

Özel anahtar kasasına erişme

Azure Pipelines, geliştiricilerin bir Azure Key Vault'ı bir değişken grubuna bağlamasına ve seçmeli kasa gizli dizilerini bu gruba eşlemesine olanak tanır. Değişken grubu olarak kullanılan bir anahtar kasasına erişilebilir:

  1. Değişken grubu yapılandırma süresi boyunca Azure DevOps'tan.

  2. İşlem hattı iş çalışma zamanı sırasında şirket içinde barındırılan bir aracıdan.

Özel anahtar kasasına erişmek için iki farklı yolu gösteren diyagram.

Hizmet sorumlusu oluşturma

Yeni bir hizmet sorumlusu oluşturarak başlayın; bu, Azure kaynaklarına erişmenizi sağlar. Ardından Azure DevOps'ta yeni bir ARM hizmet bağlantısı oluşturmanız ve ardından hizmet bağlantınızı Azure DevOps'a doğrulamadan ve kaydetmeden önce Azure'da hizmet sorumlunuz için federasyon kimlik bilgileri ayarlamanız gerekir.

  1. Azure portala gidin.

  2. Menü çubuğundan Cloud Shell'i açın ve ardından Bash'i seçin.

  3. Yeni bir hizmet sorumlusu oluşturmak için aşağıdaki komutu çalıştırın:

    Azure
    az ad sp create-for-rbac --name YOUR_SERVICE_PRINCIPAL_NAME
    
  4. Sonraki adımda hizmet bağlantısını oluşturmak için kullanacağımız için çıkışı kopyaladığınızdan emin olun.

Hizmet bağlantısı oluşturma

  1. Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.

  2. Proje ayarları>Hizmet bağlantıları>Yeni hizmet bağlantısı'nı seçin.

  3. Azure Resource Manager'ı ve ardından İleri'yi seçin.

  4. Kimlik Türü için açılan menüden Uygulama kaydı (otomatik) öğesini seçin.

  5. Kimlik Bilgileri için varsayılan önerilen değeri bırakın: İş yükü kimliği federasyonu.

  6. Kapsam düzeyi için ** Abonelik'i seçin ve ardından açılan menüden aboneliğinizi seçin.

  7. Erişimi yalnızca belirtilen kaynak grubuyla sınırlamak istiyorsanız bir Kaynak grubu seçin.

  8. Hizmet bağlantınız için bir ad sağlayın ve tüm işlem hatlarının bu hizmet bağlantısını kullanmasına izin vermek için Tüm işlem hatlarına erişim izni ver onay kutusunu seçin.

  9. Bitirdiğinizde Kaydet'i seçin.

    Hizmet sorumlusu için ARM hizmet bağlantısını yapılandırmayı gösteren ekran görüntüsü.

Federasyon kimlik bilgisi oluşturma

  1. Azure portalına gidin, arama çubuğuna hizmet sorumlunuzun ClientID değerini girin ve uygulamanızı seçin.

  2. Yönet'in altında Sertifikalar ve gizli diziler>Federasyon kimlik bilgileri'ni seçin.

  3. Kimlik bilgisi ekle'yi seçin ve ardından Federasyon kimlik bilgisi senaryosu için Diğer veren'i seçin.

  4. Veren için aşağıdaki URL'yi yapıştırarak yer tutucuyu kuruluşunuzun GUID değeriyle değiştirin. Kuruluş ayarları>Microsoft Entra> dizininize bağlı Azure DevOps kuruluşlarının listesini indirme bölümüne giderek kuruluşunuzun kimliğini bulabilirsiniz.

    https://vstoken.dev.azure.com/<ORGANIZATION_ID>
    
  5. Konu tanımlayıcısı için aşağıdaki URL'yi yapıştırarak yer tutucunun yerine kuruluşunuzun adını, proje adını ve hizmet bağlantı adını yazın.

    sc://ORGANIZATION_NAME/PROJECT_NAME/SERVICE_CONNECTION_NAME
    
  6. Federasyon kimlik bilgileriniz için bir Ad girin ve işiniz bittiğinde Ekle'yi seçin.

Hizmet bağlantısı oluşturma

  1. Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.

  2. Proje ayarları>Hizmet bağlantıları>Yeni hizmet bağlantısı'nı seçin.

  3. Azure Resource Manager, >İleri'yi ve ardından Hizmet sorumlusu (el ile)İleri'yi> seçin.

  4. Kapsam Düzeyi için Ortam ve Abonelik için Azure Bulutu'na tıklayın, ardından Abonelik Kimliğinizi ve Abonelik Adınızı girin.

  5. Hizmet sorumlusu bilgilerinizi girin ve Doğrula'yı seçin.

  6. Doğrulama başarılı olduktan sonra hizmet bağlantınızı adlandırın, bir açıklama ekleyin ve ardından Tüm işlem hatlarına erişim izni ver onay kutusunu işaretleyin. Doğrula'yı seçin ve işiniz bittiğinde kaydedin .

İpucu

Hizmet sorumlusu bağlantınızı doğrulayamıyorsanız hizmet sorumlusuNa aboneliğinize Okuyucu erişimi verin.

Hizmet bağlantısı oluşturma

  1. Azure DevOps koleksiyonunuzda oturum açın ve projenize gidin.

  2. Proje ayarları>Hizmet bağlantıları>Yeni hizmet bağlantısı'nı seçin.

  3. Azure Resource Manager'ı seçin, hizmet bağlantınızı adlandırın ve ardından Kapsam Düzeyi için Ortam ve Abonelik için Azure Bulutu'na tıklayın.

  4. Abonelik Kimliğinizi ve Abonelik Adınızı girin.

  5. Hizmet sorumlusu bilgilerinizi girin ve bağlantıyı doğrula'yı seçin.

  6. Tüm işlem hatlarının bu bağlantıyı kullanmasına izin ver onay kutusunu işaretleyin ve işiniz bittiğinde Tamam'ı seçin.

İpucu

Hizmet sorumlusu bağlantınızı doğrulayamıyorsanız hizmet sorumlusuNa aboneliğinize Okuyucu erişimi verin.

Azure Devops'tan özel anahtar kasasına erişme

Bu bölümde, Azure DevOps'tan özel anahtar kasasına erişmek için iki yöntemi keşfedeceğiz. İlk olarak anahtar kasamızdan gizli dizileri bağlamak ve eşlemek ve ardından statik IP aralıklarına izin vererek gelen erişimi ayarlamak için Değişken Grupları kullanacağız. Azure Pipelines, Bir Değişken Grubundan Azure Anahtar Kasası'nı sorgularken gönderilen Azure DevOps Genel IP'sini kullandığından gelen erişimi belirleriz. Bu nedenle, Azure Key Vault güvenlik duvarına gelen bağlantılar ekleyerek Azure Key Vault'umuza başarıyla bağlanabiliriz.

İkinci yaklaşımımızda, Microsoft tarafından barındırılan aracı IP adresini anahtar kasamızın güvenlik duvarı izin verilenler listesine dinamik olarak eklemeyi, anahtar kasasını sorgulamayı ve tamamlandıktan sonra IP'yi kaldırmayı göstereceğiz. Bu ikinci yaklaşım tanıtım amaçlıdır ve Azure Pipelines tarafından önerilen yaklaşım değildir.

1 - Anahtar kasası gizli dizilerini değişken grubuyla eşleme

  1. Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.

  2. İşlem Hatları>Kitaplığı'nın ardından + Değişken grubu'nu seçin.

  3. Değişken grubunuzu adlandırın ve ardından Azure Key Vault'tan gizli dizileri değişken olarak bağla düğmesini etkinleştirmek için iki durumlu düğmeyi seçin.

  4. Daha önce oluşturduğunuz hizmet bağlantısını seçin, anahtar kasanızı seçin ve ardından Yetki ver'i seçin.

  5. Değişkenler'in altında Ekle'yi seçerek gizli dizinizi ekleyin ve işiniz bittiğinde Kaydet'i seçin.

Not

Hizmet bağlantınızın Alma ve listeleme izinlerine sahip olduğundan ve hizmet sorumlunuza özel anahtar kasanızda Key Vault Gizli Dizileri Kullanıcı rolünün atandığından emin olun.

1.1 Hizmet bağlantısı izinlerini ayarlama

  1. Azure anahtar kasanıza gidin ve erişim ilkeleri'ni seçin.

  2. Oluştur'u seçin ve Gizli dizi izinleri'nin altında Alma ve Listeleme izinlerini ekleyin ve ardından İleri'yi seçin.

  3. Arama çubuğuna hizmet bağlantınızı ekleyin, seçin ve ardından İleri'yi seçin.

  4. bir kez daha İleri'yi seçin, ayarlarınızı gözden geçirin ve işiniz bittiğinde Gözden geçir + oluştur'u seçin.

1.2 Hizmet sorumlusu izinlerini ayarlama

  1. Azure anahtar kasanıza gidin ve erişim denetimi (IAM) öğesini seçin.

  2. Rol ataması> ekle'yi>ve ardından Rol sekmesini seçin.

  3. Key Vault Gizli Dizileri Kullanıcı rolünü ve ardından İleri'yi seçin.

  4. Üye seç'i seçin ve hizmet sorumlunuzu >ekleyin Select seçeneğini belirleyin.>

  5. İşiniz bittiğinde Gözden geçir ve ata'yı seçin.

  1. Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.

  2. İşlem Hatları>Kitaplığı'nın ardından + Değişken grubu'nu seçin.

  3. Değişken grubunuzu adlandırın ve ardından Azure Key Vault'tan gizli dizileri değişken olarak bağla düğmesini etkinleştirmek için iki durumlu düğmeyi seçin.

  4. Açılan menüden daha önce oluşturduğunuz Azure hizmet bağlantınızı seçin ve ardından anahtar kasanızı seçin.

    Alma ve listeleme izinlerinin eksik olduğunu belirten bir hatayla bir değişken grubunun Azure Key Vault'a nasıl bağlandığını gösteren ekran görüntüsü.

  5. Hata iletisiyle karşılaşırsanız: Belirtilen Azure hizmet bağlantısının seçili anahtar kasasında "Al, Listele" gizli dizi yönetimi izinlerine sahip olması gerekir. Yukarıda gösterildiği gibi. Azure portalında anahtar kasanıza gidin, Erişim denetimi (IAM)>Rol ataması>anahtar kasası gizli dizileri ekle kullanıcı>İleri'yi seçin, ardından hizmet sorumlunuzu ekleyin ve işiniz bittiğinde Gözden geçir ve ata'yı seçin.

    Azure Key Vault için gizli kullanıcı olarak hizmet sorumlusu eklemeyi gösteren ekran görüntüsü.

  6. Gizli dizilerinizi ekleyin ve işiniz bittiğinde Kaydet'i seçin.

2 - Azure DevOps'tan gelen erişimi yapılandırma

Azure DevOps'tan anahtar kasanıza erişimi etkinleştirmek için belirli statik IP aralıklarından erişim vermelisiniz. Bu aralıklar, Azure DevOps kuruluşunuzun coğrafi konumuna göre belirlenir.

  1. Azure DevOps kuruluşunuzda oturum açın.

  2. Kuruluş ayarları'nı seçin.

  3. Sayfanın alt kısmında listelenen coğrafi konumu bulabileceğiniz Genel Bakış'a gidin.

    Azure DevOps kuruluşunuzun coğrafi konumunu bulmayı gösteren ekran görüntüsü.

  4. Coğrafya IP V4 aralıklarınızı bulun.

  5. Anahtar kasanızı statik IP aralıklarından erişime izin verecek şekilde yapılandırın.

3 - Özel anahtar kasasında değişken grubu sorgulama

Bu örnekte, gizli dizimizi yalnızca bağlı değişken grubunu kullanarak özel Azure Key Vault'umuzdan sorgulamak ve kopyalamak için daha önce ayarlanmış ve bir hizmet sorumlusuyla yetkilendirilmiş değişken grubunu kullanacağız. Azure Pipelines, Bir Değişken Grubundan Azure Anahtar Kasası'nı sorgularken gönderilen genel IP'yi kullanır, bu nedenle bunun düzgün çalışması için gelen erişimi yapılandırdığınızdan emin olun:

yml
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'

Alternatif yöntem - Microsoft tarafından barındırılan aracı IP'sine dinamik olarak izin ver

Bu ikinci yaklaşımda, işlem hattımızın başında Microsoft tarafından barındırılan aracının IP'sini sorgulayarak başlayacağız. Ardından anahtar kasası izin verilenler listesine ekleyeceğiz, kalan görevlere devam edeceğiz ve son olarak anahtar kasasının güvenlik duvarı izin verilenler listesinden IP'yi kaldıracağız.

Not

Bu yaklaşım yalnızca tanıtım amaçlıdır ve Azure Pipelines tarafından önerilen yaklaşım değildir.

yml
- 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()

Önemli

İşlem hattınızdan anahtar kasanıza erişmek için kullandığınız hizmet sorumlusunun anahtar kasanızın Erişim denetiminde (IAM) Anahtar kasası katkıda bulunan rolünün bulunduğundan emin olun.

Şirket içinde barındırılan bir aracıdan özel anahtar kasasına erişme

Azure Pipelines aracısından özel anahtar kasasına erişebilmek için Şirket içinde barındırılan aracı (Windows, Linux, Mac) veya Ölçek Kümesi aracıları kullanmanız gerekir. Bunun nedeni, diğer genel işlem hizmetleri gibi Microsoft Barındırılan aracılarının anahtar kasasının güvenilen hizmetler listesine dahil edilmemesidir.

Özel anahtar kasanızla bağlantı kurmak için, anahtar kasanız için özel bir uç nokta yapılandırarak bir görüş hattı bağlantısı sağlamanız gerekir. Bu uç nokta yönlendirilebilir olmalı ve şirket içinde barındırılan İşlem Hattı aracısından çözümlenebilen özel DNS adına sahip olmalıdır.

1 - Şirket içinde barındırılan bir Aracıdan gelen erişimi yapılandırma

  1. Sanal ağ oluşturma yönergelerini izleyin.

  2. Azure portalda, Azure Key Vault'unuzu bulmak için sayfanın üst kısmındaki arama çubuğunu kullanın.

  3. Anahtar kasanızı arama sonuçlarında bulduktan sonra seçin ve ardından Ayarlar>Ağ İletişimi'ne gidin.

  4. Özel uç nokta bağlantıları'nı ve ardından Oluştur'u seçerek yeni bir özel uç nokta oluşturun.

    Azure Key Vault için yeni bir özel uç nokta bağlantısının nasıl oluşturulacağını gösteren ekran görüntüsü.

  5. Daha önce oluşturduğunuz sanal ağı barındıran Kaynak Grubunu seçin. Örneğiniz için bir Ad ve Ağ Arabirimi Adı sağlayın ve daha önce oluşturduğunuz sanal ağ ile aynı Bölgeyi seçtiğinizden emin olun. İşiniz bittiğinde İleri'yi seçin.

    Azure Key Vault'unuz için yeni bir özel uç nokta örneği oluştururken temel bilgiler sekmesini yapılandırmayı gösteren ekran görüntüsü.

  6. Bağlantı yöntemi için dizinimdeki bir Azure kaynağına bağlan'ı seçin ve ardından Kaynak türü için açılan menüden Microsoft.KeyVault/vaults'u seçin. Açılan menüden Kaynağınızı seçin. Hedef alt kaynağı, kasa değeriyle otomatik olarak doldurulur. İşiniz bittiğinde İleri'yi seçin.

    Azure Key Vault'unuz için yeni bir özel uç nokta örneği oluştururken kaynak sekmesini yapılandırmayı gösteren ekran görüntüsü.

  7. Sanal Ağ sekmesinin altında, daha önce oluşturduğunuz Sanal ağı ve Alt Ağı seçin ve kalan alanları varsayılan olarak bırakın. İşiniz bittiğinde İleri'yi seçin.

  8. Varsayılan ayarları kabul ederek DNS ve Etiketler sekmelerinde devam edin. Gözden Geçir + Oluştur sekmesinin altında bitirdiğinizde Oluştur'u seçin.

  9. Kaynağınız dağıtıldıktan sonra anahtar kasanızın >Ayarlar>Ağ>Özel uç nokta bağlantılarına gidin; özel uç noktanız Bağlantı durumu onaylandı olarak listelenmelidir. Farklı bir dizindeki bir Azure kaynağına bağlanıyorsanız, kaynak sahibinin bağlantı isteğinizi onaylamasını beklemeniz gerekir.

    Onaylanan özel uç nokta bağlantısını gösteren ekran görüntüsü

2 - Sanal ağınıza izin verme

  1. Azure portalına gidin ve Azure Key Vault'unuzu bulun.

  2. Ayarlar>Ağ'ı seçin ve Güvenlik duvarları ve sanal ağlar sekmesinin altında olduğunuzdan emin olun.

  3. Sanal ağ>ekle Var olan sanal ağları ekle'yi seçin.

  4. Açılan menüden Aboneliğinizi seçin ve daha önce oluşturduğunuz sanal ağı ve ardından Alt Ağlarınızı seçin.

  5. İşiniz bittiğinde Ekle'yi seçin ve ardından sayfanın en altına kaydırın ve değişikliklerinizi kaydetmek için Uygula'yı seçin.

    Mevcut bir sanal ağın Azure Key Vault güvenlik duvarına nasıl ekleneceğini gösteren ekran görüntüsü.

3 - Şirket içinde barındırılan bir Aracıdan özel anahtar kasası sorgulama

Aşağıdaki örnek, özel anahtar kasasını değişken grubu aracılığıyla sorgulamak için sanal ağın VM'sinde ayarlanmış bir aracı kullanır:

yml
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'

Azure DevOps'a özel anahtar kasanıza gelen erişim vermek istemiyorsanız, anahtar kasanızı sorgulamak için AzureKeyVault görevini kullanabilirsiniz. Ancak, anahtar kasası güvenlik duvarı ayarlarınızda aracınızı barındıran sanal ağa izin verdiğinizden emin olmanız gerekir.

yml
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'

Sorun giderme

Aşağıdaki hatalarla karşılaşıyorsanız sorunu gidermek ve çözmek için bu bölümdeki adımları izleyin:

  • Public network access is disabled and request is not from a trusted service nor via an approved private link.

Bu, genel erişimin devre dışı bırakıldığını ve ne özel uç nokta bağlantısının ne de güvenlik duvarı özel durumlarının ayarlandığını gösterir. [#configure-inbound-access-from-a-self--hosted-agent] ve Özel anahtar kasanıza erişimi ayarlamak için Azure DevOps'tan gelen erişimi yapılandırma altındaki adımları izleyin.

  • 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>

Bu hata iletisi, anahtar kasasının genel erişiminin devre dışı bırakıldığını ve Güvenilen Microsoft hizmetleri bu güvenlik duvarını atlamasına izin ver seçeneğinin işaretinin kaldırıldığını, ancak istemci IP adresinin anahtar kasası güvenlik duvarına eklenmediğini gösterir. Azure portalında anahtar kasanıza, ardından Ayarlar>Ağ'a gidin ve istemci IP'nizi güvenlik duvarının izin verilenler listesine ekleyin.

  • Error: Client address is not authorized and caller is not a trusted service.

Coğrafyanızın IPV4 aralıklarını anahtar kasası izin verilenler listenize eklediğinizden emin olun. Ayrıntılar için bkz . Azure DevOps'tan gelen erişimi yapılandırma. Alternatif olarak, çalışma zamanı sırasında istemci IP'nizi anahtar kasasının güvenlik duvarına nasıl ekleyeceğinizi öğrenmek için Microsoft tarafından barındırılan aracı IP'sine dinamik olarak izin ver seçeneğine atlayabilirsiniz.