操作場景
若需要對集群中的資源進行權限控制,(例如A用戶只能對某個命名空間下的應用有讀寫權限,B用戶只能對集群下的資源有讀權限等),請參照本章節操作。
操作步驟
步驟 1 若需要對集群進行權限控制,請在創建集群時的“認證方式”參數后勾選“認證能力增強”,選擇“認證代理”。單擊“CA根證書”后的“上傳文件”,上傳符合規范且合法的證書。
步驟 2 通過kubectl創建角色。
下面的例子展示了如何創建一個角色,并允許該角色讀取default空間下的所有Pod。參數詳細解釋請參見。
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "watch", "list"]
步驟 3 通過kubectl創建角色綁定。
下面的例子給出RoleBindings賦予default命名空間下的pod-reader的角色給用戶jane。該策略允許用戶jane可以讀取default命名空間下的所有pods。參數詳細解釋請參見。
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: read-pods
namespace: default
subjects:
- kind: User
name: jane #的用戶名
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: pod-reader #創建的角色名
apiGroup: rbac.authorization.k8s.io
步驟 4 創建角色并與用戶綁定成功后,請在接口請求的headers中攜帶用戶信息以及集群創建時上傳的證書訪問kubernetes接口。例如調取查詢pod的接口時,執行命令如下:
curl -k -H "X-Remote-User: jane" --cacert /root/tls-ca.crt --key /root/tls.key --cert /root/tls.crt //192.168.23.5:5443/api/v1/namespaces/default/pods
返回200表示訪問成功,返回403表示沒有權限訪問。
說明:為避免命令執行失敗,請提前把證書上傳到/root目錄下。
參數解釋如下:
- X-Remote-User: jane:請求頭固定為X-Remote-User,jane為用戶名。
- tls-ca.crt :創建集群時上傳的CA根證書。
- tls.crt:與集群創建時所上傳的CA根證書配套的客戶端證書。
- tls.key:與集群創建時所上傳的CA根證書配套的客戶端秘鑰。
- 192.168.23.5:5443:為連接集群的地址,獲取方式如下:
登錄CCE控制臺,在左側導航欄中選擇“資源管理 > 集群管理”,單擊待連接集群的名稱,在集群基本信息中獲取“內網apiserver地址”后的IP地址和端口號。
說明
- CCE支持天翼云帳號和IAM用戶分別下載config文件(kubeconfig.json),IAM用戶下載的config文件只有30天的有效期,而天翼云帳號下載的config文件會長期有效。該文件用戶對接認證用戶集群,請用戶妥善保存該認證憑據,防止文件泄露后,集群有被攻擊的風險。如果不幸泄露,可以通過證書更新的方式,替換認證憑據。
- IAM用戶下載的config文件所擁有的Kubernetes權限與CCE控制臺上IAM用戶所擁有的權限一致。
- 另外,還支持X-Remote-Group的頭域:用戶組名,在做RoleBinding時,可以將Role與Group進行綁定,并在訪問集群時攜帶用戶組信息。