在 GitHub Actions 中使用 Azure 金鑰保存庫 驗證 Azure Spring Apps
注意
基本、標準和企業方案將從 2025 年 3 月中旬開始淘汰,並停用 3 年。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 Azure Spring Apps 淘汰公告。
標準 耗用量和專用 方案將從 2024 年 9 月 30 日起淘汰,並在六個月後完成關閉。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 將 Azure Spring Apps 標準取用和專用方案遷移至 Azure Container Apps。
本文適用於: ✔️ Java ✔️ C#
本文適用於: ✔️ 基本/標準 ✔️ 企業
本文說明如何使用 金鑰保存庫 搭配 Azure Spring Apps 與 GitHub Actions 的 CI/CD 工作流程。
金鑰儲存庫是儲存金鑰的安全位置。 企業用戶必須在其控制的範圍內儲存 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 進行驗證中所述。
新增認證存取原則
您在上面建立的認證只能取得 金鑰保存庫 的一般資訊,而不是儲存的內容。 若要取得儲存在 金鑰保存庫 中的秘密,您需要設定認證的存取原則。
移至 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 字串。 返回 金鑰保存庫 儀錶板。 開啟 [ 秘密] 功能表,然後選取 [ 產生/匯 入] 按鈕。 輸入秘密名稱,例如 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