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


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

Примечание.

Azure Spring Apps — это новое название службы Azure Spring Cloud. Старое название будет еще некоторое время встречаться в наших материалах, пока мы не обновим ресурсы, такие как снимки экрана, видео и схемы.

Эта статья применима к: ✔️ 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, на котором показана страница управления доступом с выделенной вкладкой

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

Снимок экрана: портал 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/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

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