有一个默认值ClusterRoleBinding
named cluster-admin
.
当我跑步时kubectl get clusterrolebindings cluster-admin -o yaml
我得到:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
creationTimestamp: 2018-06-13T12:19:26Z
labels:
kubernetes.io/bootstrapping: rbac-defaults
name: cluster-admin
resourceVersion: "98"
selfLink: /apis/rbac.authorization.k8s.io/v1/clusterrolebindings/cluster-admin
uid: 0361e9f2-6f04-11e8-b5dd-000c2904e34b
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: system:masters
In the subjects
我有的领域:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: system:masters
怎么才能看到群里的成员system:masters
?
I read here https://kubernetes.io/docs/reference/access-authn-authz/rbac/#referring-to-subjects关于组,但我不明白如何查看组内的人员,如上面的示例所示system:masters
.
我注意到当我解码时/etc/kubernetes/pki/apiserver-kubelet-client.crt
使用命令:
openssl x509 -in apiserver-kubelet-client.crt -text -noout
它包含主题system:masters
但我还是不明白这个组的用户是谁:
Issuer: CN=kubernetes
Validity
Not Before: Jul 31 19:08:36 2018 GMT
Not After : Jul 31 19:08:37 2019 GMT
Subject: O=system:masters, CN=kube-apiserver-kubelet-client
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
诚然,这里的聚会迟到了。
通读一下Kubernetes“身份验证”文档 https://kubernetes.io/docs/reference/access-authn-authz/authentication/。 Kubernetes 没有用于定义和控制用户的内置机制(与 ServiceAccounts 不同,ServiceAccounts 用于为 Pod 提供集群身份,从而为在 Pod 上运行的服务提供服务)。
这意味着 Kubernetes 没有任何内部数据库可供参考、确定和显示组成员身份。
在较小的集群中,x509 证书通常用于对用户进行身份验证。 API 服务器被配置为为此目的信任 CA,然后向用户颁发由该 CA 签名的证书。正如您所注意到的,如果主题包含“组织”字段,则会映射到 Kubernetes 组。如果您希望一名用户成为多个组的成员,则可以指定多个“O”字段。 (顺便说一句,在我看来,使用“OU”字段会更有意义,但事实并非如此)
在回答您的问题时,似乎在用户通过证书进行身份验证的集群的情况下,您唯一的途径是访问已颁发的证书,并检查主题中是否存在“O”字段。我想在更高级的情况下,Kubernetes 将与 AD 等集中式工具集成,可以在本机查询组成员身份。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)