應用程式層級的秘密是你的函式程式碼和綁定在執行時會消耗的設定值。 與保護 HTTP 端點的 Functions 存取金鑰不同,應用程式層級的秘密是應用程式連接其他服務所需的憑證。
常見的範例包括:
-
基礎設施連線 -
AzureWebJobsStorage連線字串、觸發及綁定連線,用於事件中樞、服務匯流排、Cosmos DB 及 SQL。 - 商業憑證 ——第三方 API 金鑰、資料庫密碼、SaaS 平台代幣。
- 自訂配置 ——程式碼從環境變數讀取的任何敏感值。
選擇儲存選項
Azure 容器應用程式 提供兩種方式來儲存應用程式層級的秘密:
| Option | 最適合用於 | 集中式管理 | 自動旋轉 | 稽核記錄 |
|---|---|---|---|---|
| 容器應用程式秘密 | 開發/測試,單一應用程式的簡單工作負載 | 不,只限於一個應用程式 | No | 僅限於活動記錄 |
| 金鑰保存庫參考資料 | 生產、多應用程式、合規 | 是的——所有應用程式都是這樣 | 是的(無版本 URI) | Full 金鑰保存庫 診斷 |
小提示
為了簡化,建議先從容器應用程式的秘密開始。 當您需要集中管理、自動輪替或合規等級稽核時,請改用 金鑰保存庫 參考。
先決條件
- 一個有有效訂閱的 Azure 帳號。 免費註冊帳號。
- Azure CLI版本 2.40.0 或更高版本。
- 容器應用程式中的現有 Azure Functions 應用程式,或是建立容器的權限。
使用容器應用程式秘密
容器應用程式會將秘密儲存在應用程式陣 configuration.secrets 列中,並在靜態時加密值。 您可以在環境變數、調整規則、磁碟區掛接和 Dapr 元件中參考祕密。
儲存秘密
請進入 Azure 入口網站 的 Functions 容器應用程式。
在 設定中,選擇 秘密。
選擇 新增 並輸入以下數值:
Property 價值 Name 一個秘密名稱,例如 database-password。 請只使用小寫字母、數字和連字號。Type 容器應用程序密鑰 價值 你的秘密價值。 選取 ,然後新增。
在環境變數中引用秘密
儲存秘密後,在環境變數中引用它,讓函式程式碼能讀取它。
在你的 Functions 容器應用程式中,在應用程式的 選項中,選擇 修訂版與複本。
選取 [建立新修訂]。
在 容器 標籤中,選擇你的容器,然後選擇 編輯。
選擇 環境變數 標籤,然後選擇 新增。
輸入下列值:
Property 價值 Name DATABASE_PASSWORDSource 引用一個秘密 價值 database-password選擇 儲存,然後選擇 建立 來部署新的版本。
驗證秘密
確認你的函式是否能夠讀取秘密值,方法是呼叫該函式並檢查執行中是否因缺少設定而發生錯誤。
curl "https://<FUNCTIONS_APP_URL>/api/<FUNCTION_NAME>"
Important
容器應用程式會在執行時將秘密值注入環境變數。 你的程式碼讀取環境變數,並不會直接存取秘密儲存庫。
Limitations
容器應用程式的秘密有以下限制:
- 沒有集中式—— 每個容器應用程式都獨立儲存自己的秘密。
- 沒有自動旋轉 ——你必須手動更新秘密數值。
- 沒有過期 ——秘密不會自動過期。
- 有限稽核 ——僅提供基本活動日誌;沒有詳細的秘密存取稽核。
- 沒有版本控制 ——沒有內建的秘密版本歷史。
- 更新行為 - 更改秘密不會觸發新的修訂。 你必須建立新的修訂或重新啟動現有的修訂來取得變更。
使用 金鑰保存庫 引用參考資料
金鑰保存庫 引用讓你的容器應用程式能直接使用管理身份從 Azure Key Vault 拉取秘密。 此方法提供集中管理、自動輪調及合規級審計。
步驟 1:設定受管理身份
你的容器應用程式需要一個受管理身份,才能在沒有憑證的情況下驗證 金鑰保存庫。
請進入 Azure 入口網站 的 Functions 容器應用程式。
在 [設定] 底下,選取 [身分識別]。
在 系統分配 分頁中,將 狀態 設為 開啟。
選擇 儲存,然後選擇 「是 」以確認。
步驟 2:授權 金鑰保存庫 存取權
將 金鑰保存庫 Secrets User 角色指派給受管理身份,使其能讀取秘密。
請前往Azure入口的金鑰保存庫。
在 [設定] 底下,選取 [存取控制][IAM]。
選取 新增>新增角色指派。
在 Role 標籤中,選擇 金鑰保存庫 Secrets User。
選取 下一步。
在 [成員] 索引標籤上,選取 [受控識別],然後選取 [選取成員]。
在 「選擇受管理身份 」面板中,選擇您的訂閱,選擇「 容器應用程式 」以指定管理身份類型,選擇功能容器應用程式,然後選擇 「選擇」。
選擇 檢閱 + 指派。
步驟 3:將秘密存入 金鑰保存庫
在你的金鑰保存庫中,Objects,選擇Secrets。
選取 產生/匯入。
輸入下列值:
Property 價值 上傳選項 手動 Name 例如,一個秘密名字 DatabasePassword。價值 你的秘密價值。 選取 ,創建。
選擇你新建立的秘密,再選擇目前版本。
複製 秘密識別碼 URI。 使用無版本的 URI(不含後置版本段)來啟用自動旋轉。
步驟 4:在容器應用程式中引用 金鑰保存庫 機密
建立一個 Container Apps 機密,引用 金鑰保存庫 機密,然後綁定到環境變數。
移至您的 Functions 容器應用程式。 在 設定中,選擇 秘密。
選取 ,然後新增。
在 「加入秘密」中,輸入以下數值:
Property 價值 Name database-passwordType 金鑰保存庫 參考 金鑰保存庫 秘密網址 你複製的 URI 秘密識別碼。 身分識別 系統指派 (或您的使用者指派的身分識別)。 選取 ,然後新增。
在 應用程式中,選擇 修訂與複本。 建立一個新的版本,並使用環境變數
DATABASE_PASSWORD引用密鑰database-password。
步驟 5:驗證金鑰保存庫參考
呼叫你的函式,確認它沒有因缺少設定而產生的錯誤。
curl "https://<FUNCTIONS_APP_URL>/api/<FUNCTION_NAME>"
自動密鑰輪換
當你參考無版本 URI 的 金鑰保存庫 秘密時,容器應用程式會自動取得最新版本:
-
無版本 URI:
https://myvault.vault.azure.net/secrets/mysecret- 總是使用最新版本。 -
版本化 URI:
https://myvault.vault.azure.net/secrets/mysecret/ec96f020...- 固定到特定版本。
使用無版本 URI,容器應用程式會在 30 分鐘內檢查新版本,並自動重新啟動活動中的修訂以取得新值。