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


Проверка подлинности Azure Spring Apps с помощью Azure Key Vault в GitHub Actions

Примечание.

Планы Basic, Standardи Enterprise вступили в период вывода из обращения 17 марта 2025 года. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.

План стандартного потребления и выделенный план вошли в период вывода из эксплуатации 30 сентября 2024 года, с полным завершением работы к концу марта 2025 года. Дополнительные сведения см. в статье «Миграция потребления и выделенного плана Azure Spring Apps Standard в Azure Container Apps».

Эта статья относится к:✅ 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 на портале Azure, выберите меню управления доступом , а затем откройте вкладку "Назначения ролей ". Выберите приложения для типа и этого ресурса для области. Вы должны увидеть учетные данные, созданные на предыдущем этапе.

Снимок экрана: портал Azure, на котором показана страница управления доступом с выделенной вкладкой

Скопируйте имя учетных данных, например azure-cli-2020-01-19-04-39-02. Откройте меню Политики доступа и выберите + Добавить политику доступа. Выберите "Управление секретами" в шаблоне, а затем выберите "Субъект". Вставьте имя учетных данных в поле ввода Основной/Выбор.

Снимок экрана: портал Azure, на котором показана страница

Нажмите кнопку Добавить в диалоговом окне Добавить политику доступа, а затем нажмите кнопку Сохранить.

Создание учетных данных для всей области 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.

Снимок экрана: портал Azure, на котором показана страница

Объединение учетных данных в 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/[email protected]
      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

Следующие шаги