九 Istio:istio安全之授權

目錄

  • 一.模塊概覽
  • 二.系統環境
  • 三.istio授權
    • 3.1 istio授權
    • 3.2 來源
    • 3.3 操作
    • 3.4 條件
  • 四.實戰:授權(訪問控制)
    • 4.1 訪問控制
    • 4.2 清理
一.模塊概覽在Kubernetes集群中,可以對用戶進行RBAC授權role,rolebinding,clusterrole , clusterrolebinding;對于istio來說,可以對資源定義AuthorizationPolicy授權策略,執行拒絕、允許或審計動作 。
在 Istio 中,有多個組件參與提供安全功能:
  • 用于管理鑰匙和證書的證書頒發機構(CA) 。
  • Sidecar 和周邊代理:實現客戶端和服務器之間的安全通信,它們作為政策執行點(Policy Enforcement Point,簡稱PEP)工作
  • Envoy 代理擴展:管理遙測和審計
  • 配置 API 服務器:分發認證、授權策略和安全命名信息
istio授權是在認證通過之后進行的,關于istio認證 , 可以查看博客《Istio(八):istio安全之認證,啟用mTLS》https://www.cnblogs.com/renshengdezheli/p/16840382.html
使用istio授權的前提是已經安裝好了istio,關于istio的安裝部署,請查看博客《Istio(二):在Kubernetes(k8s)集群上安裝部署istio1.14》https://www.cnblogs.com/renshengdezheli/p/16836404.html
二.系統環境服務器版本docker軟件版本Kubernetes(k8s)集群版本Istio軟件版本CPU架構CentOS Linux release 7.4.1708 (Core)Docker version 20.10.12v1.21.9Istio1.14x86_64Kubernetes集群架構:k8scloude1作為master節點 , k8scloude2,k8scloude3作為worker節點
服務器操作系統版本CPU架構進程功能描述k8scloude1/192.168.110.130CentOS Linux release 7.4.1708 (Core)x86_64docker , kube-apiserver,etcd , kube-scheduler,kube-controller-manager,kubelet , kube-proxy , coredns,calicok8s master節點k8scloude2/192.168.110.129CentOS Linux release 7.4.1708 (Core)x86_64docker , kubelet,kube-proxy,calicok8s worker節點k8scloude3/192.168.110.128CentOS Linux release 7.4.1708 (Core)x86_64docker , kubelet,kube-proxy,calicok8s worker節點三.istio授權3.1 istio授權授權是對訪問控制問題中訪問控制部分的響應 。某個(經過認證的)主體是否被允許操作某個對象?用戶 A 能否向服務 B 的路徑 /hello 發送一個 GET 請求?
請注意,盡管主體可以被認證 , 但它可能不被允許執行某個動作 。你的公司 ID 卡可能是有效的、真實的 , 但我不能用它來進入另一家公司的辦公室 。如果我們繼續之前的海關官員的比喻,我們可以說授權類似于你護照上的簽證章 。
這就引出了下一個問題 —— 有認證而無授權(反之亦然)對我們沒有什么好處 。對于適當的訪問控制,我們需要兩者 。讓我給你舉個例子:如果我們只認證主體而不授權他們,他們就可以做任何他們想做的事 , 對任何對象執行任何操作 。相反,如果我們授權了一個請求,但我們沒有認證它,我們就可以假裝成其他人,再次對任何對象執行任何操作 。
Istio 允許我們使用 AuthorizationPolicy 資源在網格、命名空間和工作負載層面定義訪問控制 。AuthorizationPolicy 支持 DENY、ALLOW、AUDIT 和 CUSTOM 操作 。
每個 Envoy 代理實例都運行一個授權引擎 , 在運行時對請求進行授權 。當請求到達代理時,引擎會根據授權策略評估請求的上下文,并返回 ALLOW 或 DENY 。AUDIT 動作決定是否記錄符合規則的請求 。注意,AUDIT 策略并不影響請求被允許或拒絕 。
沒有必要明確地啟用授權功能 。為了執行訪問控制 , 我們可以創建一個授權策略來應用于我們的工作負載 。
AuthorizationPolicy 資源是我們可以利用 PeerAuthentication 策略和 RequestAuthentication 策略中的主體的地方 。
在定義 AuthorizationPolicy 的時候,我們需要考慮三個部分 。
  1. 選擇要應用該策略的工作負載
  2. 要采取的行動(拒絕、允許或審計)
  3. 采取該行動的規則
讓我們看看下面這個例子如何與 AuthorizationPolicy 資源中的字段相對應 。
【九 Istio:istio安全之授權】 apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata:name: customers-denynamespace: default spec:selector:matchLabels:app: customersversion: v2action: DENYrules:- from:- source:notNamespaces: ["default"]使用 selectormatchLabels,我們可以選擇策略所適用的工作負載 。在我們的案例中,我們選擇的是所有設置了 app: customers

推薦閱讀