十二 K8S细粒度权限控制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十二 K8S细粒度权限控制相关的知识,希望对你有一定的参考价值。
参考技术A 一个K8S集群并不只有管理员在使用,如果是一个开发或者一个测试,就不能有太高的权限,预防出错。 此时就要通过K8S一个机制RBAC对权限经行细粒度划分,例如张三,可设置只能在namespaceA进行操作,不能在其他命名空间操作。
官网: https://kubernetes.io/zh/docs/reference/access-authn-authz/rbac/
ClusterRole:可以配置一些权限,允许对整个集群做你想做的
ClusterRoleBinding:可以把ClusterRole配置的权限,授权给指定的“人”,让他可以对整个集群做他想做的
Role:只能允许对该Namespace做你想做的
RoleBinding:只能让指定的“人”对该Namespace做他想做的
Role和ClusterRole
RoleBinding和ClusterRoleBinding
Role示例:允许读取在API 组下的 “Pods”:
允许读/写在 “extensions” 和 “apps” API 组中的 Deployment(在 HTTP 层面,对应 URL 中资源部分为 “deployments”):
允许读取核心 API 组中的 “pods” 和读/写 “batch” 或 “extensions” API 组中的 “jobs”:
对于名称为 alice@example.com 的用户:
对于名称为 frontend-admins 的用户组:
RoleBinding示例:对于名称为 alice@example.com 的用户:
对于任何名称空间中的 “qa” 组中所有的服务账户:
对于所有已经过认证的用户:
对于所有用户:
默认 ClusterRole和默认 ClusterRoleBinding 一些默认的 ClusterRole 不是以前缀 system: 开头的。这些是面向用户的角色。 它们包括超级用户(Super-User)角色(cluster-admin)、 使用 ClusterRoleBinding 在集群范围内完成授权的角色(cluster-status)、 以及使用 RoleBinding 在特定名字空间中授予的角色(admin、edit、view)。 面向用户的 ClusterRole 使用 ClusterRole 聚合以允许管理员在 这些 ClusterRole 上添加用于定制资源的规则。如果想要添加规则到 admin、edit 或者 view, 可以创建带有以下一个或多个标签的 ClusterRole:
假设有2个ClusterRole,ClusterRoleA和ClusterRoleB,ClusterRoleA设置了rule并打上了标签,ClusterRoleB就可以引用A的标签,ClusterRoleB就会自动补上ClusterRoleA的rule.
示例:
验证:创建sa,并查看sa创建的secret,获得token
创建一个名称叫test-aggregation的clusterrolebinding,把clusterrole:test-aggregation授权给SA:default命名空间下 的test-aggregation
登录测试,发现并没有权限,只能登录
创建b-ClusterRole,使其聚合a-ClusterRole
再次验证,发现可以查看命名空间和svc等监控
问题:
1.创建一个名为deployment-clusterrole的clusterrole
a)该clusterrole只允许创建Deployment、Daemonset、Statefulset的create操作
2.在名字为app-team1的namespace下创建一个名为cicd-token的serviceAccount,并且将上一步创建clusterrole的权限绑定到该serviceAccount
实操:
创建namespace和serviceAccount
创建名为deployment-clusterrole的clusterrole
绑定权限并查看
编辑一份deployment模板
验证:通过sa创建的secret的token登录dashboard,选择右上+,选择app-team1参试创建yaml,发下最终有权限创建。
通过token登录dashboard
最后查看deployment,已创建
企业中的权限划分:
2.根据需求先创建2个用户dotbalo,dukuan(sa,通过Sa创建的secret的token管理节点)
3.根据需求总共有4中权限分别是只读命名空间,删除日志,执行pod命名,查看日志,然后创建4种权限的ClusterRole
4.绑定全局命名空间查看权限(clusterrolebinding)
5.绑定用户dotbalo两个命名空间default、kube-system的查看pod日志的权限(rolebinding)
6.绑定用户dukuan在deefault中执行pod命令权限和删除Pod权限
1.Kubernetes多集群图形化管理工具Ratel介绍&使用
2.图形化管理Kubernetes多租户权限
以上是关于十二 K8S细粒度权限控制的主要内容,如果未能解决你的问题,请参考以下文章
(转)通过SpringMVC+Annotation实现方法按钮级别的细粒度权限控制