前言
主要會針對官方文件進行翻譯, 並以原子化的概念, 即 Q&A 的方式將文件中的資訊記錄下來
# Using RBAC Authorization
Kubernetes RBAC authorization 是使用哪一個 API Group?
rbac.authorization.k8s.io
以下的 Kubernetes example code 代表什麼意思?
- Example:
kube-apiserver --authorization-mode=Example,RBAC --other-options --more-options
- Answer:
指定 authorization mode 為 RBAC
# API objects
RBAC API 宣告了四種 kubernetes 物件
- Role
- ClusterRole
- RoleBinding
- ClusterRoleBinding
# Role and ClusterRole
Kubernetes RBAC 中, permission 是否有 deny 的規則?
沒有, permission 預設都是 deny 的, 規則只有添加
Kubernetes RBAC 中, 當我建立一個 Role, 是否需要指定 namespace?
需要
Kubernetes RBAC 中, 當我建立一個 ClusterRole, 是否需要指定 namespace?
不需要, ClusterRole 可存取跨 namespace 的資源
Kubernetes RBAC 中, ClusterRole 可以將權限定義在特定的 namespace 中嗎?
可以
ClusterRoles 有幾種使用方式:
- 定義 ClusterRole 具有某些 namespaced resources 的特定權限, 並且只在特定 namespace 中有效,
- 定義 ClusterRole 具有某些 namespaced resources 的特定權限, 並且在所有 namespace 都有效,
- 定義 該 ClusterRole 具有 cluster 範圍內所有資源的特定權限
# Role example
以下的 Kubernetes example code 的意思是?
- Example
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "watch", "list"] - Answer
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-reader
rules:
# "" 表示 core API Group
- apiGroups: [""]
# 允許操作對象為 "pods"
resources: ["pods"]
# 允許操作動作
verbs: ["get", "watch", "list"]
# ClusterRole Example
Kubernetes RBAC 中, ClusterRole 也可用在 non-resource endpoints, 例如?
/healthz
以下的 Kubernetes example code 的意思是?
- Example
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: secret-reader
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "watch", "list"] - Answer
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
# 省略 "namespace", 因為 ClusterRoles
name: secret-reader
rules:
- apiGroups: [""]
# 允許存取對象為 secret, 換言之, 可存取所有 namespace 中的 secret
resources: ["secrets"]
# 允許存取動作
verbs: ["get", "watch", "list"]
# RoleBinding and ClusterRoleBinding
Kubernetes 中, RoleBinding 可 bind 哪三種 subject?
- users
- groups
- service accounts
# RoleBinding examples
以下的 Kubernetes example code 的意思是?
- Example
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods
namespace: default
subjects:
- kind: User
name: jane # "name" is case sensitive
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role #this must be Role or ClusterRole
name: pod-reader # this must match the name of the Role or ClusterRole you wish to bind to
apiGroup: rbac.authorization.k8s.io - Answer
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods
namespace: default
# subjects 表示要跟 role 連結的對象, 換言之, role 代表權限
# 而通過 role binding 連結後, subject 即對象就有了該 role 的權限
subjects:
# subjects 可以指定多個
- kind: User
# jame 是大小寫敏感的
name: jane
apiGroup: rbac.authorization.k8s.io
# "roleRef" 表示要連結的 role
roleRef:
# 可指定 Role 或 ClusterRole
kind: Role
# 也就是說, 我們已經有定義好一個 Role, name 為 pod-reader
name: pod-reader
apiGroup: rbac.authorization.k8s.io
以下的 Kubernetes example code 代表什麼意思?
- Example:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-secrets
namespace: development
subjects:
- kind: User
name: dave
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: secret-reader
apiGroup: rbac.authorization.k8s.io - Answer:
apiVersion: rbac.authorization.k8s.io/v1
# 允許 user dave 具有 read secret 的權限, 但僅限於 "development" namespace
# ClusterRole "secret-reader" 需事先定義
kind: RoleBinding
metadata:
name: read-secrets
# 在 RoleBinding 指定 namespace 限制了該權限作用的 namespace
namespace: development
subjects:
- kind: User
name: dave # name 是大小寫敏感的
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: secret-reader
apiGroup: rbac.authorization.k8s.io
# ClusterRoleBinding examples
以下的 Kubernetes example code 代表什麼意思?
- Example:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: read-secrets-global
subjects:
- kind: Group
name: manager
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: secret-reader
apiGroup: rbac.authorization.k8s.io - Answer:
apiVersion: rbac.authorization.k8s.io/v1
# 允許任何在 manager Group 中的 user, 可以 read 所有 namespace 的 secret
kind: ClusterRoleBinding
metadata:
name: read-secrets-global
subjects:
- kind: Group
name: manager # Name 大小寫敏感
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: secret-reader
apiGroup: rbac.authorization.k8s.io
Kubernetes RBAC 中, 當我建立了一個 RoleBinding 之後, 可以變更 roleRef 裡頭的設定嗎?
不行
Kubernetes RBAC 中, 當我建立了一個 RoleBinding 之後, 預設不給變更 roleRef 的 binding, 那如果真有變更的需求, 該怎麼做?
建一個新的, 砍掉舊的
# Referring To resources
以下的 Kubernetes example code 代表什麼意思?
- Example:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-and-pod-logs-reader
rules:
- apiGroups: [""]
resources: ["pods", "pods/log"]
verbs: ["get", "list"] - Answer:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-and-pod-logs-reader
rules:
- apiGroups: [""]
## 允許 read pods, 以及 pods 的 log, log 為 pods 的 subresource
## API 像這樣 GET /api/v1/namespaces/{namespace}/pods/{name}/log
resources: ["pods", "pods/log"]
verbs: ["get", "list"]
以下的 Kubernetes example code 代表什麼意思?
- Example:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: configmap-updater
rules:
- apiGroups: [""]
resources: ["configmaps"]
resourceNames: ["my-configmap"]
verbs: ["update", "get"] - Answer:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: configmap-updater
rules:
- apiGroups: [""]
# 只允許存取名為 "my-configmap" 的 "configmaps" 資源
resources: ["configmaps"]
resourceNames: ["my-configmap"]
verbs: ["update", "get"]
# Aggregated ClusterRoles
以下的 Kubernetes example code 代表什麼意思?
- Example:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: monitoring
aggregationRule:
clusterRoleSelectors:
- matchLabels:
rbac.example.com/aggregate-to-monitoring: "true"
rules: [] - Answer:
aggregated ClusterRole, 所有 label 符合 selector 的 ClusterRole 都會被附加到 aggregated ClusterRole
以下的 Kubernetes example code 代表什麼意思?
- Example:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: monitoring-endpoints
labels:
rbac.example.com/aggregate-to-monitoring: "true"
rules:
- apiGroups: [""]
resources: ["services", "endpoints", "pods"]
verbs: ["get", "list", "watch"] - Answer:
該 ClusterRole 會被附加到符合其 selector 的 aggregated ClusterRole, 如下:aggregationRule:
clusterRoleSelectors:
- matchLabels:
rbac.example.com/aggregate-to-monitoring: "true"
以下的 Kubernetes example code 代表什麼意思?
- Example:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: aggregate-cron-tabs-edit
labels:
# Add these permissions to the "admin" and "edit" default roles.
rbac.authorization.k8s.io/aggregate-to-admin: "true"
rbac.authorization.k8s.io/aggregate-to-edit: "true"
rules:
- apiGroups: ["stable.example.com"]
resources: ["crontabs"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: aggregate-cron-tabs-view
labels:
# Add these permissions to the "view" default role.
rbac.authorization.k8s.io/aggregate-to-view: "true"
rules:
- apiGroups: ["stable.example.com"]
resources: ["crontabs"]
verbs: ["get", "list", "watch"] - Answer:
只需要在預設的管理等級的 ClusterRole, 例如 admin, edit, 或 view 加上 selector, 那之後有新的 custom resource 時, 只需加上在 labels 加上 aggregated-to-對象, 這樣預設的管理等級 ClusterRole 就也擁有這個權限
# Role examples
以下的 Kubernetes example code 代表什麼意思?
- Example:
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"] - Answer:
允許 read pods 的權限
以下的 Kubernetes example code 代表什麼意思?
- Example:
rules:
- apiGroups: ["extensions", "apps"]
#
# at the HTTP level, the name of the resource for accessing Deployment
# objects is "deployments"
resources: ["deployments"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] - Answer:
允許讀/寫 Deployment 資源, 範圍為 “extension” 以及 “apps” groups
以下的 Kubernetes example code 代表什麼意思?
- Example:
rules:
- apiGroups: [""]
#
# at the HTTP level, the name of the resource for accessing Pod
# objects is "pods"
resources: ["pods"]
verbs: ["get", "list", "watch"]
- apiGroups: ["batch", "extensions"]
#
# at the HTTP level, the name of the resource for accessing Job
# objects is "jobs"
resources: ["jobs"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] - Answer:
允許 read pods, 範圍為 API group, 允許 read/write jobs, 範圍為 batch, extensions
以下的 Kubernetes example code 代表什麼意思?
- Example:
rules:
- apiGroups: [""]
resources: ["configmaps"]
resourceNames: ["my-config"]
verbs: ["get"] - Answer:
允許 read 名為 ‘my-config’ 的 ConfigMap 資源, 範圍 API group, 必須使用 RoleBinding 來限制單一 ConfigMap 單一 namespace
以下的 Kubernetes example code 代表什麼意思?
- Example:
rules:
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get", "list", "watch"] - Answer:
允許 read nodes 資源的權限, 範圍為 core group, 因為 nodes 屬於 cluster-scoped 的資源, 因此必須使用 ClusterRole 以及 ClusterRoleBinding
以下的 Kubernetes example code 代表什麼意思?
- Example:
rules:
- nonResourceURLs: ["/healthz", "/healthz/*"] # '*' in a nonResourceURL is a suffix glob match
verbs: ["get", "post"] - Answer:
允許對非資源類別的 endpoint/healthz
以及其所有子路徑發 GET 以及 POST 請求的權限, 需使用 ClusterROle 以及 ClusterRoleBinding
# Referring to subjects
以下的 Kubernetes example code 代表什麼意思?
- Example:
subjects:
- kind: User
name: "alice@example.com"
apiGroup: rbac.authorization.k8s.io - Answer:
對象為名為 “alice@example.com“ 的 user
以下的 Kubernetes example code 代表什麼意思?
- Example:
subjects:
- kind: Group
name: "frontend-admins"
apiGroup: rbac.authorization.k8s.io - Answer:
RoleBinding 的 subjects, 對象為 Group “frontend-admins” 內的所有對象
以下的 Kubernetes example code 代表什麼意思?
- Example:
subjects:
- kind: ServiceAccount
name: default
namespace: kube-system - Answer:
RoleBinding 的 subjects, 對象為 ‘kube-system’ namespace 內的 ‘default’ service account
以下的 Kubernetes example code 代表什麼意思?
- Example:
subjects:
- kind: Group
name: system:serviceaccounts:qa
apiGroup: rbac.authorization.k8s.io - Answer:
RoleBinding 的 subjects, 對象為 ‘qa’ namespace 中的所有 service accounts
以下的 Kubernetes example code 代表什麼意思?
- Example:
subjects:
- kind: Group
name: system:serviceaccounts
apiGroup: rbac.authorization.k8s.io - Answer:
RoleBinding 的 subjects, 對象為任何 namespace 中的所有 service accounts
以下的 Kubernetes example code 代表什麼意思?
- Example:
subjects:
- kind: Group
name: system:authenticated
apiGroup: rbac.authorization.k8s.io - Answer:
RoleBinding 的 subjects, 對象為所有的 authenticated user
以下的 Kubernetes example code 代表什麼意思?
- Example:
subjects:
- kind: Group
name: system:unauthenticated
apiGroup: rbac.authorization.k8s.io - Answer:
RoleBinding 的 subjects, 對象為所有的 unauthenticated user
以下的 Kubernetes example code 代表什麼意思?
- Example:
subjects:
- kind: Group
name: system:authenticated
apiGroup: rbac.authorization.k8s.io
- kind: Group
name: system:unauthenticated
apiGroup: rbac.authorization.k8s.io - Answer:
RoleBinding 的 subjects, 對象為所有 user
# Default roles and role bindings
Kubernetes RBAC 中, 修改有著 system: 前綴的 ClusterRole 以及 ClusterRoleBinding object 要特別小心, 為什麼?
可能會造成整個 cluster 功能失常
# Auto-reconciliation
Kubernetes RBAC 中, default ClusterRole 中的 rbac.authorization.kubernetes.io/autoupdate 代表的意思是?
又稱為 auto-reconciliation
預設 Kubernetes 會在每次啟動都更新 default cluster role 可能缺少的 permissions, 以及 default cluster role binding 可能缺少的 subjects, 如果設為 false, 則會停止這個動作, 可能會造成 cluster 失常
# API discovery roles
Kubernetes RBAC 中, 如果在 API server 加入 –anonymous-auth=false, 意思是?
預設的 role binding 會授權給 unauthenticated 以及 authenticated user 一些被認為可被公開存取的安全資訊, 若要完全拒絕 anonymous unauthenticated 存取, 便可設為 false
需注意, 每次 API server restart, auth-reconciliation 會覆寫設定, 因此要嘛就不要手動更改預設值, 要嘛就停用 auto-reconciliation
# User-facing roles
Kubernetes RBAC 中, 有著 system 前綴的 default role 跟沒有 system 前綴的 default role 差別在於?
前者為 cluster control plane 管理, 後者為使用者面向的 default role
# Privilege escalation prevention and bootstrapping
Kubernetes RBAC 中, 必須符合哪兩種條件, 該 user 才可以 create/update 一個 role 或 role binding object?
- 該 user 本身已經擁有
要賦予該 role 的權限
, 即如果想建立一個 role 有 ‘watch’ 的權限, 該 user 要先擁有 - 特別指定
rbac.authorization.k8s.io
的資源建立權限給該 user
以下的 Kubernetes example code 代表什麼意思?
- Example:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: role-grantor
rules:
- apiGroups: ["rbac.authorization.k8s.io"]
resources: ["rolebindings"]
verbs: ["create"]
- apiGroups: ["rbac.authorization.k8s.io"]
resources: ["clusterroles"]
verbs: ["bind"]
# omit resourceNames to allow binding any ClusterRole
resourceNames: ["admin","edit","view"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: role-grantor-binding
namespace: user-1-namespace
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: role-grantor
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: user-1 - Answer:
apiVersion: rbac.authorization.k8s.io/v1
## 定義 cluster role, 擁有此 cluster role 權限的 user 將具有 建立 role binding 以及 bind role 的權限, 但沒有建立 role 的權限
kind: ClusterRole
metadata:
name: role-grantor
rules:
## 此 apiGroup 代表賦予該 role "RBAC" 相關權限
- apiGroups: ["rbac.authorization.k8s.io"]
## 資源為 "rolebindings", 所以該 role 具有建立 role binding 的權限
resources: ["rolebindings"]
verbs: ["create"]
- apiGroups: ["rbac.authorization.k8s.io"]
## 資源為 "rolebindings", 所以該 role 具有建立 bind role 的權限
resources: ["clusterroles"]
verbs: ["bind"]
## 若不指定 resourceNames, 則該 role 可 bind 任何 clusterRole
# omit resourceNames to allow binding any ClusterRole
resourceNames: ["admin","edit","view"]
---
# 將上面定義的 role bind 到 user-1, 所以之後 user-1 就具有上述的權限
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: role-grantor-binding
namespace: user-1-namespace
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: role-grantor
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: user-1
# Command-line utilities
# kubectl create role
以下的 Kubernetes example command 代表什麼意思?
- Example:
kubectl create role pod-reader --verb=get --verb=list --verb=watch --resource=pods
- Answer:
建立一個名為 pod-reader 的 role, 該 role 允許 users 對 pod 執行 get, watch, list 動作
以下的 Kubernetes example command 代表什麼意思?
- Example:
kubectl create role pod-reader --verb=get --resource=pods --resource-name=readablepod --resource-name=anotherpod
- Answer:
建立一個名為 pod-reader 的 role, 該 role 允許 users 對 pod 執行 get 動作, 並指定了 resource name
以下的 Kubernetes example command 代表什麼意思?
- Example:
kubectl create role foo --verb=get,list,watch --resource=replicasets.apps
- Answer:
建立一個名為 foo 的 role, 該 role 允許 users 對 replicasets 執行 get, watch, list 動作, 並指定 resource 的 api groups
以下的 Kubernetes example command 代表什麼意思?
- Example:
kubectl create role foo --verb=get,list,watch --resource=pods,pods/status
- Answer:
建立一個名為 foo 的 role, 該 role 允許 users 對 pods 以及 pod 的 subsource pods/status 執行 get, watch, list 動作
以下的 Kubernetes example command 代表什麼意思?
- Example:
kubectl create role my-component-lease-holder --verb=get,list,watch,update --resource=lease --resource-name=my-component
- Answer:
建立一個名為 my-component-lease-holder 的 role, 該 role 允許 users 對名為 my-component 的 lease 資源執行 get, watch, list, update 動作
# kubectl create clusterrole
以下的 Kubernetes example command 代表什麼意思?
- Example:
kubectl create clusterrole pod-reader --verb=get,list,watch --resource=pods
- Answer:
建立一個名為 pod-reader 的 cluster role, 該 cluster role 允許 user 對 pods 資源執行 get, watch, list 動作
以下的 Kubernetes example command 代表什麼意思?
- Example:
kubectl create clusterrole pod-reader --verb=get --resource=pods --resource-name=readablepod --resource-name=anotherpod
- Answer:
建立一個名為 pod-reader 的 cluster role, 該 cluster role 允許 users 對 pods 執行 get 動作, 並指定了 resource name
以下的 Kubernetes example command 代表什麼意思?
- Example:
kubectl create clusterrole foo --verb=get,list,watch --resource=replicasets.apps
- Answer:
建立一個名為 pod-reader 的 cluster role, 該 cluster role 允許 users 對 pods 執行 get 動作, 並指定了 resource name
以下的 Kubernetes example command 代表什麼意思?
- Example:
kubectl create clusterrole foo --verb=get,list,watch --resource=pods,pods/status
- Answer:
建立一個名為 foo 的 cluster role, 該 cluster role 允許使用者對 pods, 以及 pods 的 subresource pods/status 執行 get, list, watch 動作
以下的 Kubernetes example command 代表什麼意思?
- Example:
kubectl create clusterrole "foo" --verb=get --non-resource-url=/logs/*
- Answer:
建立一個名為 foo 的 cluster role, 該 cluster role 允許使用者對非 resource 類型的 url/logs/*
執行 get 動作
以下的 Kubernetes example command 代表什麼意思?
- Example:
kubectl create clusterrole monitoring --aggregation-rule="rbac.example.com/aggregate-to-monitoring=true"
- Answer:
建立一個名為 monitoring 的 cluster role, 該 cluster role 為 aggregation-rule, 也就是說任何 labelaggregate-to-monitoring=true
的 rule 都會累加到 monitoring cluster role 上
# kubectl create rolebinding
以下的 Kubernetes example command 代表什麼意思?
- Example:
kubectl create rolebinding bob-admin-binding --clusterrole=admin --user=bob --namespace=acme
- Answer:
在 namespaceacme
中, 將 cluster roleadmin
賦予給 userbob
以下的 Kubernetes example command 代表什麼意思?
- Example:
kubectl create rolebinding myapp-view-binding --clusterrole=view --serviceaccount=acme:myapp --namespace=acme
- Answer:
在 namespaceacme
中, 將 cluster roleview
賦予給acme
namespace 中的 service accountmyapp
# kubectl create clusterrolebinding
以下的 Kubernetes example command 代表什麼意思?
- Example:
kubectl create clusterrolebinding root-cluster-admin-binding --clusterrole=cluster-admin --user=root
- Answer:
將 cluster rolecluster-admin
賦予給 userroot
以下的 Kubernetes example command 代表什麼意思?
- Example:
kubectl create clusterrolebinding kube-proxy-binding --clusterrole=system:node-proxier --user=system:kube-proxy
- Answer:
將 cluster rolesystem:node-proxier
的權限賦予給 usersystem:kube-proxy
以下的 Kubernetes example command 代表什麼意思?
- Example:
kubectl create clusterrolebinding myapp-view-binding --clusterrole=view --serviceaccount=acme:myapp
- Answer:
將 cluster roleview
的權限賦予給 namespace 為acme
的 service accountmyapp
# kubectl auth reconcile
以下的 Kubernetes example command 代表什麼意思?
- Example:
kubectl auth reconcile -f my-rbac-rules.yaml --remove-extra-subjects --remove-extra-permissions
- Answer:
使用 manifest 檔案來更新rbac.authorization.k8s.io/v1
API object
現存的 role 會被更新以包含定義的權限
–remove-extra-subjects 會將檔案內沒有定義的 subjects 都移除
–remove-extra-permissions 會將檔案內沒有定義的 permissions 都移除
Kubernetes 中, 如果沒有指定一個 application, 例如 Helm, service account, 那預設會使用哪一個 service account?
位於 kube-system
的 default
service account
以下的 Kubernetes example command 代表什麼意思?
- Example:
kubectl create clusterrolebinding add-on-cluster-admin \
--clusterrole=cluster-admin \
--serviceaccount=kube-system:default - Answer:
建立一個 clusterrolebinding, 目的在於將一個預設的 cluster role cluster-admin bind to kube-system 的 default service account, 所以 add-on 就具有需要的權限
以下的 Kubernetes example command 代表什麼意思?
- Example:
kubectl create rolebinding serviceaccounts-view \
--clusterrole=view \
--group=system:serviceaccounts:my-namespace \
--namespace=my-namespace - Answer:
建立一個 rolebinding serviceaccounts-view, 將預設的 cluster role view bind to my-namespace 中的所有 service accounts
Kubernetes RBAC 中, 由最安全到最危險的五種 RBAC 管理方式?
- 建立一個特定 application 使用的 service account, 在建立一個 role binding 與需求的 role 互相綁定
- 將需求的 role 與預設的 service account 綁定, 因為如果不指定, Application 預設會使用 default service account
- 將需求的 role 與特定 namespace 中所有 service accounts 綁定
- 將需求的 role 與所有 namespace 的 service account 綁定
- 將最高權限的 role 與所有 namespace 的 service account 綁定
留言