向 Azure Container Registry 進行驗證 | Microsoft Docs

有數種方式可以向 Azure 容器登錄進行驗證,每個登錄都適用于一或多個登錄使用案例。

建議的方式包括:

如果您使用容器登錄搭配 Azure Kubernetes Service (AKS) 或其他 Kubernetes 叢集,請參閱 從 Kubernetes 向 Azure Container Registry 進行驗證的案例。

驗證選項

下表列出可用的驗證方法和一般案例。 如需詳細資訊,請參閱連結的內容。

方法 如何驗證 場景 Azure 角色型存取控制 (Azure RBAC) 限制
個別 AD 身分識別  az acr login 在 Azure CLI 中

Connect-AzContainerRegistry 在 Azure PowerShell 中
開發人員、測試人員互動式推入/提取 AD 權杖必須每隔 3 小時更新一次
AD 服務主體  docker login

az acr login 在 Azure CLI 中

Connect-AzContainerRegistry 在 Azure PowerShell 中

API 或工具中的登錄登入設定

Kubernetes 提取秘密   
從 CI/CD 管線自動推送

自動提取至 Azure 或外部服務
SP 密碼預設到期日為 1 年
Azure 資源的受控識別  docker login

az acr login 在 Azure CLI 中

Connect-AzContainerRegistry 在 Azure PowerShell 中
從 Azure CI/CD 管線自動推送

自動提取至 Azure 服務

僅從支援 Azure 資源的受控識別選取 Azure 服務 中使用
AKS 叢集受控識別  建立或更新 AKS 叢集時附加登錄 自動提取至相同或不同訂用帳戶中的 AKS 叢集 否,僅限提取存取 僅適用 AKS 叢集

無法用於跨租使用者驗證
AKS 叢集服務主體  在 AKS 叢集建立或更新時啟用 從另一個 AD 租使用者中的登錄自動提取至 AKS 叢集 否,僅限提取存取 僅適用于 AKS 叢集
管理員使用者  docker login  個別開發人員或測試人員的互動式推播/提取

從登錄到 Azure App 服務 或 Azure 容器執行個體 的映射入口網站部署
否,一律提取和推送存取權 每個登錄的單一帳戶,不建議多位使用者使用
存放庫範圍的存取權杖  docker login

az acr login 在 Azure CLI 中

Connect-AzContainerRegistry 在 Azure PowerShell 中

Kubernetes 提取秘密 
由個別開發人員或測試人員對存放庫進行互動式推送/提取

由個別系統或外部裝置自動從存放庫提取
目前未與 AD 身分識別整合

具有 Microsoft Entra 識別碼的個別登入

直接使用登錄時,例如將映射提取至開發工作站並將映射推送至您所建立的登錄,並使用個別 Azure 身分識別進行驗證。 使用 az login 登入 Azure CLI ,然後執行 az acr login 命令:

az login
az acr login --name <acrName>

當您使用 az acr login 登入時,CLI 會使用您在執行 az login 時建立的權杖,以順暢地向登錄驗證您的會話。 若要完成驗證流程,必須在您的環境中安裝並執行 Docker CLI 和 Docker 精靈。 az acr login 會使用 Docker 用戶端在 檔案中 docker.config 設定 Microsoft Entra 權杖。 以這種方式登入之後,系統會快取您的認證,而會話中的後續 docker 命令不需要使用者名稱或密碼。

提示

當您想要將 Docker 映射以外的成品推送或提取至登錄,例如 OCI 成品時,也使用 az acr login 來驗證個別身分識別

針對登錄存取,所使用的 az acr login 權杖有效期為 3 小時 ,因此建議您在執行命令之前 docker 一律登入登錄。 如果您的權杖到期,您可以再次使用 az acr login 命令重新驗證它。

搭配 Azure 身分識別使用 az acr login 可提供 Azure 角色型存取控制 (Azure RBAC) 。 在某些情況下,您可能想要以自己的個人身分識別登入登錄,或在 Microsoft Entra ID 中設定其他具有特定 Azure 角色和許可權 的 Azure 使用者。 針對跨服務案例,或處理您不想管理個別存取的工作組或開發工作流程的需求,您也可以使用 Azure 資源的 受控識別登入。

az acr login with --expose-token

