Azure 如何設定 Managed Identity 的具體 CLI 指令

使用 受控識別 (Managed Identity) 是最穩健的做法,因為它不需要處理密碼過期的問題。

以下是為你準備的 Azure CLI 快速設定指令,你可以直接在 Azure Cloud Shell 或本地終端機執行:

步驟 1:為 App Service 啟用系統指派識別

這會讓你的 App Service 在 Azure Active Directory 中擁有一個身分。

Bash

# 替換成你的資源群組與 App 名稱
az webapp identity assign --name you-app-name --resource-group <你的資源群組名稱>

執行後,你會得到一個 principalId,這就是該 App 的身分 ID。

另一個 power shell 範例:

$RESOURCE_GROUP = "your-policy-group-name"
$WEB_APP_NAME = "your-app-name"
az webapp identity assign --name $WEB_APP_NAME --resource-group $RESOURCE_GROUP

步驟 2:授權 App Service 讀取 ACR (AcrPull)

這步是解決 Unauthorized 錯誤的關鍵。

Bash

# 1. 取得 ACR 的 Resource ID
ACR_ID=$(az acr show --name youappacr1 --query id --output tsv)

# 2. 取得 App Service 的 Principal ID
APP_SERVICE_ID=$(az webapp identity show --name you-app-name --resource-group <你的資源群組名稱> --query principalId --output tsv)

# 3. 賦予 AcrPull 權限
az role assignment create --assignee $APP_SERVICE_ID --scope $ACR_ID --role acrpull

改用 power shell:

# 1. 取得 ACR 的 Resource ID
$ACR_ID = az acr show --name $ACR_NAME --query id --output tsv

# 2. 取得 App Service 的 Principal ID (身分識別 ID)
$APP_SERVICE_ID = az webapp identity show --name $WEB_APP_NAME --resource-group $RESOURCE_GROUP --query principalId --output tsv

# 3. 指派 AcrPull 角色給 App Service
az role assignment create --assignee $APP_SERVICE_ID --scope $ACR_ID --role acrpull


步驟 3:通知 App Service 使用受控識別抓取影像

即使有了權限,App Service 預設可能還在找舊的帳號密碼,我們需要切換它的拉取方式:

Bash

az webapp config container set --name you-app-name --resource-group <你的資源群組名稱> \
  --docker-custom-image-name youappacr1 .azurecr.io/policy-app:v1 \
  --docker-registry-server-url https://youappacr1.azurecr.io

驗證與重啟

完成上述設定後,請執行以下操作:

  1. 前往 Azure Portal 的 App Service > Deployment Center
  2. 確認 Authentication 已顯示為 Managed Identity
  3. 點擊頁面上方的 Save,然後到 Overview 點擊 Restart

常見小提醒:

  • 傳輸延遲:角色指派(RBAC)有時需要 1-2 分鐘才會生效,如果重啟後立刻失敗,請稍等片刻再試一次。
  • 影像標籤:確認你的 ACR 中真的有一個名為 you-app-name 且標籤為 v1 的影像。

設定完後,你想進一步確認如何查看重啟後的容器內部日誌嗎?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *