Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Интеграция Azure Key Vault в рабочий процесс GitHub Actions для безопасного управления конфиденциальными учетными данными в одном месте. Такой подход снижает риск случайного воздействия или несанкционированного доступа к конфиденциальным данным.
В этом примере рабочего процесса GitHub Actions показано, как безопасно извлекать секреты из Azure Key Vault с помощью проверки подлинности OpenID Connect (OIDC).
Предпосылки
- Настройте учетные данные федеративного удостоверения в приложении Microsoft Entra или управляемом удостоверении, назначаемом пользователем. Узнайте, как аутентифицироваться в Azure из GitHub Actions с помощью OpenID Connect. При настройке федеративных учетных данных сохраните эти секреты в GitHub:
-
AZURE_CLIENT_ID: идентификатор клиента субъекта-службы Azure. -
AZURE_TENANT_ID: идентификатор клиента Azure AD. -
AZURE_SUBSCRIPTION_ID: идентификатор подписки Azure. -
KEYVAULT_NAME: имя Хранилища ключей.
-
- Предоставление разрешений. Убедитесь, что субъект-служба имеет соответствующий доступ к Key Vault (например, роль "Пользователь секретов Key Vault").
- Замените
<SECRET_NAME>на тайное имя Key Vault.
Пример рабочего процесса GitHub Actions
Что делает рабочий процесс:
- Триггеры при отправке в основную ветвь
- Использует аутентификацию OIDC для подключения к Azure (пароли не хранятся в GitHub)
- Извлекает секрет из Azure Key Vault
- Маскирует значение секрета с помощью
::add-mask::, чтобы предотвратить его отображение в журналах. - Делает секрет доступным в качестве переменной среды для последующих шагов
name: Access Azure Key Vault and pass secret to workflow
on:
push:
branches:
- main
permissions:
id-token: write
contents: read
jobs:
get-secret:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Azure Login
uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Retrieve secret from Key Vault
id: keyvault
uses: azure/CLI@v1
with:
inlineScript: |
SECRET_VALUE=$(az keyvault secret show --name <SECRET_NAME> --vault-name ${{ secrets.KEYVAULT_NAME }} --query value -o tsv)
echo "::add-mask::$SECRET_VALUE"
echo "SECRET_VALUE=$SECRET_VALUE" >> $GITHUB_ENV
- name: Use retrieved secret
run: echo "The secret is successfully retrieved!"
- name: Use SECRET_VALUE in deployment
run: |
./deploy.sh
env:
SECRET_VALUE: ${{ env.SECRET_VALUE }}