Проверка подлинности Azure Spring Apps с помощью Azure Key Vault в GitHub Actions
Примечание.
Планы "Базовый", "Стандартный" и "Корпоративный" будут устарели начиная с середины марта 2025 г. с 3-летнего периода выхода на пенсию. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.
Стандартный план потребления и выделенного плана будет устарел с 30 сентября 2024 г. с полным завершением работы после шести месяцев. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в статье "Миграция потребления Azure Spring Apps Standard" и выделенного плана в приложения контейнеров Azure.
Эта статья относится к:✅ Java ✅ C#
Эта статья относится к:✅ Basic/Standard ✅ Enterprise
В этой статье описано, как использовать Key Vault с рабочим процессом CI/CD для Azure Spring Apps с помощью GitHub Actions.
Хранилище ключей — это безопасное место для хранения ключей. Корпоративным пользователям необходимо хранить учетные данные для сред CI/CD в контролируемой области. Ключ для получения учетных данных в хранилище ключей должен работать только в области ресурса. То есть он имеет доступ только к области хранилища ключей, а не ко всей области Azure. Этот ключ можно сравнить с ключом, который отпирает только сейф, а не с главным ключом, который отпирает все двери в здании. Метод доступа к ключу с помощью другого ключа отлично работает в рабочем процессе CICD.
Создание учетных данных
Чтобы создать ключ для доступа к хранилищу ключей, выполните следующую команду на локальном компьютере:
az ad sp create-for-rbac --role contributor --scopes /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT> --json-auth
Область, заданная параметром --scopes
, ограничивает доступ к ресурсу по ключу. Можно получить доступ только к сейфу.
Результаты:
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
"activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
"resourceManagerEndpointUrl": "https://management.azure.com/",
"sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
"galleryEndpointUrl": "https://gallery.azure.com/",
"managementEndpointUrl": "https://management.core.windows.net/"
}
Затем сохраните результаты в секреты GitHub, как описано в разделе Настройка репозитория GitHub и аутентификация с помощью Azure.
Добавление политик доступа для учетных данных
Созданные выше учетные данные дают доступ только к общим сведениям о хранилище Key Vault, но не к его содержимому. Чтобы получить доступ к секретам, хранящимся в Key Vault, необходимо задать политики доступа для учетных данных.
Перейдите к панели мониторинга хранилища Key Vault на портале Microsoft Azure, выберите меню Контроль доступа, а затем откройте вкладку Назначение ролей. В поле Тип выберите пункт Приложения, в поле Область выберите пункт This resource
. Должны появиться учетные данные, созданные на предыдущем этапе:
Скопируйте имя учетных данных, например azure-cli-2020-01-19-04-39-02
. Откройте меню Политики доступа и выберите + Добавить политику доступа. В качестве Шаблона выберите Secret Management
, а затем выберите Субъект. Вставьте имя учетных данных в поле Субъект/Выбор:
Нажмите кнопку Добавить в диалоговом окне Добавить политику доступа, а затем нажмите кнопку Сохранить.
Создание учетных данных для всей области Azure
Это главный ключ, открывающий все двери в здании. Процедура аналогична предыдущему этапу, но здесь мы изменим область, чтобы создать главный ключ:
az ad sp create-for-rbac --role contributor --scopes /subscriptions/<SUBSCRIPTION_ID> --json-auth
И снова результаты:
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
"activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
"resourceManagerEndpointUrl": "https://management.azure.com/",
"sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
"galleryEndpointUrl": "https://gallery.azure.com/",
"managementEndpointUrl": "https://management.core.windows.net/"
}
Скопируйте всю строку JSON. Вернитесь к панели мониторинга Key Vault. Откройте меню Секреты и нажмите кнопку Создать или импортировать. Введите имя секрета, например AZURE-CREDENTIALS-FOR-SPRING
. Вставьте строку учетных данных JSON в поле ввода Значение. Обратите внимание, что в поле для ввода значения только одна строка текста. Здесь можно вставить всю строку JSON.
Объединение учетных данных в GitHub Actions
Задайте учетные данные, используемые при выполнении конвейера CICD:
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }} # Strong box key you generated in the first step
- uses: Azure/get-keyvault-secrets@v1.0
with:
keyvault: "<Your Key Vault Name>"
secrets: "AZURE-CREDENTIALS-FOR-SPRING" # Master key to open all doors in the building
id: keyvaultaction
- uses: azure/login@v1
with:
creds: ${{ steps.keyvaultaction.outputs.AZURE-CREDENTIALS-FOR-SPRING }}
- name: Azure CLI script
uses: azure/CLI@v1
with:
azcliversion: 2.0.75
inlineScript: |
az extension add --name spring # Spring CLI commands from here
az spring list