乐趣区

关于java:k8s-kubernetesadmin用户权限解析

k8s kubernetes-admin 用户权限解析

本篇次要介绍一下 在 k8s 中 默认的 ~/.kube/config 中 admin 管理员权限得解析 , 看看为什么 kubernetes-admin 用户领有所有权限

1.k8s 默认 kubernetes-admin 管理员用户

集群装置实现后 会有默认的配置文件在 原始目录在 /etc/kubernetes/ 上面 个别会 copy 到 ~/.kube/config 上面 关上就能够看到外面有个 user:kubernetes-admin

上面来看看它的权限是有哪些

2. 查问 clusterrolebindings

咱们晓得 k8s 中用户分为 2 种 一种是 Normal Users 一种是Service Account , k8s 不治理 Users , 只有证书通过即可拜访集群, 下面的 kubernetes-admin 就是属于 Users 一种 , 然而用户能够操作的权限是在 关联 rolebinding / clusterrolebinding , 所以 kubernetes-admin 必定也有绑定的角色, 上面来看看

kubectl get clusterrolebindings -A 

能够看到 cluster-admin 很像给 admin 的绑定权限

具体查看 clusterrolebindings cluster-admin

[root@master1 .kube]# kubectl get clusterrolebindings cluster-admin -A -o yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  annotations:
    rbac.authorization.kubernetes.io/autoupdate: "true"
  creationTimestamp: "2023-03-13T08:02:38Z"
  labels:
    kubernetes.io/bootstrapping: rbac-defaults
  name: cluster-admin
  resourceVersion: "148"
  uid: 1e950454-3849-4306-84a8-5e4a6ee59cbf
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin 
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: system:masters

再看看 ClusterRole

kubectl get clusterrole cluster-admin -A -o yaml

至此能够明确 在 Group 用户组 system:masters 上面的都有这个集群管理员权限

3. 疑难 kubernetes-admin 和 system:masters 组 怎么关联的

从下面能够晓得 用户组 system:masters 上面的都有这个集群管理员权限 cluster-admin , 也能够 猜测到 kubernetes-admin 应该在这个组上面 , 然而哪里能够证实这个呢?

其实 组和用户的关系是在 证书里

X509 客户端证书的一部分 Subject 中 O(organization)的值代表用户组,CN (common name)代表用户名, k8s 能够据此认为 user 在哪个组中。

config 中 client-certificate-data 是 kubernetes-admin 的证书

把证书 base64 解密后 写入到 admin-temp-ca.crt 文件

cat <<EOF | base64 -d > admin-temp-ca.crt
> LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURJVENDQWdtZ0F3SUJBZ0lJWG5nNHhHT3FzSzR3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TXpBek1UTXdPREF5TWpOYUZ3MHlOREF6TVRJd09EQXlNalZhTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXhHVVRUR2JCa0V4dkk5SnEKQUY5MlFrVnlIdHJXODdWeGc3cit4WlNnczJjblk0T3JlS1VNdU5SS01HbWlNcnU0cDduSGk1Z1prM1ZUOG4vMApSeW5QdHV3QUJ5dldBcnBJR2VIdk9ONWpVMTYvZ0o4NTNIcFVqa2dZMENkenc0R2JKY25jd3pKZjJFQ2wvelAxCml3VU5hcjNGM3F6bFhwMlNwOXhTQlgycGVkSmFuVzhVU2M4TGlWdmVTTE1mZCsrSDRmdVdIZzUyVXFRSitaL0wKbktaNnNJblhYdUhZY3ZYTTNkMnN5aFppUTBlUk4zWDl5U1JwSmE2ZHB1VThMRGgzYjJnOHBiUWFRZlpjQWFSVgo0V0haWlc5V1F4VkxBZXRZVlpQVloySzJHb3hrS1JRQzkrZGtCVEFIdmlCalJrQ3pGMjlQS3RFY2ZNNXIzMEFZCkxaaHhMd0lEQVFBQm8xWXdWREFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RBWURWUjBUQVFIL0JBSXdBREFmQmdOVkhTTUVHREFXZ0JTVUNUaWFxbm9RdFMySGdXUnFqaEZIaUhITQpWekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBS2Q3S2lBSlRweWkvZjhSUTdpWnIxSlZFRFFZTG85NE5jdWMxCjVBRWZud3dtWW1ZaS9wb1BVR1Q0aWZpSGpmOFVHK3hTaDdhUUxjT0RaL1JQUFlTU3lPc2xVTXhDTlVYVUJUUWgKaFJhYUl2OTBCZmRBeS9lUEtrYnlDQTNYN0lQQzBEU2M3SjMzTVB2b3Z1MEM5NWtzUVZhajAvbm1zVGpDbzlidApZWk5iaFRIUDVoL3ljeG5TbEdIVnNZeW5EZ3F1M3BZbk9vSHBLZ1diNEw1NlhtVVNMUzQraFdVZno4ZmdtL2tDCmY0UHVyZnVjSEdKS1lPd04rOWZxOFhXQW5ZZ3NLdDdrbG5GNThoelhpcU55THd3L2pVeEFKRFN0bDdyeGVpU2QKTU9ZTW5LSG14TDlmbGZsU0hNSGVLOUR1Q2dCbHVUaEpQenpBcVZhYmVGTlhSTlB1U2c9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
> EOF
# 查问证书的内容
openssl x509  -in admin-temp-ca.crt -noout -text

至此就把 组和 用户关联起来了, 也就了解了 kubernetes-admin 管理员的整个权限流程

4. 扩大思考

通过下面能够了解了 只有在 system:masters 组上面的用户 都具备管理员权限, 那么是不是咱们本人也能够去创立一个用户而后 用 k8s 根证书 下发一个 Subject: O=system:masters,CN=johnny-admin 的证书 ?

总结

本篇次要介绍了 kubernetes-admin 管理员的权限流程 以及如何和 system:masters 组进行匹配的

欢送大家拜访 集体博客 Johnny 小屋
欢送关注集体公众号

退出移动版