最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Kubernetes訪問控制之鑒權(quán)方法詳解

 更新時間:2023年09月12日 11:40:00   作者:宏勢  
這篇文章主要為大家介紹了Kubernetes訪問控制之鑒權(quán)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

RBAC鑒權(quán)

鑒權(quán)是確定請求方有哪些資源的權(quán)限,API Server目前支持RBAC鑒權(quán)、Node鑒權(quán)、ABAC鑒權(quán) 和 Webhook模式

基于角色(Role)的訪問控制(RBAC)是一種基于組織中用戶的角色來調(diào)節(jié)控制對計算機(jī)或網(wǎng)絡(luò)資源的訪問的方法。

要啟用 RBAC,在啟動 API 服務(wù)器時將 --authorization-mode 參數(shù)設(shè)置為一個逗號分隔的列表并確保其中包含 RBAC

API對象

RBAC API 聲明了四種 Kubernetes 對象:Role、ClusterRole、RoleBindingClusterRoleBinding

Role 或 ClusterRole 中包含一組代表相關(guān)權(quán)限的規(guī)則。 這些權(quán)限是純粹累加的(不存在拒絕某操作的規(guī)則)

Role 定義命名空間內(nèi)權(quán)限,ClusterRole是定義跨命名空間的權(quán)限

Role定義例子如下:

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: default      ##如果kind是ClusterRole,無須指定,代表集群級別
  name: pod-reader
rules:
- apiGroups: [""]             #"" indicates the core API group 具體參考kubectl api-resources
  resources: ["pods"]         # 資源names, 子資源例子:["pods/log"]
  verbs: ["get", "watch", "list"]  #允許動作

如果是Role,代表能訪問default空間下的所有Pod,如果是ClusterRolo代表能訪問所有空間下的Pod

-指定固定某個資源名稱

rules:
- apiGroups: [""]
  # 在 HTTP 層面,用來訪問 ConfigMap 資源的名稱為 "configmaps"
  resources: ["configmaps"]
  resourceNames: ["my-configmap"]
  verbs: ["update", "get"]

-指定非資源端點

rules:
- nonResourceURLs: ["/healthz", "/healthz/*"] # nonResourceURL 中的 '*' 是一個全局通配符
  verbs: ["get", "post"]

RoleBinding 將Role定義的權(quán)限授予用戶/用戶組/服務(wù)賬號 (統(tǒng)稱主體subject)

ClusterRoleBinding 只能將ClusterRole定義的權(quán)限授予用戶/用戶組/服務(wù)賬號(統(tǒng)稱主體subject)
將pod-reader角色授予普通用戶myuser

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: read-pods
  namespace: default
subjects:
- kind: User       #支持User,Group,ServiceAccount 三種類型
  name: myuser
  apiGroup: rbac.authorization.k8s.io
roleRef:
   kind: Role
   name: pod-reader
   apiGroup: rbac.authorization.k8s.io

 一個 RoleBinding 也可以引用某 ClusterRole 并將該 ClusterRole 綁定到 RoleBinding 所在的名字空間

聚合的ClusterRole

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: monitoring
aggregationRule:
  clusterRoleSelectors:
  - matchLabels:
      rbac.example.com/aggregate-to-monitoring: "true"
rules: [] # 控制面自動填充這里的規(guī)則
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: monitoring-endpoints
  labels:
    rbac.example.com/aggregate-to-monitoring: "true"
# 當(dāng)你創(chuàng)建 "monitoring-endpoints" ClusterRole 時,
# 下面的規(guī)則會被添加到 "monitoring" ClusterRole 中
rules:
- apiGroups: [""]
  resources: ["services", "endpointslices", "pods"]
  verbs: ["get", "list", "watch"]

相關(guān)核心內(nèi)置對象

所有system:前綴都是系統(tǒng)自帶命名規(guī)則

1.主體Subject

