Использование секретов Azure Key Vault в Azure Pipelines
Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019
Azure Key Vault позволяет разработчикам безопасно хранить секреты, такие как ключи API, учетные данные или сертификаты, и управлять ими. Служба Azure Key Vault поддерживает два типа контейнеров: хранилища и управляемые пулы HSM (аппаратный модуль безопасности). Хранилища поддерживают хранение ключей, секретов и сертификатов на основе программного обеспечения и HSM, а управляемые пулы HSM поддерживают только ключи с поддержкой HSM.
В этом учебнике рассматривается следующее.
- Создание Key Vault Azure с помощью Azure CLI
- Добавление секрета и настройка доступа к хранилищу ключей Azure
- Использование секретов в конвейере
Предварительные требования
- Организация Azure DevOps. Если у вас нет такой учетной записи, вы можете создать ее бесплатно.
- Подписка Azure. Создайте учетную запись Azure бесплатно, если у вас ее еще нет.
создать Azure Key Vault;
Войдите на портал Azure и нажмите кнопку Cloud Shell в правом верхнем углу.
Если с вашей учетной записью связано несколько подписок Azure, используйте приведенную ниже команду, чтобы указать подписку по умолчанию. Вы можете
az account list
создать список подписок.az account set --subscription <your_subscription_name_or_ID>
Задайте регион Azure по умолчанию. Можно использовать для
az account list-locations
создания списка доступных регионов.az config set defaults.location=<your_region>
Например, эта команда выберет регион westus2:
az config set defaults.location=westus2
Создание группы ресурсов Группа ресурсов — это контейнер, содержащий связанные ресурсы для решения Azure.
az group create --name <your-resource-group>
Создайте новое хранилище ключей.
az keyvault create \ --name <your-key-vault> \ --resource-group <your-resource-group>
Создайте секрет в хранилище ключей Azure.
az keyvault secret set \ --name "Password" \ --value "mysecretpassword" \ --vault-name <your-key-vault-name>
Создание проекта
Войдите в организацию Azure DevOps.
Если у вас еще нет проектов в организации, выберите " Создать проект", чтобы приступить к работе. В противном случае выберите "Создать проект " в правом верхнем углу.
Создание репозитория
Мы будем использовать YAML для создания конвейера, но сначала необходимо создать новый репозиторий.
Войдите в свою организацию Azure DevOps и откройте нужный проект.
Выберите Repos, а затем выберите "Инициализировать", чтобы инициализировать новый репозиторий с помощью README.
Создание конвейера
Выберите Pipelines и нажмите кнопку "Создать конвейер".
Выберите Azure Repos Git (YAML).
Выберите репозиторий, созданный на предыдущем шаге.
Выберите шаблон начального конвейера .
Конвейер по умолчанию включает несколько скриптов, которые выполняют команды echo. Они не нужны, чтобы мы могли их удалить. Новый ФАЙЛ YAML должен выглядеть следующим образом:
trigger: - main pool: vmImage: 'ubuntu-latest' steps:
Выберите "Показать помощник" , чтобы развернуть панель помощника. Эта панель предоставляет удобный и доступный для поиска список задач конвейера.
Найдите хранилище и выберите задачу Key Vault Azure.
Выберите подписку Azure и нажмите кнопку "Авторизовать". Выберите хранилище ключей в раскрывающемся меню и нажмите кнопку "Добавить ", чтобы добавить задачу в конвейер YAML.
Примечание
Функция "Сделать секреты доступными для всего задания" не поддерживается в Azure DevOps Server 2019 и 2020 годах.
Файл YAML должен выглядеть следующим образом:
trigger: - main pool: vmImage: ubuntu-latest steps: - task: AzureKeyVault@2 inputs: azureSubscription: 'Your-Azure-Subscription' KeyVaultName: 'Your-Key-Vault-Name' SecretsFilter: '*' RunAsPreJob: false - task: CmdLine@2 inputs: script: 'echo $(Your-Secret-Name) > secret.txt' - task: CopyFiles@2 inputs: Contents: secret.txt targetFolder: '$(Build.ArtifactStagingDirectory)' - task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: 'drop' publishLocation: 'Container'
Не сохраняйте или не помещайте конвейер в очередь. Сначала необходимо предоставить конвейеру необходимые разрешения для доступа к Azure Key Vault. Не закрывайте вкладку браузера, мы возобновим оставшиеся шаги после настройки разрешений хранилища ключей.
Настройка политик доступа Key Vault Azure
Чтобы получить доступ к Key Vault Azure, необходимо сначала настроить субъект-службу для предоставления доступа к Azure Pipelines. Следуйте инструкциям из этого руководства , чтобы создать субъект-службу, а затем выполните следующие действия, описанные в этом разделе.
Перейдите на портал Azure.
Используйте строку поиска для поиска созданного ранее хранилища ключей.
В разделе Параметры Выбор политик доступа.
Выберите "Добавить политику доступа" , чтобы добавить новую политику.
Для разрешений "Секрет" выберите "Получить " и "Список".
Выберите параметр, чтобы выбрать субъект-службу и выполнить поиск созданного в начале этого раздела. Субъект безопасности — это объект, представляющий пользователя, группу, службу или приложение, которые запрашивают доступ к ресурсам Azure.
Нажмите кнопку "Добавить ", чтобы создать политику доступа, а затем нажмите кнопку "Сохранить ", когда все будет готово.
Запуск и проверка конвейера
Вернитесь на предыдущую вкладку, на которой мы отключились.
Нажмите кнопку "Сохранить", а затем нажмите кнопку "Сохранить ", чтобы зафиксировать изменения и активировать конвейер. Возможно, вам будет предложено разрешить конвейерный доступ к ресурсам Azure, если появится запрос на выбор параметра "Разрешить". Вам придется утвердить конвейер только один раз.
Выберите задачу CmdLine , чтобы просмотреть журналы.
Вернитесь к сводке конвейера и выберите опубликованный артефакт.
Выберите артефактsecret.txt , чтобы открыть его.
Текстовый файл должен содержать наш секрет: mysecretpassword.
Предупреждение
Это руководство предназначено только для образовательных целей. Рекомендации по обеспечению безопасности и безопасное использование секретов см. в статье "Управление секретами" в серверных приложениях с помощью Azure Key Vault.
Очистка ресурсов
Чтобы удалить созданные ресурсы, выполните следующие действия.
Если вы создали новую организацию для размещения проекта, узнайте, как удалить организацию, в противном случае удалите проект.
Все ресурсы Azure, созданные во время работы с этим руководством, размещаются в одной группе ресурсов PipelinesKeyVaultResourceGroup. Выполните следующую команду, чтобы удалить группу ресурсов и все ее ресурсы.
az group delete --name PipelinesKeyVaultResourceGroup
ВОПРОСЫ И ОТВЕТЫ
Вопрос. Я получаю следующую ошибку: "У пользователя или группы нет разрешения на список секретов", что делать?
Ответ. Если возникает ошибка, указывающая, что у пользователя или группы нет разрешения списка секретов в хранилище ключей, выполните следующие команды, чтобы разрешить приложению доступ к ключу или секрету в Azure Key Vault:
$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;