Поделиться через


AzureKeyVault@2 — задача Azure Key Vault версии 2

Используйте эту задачу для скачивания секретов, таких как ключи проверки подлинности, ключи учетной записи хранения, ключи шифрования данных, . PFX-файлы и пароли из экземпляра Azure Key Vault. Задачу можно использовать для получения последних значений всех или подмножества секретов из хранилища и задания их в качестве переменных, которые можно использовать в последующих задачах конвейера. Задача основана на узлах и работает с агентами в Linux, macOS и Windows.

Синтаксис

# Azure Key Vault v2
# Download Azure Key Vault secrets.
- task: AzureKeyVault@2
  inputs:
    azureSubscription: # string. Alias: ConnectedServiceName. Required. Azure subscription. 
    KeyVaultName: # string. Required. Key vault. 
    SecretsFilter: '*' # string. Required. Secrets filter. Default: *.
    #RunAsPreJob: false # boolean. Make secrets available to whole job. Default: false.

Входы

azureSubscription - подписке Azure
Псевдоним ввода: ConnectedServiceName. string. Обязательно.

Выберите подключение службы для подписки Azure, содержащей экземпляр Azure Key Vault, или создайте новое подключение. Дополнительные сведения.


хранилища ключей
string. Обязательно.

Имя Azure Key Vault, содержащего секреты для скачивания.


фильтр секретов SecretsFilter -
string. Обязательно. Значение по умолчанию: *.

Загружает имена секретов в соответствии с введенным значением. Это значение может быть значением по умолчанию, чтобы скачать все секреты из выбранного хранилища ключей или список имен секретов, разделенных запятыми.


RunAsPreJob - Сделать секреты доступными для всего задания
boolean. Значение по умолчанию: false.

Выполняет задачу перед началом выполнения задания. Предоставляет секреты всем задачам в задании, а не только задачам, которые следуют этому.


Параметры управления задачами

Все задачи имеют параметры управления в дополнение к входным данным задачи. Дополнительные сведения см. в разделе Параметры управления и общие свойства задач.

Выходные переменные

Никакой.

Замечания

Новые возможности версии 2.0: добавлена поддержка %3B, %5D в секретах.

Используйте эту задачу для скачивания секретов, таких как ключи проверки подлинности, ключи учетной записи хранения, ключи шифрования данных, . PFX-файлы и пароли из экземпляра Azure Key Vault. Задачу можно использовать для получения последних значений всех или подмножества секретов из хранилища и задания их в качестве переменных, которые можно использовать в последующих задачах конвейера. Задача основана на узлах и работает с агентами в Linux, macOS и Windows.

Я получаю ошибку forbidden на конвейерах в точке получения учетных данных из Azure Key Vault

Это происходит, если необходимые разрешения отсутствуют в хранилище ключей Azure. Чтобы устранить проблему, добавить политику доступа с правильными разрешениями.

Необходимые условия

Задача имеет следующие предварительные требования:

Вы можете создать хранилище ключей:

Добавьте секреты в хранилище ключей:

  • С помощью командлета PowerShell Set-AzKeyVaultSecret. Если секрет не существует, этот командлет создает его. Если секрет уже существует, этот командлет создает новую версию этого секрета.

  • С помощью Azure CLI. Чтобы добавить секрет в хранилище ключей, например секрет с именем SQLPassword со значением PlaceholderPassword, введите:

    az keyvault secret set --vault-name 'ContosoKeyVault' --name 'SQLPassword' --value 'PlaceholderPassword'
    

Если вы хотите получить доступ к секретам:

  • Убедитесь, что подключение службы Azure имеет по крайней мере получение и разрешения list в хранилище. Эти разрешения можно задать на портале Azure :

    • Откройте колонку параметров для хранилища, выберите политики доступа, а затем Добавить новые.
    • В колонке Добавление политики доступа выберите Выберите субъект-субъект и выберите субъект-службу для учетной записи клиента.
    • В колонке Добавление политики доступа выберите разрешения секрета и убедитесь, что получить и список установлен (галочку).
    • Нажмите кнопку ОК, чтобы сохранить изменения.

Заметка

Если вы используете агент, размещенный корпорацией Майкрософт, необходимо добавить диапазон IP-адресов размещенного корпорацией Майкрософт агента в брандмауэр. Получите еженедельный список диапазонов IP-адресов из еженедельного JSON-файла, который публикуется каждую среду. Новые диапазоны IP-адресов станут эффективными в следующий понедельник. Дополнительные сведения см. в размещенных в Майкрософт агентах. Чтобы найти диапазоны IP-адресов, необходимые для организации Azure DevOps, узнайте, как определить возможные диапазоны IP-адресов для агентов, размещенных корпорацией Майкрософт,.

Заметка

Значения извлекаются в виде строк. Например, если существует секрет с именем connectionString, создается переменная задачи connectionString с последним значением соответствующего секрета, полученного из хранилища ключей Azure. Эта переменная будет доступна в последующих задачах.

Если значение, полученное из хранилища, является сертификатом (например, PFX-файлом), переменная задачи будет содержать содержимое PFX в строковом формате. Для получения PFX-файла из переменной задачи можно использовать следующий код PowerShell:

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

Если файл сертификата будет храниться локально на компьютере, рекомендуется зашифровать его паролем:

 #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)

Дополнительные сведения см. в статье Начало работы с сертификатами Azure Key Vault.

Примеры

Требования

Требование Описание
Типы конвейеров YAML, классическая сборка, классический выпуск
Выполняется в Агент, DeploymentGroup
требования Никакой
возможностей Эта задача не удовлетворяет требованиям к последующим задачам в задании.
ограничения команд Любой
переменные settable Любой
Версия агента 2.182.1 или более поздней версии
Категория задач Развертывать