在常見的多租場景下,容器服務 Kubernetes 版會為不同用戶角色簽發帶有其身份信息的KubeConfig憑證用于連接集群。當企業內部員工離職或是某簽發KubeConfig疑似泄露等情況發生時,吊銷該集群的KubeConfig可有效保障集群的安全。本文介紹阿里云賬號(主賬號)或RAM用戶如何吊銷已經分發的用戶KubeConfig憑證。
使用須知
集群限制
吊銷KubeConfig憑證的集群為ACK托管集群或ACK專有集群時,集群創建時間需為2019年10月15日之后。
吊銷KubeConfig憑證的集群為ACK Serverless集群時,集群創建時間需為2019年09月06日之后。
使用場景
吊銷KubeConfig憑證包含以下兩種場景:
阿里云賬號(主賬號)吊銷其管理范圍內(其所有RAM用戶)的KubeConfig憑證。
RAM用戶吊銷自身的KubeConfig憑證。
吊銷集群的KubeConfig憑證后,系統會自動分配新的KubeConfig憑證。
阿里云賬號(主賬號)吊銷其RAM用戶的KubeConfig憑證
僅支持阿里云賬號(主賬號)吊銷其他RAM用戶或RAM角色的KubeConfig憑證。
您可以使用阿里云賬號(主賬號)登錄控制臺,進行如下操作。
登錄容器服務管理控制臺,在左側導航欄選擇授權管理。
在RAM用戶頁簽的用戶列表,單擊目標RAM用對應的管理KubeConfig,獲取該RAM用戶創建的集群列表,然后按照對話框提示完成目標集群的吊銷操作。
RAM用戶吊銷自身的KubeConfig憑證
您可以使用RAM用戶登錄控制臺,進行如下操作。
吊銷KubeConfig后,對應RAM用戶無法再使用原KuberConfig連接集群。請謹慎操作。
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇集群信息。
單擊連接信息頁簽,然后單擊紅色按鈕吊銷 KubeConfig,然后單擊確定。
吊銷離職員工或非受信用戶的KubeConfig憑證
對于離職員工或非受信用戶,請您務必先使用阿里云賬號(主賬號)吊銷離職用戶的KubeConfig權限,然后再刪除對應的RAM用戶或RAM角色。因為僅刪除RAM用戶或RAM角色并不會同步刪除該用戶或角色擁有的集群KubeConfig中的RBAC權限。
請您在刪除RAM用戶賬號之前,并確保其在指定集群的KubeConfig沒有業務依賴的情況下,吊銷離職員工或非受信用戶的KubeConfig權限。具體操作,請參見阿里云賬號(主賬號)吊銷其RAM用戶的KubeConfig憑證。
(不推薦)若離職員工或非受信用戶的RAM用戶賬號不小心被刪除,但還未吊銷該賬號的KubeConfig憑證,請根據以下情況操作。
對于還在回收站的RAM用戶
從回收站恢復RAM用戶的基本信息,無需恢復RAM用戶下原有的AccessKey。具體操作,請參見從回收站恢復RAM用戶。
使用阿里云賬號吊銷用戶下發的所有集群KubeConfig。具體操作,請參見上文阿里云賬號(主賬號)吊銷其RAM用戶的KubeConfig憑證。
將RAM用戶移入回收站。具體操作,請參見將RAM用戶移入回收站。
對于已徹底刪除的RAM用戶:需手動刪除集群中以該RAM用戶或RAM角色ID開頭的RBAC權限綁定。
集群管理員執行以下命令,查看集群所有ClusterRoleBinding。
kubectl get clusterrolebinding
其中,由容器服務 Kubernetes 版授權管理功能下發的綁定格式為
xxxxxxx-clusterrolebinding
,xxxxxxx
為指定RAM用戶或RAM角色ID,以數字2開頭表示RAM用戶綁定,以數字3開頭表示RAM角色綁定。集群管理員執行以下命,查看集群中所有由容器服務 Kubernetes 版授權管理功能下發的RoleBinding。
kubectl get rolebinding -A | grep 'cs:ns:'
其中,綁定名稱格式為
xxxxxxx-yyyyy-rolebinding
,xxxxxxx
為指定RAM用戶或RAM角色ID,以數字2開頭表示RAM用戶綁定,以數字3開頭表示RAM角色綁定。對于以數字2開頭的RAM用戶ID,可登錄RAM控制臺,在用戶頁面搜索框,查看當前ID對應的RAM用戶是否存在。如果搜索結果為空,則該RAM用戶的RBAC綁定實例需清理。
對于以數字3開頭的RAM角色ID,可通過RAM提供的列舉RAM角色的OpenAPI,查看當前使用中的RAM角色ID。如果集群中存在的RAM角色ID不在當前列表中,則該RAM角色的RBAC綁定實例需清理。
對于需要清理的RBAC綁定實例,您可以執行
kubectl delete clusterrolebinding xxxxxxx-clusterrolebinding
或執行kubectl delete rolebinding xxxxxxx-yyyyy-rolebinding -n zzzz
(其中zzzz為RoleBinding所在的命名空間),手動刪除集群中殘留的關聯RBAC綁定實例。