Aracılığıyla paylaş


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 hassas bilgileri 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 hem yazılım hem de HSM destekli anahtarları, gizli dizileri ve sertifikaları depolayabilirken 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

Örnek kodunu alma

Kendi deponuz zaten varsa sonraki adıma geçin. Aksi takdirde aşağıdaki örnek depoyu Azure Deponuza aktarın.

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

  2. Depolar'ı ve ardından İçeri Aktar'ı 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

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

  2. 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 kullanabilirsiniz az account list .

    az account set --subscription <YOUR_SUBSCRIPTION_NAME_OR_ID>
    
  3. 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>
    
  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 anahtar kasanızda yeni bir gizli dizi oluşturun.

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

Kimlik doğrulaması kurulumu

Kullanıcı tarafından atanan yönetilen kimlik oluşturma

  1. Azure portalında oturum açın, ardından arama çubuğunda Yönetilen Kimlikler hizmetini arayın.

  2. Oluştur'u seçin ve gerekli alanları aşağıdaki gibi doldurun:

    • Abonelik: Açılan menüden aboneliğinizi seçin.
    • Kaynak grubu: Mevcut bir kaynak grubunu seçin veya yeni bir kaynak grubu oluşturun.
    • Bölge: Açılan menüden bir bölge seçin.
    • Ad: Kullanıcı tarafından atanan yönetilen kimliğiniz için bir ad girin.
  3. İşiniz bittiğinde Gözden geçir ve oluştur'u seçin.

  4. Dağıtım tamamlandıktan sonra Kaynağa git'i seçin, ardından abonelik ve istemci kimliği değerlerini kopyalayarak önümüzdeki adımlarda kullanın.

  5. Ayarlar>Özellikleri'ne gidin 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 anahtar kasasını 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 dizi izinleri'nin altında Al ve Listele onay kutularını seçin.

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

  5. İleri'yi ve ardından bir kez daha İleri'yi seçin.

  6. Yeni ilkelerinizi gözden geçirin ve işiniz bittiğinde Oluştur'u 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ı'nı ve ardından Yeni hizmet bağlantısı'nı seçerek yeni bir hizmet bağlantısı oluşturun.

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

  4. Kimlik Türü için açılan menüden Yönetilen kimlik'i seçin.

  5. 1. Adım: Yönetilen kimlik ayrıntıları için alanları aşağıdaki gibi doldurun:

    • Yönetilen kimlik aboneliği: 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 menüden yönetilen kimliğinizi seçin.

  6. 2. Adım: Azure Kapsamı için alanları aşağıdaki gibi doldurun:

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

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

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

  7. 3. Adım: Hizmet bağlantısı ayrıntıları için:

    • Hizmet bağlantısı adı: Hizmet bağlantınız için bir ad belirtin.

    • Hizmet Yönetimi Başvurusu: (İsteğe bağlı) BIR ITSM veritabanından bağlam bilgileri.

    • Açıklama: (İsteğe bağlı) Açıklama ekleyin.

  8. Güvenlik bölümünde, 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. Bu seçeneği belirtmezseniz, bu hizmet bağlantısını kullanan her işlem hattına el ile erişim vermelisiniz.

  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ı gizli dizilerine erişme

  1. Azure DevOps kuruluşunuzda 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ı, yankı komutlarını çalıştıran bir betik içerir. Bunları silebilmemiz için bunlar gerekli değildir.

  6. Yer tutucuları daha önce oluşturduğunuz hizmet bağlantısının adıyla ve anahtar kasanızın adıyla değiştirerek AzureKeyVault görevini ekleyin. YAML dosyanız aşağıdaki kod parçacığına benzemelidir:

    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. Şimdi gizli dizimizi kopyalamak ve yayımlamak için aşağıdaki görevleri ekleyelim. Bu örnek yalnızca tanıtım amaçlıdır ve üretim ortamında uygulanmamalı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 İzin Ver'i seçerek işlem hattına Azure kaynaklarına erişim izni vermeniz istenebilir. İşlem hattınızı yalnızca bir kez onaylamanız gerekir.

  9. 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ıktan sonra 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. İndirmek için secret.txt bırak'ı>seçin.

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

  12. Az önce indirdiğiniz metin dosyasını açın; metin dosyası Azure anahtar kasanızdaki gizli diziyi içermelidir.

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ı tek bir kaynak grubu altında barındırılır. Kaynak grubunuzu ve tüm kaynaklarını silmek için aşağıdaki komutu çalıştırın.

    az group delete --name <YOUR_RESOURCE_GROUP_NAME>
    

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'taki anahtara veya gizli diziye erişme yetkisi vermek için aşağıdaki komutları çalıştırın:

az account set --subscription <YOUR_SUBSCRIPTION_ID>

az login

$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