Kubernetes RBAC授權(quán)

RBAC(Role-Based Access Control蹋肮,基于角色的訪問控制)在Kubernetes v1.5引入,在v1.6版本時升級為Beta版本疾棵,并成為kubeadm安裝方式下的默認選項蕊苗,組建其重要程度栗精。相對于其他的訪問控制方式,RBAC具有如下優(yōu)勢彪蓬。

  • 對集群中的資源和非資源權(quán)限均有完整的覆蓋寸莫。
  • 整個RBAC完全由幾個API對象完成,同其他API對象一樣档冬,可以用kubectl或API進行操作膘茎。
  • 可以在運行時進行調(diào)整,無須重新啟動API Server酷誓。

要使用RBAC授權(quán)模式披坏,則需要在API Server的啟動參數(shù)中加上--authorization-mode=RBAC

下面對RBAC的原理和用法進行說明盐数。

1. RBAC的API資源對象說明

RBAC引入了4個新的頂級資源對象:Role棒拂、ClusterRoleRoleBinding娘扩、ClusterRoleBinding着茸。同其他API資源對象一樣壮锻,用戶可以使用kubectl或者API調(diào)用方式操作這些資源對象琐旁。

角色(Role)
一個角色就是一組權(quán)限的集合,這里的權(quán)限都是許可形式猜绣,不存在拒絕的規(guī)則灰殴。在一個命名空間中,可以用Role來定義一個角色掰邢,如果是集群級別牺陶,就需要使用ClusterRole了。
Role只能對命名空間內(nèi)的資源進行授權(quán)辣之,下面例子中定義的角色具備讀取Pod的權(quán)限:

kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  namespace: default
  name: pod-reader
rules:
  - apiGroups: [""] # ""空字符串掰伸,表示核心API群
    resources: ["pods"]
    verbs: ["get", "watch", "list"]

rules中的參數(shù)說明:

  • apiGroups: 支持的API組列表,例如“apiVersion: batch/v1”怀估、“apiVersion: extensions:v1beta1”狮鸭、“apiVersion: apps/v1beta1”等。
  • resources:支持的資源對象列表多搀,例如pods歧蕉、deployments、jobs等康铭。
  • verbs:對資源對象的操作方法列表惯退,例如get、watch从藤、list催跪、delete锁蠕、replace、patch等叠荠。

集群角色
集群角色處理具有和角色一致的命名空間內(nèi)資源的管理能力匿沛,因其集群級別的范圍,還可以用于以下特殊元素的授權(quán)榛鼎。

  • 集群范圍的資源逃呼,例如Node(節(jié)點)。
  • 非資源類型的路徑者娱,例如“/healthz”抡笼。
  • 包含全部命名空間的資源,例如pods(用于kubectl get pods --all-namespaces這樣的操作授權(quán))黄鳍。
    下面的ClusterRole可以讓用戶有權(quán)訪問任意一個或所有命名空間的secrets(視其綁定方式而定):
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  # ClusterRole不受限于命名空間推姻,所以省略了namespace name的定義
  name: secret-reader
rules:
  - apiGroups: [""] # ""空字符串,表示核心API群
    resources: ["secrets"]
    verbs: ["get", "watch", "list"]

角色綁定(RoleBinding)和集群角色綁定(ClusterRoleBinding)
RoleBinding或ClusterRoleBinding用來把一個角色綁定到一個目標上框沟,綁定的目標可以是User(用戶)藏古、Group(組)或者Service Account。
使用RoleBinding為某個命名空間授權(quán)忍燥,使用ClusterRoleBinding為集群范圍內(nèi)授權(quán)拧晕。
RoleBinding可以引用Role進行授權(quán)。下面例子中的RoleBinding將在default命名空間中把pod-reader角色授予用戶jane梅垄,這一操作讓jane可以讀取default命名空間中的Pod:

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  namespace: default
  name: read-pods
subjects:
- kind: User
  name: jane
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

RoleBinding也可以引用ClusterRole厂捞,對屬于同一個命名空間內(nèi)ClusterRole定義的資源主體進行授權(quán)。一種常見的做法是集群管理員為集群范圍預(yù)先定義好一組角色(ClusterRole)队丝,然后在多個命名空間中重復(fù)使用這些ClusterRole靡馁。

例如下面的例子,雖然secret-reader是一個集群角色机久,但是因為使用了RoleBinding臭墨,所以dave只能讀取development命名空間中的secret:

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  namespace: development
  name: read-secret
subjects:
- kind: User
  name: dave
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: secret-reader
  apiGroup: rbac.authorization.k8s.io

集群角色綁定中的角色只能是集群角色,用于進行集群級別或者對所有命名空間都生效的授權(quán)膘盖。下面的例子允許manager組的用戶讀取任意namespace中的secret:

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  namespace: development
  name: read-secrets-global
subjects:
- kind: Group
  name: manager
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: secret-reader
  apiGroup: rbac.authorization.k8s.io
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胧弛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子衔憨,更是在濱河造成了極大的恐慌叶圃,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件践图,死亡現(xiàn)場離奇詭異掺冠,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門德崭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來斥黑,“玉大人,你說我怎么就攤上這事眉厨⌒颗” “怎么了?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵憾股,是天一觀的道長鹿蜀。 經(jīng)常有香客問我,道長服球,這世上最難降的妖魔是什么茴恰? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮斩熊,結(jié)果婚禮上往枣,老公的妹妹穿的比我還像新娘。我一直安慰自己粉渠,他們只是感情好分冈,可當我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著霸株,像睡著了一般雕沉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上淳衙,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天蘑秽,我揣著相機與錄音饺著,去河邊找鬼箫攀。 笑死,一個胖子當著我的面吹牛幼衰,可吹牛的內(nèi)容都是我干的靴跛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼渡嚣,長吁一口氣:“原來是場噩夢啊……” “哼梢睛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起识椰,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤绝葡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后腹鹉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體藏畅,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年功咒,在試婚紗的時候發(fā)現(xiàn)自己被綠了愉阎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绞蹦。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖榜旦,靈堂內(nèi)的尸體忽然破棺而出幽七,到底是詐尸還是另有隱情,我是刑警寧澤溅呢,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布澡屡,位于F島的核電站,受9級特大地震影響咐旧,放射性物質(zhì)發(fā)生泄漏挪蹭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一休偶、第九天 我趴在偏房一處隱蔽的房頂上張望梁厉。 院中可真熱鬧,春花似錦踏兜、人聲如沸词顾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肉盹。三九已至,卻和暖如春疹尾,著一層夾襖步出監(jiān)牢的瞬間上忍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工纳本, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留窍蓝,地道東北人。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓繁成,卻偏偏與公主長得像吓笙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子巾腕,可洞房花燭夜當晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內(nèi)容