網(wǎng)上很少有地方涉及到在角色授權(quán)時,如何對User Group授權(quán)。我們都知道在做角色綁定的時候,會有kind: User,kind: Group,但是實際上,Kubernetes并沒有提供User、Group資源創(chuàng)建接口,那這兩個怎么使用呢?下面以一個實例來說明一下
創(chuàng)新互聯(lián)專注于企業(yè)成都營銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、晉寧網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為晉寧等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
前提條件:kube-apiserver必須是運行在安全端口模式下,這里基于CA根證書簽名的雙向數(shù)字證書認(rèn)證方式。
1、先創(chuàng)建Role
role-demo.yaml 內(nèi)容如下:
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: pods-reader namespace: default rules: - apiGroups: - "" resources: - pods verbs: - get - list - watch |
2、綁定角色,將權(quán)限授予到真正角色上
編輯rolebinding-demo.yaml
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: creationTimestamp: null name: kubelet-read-pods roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: pods-reader subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: app1 |
這里將賦予組app1只能查看namespace為default的pod權(quán)限。Kind也可以為user。
3、創(chuàng)建用戶和組
現(xiàn)在就可以創(chuàng)建用戶和組,CA的方式通過openssl就可以做到
3.1創(chuàng)建用戶jbeda,并同時屬于組app1、app2
openssl genrsa -out jbeda.key 2048 openssl req -new -key jbeda.key -out jbeda.csr -subj "/CN=jbeda/O=app1/O=app2" openssl x509 -req -in jbeda.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out jbeda.crt -days 365 |
將 jbeda.key、jbeda.crt 復(fù)制到/etc/kubernetes/ssl/目錄下
l jbeda/O=app1/O=app2 這個代表創(chuàng)建了用戶jbeda,且該用戶屬于組app1、app2
l ca.crt ca.key是根證書,這個是為kube-apiserver創(chuàng)建的,所有的客戶端都是利用它簽名的。這里不重復(fù)它的創(chuàng)建過程。
3.2測試權(quán)限
? 配置使用的調(diào)用接口使用的角色
這里使用kubectl,編譯~/.kube/config
apiVersion: v1 kind: Config clusters: - cluster: server: https://10.8.8.27:6443 certificate-authority: /etc/kubernetes/ssl/ca.crt name: local users: - name: jbeda user: client-certificate : /etc/kubernetes/ssl/jbeda.crt client-key: /etc/kubernetes/ssl/jbeda.key contexts: - context: cluster: local user: jbeda name: local current-context: local |
? 查看pod
查看kubectl當(dāng)前使用的config
可以看到只能查看namespace為default下的pod信息
RBAC還可以用service account的方式認(rèn)證,網(wǎng)上有太多資料,這里不多做介紹。