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


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, или создайте новое подключение. Подробнее.


KeyVaultName - Хранилище ключей
string. Обязательный.

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


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

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


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

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


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

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

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

Нет.

Remarks

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

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

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

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

Предварительные требования

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

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

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

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

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

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

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

  • Убедитесь, что подключение к службе Azure имеет по крайней мере разрешения На получение и перечисление в хранилище. Эти разрешения можно задать в портал 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
Требования Нет
Capabilities Эта задача не удовлетворяет требованиям для последующих задач в задании.
Ограничения команд Любой
Устанавливаемые переменные Любой
Версия агента 2.182.1 или более поздней версии
Категория задач Развертывание