Azure Pipelines'de Azure Key Vault Sırlarını Kullanmak

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Azure Key Vault, geliştiricilerin API anahtarları, kimlik bilgileri ve sertifikalar gibi hassas bilgileri güvenli bir şekilde depolamalarına ve yönetmelerine yardımcı olan bir bulut hizmetidir. Azure Key Vault hizmeti iki tür depo destekler: kasalar ve yönetimli HSM (Donanım Güvenlik Modülü) havuzları. Kasalar hem yazılım hem de HSM destekli anahtarları, gizli bilgileri ve sertifikaları depolayabilirken, yönetilen HSM havuzları yalnızca HSM destekli anahtarlara destek sağlar.

Bu makalede Azure Key Vault oluşturmayı, gizli dizi eklemeyi, erişim ilkelerini yapılandırmayı ve ardından bu gizli diziyi Azure Pipelines'da kullanmayı öğreneceksiniz. Bu eğitimde, genel ağ erişimine sahip bir anahtar kasası kullanılmaktadır. İşlem hattınızdan bir özel anahtar kasasına erişmeniz gerekiyorsa bkz. İşlem hattınızdan özel anahtar kasasına erişme. Azure Key Vault gizli dizilerini değişken gruplarına bağlamak için bkz. Azure Key Vault'ta bir değişken grubunu gizli dizilere bağlama.

Önkoşullar

Kategori Gereksinimler
Azure DevOps - Azure DevOps kuruluşu.
- Azure DevOps projesi.
Azure Bir Azure aboneliği.

Kodu al

Kendi projeniz yoksa aşağıdaki örnek depoyu Azure Deponuza aktarın.

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

  2. Depolar'ı, ardından Import Et seçin. Aşağıdaki depo URL'sini girin ve İçeri Aktar'ı seçin.

    https://github.com/MicrosoftDocs/pipelines-dotnet-core
    

Azure Key Vault oluşturma

Azure CLI kullanarak Azure'da yeni bir Azure Key Vault oluşturmak için şu adımları izleyin:

  1. Azure portalına gidin ve sağ üst köşedeki Cloud Shell'i seçin.

  2. Hesabınız birden çok Azure aboneliğiyle ilişkiliyse varsayılan aboneliğinizi ayarlayın:

    az account set --subscription <YOUR_SUBSCRIPTION_NAME_OR_ID>
    
  3. Varsayılan bir Azure bölgesi ayarlayın. Kullanılabilir bölgelerin listesini görmek için komutunu çalıştırın az account list-locations.

    az config set defaults.location=<YOUR_REGION>
    
  4. Yeni bir kaynak grubu oluşturma.

    az group create --name <YOUR_RESOURCE_GROUP_NAME>
    
  5. Yeni bir Azure Key Vault oluşturun.

    az keyvault create \
      --name <YOUR_KEY_VAULT_NAME> \
      --resource-group <YOUR_RESOURCE_GROUP_NAME>
    
  6. Azure Key Vault'a bir gizli ekleyin:

    az keyvault secret set \
      --name <YOUR_SECRET_NAME> \
      --value <YOUR_ACTUAL_SECRET> \
      --vault-name <YOUR_KEY_VAULT_NAME>
    

Kimlik doğrulaması kurulumu

Azure Key Vault'unuzu oluşturduğunuza göre, sonraki adım kimlik doğrulamasını ayarlamaktır. Yönetilen Kimlik veya Hizmet Sorumlusu'na tıklayın ve kimlik doğrulamasını yapılandırmak için yönergeleri izleyin.

Kullanıcı atamalı yönetilen kimlik oluşturma

  1. Azure portalına gidin ve arama çubuğunda Yönetilen Kimlikler'i arayın.

  2. Oluştur'u seçin ve aşağıdaki bilgileri sağlayın:

    • Abonelik: Açılan menüden Azure aboneliğinizi seçin.
    • Kaynak grubu: Mevcut bir kaynak grubunu seçin veya yeni bir kaynak grubu oluşturun.
    • Bölge: Yönetilen kimliğin oluşturulacağı bölgeyi seçin.
    • Ad: Kullanıcı tarafından atanan yönetilen kimliğe bir ad girin.
  3. Gözden geçir ve oluştur'u ve ardından Oluştur'u seçerek dağıtımı başlatın.

  4. Dağıtım tamamlandıktan sonra Kaynağa git'i seçin ve Abonelik Kimliği ve İstemci Kimliği değerlerini kopyalayın. Sonraki adımlarda bu değerlere ihtiyacınız olacaktır.

  5. Ayarlar'ın altında Özellikler'i seçin ve yönetilen kimliğinizin Kiracı Kimliği değerini daha sonra kullanmak üzere kopyalayın.

Anahtar kasası erişim ilkelerini ayarlama

  1. Azure portalına gidin ve daha önce oluşturduğunuz Azure Key Vault'u bulmak için arama çubuğunu kullanın.

  2. Yeni ilke eklemek için Erişim ilkeleri'ni ve ardından Oluştur'u seçin.

  3. Gizli izinlerin altında, Al ve Listele onay kutularını seçin.

  4. İleri'yi seçin, daha önce oluşturduğunuz yönetilen kimliğin İstemci Kimliğini arama çubuğuna yapıştırın ve ardından yönetilen kimliği seçin.

  5. İleri'yi ve ardından yeniden İleri'yi seçin.

  6. Erişim ilkesi ayrıntılarını gözden geçirin ve ardından oluştur'u seçerek ilkeyi uygulayın.

