Azure Pipelines’da Azure Key Vault Gizli Dizilerini Kullanma

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Azure Key Vault geliştiricilerin API anahtarları, kimlik bilgileri veya sertifikalar gibi gizli dizileri güvenli bir şekilde depolamasına ve yönetmesine olanak tanır. Azure Key Vault hizmeti iki tür kapsayıcıyı destekler: kasalar ve yönetilen HSM (donanım güvenlik modülü) havuzları. Kasalar yazılım ve HSM destekli anahtarları, gizli dizileri ve sertifikaları depolamayı desteklerken, yönetilen HSM havuzları yalnızca HSM destekli anahtarları destekler.

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

  • Azure CLI kullanarak Azure Key Vault oluşturma
  • Gizli dizi ekleme ve Azure anahtar kasasına erişimi yapılandırma
  • İşlem hattınızda gizli dizileri kullanma

Önkoşullar

Azure Key Vault oluşturma

Azure Portalı'nda oturum açın ve sağ üst köşedeki Cloud Shell düğmesini seçin.

  1. Hesabınızla ilişkilendirilmiş birden fazla Azure aboneliğiniz varsa, varsayılan aboneliği belirtmek için aşağıdaki komutu kullanın. Aboneliklerinizin listesini oluşturmak için komutunu kullanabilirsiniz az account list .

    az account set --subscription <your_subscription_name_or_ID>
    
  2. Varsayılan Azure bölgenizi ayarlayın. Kullanılabilir bölgelerin listesini oluşturmak için kullanabilirsiniz az account list-locations .

    az config set defaults.location=<your_region>
    

    Örneğin, bu komut westus2 bölgesini seçer:

    az config set defaults.location=westus2
    
  3. Yeni bir kaynak grubu oluşturma. Kaynak grubu, bir Azure çözümüne ilişkin kaynakları tutan bir kapsayıcıdır.

    az group create --name <your-resource-group>
    
  4. Yeni bir anahtar kasası oluşturun.

    az keyvault create \
      --name <your-key-vault> \
      --resource-group <your-resource-group>
    
  5. Azure anahtar kasanızda yeni bir gizli dizi oluşturun.

    az keyvault secret set \
      --name "Password" \
      --value "mysecretpassword" \
      --vault-name <your-key-vault-name>
    

Proje oluşturma

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

  2. Kuruluşunuzda henüz hiç proje yoksa başlamak için Proje oluştur'u seçin. Aksi takdirde, sağ üst köşedeki Yeni proje'yi seçin.

Depo oluşturma

İşlem hattımızı oluşturmak için YAML kullanacağız ancak önce yeni bir depo oluşturmamız gerekiyor.

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

  2. Depolar'ı seçin ve ardından BeniOKU ile yeni bir depo başlatmak için Başlat'ı seçin.

    Depo başlatmayı gösteren ekran görüntüsü.

Yeni işlem hattı oluşturma

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

  2. git (YAML) Azure Repos seçin.

    Azure Repos kaynak denetimini seçmeyi gösteren ekran görüntüsü.

  3. Önceki adımda oluşturduğunuz depoyu seçin.

  4. Starter işlem hattı şablonunu seçin.

  5. Varsayılan işlem hattı, yankı komutlarını çalıştıran birkaç betik içerir. Bunları silebilmemiz için bunlar gerekli değildir. Yeni YAML dosyanız şu şekilde görünmelidir:

    trigger:
    - main
    
    pool:
        vmImage: 'ubuntu-latest'
    
    steps:
    
  6. yardımcı panelini genişletmek için yardımcı göster'i seçin. Bu panel, işlem hattı görevlerinin kullanışlı ve aranabilir bir listesini sağlar.

    Görev yardımcı paneline erişmeyi gösteren ekran görüntüsü.

  7. Kasayı arayın ve Azure Key Vault görevini seçin.

    Azure Key Vault görevini aramayı gösteren ekran görüntüsü.

  8. Azure aboneliğinizi ve ardından Yetki ver'i seçin. Açılan menüden Anahtar kasanızı seçin ve ardından görevi YAML işlem hattınıza eklemek için Ekle'yi seçin.

    Azure Key Vault görevini yapılandırmayı gösteren ekran görüntüsü.

    Not

    Gizli dizileri tüm iş için kullanılabilir hale getirme özelliği Azure DevOps Server 2019 ve 2020'de desteklenmez.

  9. YAML dosyanız aşağıdaki gibi görünmelidir:

    trigger:
    - main
    
    pool:
      vmImage: ubuntu-latest
    
    steps:
    - task: AzureKeyVault@2
      inputs:
        azureSubscription: 'Your-Azure-Subscription'
        KeyVaultName: 'Your-Key-Vault-Name'
        SecretsFilter: '*'
        RunAsPreJob: false
    
    - task: CmdLine@2
      inputs:
        script: 'echo $(Your-Secret-Name) > secret.txt'
    
    - task: CopyFiles@2
      inputs:
        Contents: secret.txt
        targetFolder: '$(Build.ArtifactStagingDirectory)'
    
    - task: PublishBuildArtifacts@1
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)'
        ArtifactName: 'drop'
        publishLocation: 'Container'
    