名稱類型說明
defaultServiceAccount每個命名空間自帶
system:anonymousUser匿名用戶
system:serviceaccountsGroup任務(wù)名字空間的服務(wù)賬號都屬于這個組
system:serviceaccounts:空間名字Group該名字空間下的服務(wù)賬號都屬于這個組
system:authenticatedGroup所有通過身份認(rèn)證的用戶都屬于這個組
system:unauthenticatedGroup所有未通過身份認(rèn)證的用戶都屬于這個組
system:mastersGroup超級管理員cluster-admin所屬的組

system:serviceaccount: (單數(shù))是用于服務(wù)賬戶用戶名的前綴;
system:serviceaccounts: (復(fù)數(shù))是用于服務(wù)賬戶組名的前綴。

2.默認(rèn)ClusterRole/ClusterRoleBinding

  • 默認(rèn) ClusterRole 和 ClusterRoleBinding 都有kubernetes.io/bootstrapping=rbac-defaults 標(biāo)簽
  • 自動協(xié)商:在每次啟動時,API 服務(wù)器都會更新默認(rèn) ClusterRole 以添加缺失的各種權(quán)限, 并更新默認(rèn)的 ClusterRoleBinding 以增加缺失的各類主體。
  • 禁止可設(shè)置注解rbac.authorization.kubernetes.io/autoupdate=false
默認(rèn)ClusterRole對應(yīng)默認(rèn)ClusterRoleBinding說明
cluster-admincluster-admin, 綁定system:master組超級管理員角色
admin大多數(shù)對象進(jìn)行讀/寫操作包括角色和角色綁定
edit大多數(shù)對象進(jìn)行讀/寫操作角色
view只有訪問權(quán)限角色
system:discoverysystem:discovery,綁定組 system:authenticated允許以只讀方式訪問 API 發(fā)現(xiàn)端點

如果要禁用匿名的未經(jīng)過身份驗證的用戶訪問,請在 API 服務(wù)器配置中中添加 --anonymous-auth=false 的配置選項

  • 創(chuàng)建一個dev空間的管理員dev-admin
kubectl create rolebinding dev-admin --clusterrole=cluster-admin --user=dev-admin -n dev

Node鑒權(quán)

節(jié)點鑒權(quán)是一種特殊用途的鑒權(quán)模式,專門對 kubelet 發(fā)出的 API 請求進(jìn)行授權(quán),通過--authorization-mode=Node 啟動API服務(wù)器開啟

為了獲得節(jié)點鑒權(quán)器的授權(quán),kubelet 必須使用一個憑證以表示它在 system:nodes 組中,用戶名為 system:node:<nodeName>

ABAC鑒權(quán)

基于屬性的訪問控制(Attribute-based access control - ABAC)定義了訪問控制范例, 其中通過使用將屬性組合在一起的策略來向用戶授予訪問權(quán)限

  • 指定策略文件 --authorization-policy-file=SOME_FILENAME

文件內(nèi)容格式JSON lines,例如:

  • Alice 可以對所有資源做任何事情
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user": "alice", "namespace": "*", "resource": "*", "apiGroup": "*"}}
  • kubelet 可以讀取任何 pod
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user": "kubelet", "namespace": "*", "resource": "pods", "readonly": true}}

一般都是使用RBAC + Node鑒權(quán)

以上就是Kubernetes訪問控制之鑒權(quán)的詳細(xì)內(nèi)容,更多關(guān)于Kubernetes訪問控制鑒權(quán)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

冕宁县| 濉溪县| 洞口县| 台北县| 巢湖市| 白玉县| 广丰县| 张掖市| 卓尼县| 大化| 石城县| 岗巴县| 和硕县| 乌苏市| 灵寿县| 盐源县| 虞城县| 高淳县| 罗江县| 永春县| 镇赉县| 丁青县| 潜山县| 乡宁县| 平和县| 郴州市| 昭觉县| 丁青县| 商城县| 靖江市| 衡阳市| 翁源县| 石渠县| 池州市| 农安县| 邹平县| 明溪县| 同江市| 青阳县| 大姚县| 博白县|