Azure Key Vault görevAzure Key Vault task

Azure PipelinesAzure Pipelines

Genel BakışOverview

Kimlik doğrulama anahtarları, depolama hesabı anahtarları, veri şifreleme anahtarları gibi gizli dizileri indirmek için bu görevi kullanın. PFX dosyaları ve bir Azure Key Vault örneğinden parolalar.Use this task to download secrets such as authentication keys, storage account keys, data encryption keys, .PFX files, and passwords from an Azure Key Vault instance. Görev, kasadaki bir gizli dizi tümünün veya bir alt kümesinin en son değerlerini getirmek ve bunları bir işlem hattının sonraki görevlerinde kullanılabilecek değişkenler olarak ayarlamak için kullanılabilir.The task can be used to fetch the latest values of all or a subset of secrets from the vault, and set them as variables that can be used in subsequent tasks of a pipeline. Görev, düğüm tabanlıdır ve Linux, macOS ve Windows aracılarıyla birlikte çalışmaktadır.The task is Node-based, and works with agents on Linux, macOS, and Windows.

ÖnkoşullarPrerequisites

Görev aşağıdaki önkoşullara sahiptir:The task has the following Prerequisites:

Bir Anahtar Kasası oluşturabilirsiniz:You can create a key vault:

Anahtar kasasına gizli diziler ekleyin:Add secrets to a key vault:

  • Set-AzureKeyVaultSecretPowerShell cmdlet 'ini kullanarak.By using the PowerShell cmdlet Set-AzureKeyVaultSecret. Gizli dizi yoksa, bu cmdlet onu oluşturur.If the secret does not exist, this cmdlet creates it. Gizli dizi zaten varsa, bu cmdlet bu gizli dizinin yeni bir sürümünü oluşturur.If the secret already exists, this cmdlet creates a new version of that secret.

  • Azure CLı 'yı kullanarak.By using the Azure CLI. Bir anahtar kasasına gizli dizi eklemek için (örneğin, PA $ $w 0rd değeri Ile SQLPassword adlı bir gizli dizi) şunu yazın:To add a secret to a key vault, for example a secret named SQLPassword with the value Pa$$w0rd, type:

    az keyvault secret set --vault-name 'ContosoKeyVault' --name 'SQLPassword' --value 'Pa$$w0rd'
    

Gizli dizilerle erişmek istediğinizde:When you want to access secrets:

  • Azure hizmet bağlantısında kasadaki en az Get ve list izinlerine sahip olduğundan emin olun.Ensure the Azure service connection has at least Get and List permissions on the vault. Bu izinleri Azure Portalayarlayabilirsiniz:You can set these permissions in the Azure portal:

    • Kasa için Ayarlar dikey penceresini açın, erişim ilkeleri' ni ve ardından Yeni Ekle' yi seçin.Open the Settings blade for the vault, choose Access policies, then Add new.

    • Erişim Ilkesi Ekle dikey penceresinde, sorumlu Seç ' i seçin ve istemci hesabınız için hizmet sorumlusu ' nı seçin.In the Add access policy blade, choose Select principal and select the service principal for your client account.

    • Erişim Ilkesi Ekle dikey penceresinde gizli izinler ' i seçin ve Get ve list ' ın işaretlendiğinden emin olun.In the Add access policy blade, choose Secret permissions and ensure that Get and List are checked (ticked).

    • Değişiklikleri kaydetmek için Tamam ' ı seçin.Choose OK to save the changes.

Not

Microsoft tarafından barındırılan bir aracı kullanıyorsanız, güvenlik duvarınızdan Microsoft tarafından barındırılan aracının IP aralığını eklemeniz gerekir.If you're using a Microsoft-hosted agent, you must add the IP range of the Microsoft-hosted agent to your firewall. Her Çarşamba yayımlanacak haftalık JSON DOSYASıNDAKIIP aralıklarının haftalık listesini alın.Get the weekly list of IP ranges from the weekly JSON file, which is published every Wednesday. Yeni IP aralıkları aşağıdaki Pazartesi 'yi etkili hale gelir.The new IP ranges become effective the following Monday. Daha fazla bilgi için bkz. Microsoft tarafından barındırılan aracılar.For more information, see Microsoft-hosted agents. Azure DevOps kuruluşunuz için gereken IP aralıklarını bulmak için, Microsoft tarafından barındırılan aracılar için OLASı IP aralıklarını nasıl tanımlayacağınızıöğrenin.To find the IP ranges that are required for your Azure DevOps organization, learn how to identify the possible IP ranges for Microsoft-hosted agents.