İşlem hattınızı henüz kaydetmeyin veya kuyruğa alın. öncelikle işlem hattımıza Azure Key Vault erişmek için doğru izinleri vermeliyiz. Tarayıcı sekmenizi açık tutun, anahtar kasası izinlerini ayarladıktan sonra kalan adımları sürdüreceğiz.

Azure Key Vault erişim ilkelerini ayarlama

Azure Key Vault erişmek için öncelikle Azure Pipelines'a erişim vermek için bir hizmet sorumlusu ayarlamamız gerekir. Hizmet sorumlunuzu oluşturmak için bu kılavuzu izleyin ve ardından bu bölümdeki sonraki adımlarla devam edin.

  1. Azure portalına gidin.

  2. Daha önce oluşturduğunuz anahtar kasasını aramak için arama çubuğunu kullanın.

    Azure Key Vault arama işlemini gösteren ekran görüntüsü.

  3. Ayarlar'ın altında Erişim ilkeleri'ni seçin.

  4. Yeni ilke eklemek için Erişim İlkesi Ekle'yi seçin.

  5. Gizli dizi izinleri için Al ve Listele'yi seçin.

  6. Bir hizmet sorumlusu seçme seçeneğini belirleyin ve bu bölümün başında oluşturduğunuz hizmet sorumlusunu arayın. Güvenlik sorumlusu, Azure kaynaklarına erişim isteyen bir kullanıcı, grup, hizmet veya uygulamayı temsil eden bir nesnedir.

  7. Erişim ilkesini oluşturmak için Ekle'yi ve işiniz bittiğinde Kaydet'i seçin.

Not

Azure rol tabanlı erişim denetimini (Azure RBAC) kullanan Azure Key Vault'lar desteklenmez.

İşlem hattını çalıştırma ve gözden geçirme

  1. Kaldığımız önceki sekmeye dönün.

  2. Kaydet'i seçin ve sonra değişikliklerinizi işleyip işlem hattını tetiklemek için yeniden Kaydet'i seçin. İstenirse İzin Ver'i seçerek azure kaynaklarına işlem hattı erişimine izin vermeniz istenebilir. İşlem hattınızı yalnızca bir kez onaylamanız gerekir.

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

  4. İşlem hattı özetine dönün ve yayımlanan yapıtı seçin.

    İşlem hattı özetini ve yayımlanan yapıtı gösteren ekran görüntüsü.

  5. açmak içinsecret.txt yapıtını seçin.

    Yayımlanan yapıtın nasıl aç yapıldığını gösteren ekran görüntüsü.

  6. Metin dosyası gizli dizimizi içermelidir: mysecretpassword.

Uyarı

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

Kaynakları temizleme

Oluşturduğunuz kaynakları silmek için aşağıdaki 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ı PipelinesKeyVaultResourceGroup tek bir kaynak grubu altında 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 PipelinesKeyVaultResourceGroup
    

SSS

S: Şu hatayı alıyorum: "Kullanıcı veya grubun gizli dizi listesi izni yok" ne yapmalıyım?

Y: Kullanıcı veya grubun anahtar kasası üzerinde gizli dizi listesi izni olmadığını belirten bir hatayla karşılaşırsanız, uygulamanızı Azure Key Vault anahtara veya gizli diziye erişme yetkisi vermek için aşağıdaki komutları çalıştırın:

$ErrorActionPreference="Stop";
$Credential = Get-Credential;
Connect-AzAccount -SubscriptionId <YOUR_SUBSCRIPTION_ID> -Credential $Credential;
$spn=(Get-AzureRmADServicePrincipal -SPN <YOUR_SERVICE_PRINCIPAL_ID>);
$spnObjectId=$spn.Id;
Set-AzureRmKeyVaultAccessPolicy -VaultName key-vault-tutorial -ObjectId $spnObjectId -PermissionsToSecrets get,list;

Sonraki adımlar