在管線中使用 Azure 金鑰保存庫 秘密
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
透過 Azure 金鑰保存庫,您可以安全地儲存和管理敏感性資訊,例如密碼、API 金鑰、憑證等。 使用 Azure 金鑰保存庫,您可以輕鬆地建立和管理加密金鑰來加密您的數據。 Azure 金鑰保存庫 也可用來管理所有資源的憑證。 在本文中,您將學會如何:
- 建立 Azure Key Vault。
- 設定您的 金鑰保存庫許可權。
- 建立新的服務連線。
- 從 Azure Pipeline 查詢秘密。
必要條件
- Azure DevOps 組織。 如果您還沒有免費 帳戶,請建立一個。
- 您自己的專案。 如果您還沒有專案,請建立專案 。
- 您自己的存放庫。 如果您還沒有 Git 存放庫,請建立新的 Git 存放庫 。
- Azure 訂用帳戶。 如果您還沒有 Azure 帳戶,請建立免費的 Azure 帳戶 。
建立 Key Vault
登入 Azure 入口網站,然後選取 [建立資源]。
在 [金鑰保存庫] 下,選取 [建立] 以建立新的 Azure 金鑰保存庫。
從下拉功能表中選取您的 訂用帳戶 ,然後選取現有的 資源群組或建立新的資源群組 。 輸入金鑰保存庫名稱、選取區域、選擇定價層,然後選取 [下一步] 以設定其他屬性。 否則,請選取 [ 檢閱 + 建立 ] 以保留預設設定。
部署完成後,請選取 [前往資源]。
設定驗證
建立使用者指派的受控識別
登入 Azure 入口網站,然後在搜尋列中搜尋受控識別服務。
選取 [建立],然後填寫必要的字段,如下所示:
- 訂用帳戶:從下拉功能表中選取您的訂用帳戶。
- 資源群組:選取現有資源群組或建立新的資源群組。
- 區域:從下拉功能表中選取區域。
- 名稱:輸入使用者指派的受控識別的名稱。
完成時,請選取 [ 檢閱 + 建立 ]。
部署完成後,請選取 [移至資源],然後複製 [ 訂 用帳戶] 和 [用戶端標識符 ] 值,以用於後續步驟。
流覽至 [設定>屬性],然後複製受控識別的租使用者標識碼值以供稍後使用。
設定金鑰保存庫存取原則
流覽至 Azure 入口網站,並使用搜尋列來尋找您稍早建立的密鑰保存庫。
選取 [ 存取原則],然後選取 [ 建立 ] 以新增原則。
在 [秘密許可權] 底下,選取 [取得] 和 [列表] 複選框。
選取 [下一步],然後將您稍早建立之受控識別的用戶端標識碼貼到搜尋列中。 選取您的受控識別。
選取 [下一步],然後再次選取 [下一步]。
檢閱您的新原則,然後在完成時選取 [ 建立 ]。
建立服務連線
登入您的 Azure DevOps 組織,然後瀏覽至您的專案。
選取 [項目設定>服務連線],然後選取 [新增服務連線] 以建立新的服務連線。
選取 [Azure Resource Manager],然後選取 [ 下一步]。
針對 [ 身分識別類型],從下拉功能表中選取 [受控識別 ]。
針對 步驟 1:受控識別詳細數據,填寫字段,如下所示:
受控識別的訂用帳戶:選取包含受控識別的訂用帳戶。
受控識別的資源群組:選取裝載受控識別的資源群組。
受控識別:從下拉功能表中選取您的受控識別。
針對 步驟 2:Azure 範圍,填寫字段,如下所示:
服務連線的範圍層級:選取 [訂用帳戶]。
服務連線的訂用帳戶:選取受控識別將存取的訂用帳戶。
服務連線的資源群組:(選擇性) 指定 以限制一個資源群組的受控識別存取。
針對 步驟 3:服務連線詳細數據:
服務連線名稱:提供服務連線的名稱。
服務管理參考:來自 ITSM 資料庫的內容資訊。
描述:(選擇性) 新增描述。
在 [ 安全性] 中,選取 [ 授與所有管線 訪問許可權] 複選框,以允許所有管線使用此服務連線。 如果您未選取此選項,則必須手動授與使用此服務連線之每個管線的存取權。
選取 [ 儲存 ] 以驗證並建立服務連線。
查詢和使用管線中的秘密
使用 Azure 金鑰保存庫 工作,我們可以擷取秘密的值,並在管線中的後續工作中使用它。 請記住,秘密必須明確對應至 env 變數,如下列範例所示。
pool:
vmImage: 'ubuntu-latest'
steps:
- task: AzureKeyVault@1
inputs:
azureSubscription: 'SERVICE_CONNECTION_NAME'
KeyVaultName: 'KEY_VAULT_NAME'
SecretsFilter: '*'
- bash: |
echo "Secret Found! $MY_MAPPED_ENV_VAR"
env:
MY_MAPPED_ENV_VAR: $(SECRET_NAME)
上一個bash命令的輸出看起來應該像這樣:
Secret Found! ***
注意
如果您想要從 Azure 金鑰保存庫 查詢多個秘密,請使用 SecretsFilter
自變數來傳遞以逗號分隔的秘密名稱清單:『secret1,secret2』。