YAML kod parçacığıYAML snippet

# Azure Key Vault
# Download Azure Key Vault secrets
- task: AzureKeyVault@1
  inputs:
    azureSubscription: 
    keyVaultName: 
    secretsFilter: '*'
    runAsPreJob: false # Azure DevOps Services only

Bağımsız değişkenlerArguments

ParametreParameter AçıklamaDescription
ConnectedServiceNameAzure aboneliğiConnectedServiceNameAzure Subscription Istenir Azure Key Vault örneğini içeren Azure aboneliğine yönelik hizmet bağlantısını seçin veya yeni bir bağlantı oluşturun.(Required) Select the service connection for the Azure subscription containing the Azure Key Vault instance, or create a new connection. Daha fazla bilgi edininLearn more
KeyVaultName
Key VaultKey Vault
Istenir Gizliliklerin indirileceği Azure Key Vault adını seçin.(Required) Select the name of the Azure Key Vault from which the secrets will be downloaded.
SecretsFilter
Gizli diziler filtresiSecrets filter
Istenir İndirilecek gizli adların virgülle ayrılmış bir listesi.(Required) A comma-separated list of secret names to be downloaded.
Varsayılan değer: *Default value: *
RunAsPreJob
Gizli dizileri tüm işler için kullanılabilir yapMake secrets available to whole job
Istenir İşi yürütme başlamadan önce görevi çalıştırın.(Required) Run the task before job execution begins. Yalnızca bunu izleyen görevleri değil, işteki tüm görevlere gizli dizileri gösterir.Exposes secrets to all tasks in the job, not just tasks that follow this one.
Varsayılan değer: falseDefault value: false
ParametreParameter AçıklamaDescription
ConnectedServiceNameAzure aboneliğiConnectedServiceNameAzure Subscription Istenir Azure Key Vault örneğini içeren Azure aboneliğine yönelik hizmet bağlantısını seçin veya yeni bir bağlantı oluşturun.(Required) Select the service connection for the Azure subscription containing the Azure Key Vault instance, or create a new connection. Daha fazla bilgi edininLearn more
KeyVaultName
Key VaultKey Vault
Istenir Gizliliklerin indirileceği Azure Key Vault adını seçin.(Required) Select the name of the Azure Key Vault from which the secrets will be downloaded.
SecretsFilter
Gizli diziler filtresiSecrets filter
Istenir İndirilecek gizli adların virgülle ayrılmış bir listesi.(Required) A comma-separated list of secret names to be downloaded.
Varsayılan değer: *Default value: *

Not

Değerler dizeler olarak alınır.Values are retrieved as strings. Örneğin, ConnectionString adlı bir gizli dizi varsa, connectionString Azure Anahtar Kasası 'ndan alınan ilgili gizliliğin en son değeriyle bir görev değişkeni oluşturulur.For example, if there is a secret named connectionString, a task variable connectionString is created with the latest value of the respective secret fetched from Azure key vault. Daha sonra bu değişken sonraki görevlerde kullanılabilir.This variable is then available in subsequent tasks.

Kasadan getirilen değer bir sertifika ise (örneğin, bir PFX dosyası), görev değişkeni PFX 'in içeriğini dize biçiminde içerir.If the value fetched from the vault is a certificate (for example, a PFX file), the task variable will contain the contents of the PFX in string format. Aşağıdaki PowerShell kodunu görev değişkeninden PFX dosyasını almak için kullanabilirsiniz:You can use the following PowerShell code to retrieve the PFX file from the task variable:

