日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RBAC角色访问控制

發布時間:2024/3/12 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RBAC角色访问控制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

RBAC角色訪問控制

    • user(用戶)
    • ServiceAccount(服務賬戶)
      • 創建ServiceAccount(服務賬戶)
      • 刪除ServiceAccount(服務賬戶)
    • role(角色--管理指定資源的用戶)
      • 創建role(角色)
      • 創建RoleBinding(綁定角色)
      • 刪除RoleBinding
    • ClusterRole(集群角色)
      • 創建ClusterRole(集群角色)
      • 創建clusterrolebinding(綁定集群角色)
      • 刪除clusterrolebinding
    • 查看RBAC權限常用命令
      • 測試服務賬戶權限
    • CKA考試RBAC授權題

參考: https://www.toutiao.com/i6942467217019666952/?wid=1643459986078

user(用戶)

user不能直接創建


ServiceAccount(服務賬戶)

參考: https://kubernetes.io/zh/docs/reference/access-authn-authz/authentication/#service-account-tokens

ServiceAccount用的Secret類型是kubernetes.io/service-account-token
ServiceAccount創建完成,其對應的Secret信息由kube-controller-manager更新

ServiceAccount可以簡寫為sa

|--- Role --- RoleBinding #只在指定namespace中生效 ServiceAccount ---||--- ClusterRole --- ClusterRoleBinding #不受namespace限制,在整個K8s集群中生效

創建ServiceAccount(服務賬戶)

參考: https://kubernetes.io/zh/docs/reference/access-authn-authz/rbac/#一些命令行工具

https://blog.csdn.net/wangmiaoyan/article/details/102551390

https://www.cnblogs.com/zhaobowen/p/13562487.html#一生成賬號

# 在命名空間app-team1中創建服務賬戶cicd-token kubectl create sa cicd-token -n app-team1# 查看服務賬戶是否創建 kubectl get sa cicd-token -n app-team1 # 查看服務賬戶詳情 kubectl describe sa cicd-token -n app-team1

刪除ServiceAccount(服務賬戶)

# 查看命名空間app-team1下的所有用戶 kubectl get sa -n app-team1 # 命名空間app-team1下的cicd-token用戶 kubectl delete sa cicd-token -n app-team1

role(角色–管理指定資源的用戶)

對哪個指定的資源(作用域是命名空間)執行哪些權限,不能添加拒絕權限;
創建role作用域只限于這個指定的資源對象.

例如:

  • 創建的服務賬戶只能操作指定的namespace
  • 創建的服務賬戶只能操作指定的pod
  • 創建的服務賬戶只能操作指定的deployment
  • 等等----可以精準的授權

創建role(角色)

參考: https://kubernetes.io/zh/docs/reference/access-authn-authz/rbac/#kubectl-create-role

# 創建名稱為 "pod-reader" 的 Role 對象,允許用戶對 Pods 執行 get、watch 和 list 操作 kubectl create role pod-reader --verb=get --verb=list --verb=watch --resource=pods

創建RoleBinding(綁定角色)

https://kubernetes.io/zh/docs/reference/access-authn-authz/rbac/#rolebinding-and-clusterrolebinding
將服務賬戶綁定到role(角色)(要指定命名空間),讓服務賬戶擁有role(角色)的權限。

也將服務賬戶綁定到clusterrole,(權限作用域只限于服務賬戶的命名空間),一般用來配置命名空間管理員權限;

角色綁定(Role Binding)是將角色中定義的權限賦予一個或者一組用戶。一個 RoleBinding 可以引用同一的名字空間中的任何 Role。

# 將集群角色綁定到服務賬戶 ## {binding_NAME}=用戶名-集群角色名-binding kubectl create rolebinding {binding_NAME} -- clusterrole={集群角色名} --serviceaccount={命名空間名}:{用戶名} -n {命名空間名}# 在命名空間app-team1中,將ClusterRole(集群角色)deployment-clusterrole綁定到服務賬戶cicd-token kubectl create rolebinding cicd-token-deployment-clusterrole-binding -- clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token -n app-team1

刪除RoleBinding

