將 Azure Key Vault 整合到您的 GitHub Actions 工作流程中,以一個位置安全地管理敏感性認證。 這種方法可降低意外暴露或未經授權存取敏感數據的風險。
此 GitHub Actions 範例工作流程示範如何使用 OpenID Connect (OIDC) 驗證,安全地從 Azure Key Vault 擷取秘密。
先決條件
- 在 Microsoft Entra 應用程式或使用者指派的受控識別上設定同盟身分識別認證。 瞭解如何 從 GitHub Actions by OpenID Connect 向 Azure 進行驗證。 當您設定同盟認證時,請將這些秘密儲存在 GitHub 中:
-
AZURE_CLIENT_ID:Azure 服務主體的用戶端 ID。 -
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 }}