Kubernetes RBAC Overview:賦予安全與彈性的管理

閱讀時間約 5 分鐘


raw-image

👨‍💻簡介

在當今的雲計算時代,容器化和微服務架構成為了重要趨勢。Kubernetes,作為領先的容器編排平台,提供了強大的功能來管理和部署應用程式。然而,隨著應用程式和用戶的增加,有效管理誰可以對 Kubernetes 集群執行何種操作變得至關重要。這裡,RBAC (Role-Based Access Control) 機制起到了關鍵作用。

🔰基礎介紹

什麼是 RBAC: RBAC 可以根據角色對用戶進行細粒度的權限管理。它基於三個主要概念:角色(Role)、角色綁定(RoleBinding)和主體(Subjects)。

角色 (Role) 和 ClusterRole

  • 角色 (Role):定義了一組權限,這些權限表示對特定 Kubernetes 資源的操作,如建立、讀取、更新和刪除。
  • ClusterRole:與 Role 類似,但它適用於整個集群範圍,而不是單個命名空間。ClusterRole 可以用來賦予對集群級資源的訪問權限,或者跨所有命名空間的特定資源。

角色綁定 (RoleBinding) 和 ClusterRoleBinding

  • 角色綁定 (RoleBinding):將角色的權限賦予給特定的主體。
  • ClusterRoleBinding:類似於 RoleBinding,但它將 ClusterRole 的權限賦予給整個集群的主體,而不是特定命名空間的主體。

主體 (Subjects)

可以是用戶、群組或服務帳號。

為什麼要在 Kubernetes 中使用 RBAC?

在 Kubernetes 中,RBAC 使得管理大型、多用戶的集群變得更為安全和方便。它確保了只有合適的用戶和服務能夠訪問關鍵的 Kubernetes 資源,從而降低了安全風險。

如何使用 RBAC

要開始使用 RBAC,首先要在 Kubernetes 集群中建立角色。例如,你可能有一個角色,只允許對 Pod 資源進行讀取操作。

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: read-pods
namespace: default
subjects:
- kind: User
name: alan
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io

在這個例子中,用戶 alan 獲得了在默認命名空間中讀取 Pod 的權限。

同樣,ClusterRole 和 ClusterRoleBinding 也可以被定義以授予對集群範圍資源的訪問權限。以下是 ClusterRole 的一個範例,它允許對集群中所有命名空間的服務進行監視:

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
# "name" is the name of the ClusterRole
name: service-watcher
rules:
- apiGroups: [""]
resources: ["services"]
verbs: ["get", "list", "watch"]

詳解 Resources 和 Verbs

在 Kubernetes 的 RBAC 中,resources 和 verbs 是設定角色權限時的關鍵要素。

Resources

指的是在 Kubernetes 中可以操作的各種資源類型,如 pods, services, deployments 等。每種資源都有特定的屬性和相關操作。

Verbs

定義了對這些資源可以執行的操作。常見的 verbs 包括:

  • get:獲取單個資源的詳細訊息。
  • list:列出所有資源或某個集合的資源。
  • create:建立新的資源。
  • update:更新現有資源。
  • patch:更新部分資源。
  • watch:監聽資源的變化。
  • delete:刪除資源。
  • deletecollection:刪除資源集合。

理解這些 resources 和 verbs 對於建立符合特定需求的角色至關重要。例如,如果想建立一個只能查看 Pod 訊息但不能修改的角色,將需要選擇相應的 resources 和 verbs 組合。

最佳實踐

  • 最小權限原則: 僅賦予必要的最小權限,避免過度授權。
  • 定期審核: 定期檢查和審核角色和角色綁定,確保它們符合當前的安全政策。
  • 命名空間層級的管理: 利用命名空間對權限進行隔離和細分,確保不同團隊或應用之間的權限界限清晰。
  • 集群範圍的權限控制: 使用 ClusterRole 和 ClusterRoleBinding 來管理跨命名空間或集群級資源的訪問。

📚Reference

