【 Cloud 】設定 Azure App Service 的 Configuration 與 Azure Key Vault 透過 Vault access policy 連結 ( Node.js )
內容
- 學習目標
- 前置準備作業
- 建立服務所使用的名稱
- 建立 Azure App Service
- 建立與設定 Azure Key Vault
- 設定 Azure App Service 的 Configuration
- 部署 Node.js 程式到 Azure App Service
- 測試與驗證
學習目標
- 如何在
Azure App Service中的Configuration透過Azure role-based access control ( Vault access policy )讀取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欄位請選擇Node 18 LTS。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欄位請選擇所要使用的規格。- 以上資訊輸入完成後點選下方的
Next


- 選擇
Vault access policy後再點選Review + create

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

Step 5. 建立過程中

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

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

- 點選上方的
+ Create

- 點選
Secret permissions中的Get> 再點選下方的Next

- 於搜尋框輸入所建立的 App Service 名稱 ( 本範例為
app-sample168) > 點選所出現的結果 > 再點選Next



- 點選
Next

- 確認相關資訊後點選
Create

- 存取權限設定完成

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

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


Step 9. 取得 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 9所取得的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

部署 Node.js 程式到 Azure App Service
Step 1. 下載範例程式
Step 2. 部署 Node.js 程式
- 點選
Nodejs資料夾右鍵 > 點選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
