授權(quán)
K8S 的授權(quán)模式
ABAC 授權(quán)——基于屬性的訪問控制(ABAC)定義了一種訪問控制范式,通過將屬性組合在一起的策略將訪問權(quán)限授予用戶。策略可以使用任何類型的屬性(用戶屬性、資源屬性、對象、環(huán)境屬性等)。有關(guān)使用ABAC模式的更多信息,請參見ABAC模式。
-
RBAC 授權(quán)——基于角色的訪問控制(RBAC)是一種基于企業(yè)中單個用戶的角色來調(diào)節(jié)對計算機或網(wǎng)絡(luò)資源的訪問的方法。在此上下文中,訪問是單個用戶執(zhí)行特定任務(wù)的能力,例如查看、創(chuàng)建或修改文件。要了解關(guān)于使用RBAC模式的更多信息,請參見RBAC模
- 當指定RBAC(基于角色的訪問控制)時,使用RBAC.authority .k8s.io API組驅(qū)動授權(quán)決策,允許管理員通過Kubernetes API動態(tài)配置權(quán)限策略。
NODE 授權(quán)——一個特殊用途的授權(quán)器,根據(jù)調(diào)度到kubelet所在節(jié)點的pod向kubelet授予權(quán)限。有關(guān)使用節(jié)點授權(quán)模式的更多信息,請參見節(jié)點授權(quán)。
WEBHOOK 授權(quán)——WebHook是當某個事件發(fā)生時觸發(fā)一個HTTP POST的回調(diào);實現(xiàn)webhook的web應(yīng)用程序?qū)⑾騏RL發(fā)送一條消息。有關(guān)使用Webhook模式的更多信息,請參見Webhook模式。
允許所有訪問
拒絕所有訪問
授權(quán)模式的設(shè)置方法
在啟動API SERVER時添加如下參數(shù)之一
--authorization-mode=ABAC
--authorization-mode=RBAC
--authorization-mode=Webhook
--authorization-mode=Node
--authorization-mode=AlwaysDeny
--authorization-mode=AlwaysAllow
Kubernetes只對以下API請求屬性進行審查
user — 身份驗證期間提供的用戶字符串。
group — 已驗證用戶所屬的組名稱列表。
extra — 由身份驗證層提供的任意字符串鍵到字符串值的映射。
API — 指示請求是否為API資源。
request path — 到其他非資源端點(如/api或/healthz)的路徑。
API request verb(動詞)—API verb(動詞) , get、list、create、update、patch、watch、proxy、redirect、delete和deletecollection用于資源請求。要確定資源API端點的請求謂詞,請參見 Determine the request verb.。
HTTP請求動詞—HTTP動詞get、post、put和delete用于非資源請求。
resource—正在訪問的資源的ID或名稱(僅用于資源請求)——對于使用get、update、patch和delete謂詞的資源請求,您必須提供資源名稱。
子資源——正在訪問的子資源(僅用于資源請求)。
Namespace——正在訪問的對象的名稱空間(僅用于名稱空間大小的資源請求)。
API group——正在訪問的API組(僅用于資源請求)??兆址付ê诵腁PI組
補充一下關(guān)于K8S api的一些知識, K8S api 遵守openapi規(guī)范. 在K8S的API 設(shè)計中,最重要的幾個概念就是 api version, api group, resource type , meta, 以及 spec
apiVersion—您使用Kubernetes API的哪個版本來創(chuàng)建這個對象
kind—創(chuàng)建什么樣的對象
meta——幫助惟一標識對象的數(shù)據(jù),包括名稱字符串、UID和可選名稱空間
舉個例子解釋下
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2 這里 app 就是API GROUP, v1 就是 api version
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2 # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
所有的K8S API 組及說明都在 api reference 里能夠查到
下一篇
最好的K8S 安全機制介紹 3 ——RBAC授權(quán)
如果文章對您有幫助,請點一下下面的 "喜歡"