在前一篇文章中我們使用了 APIM 來對多個 AOAI API 端點進行負載均衡,其中當然包含了多組 API 端點與 API 金鑰,也為了快速展示架構,我們非常直接明瞭的將金鑰以明碼的方式留在 APIM 的 Policy 中,並不是一個好的示範。
對於這個問題比較簡單的作法是使用 APIM 的俱名值來存放金鑰,至少不是直接寫在 Policy 裡,嚴謹一點就是選擇 Key Vault 來做金鑰管理,但兩種方式還是都需要複製貼上,感覺就不是這麼漂亮。所以在這篇文章中將使用沒有過期問題也不用看到密碼的 Managed Identity,並且重新修改 Policy 來讓 APIM 使用 Managed Identity 呼叫 AOAI API 端點。
系列文章
在 APIM 中啟用 Managed Identity
這步驟在 Azure Portal 中非常簡單,找到 APIM 下的受控識別,選擇啟用後儲存就完成了。
為 Managed Identity 進行授權
回想一下目標,我們希望使用 Managed Identity 的身分在 APIM 內呼叫 AOAI API 端點,而為了進行這個動作,Managed Identity 需要在 Azure OpenAI 中具備 Cognitive Services OpenAI User 的權限。
這步驟也非常簡單,都是在 Portal 上操作就可以了,只是別忘記在 APIM 內有用到的 Azure OpenAI 都需要做一次。
修改 APIM Policy
接下就是修改 APIM Policy 來使用已經具備 Azure OpenAI 權限的 Managed Identity,我們直接使用 APIM 內建的 authentication-managed-identity 取得 token,用法如下:
修改後的完整 Policy 如下:
測試
如果直接用 Postman 來打 API 肯定是成功的,但這樣就感覺不出與原本的差異了,所以這次改成由 APIM 的介面來測試。
一樣使用 Chat Completions API 測試,填妥上方參數後請求的 Body 使用以下範例,完成後點擊畫面下方的「Trace」。
觀察以下部分呼叫紀錄:
APIM 會先去取得 Managed Identity 的 Token,並在呼叫 AOAI API 端點時自己將 Token 帶上,測試成功!
結論
延續前一篇文章,我們修改了 Policy 讓 APIM 使用 Managed Identity 的身分,藉由 Portal 建立 Managed Identity 與進行授權的操作也非常簡單,小小幾個動作讓我們的架構更安全外,看起來也更高級了😎
留言
張貼留言