k8s提供了2种方式用来权限控制,abac和rbac,abac是基于一堆属性(attribute)描述成的策略(policy)来做的限制。
比如限制某个用户只能对某个namespace下的资源操作,就可以写成类似下面的描述1
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user": "alice", "namespace": "somenamespace", "resource": "*", "apiGroup": "*"}}
可以看到其实就是user namespace resource apiGroup 等几个选项的排列组合
要启用ABAC需要修改apiserver的启动参数 加上–authorization-mode=ABAC 和 –authorization-policy-file=SOME_FILENAME,这里的SOME_FILENAME 就是个填写了类似以上json的文件,可以填多行,来做多个组合限制,点这里看一个具体的文件列子