Azure 基于角色的访问控制 (Azure RBAC) 是在 Azure 资源管理器基础上构建的授权系统,针对 Azure 资源提供精细的访问权限管理。
本文概述了可用于访问 Azure Kubernetes 舰队管理器(Kubernetes 舰队)资源的各种内置 Azure RBAC 角色。
此角色授予对 Azure 资源管理器 (ARM) 舰队资源和子资源的访问权限,对于有无中心群集的 Kubernetes 舰队资源均适用。
角色名称 | 说明 | 使用情况 |
---|---|---|
Azure Kubernetes 舰队管理器参与者 | 此角色授予对 Azure Kubernetes 舰队管理器提供的 Azure 资源(包括舰队、舰队成员、舰队更新策略、舰队更新运行等)的读写访问权限。 | 可以使用此角色授予仅适用于 Kubernetes 舰队资源和子资源的参与者权限。 例如,可以将此角色提供给负责定义和维护舰队资源的 Azure 管理员。 |
这些角色授予对舰队中心 Kubernetes 对象的访问权限,因此仅适用于具有中心群集的 Kubernetes 舰队资源。
可以在舰队中心群集范围内分配数据平面角色,也可以通过将 /namespace/<namespace>
追加到角色分配范围来在单个 Kubernetes 命名空间范围内分配这些角色。
角色名称 | 说明 | 使用情况 |
---|---|---|
Azure Kubernetes 舰队管理器 RBAC 读者 | 授予对舰队托管的中心群集中命名空间内大多数 Kubernetes 资源的只读访问权限。 不允许查看角色或角色绑定。 此角色不允许查看机密,因为通过读取机密内容可以访问命名空间中的 ServiceAccount 凭据,这样就会允许以命名空间中任何 ServiceAccount 的身份进行 API 访问(一种特权提升形式)。 在群集范围内应用此角色将提供对所有命名空间的访问权限。 |
可以使用此角色授予读取命名空间或群集范围内所选非敏感 Kubernetes 对象的功能。 例如,可以授予此角色,以进行评审。 |
Azure Kubernetes 舰队管理器 RBAC 编写者 | 授予对舰队托管的中心群集中命名空间内大多数 Kubernetes 资源的读写访问权限。 此角色不允许查看或修改角色或角色绑定。 但是,此角色允许以命名空间中任何 ServiceAccount 的身份访问机密,因此可用于获取命名空间中任何 ServiceAccount 的 API 访问级别。 在群集范围内应用此角色将提供对所有命名空间的访问权限。 |
可以使用此角色授予写入命名空间或群集范围内所选 Kubernetes 对象的功能。 例如,供负责给定命名空间中对象的项目团队使用。 |
Azure Kubernetes 舰队管理器 RBAC 管理员 | 授予对舰队托管的中心群集中命名空间内 Kubernetes 资源的读写访问权限。 提供对命名空间中大多数对象的写入权限,但 ResourceQuota 对象和命名空间对象本身除外。 在群集范围内应用此角色将提供对所有命名空间的访问权限。 |
可以使用此角色授予管理命名空间或群集范围内所选 Kubernetes 对象(包括角色和角色绑定)的功能。 例如,供负责给定命名空间中对象的项目团队使用。 |
Azure Kubernetes 舰队管理器 RBAC 群集管理员 | 授予对舰队托管的中心群集中所有 Kubernetes 资源的读/写访问权限。 | 可以使用此角色授予对命名空间或群集范围内所有 Kubernetes 对象(包括 CRD)的访问权限。 |
可以使用 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"