tech_memo / Kubernetes / RBAC


tech_memo/Kubernetes

k8sの認証方式は3段階

認証・権限の確認

  • まず、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
    以下略
  • 上記、TARGETをもとに、該当のユーザ、グループに付与されているRoleがあれば、そのRoleの詳細を取得して、どのような権限が割り振られているか確認する
    $ kubectl describe clusterrole cluster-admin
    
    Name:         cluster-admin
    Labels:       kubernetes.io/bootstrapping=rbac-defaults
    Annotations:  rbac.authorization.kubernetes.io/autoupdate: true
    PolicyRule:
      Resources  Non-Resource URLs  Resource Names  Verbs
      ---------  -----------------  --------------  -----
      *.*        []                 []              [*]
                 [*]                []              [*]
    • 上記の場合、すべてのリソースに対して、すべての操作が可能、という定義になっている

最新の20件

2023-01-26 2022-11-11 2022-03-02 2022-02-03 2021-11-18 2021-11-11 2021-10-27 2021-10-04 2021-09-30 2021-08-24 2021-04-01 2021-02-25 2020-08-13 2020-05-22 2020-04-16 2020-04-15 2020-03-23 2020-03-12 2020-02-27

今日の1件

  • tech_memo/Kubernetes/RBAC(1)

  • counter: 147
  • today: 1
  • yesterday: 0
  • online: 1