# 查看命名空間app-team1下有哪些rolebinding kubectl get rolebinding -n app-team1# 刪除命名空間app-team1下名為cicd-token-deployment-clusterrole-binding的rolebinding kubectl delete rolebinding cicd-token-deployment-clusterrole-binding -n app-team1

ClusterRole(集群角色)

ClusterRole的作用域是個整個集群下.

例如:

  • 創建的服務賬戶只能查看該集群的信息
  • 創建的服務賬戶可以修改該集群的信息
  • 等等----可以非常精準的授權

創建ClusterRole(集群角色)

ClusterRole 有若干用法。你可以用它來:

  • 定義對某命名空間域對象的訪問權限,并將在各個命名空間內完成授權;
  • 為命名空間作用域的對象設置訪問權限,并跨所有命名空間執行授權;
  • 為集群作用域的資源定義訪問權限。
# 創建ClusterRole(集群角色)deployment-clusterrole,權限限定為:只允許創建deployments,daemonsets,statefulsets kubectl create clusterrole deployment-clusterrole --verb=create -- resource=deployments,daemonsets,statefulsets

創建clusterrolebinding(綁定集群角色)

# 將服務賬戶綁定到集群角色 ### {clusterrolebinding_NAME}=服務賬戶名-集群角色名-binding kubectl create clusterrolebinding {binding_NAME} --clusterrole=集群角色名--serviceaccount=kube-system:用戶名# 將服務賬戶tiller綁定到集群管理員cluster-admin角色 kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller

刪除clusterrolebinding

# 查看集群中有哪些clusterrolebinding kubectl get clusterrolebinding |grep {clusterrolebinding_NAME}# 刪除指定clusterrolebinding kubectl delete clusterrolebinding {clusterrolebinding_NAME}

查看RBAC權限常用命令

參考: https://kubernetes.io/zh/docs/reference/kubectl/overview/#%E8%B5%84%E6%BA%90%E7%B1%BB%E5%9E%8B

# 查看服務賬戶 kubectl get sa 用戶名# 查看服務賬戶詳情 kubectl describe sa 用戶名# 查看集群角色 kubectl get ClusterRole 集群角色名# 查看集群角色詳情 kubectl describe ClusterRole 集群角色名# 查看role kubectl get role 角色名# 查看role詳情 kubectl describe role 角色名# 查看rolebindings kubectl get rolebinding 綁定名# 查看rolebindings詳情 kubectl describe rolebinding 綁定名# 刪除rolebindings kubectl delete rolebinding 綁定名

測試服務賬戶權限

# 測試服務賬戶權限 kubectl --as=system:serviceaccount:app-team1:cicd-token get pods -n app-team1

CKA考試RBAC授權題

# 切換到名為k8s的集群 kubectl config use-context k8s# 創建ClusterRole(集群角色)deployment-clusterrole,權限限定為:只允許創建deployments,daemonsets,statefulsets kubectl create clusterrole deployment-clusterrole --verb=create -- resource=deployments,statefulsets,daemonsets# 在命名空間app-team1中創建服務賬戶cicd-token kubectl create serviceaccount cicd-token -n app-team1# 在命名空間app-team1中,將ClusterRole(集群角色)deployment-clusterrole綁定到服務賬戶cicd-token kubectl create rolebinding cicd-token-deployment-clusterrole-binding -- clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token -n app-team1 ## 將集群角色綁定到服務賬戶 ## {binding_NAME}=用戶名-集群角色名-binding kubectl create rolebinding {binding_NAME} -- clusterrole={集群角色名} --serviceaccount={命名空間名}:{用戶名} -n {命名空間名}# 測試服務賬戶權限 kubectl --as=system:serviceaccount:app-team1:cicd-token get pods -n app-team1# 查看服務賬戶詳情 kubectl describe sa cicd-token -n app-team1 # 查看集群角色詳情 kubectl describe clusterrole deployment-clusterrole# 查看服務賬戶綁定成功,驗證rolebinding資源 kubectl describe rolebinding cicd-token-deployment-clusterrole-binding -n app-team1

總結

以上是生活随笔為你收集整理的RBAC角色访问控制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。