17會員
83內容數
golang
留言0
查看全部
發表第一個留言支持創作者!
Alan的開發者天地 的其他內容
👨‍💻簡介 terraform在每次執行terraform plan或terraform apply時,是如何知道應該要管理哪些資源? 其實就是透過在每次執行terraform時,將建立或要變更的資源都記錄在terraform.state這份狀態檔,預設檔案使用JSON格式。
📔心得 最近,我在探索 Ansible 自動化工具的過程中,決定運用它來建立 ELK Stack,這是我之前使用 Docker 建立的經驗的延伸。在這個過程中,我想分享一下我的學習心得。
在 Kubernetes 裡,Secret 就像是一個保險箱,可以放你任何不想公開的東西。比如說密碼、API 金鑰、憑證等,這樣的資料可能會被放在 Pod 裡,但你可以用 Secret 來避免直接在應用程式的程式碼中暴露這些機密資料。
👨‍💻簡介 今天早上在下kubectl get pods時,突然跳出了以下錯誤 Unable to connect to the server: x509: certificate has expired or is not yet valid
👨‍💻簡介 因在wsl環境下使用websocket通訊協議,並在windows使用postman發生連線被拒 嘗試了localhost與127.0.0.1都無效,爬文後找到了一些解決辦法,這邊簡單紀錄一下
👨‍💻簡介 從來沒想過部署可以如此的方便快速,第一次接觸到Zeabur的時候覺得他跟一般的雲端服務商差不多,架設網站用個vm之類的,但仔細去摸索後才發現他是個想讓開發人員專注在寫扣這件事上,不需去管任何infra相關事項的一個服務,像是架設wordpress需要sql,就簡單的點兩下即可完
👨‍💻簡介 terraform在每次執行terraform plan或terraform apply時,是如何知道應該要管理哪些資源? 其實就是透過在每次執行terraform時,將建立或要變更的資源都記錄在terraform.state這份狀態檔,預設檔案使用JSON格式。
📔心得 最近,我在探索 Ansible 自動化工具的過程中,決定運用它來建立 ELK Stack,這是我之前使用 Docker 建立的經驗的延伸。在這個過程中,我想分享一下我的學習心得。
在 Kubernetes 裡,Secret 就像是一個保險箱,可以放你任何不想公開的東西。比如說密碼、API 金鑰、憑證等,這樣的資料可能會被放在 Pod 裡,但你可以用 Secret 來避免直接在應用程式的程式碼中暴露這些機密資料。
👨‍💻簡介 今天早上在下kubectl get pods時,突然跳出了以下錯誤 Unable to connect to the server: x509: certificate has expired or is not yet valid
👨‍💻簡介 因在wsl環境下使用websocket通訊協議,並在windows使用postman發生連線被拒 嘗試了localhost與127.0.0.1都無效,爬文後找到了一些解決辦法,這邊簡單紀錄一下
👨‍💻簡介 從來沒想過部署可以如此的方便快速,第一次接觸到Zeabur的時候覺得他跟一般的雲端服務商差不多,架設網站用個vm之類的,但仔細去摸索後才發現他是個想讓開發人員專注在寫扣這件事上,不需去管任何infra相關事項的一個服務,像是架設wordpress需要sql,就簡單的點兩下即可完
你可能也想看
Google News 追蹤
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
Thumbnail
本文針對Kubernetes內最基本的資源(cpu, ram, disk)的計算單位與一些實務操作,分享給自已與大家做參考。
Thumbnail
Kubernetes 是目前最流行的容器編排平台,提供了一個環境來保證容器化應用的高可用性和伸縮性。這篇文章將展示如何將你的 Gin 應用部署到 Kubernetes上。
Thumbnail
在雲端建立AKS後,運行後有許多Container會被外部服務呼叫使用。但我們知道當我們佈署到AKS,如果要被外面服務呼叫,就要在YAML將Type設定成Loadbalance,一旦這樣設定,就會變成每個Container就會多出一個對外的IP,Container變多了,對外IP就會擴增很快,也不好
Thumbnail
宣告式管理是一種管理方法,其中您描述系統或資源的期望狀態,而不必關心實際如何達到該狀態。kubectl apply 命令在 Kubernetes 中實現了這種宣告式管理方式,以下是執行指令時的運作流程...
Thumbnail
Kubernetes 是一個開源的容器管理平台,它可以幫助您自動化容器應用程式的部署、擴展和管理。在 Kubernetes 中,有兩種主要的管理方式:命令式和宣告式。
Thumbnail
Kubernetes是什麼? 1. Kubernetes是Google嚴格保密十幾年的秘密武器——Borg的一個開放原始碼版本。 2. Kubernetes是一個開放的開發平台。 3. Kubernetes是一個完備的分散式系統支撐平台。
Autoscaling 的目的是當有大量請求時,系統可以自動的增加運算資源,處理當下的大量請求;也可以根據當下資源使用率低時,自動降低運算資源,達到省錢的目的。
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
Thumbnail
本文針對Kubernetes內最基本的資源(cpu, ram, disk)的計算單位與一些實務操作,分享給自已與大家做參考。
Thumbnail
Kubernetes 是目前最流行的容器編排平台,提供了一個環境來保證容器化應用的高可用性和伸縮性。這篇文章將展示如何將你的 Gin 應用部署到 Kubernetes上。
Thumbnail
在雲端建立AKS後,運行後有許多Container會被外部服務呼叫使用。但我們知道當我們佈署到AKS,如果要被外面服務呼叫,就要在YAML將Type設定成Loadbalance,一旦這樣設定,就會變成每個Container就會多出一個對外的IP,Container變多了,對外IP就會擴增很快,也不好
Thumbnail
宣告式管理是一種管理方法,其中您描述系統或資源的期望狀態,而不必關心實際如何達到該狀態。kubectl apply 命令在 Kubernetes 中實現了這種宣告式管理方式,以下是執行指令時的運作流程...
Thumbnail
Kubernetes 是一個開源的容器管理平台,它可以幫助您自動化容器應用程式的部署、擴展和管理。在 Kubernetes 中,有兩種主要的管理方式:命令式和宣告式。
Thumbnail
Kubernetes是什麼? 1. Kubernetes是Google嚴格保密十幾年的秘密武器——Borg的一個開放原始碼版本。 2. Kubernetes是一個開放的開發平台。 3. Kubernetes是一個完備的分散式系統支撐平台。
Autoscaling 的目的是當有大量請求時,系統可以自動的增加運算資源,處理當下的大量請求;也可以根據當下資源使用率低時,自動降低運算資源,達到省錢的目的。