1、kubectl auth简介
kubectl auth
可以检查授权。
kubectl auth can-i
检查操作是否被允许。VERB是Kubernetes API的一个逻辑动词,如"get"、"list"、"watch"、"delete"等。TYPE是Kubernetes资源。快捷方式和分组将被解决。NONRESOURCEURL是一个以"/"开头的部分URL。NAME是特定Kubernetes资源的名称。
kubectl auth reconcile
协调RBAC角色、角色绑定、集群角色和集群角色绑定对象的规则。
如果需要,将创建缺失的对象,并为名称空间对象创建包含名称空间的名称空间。
现有的角色将被更新以包括输入对象中的权限,如果指定了-remove-extra-permissions,则删除额外的权限。
现有的绑定将更新为在输入对象中包含主题,如果指定了-remove-extra-subjects,则删除额外的主题更适合于“应用”RBAC资源,以便完成具有语义意识的规则和主题合并。
2、kubectl auth语法
kubectl auth can-i VERB [TYPE | TYPE/NAME | NONRESOURCEURL]
kubectl auth reconcile -f FILENAME
3、kubectl auth命令
1)检查我是否可以在任何命名空间中创建pod
kubectl auth can-i create pods --all-namespaces
2)检查是否可以在当前名称空间中列出部署
kubectl auth can-i list deployments.apps
3)检查是否可以在当前名称空间中执行所有操作('*'表示所有)
kubectl auth can-i '*' '*'
4)检查看看我是否可以在命名空间"cjavapy"中获得名为"spider"的作业
kubectl auth can-i list jobs.batch/cjavapy -n spider
5)查看我能不能读取pod日志
kubectl auth can-i get pods --subresource=log
6)检查我是否可以访问URL /logs/
kubectl auth can-i get /logs/
7)列出命名空间"cjavapy"中所有允许的操作
kubectl auth can-i --list --namespace=cjavapy
8)协调文件中的RBAC资源
kubectl auth reconcile -f my-rbac-rules.yaml
4、选项说明
1)kubectl auth can-i选项
名称 | 简称 | 默认 | 用法 |
all-namespaces | A | false | 如果为true, 在所有名称空间中检查指定的操作。 |
list | false | 如果为true, 则打印所有允许的操作。 | |
no-headers | false | 如果为true, 则打印允许的无标头操作. | |
quiet | q | false | 如果为true, 则抑制输出并只返回退出代码。 |
subresource | SubResource, 如pod/log或deployment/scale |
2)kubectl auth reconcile选项
名称 | 简称 | 默认 | 用法 |
allow-missing-template-keys | true | 如果为true, 当模板中缺少字段或映射键时, 忽略模板中的任何错误。 只适用于golang和jsonpath输出格式。 | |
dry-run | none | 必须为“none”、“server”或“client”。 如果客户端策略, 则只打印将要发送的对象, 而不发送它。如果是服务器策略, 则提交服务器端请求而不持久化资源。 | |
filename | f | [] | 标识要协调的资源的文件的文件名、目录或URL。 |
kustomize | k | 处理定制化目录。 此标志不能与-f或-R一起使用。 | |
output | o | l输出格式, 以下之一: json|yaml|name| go-template|go-template-file|template| templatefile|jsonpath|jsonpath-as-json| jsonpath-file. | |
recursive | R | false | 递归处理-f, --filename 中使用的目录。 当想要管理组织在同一目录中的相关清单时使用。 |
remove-extra-permissions | false | 如果为true, 则删除添加到角色中的额外权限 | |
remove-extra-subjects | false | 如果为true, 则删除添加到角色绑定的额外subjects | |
show-managed-fields | false | 如果为true, 则在以JSON或YAML格式打印对象时 保留managedFields。 | |
template | 当-o=go-template, -o=go-template-file时 要使用的模板文件的模板字符串或路径。 模板格式为 golang templates [ http://golang.org/pkg/text/template/#pkg-overview ]. |