認證 授權與准入控制

2022-08-24 00:36:12 字數 1967 閱讀 7077

一、訪問控制概述

api server作為訪問kubernetes集群的閘道器,也是唯一入口

所有客戶端訪問集群都必須進行合法性檢驗:

1)使用者身份鑑別

2)操作許可權驗證

3)是否符合全域性約束

4)所有驗證均通過才能訪問或存入資料到etcd中

客戶端認證操作:由 api server 配置的一到多個認證外掛程式完成。收到請求後, api server 依次呼叫為其配置的認證外掛程式來認證客戶端身份,直到其中乙個外掛程式可以識別出請求者的身 份為止

授權操作由一到多個授權外掛程式進行,它負責確定那些通過認證的使用者是否有許可權 執行其發出的資源操作請求

二、使用者賬戶與使用者組

user account(使用者賬號):

1)一般是指由獨立於kubernete 之外的其他服務管理的使用者賬號(其他集群管理員,一般適用第三方外掛程式管理,kubernetes不存在此類物件)

2)user account 通常用於複雜的業務邏輯管控,它作用於系統全域性,其名稱必須全域性唯一

service account(服務賬號):

1)指由kubernetes api管理的賬戶,用於為pod之中的服務程序在訪問kubernetes api時提供身份標識(identity)

2)service account通常要繫結於特定的命名空間,他們由api server或者通過手動建立,附帶著一組儲存為secret的用於訪問api server的憑據

3)service account隸屬於命名空間,僅用於實現某些特定的操作任務

使用者組1)service account與user account都可以隸屬於乙個或多個組

2)使用者組只是使用者賬號的邏輯集合,本身沒有操作許可權。但是附加於組上的許可權可由其內部的所有使用者繼承

特殊的組

1)system:unauthenticated :未能通過任何乙個授權外掛程式檢驗的賬號,即未通過認證測試的使用者所屬的組

2)system :authenticated :認證成功後的使用者自動加入的乙個組,用於快捷引用所有正 常通過認證的使用者賬號

3)system:serviceaccounts:當前系統上的所有 service account 物件

4)system :serviceaccounts :

三、整體流程梳理

認證外掛程式負責鑑定使用者身份(認證方式:客戶端證書、承載令牌、身份驗證**或http basic認證等)

1)api server接收到訪問請求時,將呼叫認證外掛程式嘗試與以下屬性關聯

username:使用者名稱

uid:使用者id

groups:使用者所屬組

extra:鍵值對資料

2)api server 支援同時啟用多種認證機制,但至少應該分別為 service account和user account 各自啟用乙個認證外掛程式

3)同時啟用多種認證機制時,認證過程會以序列的方式進行,直到一種認證機制成功完成即結束

4)若認證失敗,則伺服器會響應 401 狀態碼,反之, 請求者就會被識別為某個具體的使用者(以其使用者名稱進行標識),並且隨後的操作都將以此用 戶身份來進行

授權外掛程式用於操作許可權許可鑑別

1)成功通過身份認證後的操作請求還需要轉交給授權外掛程式進行許可許可權檢查,以確保其擁有執行相應的操作的許可

2)主要的授權外掛程式

(1)node:基於pod資源的目標排程節點來實現的對kubelet的訪問控制

(2)abac:attrubute-based access control,基於屬性的訪問控制

(3)rbac:role-based access control,基於角色的訪問控制

(4)webhook:基於http**機制通過外部rest服務檢查確認使用者授權的訪問控制

(5)alwaysdeny:總是拒絕(用於測試)

(6)alwaysallow:總是執行(用於跳過授權驗證)

(7)補充:啟動api server時使用--authorzation-mode選項定義要啟用的授權機制,多個之間使用逗號分隔

kubectl認證 授權 准入控制

kubernetes 認證及serviceaccount 服務賬號 kubernetes中apiservice是唯一訪問的入口 認證 授權 准入控制 認證方式 token ssl kubect和node都要雙向認證 k8s1.6以上增加了rbac認證,授權檢查 kuberadm是強制使用kubera...

認證 授權和訪問控制

apache能夠確保使用者只能訪問被允許訪問的資源 本文涵蓋了保護站點資源的 標準 方法,大多數管理員將要用到這些方法。前提 本文中討論的指令應該被放進主配置檔案 通常在段中 或者針對單個目錄的配置檔案 htaccess檔案 中。如果你打算使用.htaccess檔案,則必須設定伺服器以允許在這些檔案...

漫談認證與授權

認證與授權一直以來都是很多人在討論的話題,之所以想這次談一談認證和授權,主要是因為最近看到許多文章都把認證和授權混為一談,把認證方式當作是授權方式。所以想寫篇文章談談我眼中的認證與授權 什麼是認證?認證是乙個嘗試解決我是誰的問題的過程。以乙個 http 請求為例,認證就是嘗試從請求資訊中獲取使用者資...