$kvSecretBytes = [System.Convert]::FromBase64String($(PfxSecret))
$certCollection = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2Collection
$certCollection.Import($kvSecretBytes,$null,[System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable)

Sertifika dosyası makinede yerel olarak depolanacaksa, parolayı bir parolayla şifrelemek iyi bir uygulamadır:If the certificate file will be stored locally on the machine, it is good practice to encrypt it with a password:

 #Get the file created
$password = 'your password'
$protectedCertificateBytes = $certCollection.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $password)
$pfxPath = [Environment]::GetFolderPath("Desktop") + "\MyCert.pfx"
[System.IO.File]::WriteAllBytes($pfxPath, $protectedCertificateBytes)

Daha ayrıntılı bilgi için bkz. Azure Key Vault sertifikalarla çalışmaya başlama.For more details, see Get started with Azure Key Vault certificates.

İletişim BilgileriContact Information

Görevi kullanarak sorunları keşfettiğiniz, görevle ilgili geri bildirim paylaşmak veya görmek istediğiniz yeni özellikler önermek için, RM _ müşterisi _ Queries@microsoft.com ile iletişim kurun.Contact RM_Customer_Queries@microsoft.com if you discover issues using the task, to share feedback about the task, or to suggest new features that you would like to see.

Açık kaynakOpen source

Bu görev GitHub 'daaçık kaynaktır.This task is open source on GitHub. Geribildirim ve katılımlar hoş geldiniz.Feedback and contributions are welcome.

SSSFAQ

forbiddenAzure Key Vault kimlik bilgileri alma noktasındaki işlem hatlarında hata alıyorumI get a forbidden error on pipelines at the point of getting credentials from Azure Key Vault

Bu durum, Azure Anahtar Kasası 'nda gerekli izinler eksikse oluşur.This occurs if the required permissions are missing in the Azure key vault. Sorunu çözmek için doğru izinlere sahip bir erişim ilkesi ekleyin.To resolve the issue, add an access policy with the correct permissions.

Bir aracıya ihtiyacım var mı?Do I need an agent?

Yapınızı veya sürümünüzü çalıştırmak için en az bir aracınız olması gerekir.You need at least one agent to run your build or release.

Sorun yaşıyorum.I'm having problems. Sorunları nasıl giderebilirim?How can I troubleshoot them?

Bkz. derleme ve yayın sorunlarını giderme.See Troubleshoot Build and Release.

Varsayılan bir aracı havuzu seçemiyorum ve derleme veya yayınımı sıraya alamıyorum.I can't select a default agent pool and I can't queue my build or release. Bu Nasıl yaparım? düzeltilsin mi?How do I fix this?

Bkz. Aracı havuzları.See Agent pools.

NuGet Push görevlerim şu hata ile başarısız oluyor: "hata: yerel veren sertifikası alınamıyor".My NuGet push task is failing with the following error: "Error: unable to get local issuer certificate". Bunu nasıl giderebilirim?How can I fix this?

Bu, güvenilen kök sertifika eklenerek düzeltilebilir.This can be fixed by adding a trusted root certificate. NODE_EXTRA_CA_CERTS=fileOrtam değişkenini yapı aracıya ekleyebilir veya NODE.EXTRA.CA.CERTS=file görev değişkenini işlem hattınızda ekleyebilirsiniz.You can either add the NODE_EXTRA_CA_CERTS=file environment variable to your build agent, or you can add the NODE.EXTRA.CA.CERTS=file task variable in your pipeline. Daha fazla ayrıntı için bkz. ortam değişkenleri .See Environment variables for more details.

Azure DevOps 'tan Key Vault bağlanamadım.I can't connect with Key Vault from Azure DevOps.

Bu, Key Vault güvenlik duvarı düzgün şekilde yapılandırılmadığı zaman gerçekleşir.This happens when the Key Vault firewall isn't properly configured. Aracı havuzunun ve veri merkezinin (TFS) anahtar kasasına erişebildiğinizden emin olun.Make sure that the agent pool and the Datacenter (TFS) can access the key vault. Microsoft tarafından barındırılan aracıların aracı IP aralıklarının listelendiğinden emin olun.Ensure that the agent IP ranges for Microsoft-hosted agents are allow listed.