最好的K8S 安全機制介紹——授權(quán)概述

授權(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)

如果文章對您有幫助,請點一下下面的 "喜歡"

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容