Azure 角色型存取控制 (Azure RBAC) 是建置在 Azure Resource Manager 上的授權系統,提供 Azure 資源的精細存取管理。
本文提供各種內建 Azure RBAC 角色的概觀,您可以使用這些角色,存取 Azure Kubernetes 機群管理員 (Kubernetes 機群) 資源。
控制平面
此角色會授與 Azure Resource Manager (ARM) 機群資源和子資源的存取權,而且適用於具有和沒有中樞叢集的 Kubernetes 機群資源。
| 角色名稱 | 描述 | 使用量 |
|---|---|---|
| Azure Kubernetes 機群管理員參與者 | 此角色會授與 AAzure Kubernetes 機群管理員所提供的 Azure 資源的讀取和寫入存取權,包括機群、機群成員、機群更新策略、機群更新執行等等。 | 您可以使用此角色,授與僅套用至 Kubernetes 機群資源和子資源的參與者權限。 例如,此角色可以提供給負責定義和維護機群資源的 Azure 管理員。 |
| Azure Kubernetes Fleet Manager Hub 叢集使用者角色 | 此角色會授與機群管理員中樞叢集與 Kubernetes 設定檔的唯讀存取權,以連線至機群受控中樞叢集。 | 您可以檢視 Fleet Manager 資源並下載中樞叢集的 kubeconfig,以檢查組態和工作負載,而無需進行任何變更。 |
資料平面
這些角色會授與機群中樞 Kubernetes 物件的存取權,因此僅適用於具有中樞叢集的 Kubernetes 機群資源。
您可以將 /namespace/<namespace> 附加至角色指派範圍,以在機群中樞叢集範圍或在個別 Kubernetes 命名空間範圍指派資料平面角色。
| 角色名稱 | 描述 | 使用量 |
|---|---|---|
| Azure Kubernetes 機群管理員 RBAC 讀取者 | 授與機群受控中樞叢集中命名空間內大部分 Kubernetes 資源的唯讀存取權。 其不允許檢視角色或角色繫結。 此角色不允許檢視秘密,因為讀取祕密的內容可存取命名空間中的 ServiceAccount 認證,這會允許 API 以命名空間中任何 ServiceAccount 身分來進行存取 (權限提升的形式)。 在叢集範圍套用此角色會授與所有命名空間的存取權。 |
您可以使用此角色,授與可在命名空間或叢集範圍讀取所選非敏感 Kubernetes 物件的權限。 例如,您可以基於檢閱目的授與此角色。 |
| Azure Kubernetes 機群管理員 RBAC 編寫器 | 授與機群受控中樞叢集中命名空間內大部分 Kubernetes 資源的讀取和寫入存取權。 不允許檢視或修改角色或角色繫結。 不過,此角色允許以命名空間中的任何 ServiceAccount 身分存取秘密,因此可用來取得命名空間中任何 ServiceAccount 的 API 存取層級。 在叢集範圍套用此角色會授與所有命名空間的存取權。 |
您可以使用此角色,授與可在命名空間或叢集範圍寫入所選 Kubernetes 物件的權限。 例如,供負責給定命名空間中物件的專案小組使用。 |
| Azure Kubernetes 機群管理員 RBAC 管理員 | 授與機群受控中樞叢集中命名空間內 Kubernetes 資源的讀取和寫入存取權。 提供命名空間內大部分物件的寫入權限,但 ResourceQuota 物件和命名空間物件本身除外。 在叢集範圍套用此角色會授與所有命名空間的存取權。 |
您可以使用此角色,授與可在命名空間或叢集範圍管理所選 Kubernetes 物件 (包括角色和角色繫結) 的權限。 例如,供負責給定命名空間中物件的專案小組使用。 |
| Azure Kubernetes 機群管理員 RBAC Cluster 管理員 | 授與機群受控中樞叢集中所有 Kubernetes 資源的讀取/寫入權限。 | 您可以使用此角色,授與可在命名空間或叢集範圍存取所有物件 (包括 CRD) 的權限。 |
| 成員叢集的 Azure Kubernetes 機群管理員 RBAC 讀者 | 對成員叢集上命名空間中大部分物件的唯讀存取權。 無法檢視角色或角色繫結。 無法檢視密碼 (防止透過 ServiceAccount 認證提升權限)。 | 您可以使用此角色,授與可在機群成員上的命名空間範圍讀取所選非敏感性 Kubernetes 物件的權限。 |
| 成員叢集的 Azure Kubernetes 機群管理員 RBAC 寫入者 | 對命名空間中大部分 Kubernetes 資源的讀取和寫入權限。 無法檢視或修改角色或角色繫結。 可以讀取祕密 (因此可以認定為命名空間中的任何 ServiceAccount)。 | 您可以使用此角色,授與可在機群成員上的命名空間寫入所選 Kubernetes 物件的權限。 例如,供負責給定命名空間中物件的專案小組使用。 |
| 成員叢集的 Azure Kubernetes 機群管理員 RBAC 管理員 | 在成員叢集的命名空間中,擁有對 Kubernetes 資源的讀取和寫入權限。 | 您可以使用此角色,授與可在機群成員上的命名空間範圍管理所選 Kubernetes 物件 (包括角色和角色繫結) 的權限。 例如,供負責給定命名空間中物件的專案小組使用。 |
| 成員叢集的 Azure Kubernetes 機群管理員 RBAC 叢集管理員 | 對叢集中成員叢集上所有 Kubernetes 資源的完整讀取/寫入存取權。 | 您可以使用此角色來授與成員叢集上所有資源的完整存取權。 例如,需要存取成員叢集上多個命名空間的平台管理員。 |
範例角色指派
您可以使用 Azure CLI 授與 Azure RBAC 角色。 例如,若要在 Kubernetes 機群中樞叢集範圍建立角色指派:
IDENTITY=$(az ad signed-in-user show --output tsv --query id)
FLEET_ID=$(az fleet show --resource-group $GROUP --name $FLEET --output tsv --query id)
az role assignment create --role 'Azure Kubernetes Fleet Manager RBAC Reader' --assignee "$IDENTITY" --scope "$FLEET_ID"
您也可以將角色指派的範圍限制為個別 Kubernetes 命名空間。 例如,若要為 Kubernetes 機群中樞的預設 Kubernetes 命名空間建立角色指派:
IDENTITY=$(az ad signed-in-user show --output tsv --query id)
FLEET_ID=$(az fleet show --resource-group $GROUP --name $FLEET --output tsv --query id)
az role assignment create --role 'Azure Kubernetes Fleet Manager RBAC Reader' --assignee "$IDENTITY" --scope "$FLEET_ID/namespaces/default"