Azure Pipelines’da Azure Key Vault Gizli Dizilerini Kullanma
Makale
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
Bir Azure DevOps kuruluşu ve bir proje. Henüz yapmadıysanız bir kuruluş veya proje oluşturun.
Azure portalında oturum açın ve sağ üst köşedeki Cloud Shell düğmesini seçin.
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 .
Azure CLI
az account set --subscription<YOUR_SUBSCRIPTION_NAME_OR_ID>
Varsayılan Azure bölgenizi ayarlayın. Kullanılabilir bölgelerin listesini oluşturmak için kullanabilirsiniz az account list-locations .
Azure CLI
az config set defaults.location=<YOUR_REGION>
Yeni bir kaynak grubu oluşturma.
Azure CLI
az group create --name<YOUR_RESOURCE_GROUP_NAME>
Yeni bir Azure Key Vault oluşturun.
Azure CLI
az keyvault create \
--name<YOUR_KEY_VAULT_NAME> \
--resource-group<YOUR_RESOURCE_GROUP_NAME>
Azure anahtar kasanızda yeni bir gizli dizi oluşturun.
Azure CLI
az keyvault secret set \
--name<YOUR_SECRET_NAME> \
--value<YOUR_ACTUAL_SECRET> \
--vault-name<YOUR_KEY_VAULT_NAME>
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.
İşiniz bittiğinde Gözden geçir ve oluştur'u seçin.
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.
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
Azure portalına gidin ve daha önce oluşturduğunuz anahtar kasasını bulmak için arama çubuğunu kullanın.
Yeni ilke eklemek için Erişim ilkeleri'ni ve ardından Oluştur'u seçin.
Gizli dizi izinleri'nin altında Al ve Listele onay kutularını seçin.
İ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.
İleri'yi ve ardından bir kez daha İleri'yi seçin.
Yeni ilkelerinizi gözden geçirin ve işiniz bittiğinde Oluştur'u seçin.
Hizmet bağlantısı oluşturma
Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.
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.
Azure Resource Manager'ı ve ardından İleri'yi seçin.
Kimlik Türü için açılan menüden Yönetilen kimlik'i seçin.
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.
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.
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.
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.
Hizmet bağlantısını doğrulamak ve oluşturmak için Kaydet'i seçin.
Anahtar kasası erişim ilkelerini ayarlama
Azure Key Vault'unuza erişmek için öncelikle Azure Pipelines'a erişim izni vermek için bir hizmet sorumlusu ayarlamanız gerekir:
Azure portalına gidin ve daha önce oluşturduğunuz anahtar kasasını bulmak için arama çubuğunu kullanın.
Erişim ilkeleri'ni ve ardından Oluştur'u seçin.
Gizli dizi izinleri'nin altında Al ve Listele izinlerini ekleyin ve İleri'yi seçin.
Sorumlu için hizmet sorumlunuzun Nesne Kimliğini yapıştırın, seçin ve ardından İleri'yi seçin.
bir kez daha İleri'yi seçin, ilkelerinizi gözden geçirin ve işiniz bittiğinde Kaydet'i seçin.
Rol ataması ekle
Sonraki adımda hizmet sorumlunuz için bir ARM hizmet bağlantısı oluşturacaksınız. Bağlantıyı doğrulamadan önce şunları yapmanız gerekir: (1) hizmet sorumlusuna abonelik düzeyinde Okuma erişimi verin ve (2) hizmet sorumlunuz için bir federasyon kimlik bilgisi oluşturun.
Aşağıdaki adımlarda abonelik düzeyinde Okuma erişimi verme adımları özetlenmiştir:
Azure portalına gidin, Abonelikler'i seçin ve ardından aboneliğinizi bulup seçin.
Erişim denetimi'ni ve ardından Rol ataması ekle'yi>seçin.
Rol sekmesinin altında Okuyucu'ya ve ardından İleri'ye tıklayın.
Kullanıcı, grup veya hizmet sorumlusu'nun ardından Üye seç'i seçin.
Hizmet sorumlunuzun Nesne Kimliğini arama çubuğuna yapıştırın, seçin ve ardından Seç'i seçin.
Gözden geçir ve ata'yı seçin, ayarlarınızı gözden geçirin ve ardından seçimlerinizi onaylamak ve rol atamasını eklemek için Gözden geçir + ata'yı bir kez daha seçin.
Hizmet bağlantısı oluşturma
Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.
Proje ayarları'nı ve ardından Hizmet bağlantıları'nı seçin.
Yeni hizmet bağlantısı'nı, Azure Resource Manager'ı ve ardından İleri'yi seçin.
Hizmet sorumlusu (el ile) öğesini ve ardından İleri'yi seçin.
Kimlik Türü için açılan menüden Uygulama kaydı veya yönetilen kimlik (el ile) seçeneğini belirleyin.
Kimlik Bilgileri için İş yükü kimlik federasyonu'mu seçin.
Hizmet bağlantınız için bir ad sağlayın ve İleri'yi seçin.
Ortam için Azure Bulutu ve Abonelik kapsamı için Abonelik'iseçin.
Azure Abonelik Kimliğinizi ve Abonelik adınızı girin.
Kimlik Doğrulaması için hizmet sorumlunuzun Uygulama (istemci) kimliğini ve Dizin (kiracı) kimliğini yapıştırın
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.
Bu pencereyi açık bırakın, Azure'da federasyon kimlik bilgilerini oluşturduktan sonra hizmet bağlantınızı doğrulamak ve kaydetmek için geri dönersiniz.
Hizmet sorumlusu federasyon kimlik bilgisi oluşturma
Azure portalına gidin, ardından arama çubuğuna hizmet sorumlunuzun ClientID değerini girin ve uygulamanızı seçin.
Yönet'in altında Sertifikalar ve gizli diziler>Federasyon kimlik bilgileri'ni seçin.
Kimlik bilgisi ekle'yi seçin ve ardından Federasyon kimlik bilgisi senaryosu için Diğer veren'i seçin.
Veren için, daha önce hizmet bağlantınızdan kopyaladığınız Vereni yapıştırın.
Konu tanımlayıcısı için, daha önce hizmet bağlantınızdan kopyaladığınız Konu tanımlayıcısını yapıştırın.
Federasyon kimlik bilgileriniz için bir Ad girin ve işiniz bittiğinde Ekle'yi seçin.
Hizmet bağlantı pencerenize dönün, Doğrula ve Kaydet'i seçerek hizmet bağlantınızı kaydedin.
İşlem hattınızdan anahtar kasası gizli dizilerine erişme
Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.
İşlem Hatları'yı ve ardından Yeni İşlem Hattı'yı seçin.
Azure Repos Git (YAML) seçeneğini belirleyin ve ardından deponuzu seçin.
Başlangıç işlem hattı şablonunu seçin.
Varsayılan işlem hattı, yankı komutlarını çalıştıran bir betik içerir. Bunları silebilmemiz için bunlar gerekli değildir.
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:
Ş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.
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.
Günlükleri görüntülemek için CmdLine görevini seçin.
İşlem hattı çalıştırması tamamlandıktan sonra işlem hattı özetine dönün ve yayımlanan yapıtı seçin.
İndirmek için secret.txt bırak'ı>seçin.
Az önce indirdiğiniz metin dosyasını açın; metin dosyası Azure anahtar kasanızdaki gizli diziyi içermelidir.
Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.
İşlem Hatları'yı ve ardından Yeni İşlem Hattı'yı seçin.
Klasik işlem hattı oluşturmak için Klasik düzenleyiciyi kullan'ı seçin.
Azure Repos Git'i seçin, deponuzu ve varsayılan dalınızı seçin ve ardından Devam'ı seçin.
.Net Desktop işlem hattı şablonunu seçin.
Bu örnekte yalnızca son iki göreve ihtiyacımız olacak. CTRL tuşuna basın ve ardından ilk beş görevi seçin, sağ tıklayıp Seçili görevleri kaldır'ı seçerek silin.
Yeni görev eklemek için seçin + . Komut satırı görevini arayın, seçin ve ardından ekle'yi seçerek işlem hattınıza ekleyin. Eklendikten sonra aşağıdaki gibi yapılandırın:
Görünen ad: Dosya oluşturma
Betik: echo $(SECRET_NAME) > secret.txt
Yeni görev eklemek için seçin + . Azure Key Vault görevini arayın, seçin ve ardından ekle* seçeneğini belirleyerek bunu işlem hattınıza ekleyin. Eklendikten sonra aşağıdaki gibi yapılandırın:
Görünen ad: Azure Key Vault
Azure aboneliği: Daha önce oluşturduğunuz hizmet bağlantısını seçin
Anahtar kasası: Anahtar kasanızı seçin
Gizli dizi filtresi: Gizli dizi adlarının virgülle ayrılmış listesi veya seçili anahtar kasasından tüm gizli dizileri indirmek için * bırakın
Dosyaları kopyala görevini seçin ve gerekli alanları aşağıdaki gibi doldurun:
Görünen ad: Dosya Kopyala
İçerik: secret.txt
Hedef Klasör: $(build.artifactstagingdirectory)
Yapıtları Yayımla görevini seçin ve gerekli alanları aşağıdaki gibi doldurun:
Görünen ad: Yapıt Yayımla
Yayımlama yolu: $(build.artifactstagingdirectory)
Yapıt adı: drop
Yapıt yayımlama konumu: Azure Pipelines
Kaydet ve kuyruk'u ve ardından çalıştır'ı seçerek işlem hattınızı çalıştırın.
İşlem hattı çalıştırması tamamlandıktan sonra işlem hattı özetine dönün ve yayımlanan yapıtı seçin.
Yayımlanan yapıtı indirmek için secret.txt bırak'ı>seçin.
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:
Projenizi barındırmak için yeni bir kuruluş oluşturduysanız bkz . Kuruluşunuzu silme, aksi takdirde projenizi silme.
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.
Azure CLI
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:
Azure CLI
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
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.