Hizmet bağlantısı oluşturma

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

  2. Proje ayarları>Hizmet bağlantıları'nı ve ardından 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 Yönetilen kimlik'i seçin.

  5. 1. Adım: Yönetilen kimlik ayrıntıları altında aşağıdaki bilgileri sağlayın:

    • Yönetilen kimlik için abonelik: Yönetilen kimliğinizi içeren aboneliği seçin.

    • Yönetilen kimlik için kaynak grubu: Yönetilen kimliğinizi barındıran kaynak grubunu seçin.

    • Yönetilen Kimlik: Açılan listeden yönetilen kimliğinizi seçin.

  6. 2. Adım: Azure Kapsamı için aşağıdaki bilgileri sağlayın:

    • Hizmet bağlantısı için kapsam düzeyi: Abonelik'i seçin.

    • Hizmet bağlantısı aboneliği: Yönetilen kimliğin erişeceği aboneliği seçin.

    • Hizmet bağlantısı için kaynak grubu: (İsteğe bağlı) Yönetilen kimliğin tek bir kaynak grubuna erişimini sınırlamak için bir kaynak grubu belirtin.

  7. 3. Adım: Hizmet bağlantısı ayrıntıları için aşağıdaki bilgileri sağlayın:

    • Hizmet bağlantısı adı: Hizmet bağlantısı için bir ad girin.

    • Hizmet Yönetimi Referansı: (İsteğe bağlı) bir ITSM veritabanından bağlam bilgileri.

    • Açıklama: (İsteğe bağlı) Bir açıklama girin.

  8. Güvenlik altında, Tüm işlem hatlarına erişim izni ver seçeneği tüm işlem hatlarının bu hizmet bağlantısını kullanmasına izin verir. Bu seçenek önerilmez. Bunun yerine, hizmet bağlantısını kullanmak için her işlem hattını tek tek yetkilendirin.

  9. Hizmet bağlantısını doğrulamak ve oluşturmak için Kaydet'i seçin.

    Yönetilen kimlik ARM hizmeti bağlantısının nasıl oluşturulacağını gösteren ekran görüntüsü.

İşlem hattınızdan anahtar kasasındaki gizli bilgilere erişin.

Uyarı

Bu eğitim materyali yalnızca eğitim amaçlıdır. Güvenlikle ilgili en iyi yöntemler ve gizli dizilerle güvenli bir şekilde çalışma yönergeleri için bkz. Azure Key Vault ile sunucu uygulamalarınızda gizli dizileri yönetme.

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

  2. İşlem Hatları'yı ve ardından Yeni İşlem Hattı'yı seçin.

  3. Azure Repos Git (YAML) seçeneğini belirleyin ve ardından deponuzu seçin.

  4. Başlangıç işlem hattı şablonunu seçin.

  5. Varsayılan işlem hattı örnek yankı komutlarını içerir. Bunlar gerekli değildir ve kaldırılabilir.

  6. Azure Key Vault görevini işlem hattınıza ekleyin. Yer tutucuları daha önce oluşturduğunuz hizmet bağlantısının adıyla ve Key Vault adınız ile değiştirin. YAML dosyanız aşağıdaki örneğe benzer görünmelidir:

    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
    
  7. Gizliyi kopyalamak ve yayınlamak için aşağıdaki görevleri ekleyin. Bu örnek yalnızca tanıtım amaçlıdır ve üretim ortamında kullanılmamalıdır.

    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'
    
  8. Kaydet ve çalıştır'ı seçin ve ardından değişikliklerinizi işleyip işlem hattını tetikleme amacıyla bir kez daha seçin. İstenirse, Azure kaynaklarına işlem hattı erişimi sağlamak için İzin Ver'i seçin.

  9. İşlem hattı başlatıldıktan sonra, günlükleri görüntülemek için CmdLine görevini seçin.

    Komut satırı görev günlüklerini gösteren ekran görüntüsü.

  10. İşlem hattı çalıştırması tamamlandığında işlem hattı özetine dönün ve yayımlanan yapıtı seçin.

    Özet sekmesinde yayımlanan yapıtı gösteren ekran görüntüsü.

  11. Dosyayı indirmek için drop>secret.txt'i seçin.

    Yayımlanan yapıtın nasıl indirilmesini gösteren ekran görüntüsü.

  12. İndirilen metin dosyasını açın. Azure Key Vault'unuzdan alınan gizliyi içermelidir.

Kaynakları temizleme

Oluşturduğunuz kaynakları silmek için şu adımları izleyin:

  1. Projenizi barındırmak için yeni bir kuruluş oluşturduysanız bkz. Kuruluşunuzu silme, aksi takdirde projenizi silme.

  2. Bu öğretici sırasında oluşturulan tüm Azure kaynakları tek bir kaynak grubunda barındırılır. Kaynak grubunu ve tüm kaynaklarını silmek için aşağıdaki komutu çalıştırın.

    az group delete --name <YOUR_RESOURCE_GROUP_NAME>
    

Sorun giderme

Hata: "Kullanıcı veya grubun gizli bilgileri listeleme izni yok"

Yönetilen kimlik veya işlem hattınız tarafından kullanılan hizmet sorumlusunun Azure Key Vault'ta gizli anahtarları listeleme izni olmadığında bu hata oluşur. Bu sorunu çözmek için kimliğin sırlar için Alma ve Listeleme izinlerine sahip olduğundan emin olun. Hizmet sorumlunuza gerekli izinleri vermek için aşağıdaki komutları çalıştırın:

az login

az account set --subscription <YOUR_SUBSCRIPTION_ID>

$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