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
Bir Azure DevOps kuruluşu ve bir proje. Henüz yapmadıysanız bir kuruluş veya proje oluşturun.
Azure aboneliği. Henüz bir hesabınız yoksa ücretsiz bir Azure hesabı oluşturun.
Depo oluşturma
Kendi deponuz zaten varsa sonraki adıma geçin. Aksi takdirde, deponuzu başlatmak için aşağıdaki yönergeleri izleyin. İşlem hattımızı ayarlamak için bu Azure Repo'muzu kullanacağız.
Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.
Depolar'ı ve ardından Başlat'ı seçerek ana dalı BENİOKU ile başlatın.
Azure Key Vault oluşturma
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
.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
.az config set defaults.location=<YOUR_REGION>
Yeni bir kaynak grubu oluşturma.
az group create --name <YOUR_RESOURCE_GROUP_NAME>
Yeni bir Azure Key Vault oluşturun.
az keyvault create \ --name <YOUR_KEY_VAULT_NAME> \ --resource-group <YOUR_RESOURCE_GROUP_NAME>
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>
Anahtar kasası erişim ilkelerini ayarlama
Azure Key Vault'a erişmek için Azure Pipelines'a erişim izni vermek için bir hizmet sorumlusu ayarlamamız gerekir. Azure CLI ile hizmet sorumlusu oluşturmak için bu kılavuzu izleyin ve ardından bu bölümdeki sonraki adımlarla devam edin.
Azure portalına gidin ve daha önce oluşturduğunuz anahtar kasasını bulmak için arama çubuğunu kullanın.
Yeni bir ilke oluşturmak için Erişim ilkeleri'ni ve ardından Oluştur'u seçin.
Gizli dizi izinleri'nin altında Al ve Listele'yi seçin.
İleri'yi ve ardından daha önce oluşturduğunuz hizmet sorumlusunu seçin. Hizmet sorumlusu, Azure kaynaklarına erişim isteyen bir uygulamayı veya hizmeti temsil eden bir nesnedir.
İleri'yi ve ardından bir kez daha İleri'yi seçin.
İlkelerinizi gözden geçirin ve işiniz bittiğinde Oluştur'u seçin.
Rol ataması ekle
Sonraki adımda hizmet sorumlusunu kullanarak bir ARM hizmet bağlantısı oluşturacağız. Bağlantıyı doğrulayabilmeniz için önce hizmet sorumlusuna abonelik düzeyinde Okuma erişimi vermemiz gerekir:
Azure portalına gidin
Sol gezinti panelinden 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 sorumlunuzu bulmak için arama çubuğunu kullanın ve ardından seçmek için "+" işaretini seçin, ardından Seç düğmesine tıklayın.
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ı>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.
Hizmet sorumlusu (el ile) öğesini ve ardından İleri'yi seçin.
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.
Aşağıdaki alanları hizmet sorumlusunu oluştururken elde ettiğiniz bilgilerle doldurun ve işiniz bittiğinde doğrula'yı seçin:
- Hizmet Sorumlusu Kimliği: Hizmet sorumlusu appId'niz.
- Hizmet Sorumlusu anahtarı: Hizmet sorumlusu parolanız.
- Kiracı Kimliği: Hizmet sorumlusu kiracınız.
Doğrulama başarılı olduktan sonra, hizmet bağlantınız için bir ad ve açıklama (isteğe bağlı) sağlayın 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 .
Azure DevOps koleksiyonunuzda oturum açın ve projenize gidin.
Yeni arm hizmet bağlantısı oluşturmak için Proje ayarları>Hizmet bağlantıları>Yeni hizmet bağlantısı'nı ve ardından Azure Resource Manager'ı seçin.
Hizmet bağlantınıza bir ad verin ve ardından Kapsam Düzeyi için Ortam ve Abonelik için Azure Bulutu'na tıklayın.
Abonelik Kimliğinizi ve Abonelik Adınızı girin.
Aşağıdaki alanları hizmet sorumlusunu oluştururken elde ettiğiniz bilgilerle doldurun ve işiniz bittiğinde Bağlantıyı doğrula'yı seçin:
- Hizmet Sorumlusu istemci kimliği: Hizmet sorumlusu appId'niz.
- Hizmet Sorumlusu anahtarı: Hizmet sorumlusu parolanız.
- Kiracı Kimliği: Hizmet sorumlusu kiracınız.
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.
Yeni ardışık düzen oluşturma
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 $(YOUR_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 sorumlusu hizmet bağlantınızı 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.
Azure DevOps koleksiyonunuzda oturum açın ve projenize gidin.
İşlem hatları'nın ardından Derlemeler'i seçin.
Yeni Yeni>derleme işlem hattı'ı seçin.
Yeni bir klasik derleme 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 ve ardından Uygula'yı 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 $(YOUR_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 sorumlusu hizmet bağlantınızı 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
Oluştur işlem hattınızı çalıştırmak için Kaydet & kuyruk'u ve ardından Kaydet ve kuyruk'u seçin.
İşlem hattı çalıştırması tamamlandıktan sonra Yapıtlar'ı ve ardından bırak'ı seçin.
Yeni açılan pencerede secret.txt bırak'ı>seçin, üç nokta simgesini (...) seçin ve ardından indir'i seçerek metin dosyasını kaydedin.
Az önce indirdiğiniz metin dosyasını açın; 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.
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:
$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;