在某些情況下,當您的 Docker 精靈未在您的環境中執行時,您必須向 進行驗證 az acr login 。 例如,您可能需要在 Azure Cloud Shell 中的腳本中執行 az acr login ,其會提供 Docker CLI,但不會執行 Docker 精靈。

在此案例中,請先使用 參數執行 az acr login--expose-token 。 此選項會公開存取權杖,而不是透過 Docker CLI 登入。

az acr login --name <acrName> --expose-token

輸出會顯示存取權杖,縮寫如下:

{
  "accessToken": "eyJhbGciOiJSUzI1NiIs[...]24V7wA",
  "loginServer": "myregistry.azurecr.io"
}

針對登錄驗證,建議您將權杖認證儲存在安全的位置,並遵循建議的做法來管理 Docker 登入 認證。 例如,將權杖值儲存在環境變數中:

TOKEN=$(az acr login --name <acrName> --expose-token --output tsv --query accessToken)

然後,執行 docker login ,以使用者名稱的形式傳遞 00000000-0000-0000-0000-000000000000 ,並使用存取權杖作為密碼:

docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN

同樣地,您可以使用 所 az acr login 傳回的權杖搭配 helm registry login 命令來向登錄進行驗證:

echo $TOKEN | helm registry login myregistry.azurecr.io \
            --username 00000000-0000-0000-0000-000000000000 \
            --password-stdin

服務主體

如果您將服務主體 指派 給登錄,您的應用程式或服務可以使用它進行無周邊驗證。 服務主體允許 Azure 角色型存取控制 (Azure RBAC) 登錄,而且您可以將多個服務主體指派給登錄。 多個服務主體可讓您為不同的應用程式定義不同的存取權。

ACR 驗證權杖會在登入 ACR 時建立,並在後續作業時重新整理。 該權杖的存留時間是 3 小時。

容器登錄的可用角色包括:

  • AcrPull :pull

  • AcrPush :提取和推送

  • 擁有者 :提取、推送和指派角色給其他使用者

如需角色的完整清單,請參閱 Azure Container Registry 角色和許可權

若要讓 CLI 腳本建立服務主體以使用 Azure Container Registry 進行驗證,以及更多指引,請參閱 使用服務主體 進行 Azure Container Registry 驗證。

管理帳戶

每個容器登錄都包含一個管理使用者帳戶,且預設為停用。 您可以在Azure 入口網站中啟用系統管理員使用者及管理其認證,或使用 Azure CLI、Azure PowerShell 或其他 Azure 工具。 系統管理員帳戶具有登錄的完整許可權。

某些案例目前需要系統管理員帳戶,才能將映射從容器登錄部署到特定 Azure 服務。 例如,當您使用 Azure 入口網站 將容器映射直接從登錄部署至 Azure 容器執行個體 Azure Web Apps for Containers 時,需要系統管理員帳戶。

重要

管理帳戶是專為讓單一使用者存取登錄而設計,主要用於測試。 不建議將管理帳戶認證與其他使用者共用。 所有使用管理帳戶進行驗證的使用者會顯示為單一使用者,此使用者具備登錄的推送和提取存取權。 變更或停用此帳戶會停用使用其認證之所有使用者的登錄存取。 針對無頭部案例的使用者和服務主體,建議使用個別身分識別。

系統管理帳戶會提供兩個密碼,這兩個密碼都可以重新產生。 系統會立即取得為系統管理員帳戶建立的新密碼。 重新產生系統管理員帳戶的密碼需要 60 秒才能複寫並可供使用。 兩個密碼可讓您在重新產生另一個密碼時,使用一個密碼來維護登錄的連線。 如果啟用系統管理員帳戶,您可以在系統提示您將基本驗證傳送至 docker login 登錄時,將使用者名稱和其中一個密碼傳遞至命令。 例如:

docker login myregistry.azurecr.io

如需管理登入認證的建議做法,請參閱 docker login 命令參考。

若要啟用現有登錄的系統管理員使用者,您可以在 Azure CLI 中使用 --admin-enabled az acr update 命令的 參數:

az acr update -n <acrName> --admin-enabled true

您可以在Azure 入口網站中啟用系統管理員使用者,方法是流覽登錄,選取 [設定 ] 下的 [存取金鑰 ],然後在 [管理員使用者 底下 啟用 ]。

Enable admin user UI in the Azure portal

下一步