Azure Container Registry 角色和權限

Azure Container Registry 服務可支援一組內建 Azure 角色,對於 Azure Container Registry 提供不同程度的權限。 使用 Azure 角色型存取控制 (Azure RBAC),將特定權限指派給需要與登錄互動的使用者、服務主體或其他身分識別,例如提取或推送容器映像。 您也可以針對不同作業,使用登錄的精細權限來定義自訂角色

角色/權限 存取 Resource Manager 建立/刪除登錄 推送映像 提取映像 刪除映像資料 變更原則 簽署映像
擁有者 X X X X X X
參與者 X X X X X X
讀取者 X X
AcrPush X X
AcrPull X
AcrDelete X
AcrImageSigner X

指派角色

如需將角色指派新增至現有使用者、群組、服務主體或受控識別的高階步驟,請參閱新增角色指派的步驟。 您可以使用 Azure 入口網站、Azure CLI、Azure PowerShell 或其他 Azure 工具。

建立服務主體時,您也會設定其對於 Azure 資源的存取權和權限,例如容器登錄。 如需使用 Azure CLI 的範例指令碼,請參閱使用服務主體進行 Azure Container Registry 驗證

區分使用者和服務

套用權限時,最佳的做法是提供人員或服務完成工作的最低權限。 下列權限集合代表人員或無周邊服務可使用的一組功能。

CI/CD 解決方案

自動執行 CI/CD 解決方案的 docker build 命令時,您需要 docker push 功能。 對於這些無周邊服務案例,建議指派 AcrPush 角色。 此角色不同於更廣泛參與者角色,可防止帳戶執行其他登錄作業或存取 Azure Resource Manager。

容器主機節點

同樣地,執行容器的節點需要 AcrPull 角色,但是應該不需要讀者功能。

Visual Studio Code Docker 擴充功能

對於 Visual Studio Code Docker 擴充功能組之類的工具,需要額外的資源提供者存取權,才能列出可用的 Azure 容器登錄。 在此情況下,請對於使用者提供讀者參與者角色的存取權。 這些角色允許 docker pulldocker pushaz acr listaz acr build 和其他功能。

存取 Resource Manager

必須具備 Azure Resource Manager 存取權,才能使用 Azure CLI 來進行 Azure 入口網站和登錄管理。 例如,若要使用 az acr list 命令取得登錄的清單,您需要此權限集合。

建立和刪除登錄

建立和刪除 Azure 容器登錄的能力。

推送映像

透過 docker push 推送映像或將另一個支援的成品 (例如 Helm 圖表) 推送到登錄的能力。 需要使用授權的身分識別對於登錄進行驗證

提取映像

透過 docker pull 提取非隔離映像或從登錄提取另一個支援的成品 (例如 Helm 圖表) 的能力。 需要使用授權的身分識別對於登錄進行驗證

刪除映像資料

從登錄刪除容器映像或刪除其他支援成品的功能,例如 Helm 圖表。

變更原則

對於登錄設定原則的能力。 原則包括映像清除、啟用隔離和映像簽署。

簽署映像

簽署映像 (通常指派給自動化程序,以便使用服務主體) 的能力。 此權限通常會結合推送映像,以便將受信任的映像推送至登錄。 如需詳細資訊,請參閱Azure Container Registry 中的內容信任

自訂角色

如同其他 Azure 資源,您可以使用 Azure Container Registry 的精細權限來建立自訂角色。 然後將自訂角色指派給需要與登錄互動的使用者、服務主體或其他身分識別。

若要判斷要套用至自訂角色的權限,請參閱 Microsoft.ContainerRegistry 動作清單、檢閱內建 ACR 角色的允許動作,或執行下列命令:

az provider operation show --namespace Microsoft.ContainerRegistry

若要定義自訂角色,請參閱建立自訂角色的步驟

注意

在以 Azure Resource Manager 私人連結 設定的租用戶中,Azure Container Registry 在自訂角色中支援萬用字元動作,例如 Microsoft.ContainerRegistry/*/readMicrosoft.ContainerRegistry/registries/*/write,將存取權授與所有相符動作。 在沒有 ARM 私人連結的租用戶中,個別指定自訂角色中的所有必要登錄動作。

範例:匯入映像的自訂角色

例如,下列 JSON 會定義允許匯入映像至登錄的自訂角色最低動作。

{
   "assignableScopes": [
     "/subscriptions/<optional, but you can limit the visibility to one or more subscriptions>"
   ],
   "description": "Can import images to registry",
   "Name": "AcrImport",
   "permissions": [
     {
       "actions": [
         "Microsoft.ContainerRegistry/registries/push/write",
         "Microsoft.ContainerRegistry/registries/pull/read",
         "Microsoft.ContainerRegistry/registries/read",
         "Microsoft.ContainerRegistry/registries/importImage/action"
       ],
       "dataActions": [],
       "notActions": [],
       "notDataActions": []
     }
   ],
   "roleType": "CustomRole"
 }

若要使用 JSON 描述來建立或更新自訂角色,請使用 Azure CLIAzure Resource Manager 範本Azure PowerShell 或其他 Azure 工具。 使用與管理內建 Azure 角色的角色指派相同的方式,新增或移除自訂角色的角色指派。

下一步