- まず、kubectlで現在のユーザを確認
$ kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* kubernetes-admin@kubernetes kubernetes kubernetes-admin
- kubernetesクラスタを、kubernetes-adminユーザで操作する状態になっていることがわかる
- k8sユーザのグループを確認
$ python -c 'import yaml, sys; print(yaml.load(sys.stdin)["users"][0]["user"]["client-certificate-data"])' < ~/.kube/config | base64 -d | openssl x509 -noout -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4781522983891441177 (0x425b61d1fc371619)
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=kubernetes
Validity
Not Before: Dec 23 08:10:20 2019 GMT
Not After : Dec 22 08:10:23 2020 GMT
Subject: O=system:masters, CN=kubernetes-admin
以下略
- 以下の情報がとれる
- kubernetes-admin ユーザ (証明書のcommon name(CN)フィールドで指定された文字列がユーザー名)
- system:masters グループ (証明書のorganization(O)フィールドで指定された文字列が所属グループ)
- ユーザ、グループをキーに付与Roleを逆引きすることはできなさそうなので、全Roleの付与先情報を取得してみる
$ kubectl get clusterrolebinding --all-namespaces=true -o "custom-columns=ROLE_NAME:.roleRef.name,KIND:subjects[*].kind,TARGET:subjects[*].name"
ROLE_NAME KIND TARGET
cluster-admin Group system:masters
flannel ServiceAccount flannel
以下略