RBAC(Role-Based Access Control)是基于角色的访问控制。通过RBAC,您可以将权限与集群角色相关联,从而为不同角色成员配置不同的权限策略,降低账号安全风险。本文介绍如何为RAM用户(子账号)或RAM角色配置对应的Kubernetes集群内RBAC权限。
索引
-
配置说明
-
为RAM用户或RAM角色授予RBAC权限
-
通过RAM用户或RAM角色为其他账号授予RBAC权限
-
将RAM用户或RAM角色设置为权限管理员
-
无权限错误码说明
-
相关文档
配置说明
配置项 |
说明 |
默认权限 |
|
授权方式 |
说明 开始授权前,请先确保目标RAM用户或RAM角色在RAM管理控制台中已被授予指定集群的RAM只读权限。 |
授权模式 |
支持对多个目标RAM用户或RAM角色进行单个和批量授权。 |
说明
由于阿里云RAM的安全限制,当您通过容器服务控制台修改RAM用户或RAM角色的RAM授权时,请按照页面提示的参考策略内容和操作说明在RAM控制台为目标RAM用户或RAM角色进行手动授权。
为RAM用户或RAM角色授予RBAC权限
-
登录容器服务管理控制台,在左侧导航栏选择授权管理。
-
在授权管理页面的选择RAM用户配置向导,配置管理权限。
-
为RAM用户授权
单击RAM 用户页签,在RAM用户列表,单击目标RAM用户右侧的管理权限,进入权限管理页面。
-
为RAM角色授权
单击RAM 角色页签,输入RAM 角色名称后单击管理权限,进入权限管理页面。
说明
如果您需要使用RAM用户或RAM角色进行授权,请确保该RAM用户或RAM角色已完成集群的RAM授权(请参见自定义RAM授权策略),同时已被授予集群内RBAC管理员权限或cluster-admin角色。
-
-
单击添加权限,为目标RAM用户或RAM角色添加集群和命名空间级别的权限配置,并选择相应的预置角色,然后单击提交授权。
说明
-
ACK预置角色包括管理员、运维人员、开发人员和受限用户4种标准的访问权限,可满足大部分用户在容器服务控制台上的使用需求。如果您想自由定义集群的访问权限,可选择ACK内置的自定义角色,使用自定义权限功能。
-
在一个目标集群或命名空间中为RAM用户或RAM角色的授权时,支持配置一个预置角色,多个自定义角色。
-
如果您希望在所有集群维度为RAM用户或RAM角色进行一键授权,使得后续新创建的集群也会为被授权的RAM用户或RAM角色自动绑定已经授权的预置角色,您可以选择集群为所有集群。
展开查看预置角色权限说明
预置角色
集群内RBAC权限
管理员
对所有命名空间下所有资源的读写权限。
运维人员
对所有命名空间下控制台可见Kubernetes资源的读写权限,对集群节点、存储卷、命名空间、配额的只读权限。
开发人员
对所有命名空间或所选命名空间下控制台可见Kubernetes资源的读写权限。
受限用户
对所有命名空间或所选命名空间下控制台可见Kubernetes资源的只读权限。
自定义
权限由您所选择的ClusterRole决定,请在确定所选ClusterRole对各类资源的操作权限后再进行授权,以免RAM用户或RAM角色获得不符合预期的权限。您可以参考下文,展开查看如何查看自定义权限。
重要
RAM用户或RAM角色被授予cluster-admin权限后,在该集群内可视为与阿里云账号有相同权限的超级账号,拥有操作集群内所有资源的任意权限。请谨慎授予。
展开查看如何查看自定义权限
登录集群节点,执行以下命令,查看自定义权限的详情。
kubectl get clusterrole
预期输出:
NAME AGE admin 13d alibaba-log-controller 13d alicloud-disk-controller-runner 13d cluster-admin 13d cs:admin 13d edit 13d flannel 13d kube-state-metrics 22h node-exporter 22h prometheus-k8s 22h prometheus-operator 22h system:aggregate-to-admin 13d .... system:volume-scheduler 13d view 13d
以超级管理员cluster-admin为例,执行以下命令,查看其权限详情。
重要
RAM用户或RAM角色被授予cluster-admin权限后,在该集群内可视为与阿里云账号有相同权限的超级账号,拥有操作集群内所有资源的任意权限。请谨慎授予。
kubectl get clusterrole cluster-admin -o yaml
预期输出:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: annotations: rbac.authorization.kubernetes.io/autoupdate: "true" creationTimestamp: 2022-12-30T08:31:15Z labels: kubernetes.io/bootstrapping: rbac-defaults name: cluster-admin resourceVersion: "57" selfLink: /apis/rbac.authorization.k8s.io/v1/clusterroles/cluster-admin uid: 2f29f9c5-cdf9-11e8-84bf-00163e0b2f97 rules: - apiGroups: - '*' resources: - '*' verbs: - '*' - nonResourceURLs: - '*' verbs: - '*'
-
-
提交授权后,根据页面提示进行操作。
-
如果出现授权成功的提示,表示该RAM用户或RAM角色已被授予RAM权限,RBAC授权成功,操作结束。
-
如果出现报错,表示该RAM用户或RAM角色未被授予RAM权限。请按照页面提示,通过RAM控制台对RAM用户或RAM角色授予指定集群的只读权限。
-
在提交授权页面,单击去授权,然后单击确认授权快速完成授权,待授权完成后,关闭该页面。
-
在提交授权页面,重新单击提交授权,将弹出授权成功的提示。
-
配置完成后,您可以使用目标RAM用户或RAM角色登录容器服务控制台,并进行相关操作。
-
通过RAM用户或RAM角色为其他账号授予RBAC权限
默认情况下,RAM用户或RAM角色不具备对其他RAM用户或RAM角色进行RBAC授权的能力。如果您需要通过某个RAM用户或RAM角色为其他账号进行RBAC授权,您需要使用阿里云账号或具备所有集群RBAC管理员角色的RAM用户为该RAM用户或RAM角色授予所需的RAM权限和RBAC权限。
RAM权限
您需要给该RAM用户或RAM角色授予相应的RAM权限策略,策略包括以下内容:
-
查看其他RAM账号。
-
授予RAM权限策略。
-
查看集群信息。
-
查看RBAC权限配置。
-
RBAC授权能力。
登录RAM管理控制台,参考以下代码示例,为该RAM用户或RAM角色授予所需的RAM权限。更多信息请参见自定义RAM授权策略。
说明
请将xxxxxx
替换为需要绑定的RAM策略的名称。替换为 *,表示RAM用户或RAM角色拥有所有RAM策略的授权绑定能力。
{
"Statement": [{
"Action": [
"ram:Get*",
"ram:List*",
"cs:Get*",
"cs:Describe*",
"cs:List*",
"cs:GrantPermission"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ram:AttachPolicyToUser",
"ram:AttachPolicy"
],
"Effect": "Allow",
"Resource": [
"acs:ram:*:*:policy/xxxxxx",
"acs:*:*:*:user/*"
]
}
],
"Version": "1"
}
授权完成后,该RAM用户或RAM角色可以在指定策略范围内对其他RAM用户或RAM角色进行RAM授权。
RBAC权限
授予所需的RAM权限后,您还需要为该RAM用户或RAM角色在目标集群或命名空间上授予预置角色管理员或者自定义权限策略中的cluster-admin角色。具体操作,请参见为RAM用户或RAM角色授予RBAC权限。
将RAM用户或RAM角色设置为权限管理员
如果您不方便使用阿里云账号为RAM用户或RAM角色进行RBAC授权,您可以将某个RAM用户或RAM角色设置为权限管理员,后续使用该RAM用户或RAM角色进行授权操作。
-
登录RAM管理控制台,定位目标RAM用户或RAM角色。
-
RAM用户
选择身份管理 > 用户,在用户列表的操作列,单击添加权限。
-
RAM角色
选择身份管理 > 角色,在角色列表的操作列,单击添加权限。
-
-
在添加权限面板,选择授权范围,然后选择权限为系统策略,根据名称搜索或在列表中找到并单击AliyunRAMReadOnlyAccess和AliyunCSFullAccess系统策略,将该策略移动到右侧的已选择区域,然后单击确定。权限成功添加后,单击完成。
-
使用阿里云账号登录容器服务管理控制台,为该RAM用户或RAM角色在所有集群维度授予预置角色管理员。
具体操作,请参见为RAM用户或RAM角色授予RBAC权限。
完成上述步骤后,该RAM用户或RAM角色成为一个权限管理员,拥有给其他RAM用户或RAM角色进行RAM授权和RBAC授权的能力。
无权限错误码说明
当您通过控制台或OpenAPI所做的部分操作缺少所需的RBAC权限时,控制台或OpenAPI将返回相应的无权限错误码。各个错误码对应操作所需的集群RBAC权限说明如下表所示。
错误码或错误信息 |
所需的集群RBAC权限 |
ForbiddenCheckControlPlaneLog |
管理员或运维人员权限。 |
ForbiddenHelmUsage |
管理员权限。 |
ForbiddenRotateCert |
管理员权限。 |
ForbiddenAttachInstance |
管理员或运维人员权限。 |
ForbiddenUpdateKMSState |
管理员或运维人员权限。 |
Forbidden get trigger |
管理员、运维人员或开发人员权限。 |
ForbiddenQueryClusterNamespace |
管理员、运维人员、开发人员或受限用户权限。 |
相关文档
-
自定义RAM授权策略
-
容器服务默认角色
-
授权最佳实践
-
授权管理FAQ
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/167934.html