【 Cloud 】設定 Azure App Service 的 Configuration 與 Azure Key Vault 透過 RBAC 連結 ( Python )
內容
- 學習目標
- 前置準備作業
- 建立服務所使用的名稱
- 建立 Azure App Service
- 建立與設定 Azure Key Vault
- 設定 Azure App Service 的 Configuration
- 部署 Python 程式到 Azure App Service
- 測試與驗證
學習目標
- 如何在
Azure App Service中的Configuration透過Azure role-based access control ( RBAC )讀取Azure Key Vault資訊
前置準備作業
- 已建立 Azure 帳號並能正常登入
- 已於電腦端安裝 IDE,本範例使用 Visual Studio Code ( VScode )
- 已於 VScode 安裝 Azure App Service Extension
- 已於 VScode 登入到 Azure
建立服務所使用的名稱
| 屬性 | 名稱 |
|---|---|
| Resource group | app-secret-rg |
| Azure App Service | app-sample168 |
| Azure Key Vault | secret-sample168 |
建立 Azure App Service
Step 1. 於 Azure Portal 中的上方搜尋框輸入 App Service > 點選 App Services 的搜尋結果

Step 2. 點選左上角 + Create 按鈕中的 + Web App

Step 3. 輸入相關資訊
Resource group欄位請選擇唯一且可識別的名稱。Name欄位請輸入唯一且可識別的名稱。Publish欄位請選擇Code。Runtime stack欄位請選擇Python。Region欄位請選擇所要使用服務的所在位置。Linux Plan欄位請選擇所要使用的 Plan。Pricing Plan欄位請選擇所要使用的規格。- 以上資訊輸入完成後點選左下角的
Review + Create


Step 4. 確認相關資訊
- 確認完成後請點選左下角的
Create

Step 5. 建立過程中

Step 6. 建立完成,點選 Go to resource

Step 7. 啟用 Managed identity
- 點選左側的
Identity> 再點選On

- 點選上方的
Save

- 點選上方的
Yes

建立與設定 Azure Key Vault
Step 1. 於 Azure Portal 中的上方搜尋框輸入 Key Vault > 點選 Key Vaults 的搜尋結果

Step 2. 點選左上角 + Create 按鈕中的 + Web App

Step 3. 輸入相關資訊
Resource group欄位請選擇唯一且可識別的名稱。Key vault name欄位請輸入唯一且可識別的名稱。Region欄位請選擇所要使用服務的所在位置。Pricing tier欄位請選擇所要使用的規格。- 以上資訊輸入完成後點選左下角的
Review + Create


Step 4. 確認相關資訊
- 確認完成後請點選左下角的
Create

Step 5. 建立過程中

Step 6. 建立完成,點選 Go to resource

Step 7. 設定給 App Service 的存取權限
- 點選左側的
Access configuration> 再點選Go to access control (IAM)

- 點選上方的
Add中的Add role assignment

- 點選
Key Vault Secrets User> 再點選Next

- 點選
Managed identity> 再點選+ Select members

Managed identity欄位選擇App Service、Select欄位選擇所建立的 App Service ( 本範例為app-sample168)

- 點選下方的
Select

- 點選下方的
Review + assign

- 點選下方的
Review + assign

Step 8. 設定管理 Secrets 的 User 之存取權限
- 點選上方的
Add中的Add role assignment

- 點選
Key Vault Secrets Officer> 再點選Next

- 點選
User, group, or service principal> 再點選+ Select members

- 選擇所要管理 Secrets 的使用者

- 點選下方的
Select

- 點選下方的
Review + assign

- 點選下方的
Review + assign

Step 9. 設定 Secret
- 點選左側的
Secrets> 再點選上方的+ Generate/Import

- 輸入 Secret 資訊
Name欄位請輸入db-connection-stringSecret value欄位請輸入test_from_web- 當以上資訊輸入完成後點選左下方的
Create


Step 10. 取得 CURRENT VERSION 與 Secret Identifier
- 點選所建立的
db-connection-string

- 取得
CURRENT VERSION

- 取得
Secret Identifier- 點選出現的 CURRENT VERSION


設定 Azure App Service 的 Configuration
Step 1. 回到所建立的 Azure App Service ( 本範例為 app-sample168 ) > 點選左側的 Configuration > 再點選 + New application setting

Step 2. 設定 setting 資訊
- 輸入相關資訊
Name欄位輸入DB_CONNECTION_STRINGValue欄位輸入@Microsoft.KeyVault(SecretUri=Value_From_Secret_Identifier),請修改Value_From_Secret_Identifier為建立與設定 Azure Key Vault段落Step 10所取得的Secret Identifier- 以上資訊輸入完成後點選
OK - ㊟
@Microsoft.KeyVault(referenceString)中的referenceString的格式可為以下兩種:
| referenceString | 說明 |
|---|---|
| SecretUri= secretUri | SecretUri 為 Secret 的完整 URI 或選擇性地包含版本,例如 https://myvault.vault.azure.net/secrets/mysecret/ 或 https://myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931 |
| VaultName= vaultName ;SecretName= secretName ;SecretVersion= secretVersion | VaultName 是必要的,而且是保存庫名稱。 SecretName 是必要的,而且是秘密名稱。 SecretVersion 為選擇性,顯示時表示要使用的秘密版本。 |

- 點選上方的
Save

- 點選
Continue

部署 Python 程式到 Azure App Service
Step 1. 下載範例程式
Step 2. 部署 Python 程式
- 點選
Python資料夾右鍵 > 點選Deploy to Web App...

- 選擇所建立的 App Service ( 本範例為
app-sample168)

- 點選
Deploy

- 部署過程中

- 部署完成

測試與驗證
Step 1. 取得 App Service 的 Default domain
- 到所建立的 App Service ( 本範例為
app-sample168)

Step 2. 開啟測試頁面
- 於瀏覽器開啟新的頁籤,輸入
https://Default-Domain/secret,請修改Default-Domain為上步驟所取得的Default domain

Reference
Sample Code
GitHub
List of blogs
