全部產品
Search
文件中心

Container Service for Kubernetes:手動收斂ACK託管版叢集的Worker RAM角色許可權

更新時間:Oct 17, 2024

為了提升ACK託管叢集節點的安全性,您可以基於最小化原則手動調整和最佳化已指派給Worker節點的RAM角色所具有的許可權。

前提條件

步驟一:確認是否需要收斂

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊目的地組群名稱。然後單擊基本資料頁簽。單擊Worker RAM 角色右側的連結進入Resource Access Management控制台。

  3. 角色頁面的許可權管理頁簽,查看是否存在權限原則。

    • 若列表為空白,則無需收斂。

    • 若列表不為空白,例如k8sWorkerRolePolicy-db8ad5c7***,則Worker RAM角色許可權可能需要收斂。請根據實際業務情境,基於最小化原則進一步判斷。

步驟二:升級系統組件版本

ACK託管叢集中安裝的核心系統組件需升級到要求的最低版本或者組件的最新版本。具體操作,請參見管理組件

重要
  • 請勿同時升級多個組件,請依次逐個組件升級,確認一個組件升級成功後再升級下一個組件。

  • 升級組件前,請注意查看每個組件的備忘資訊。

組件分為通過組件管理安裝和通過節點池安裝兩類,具體要求及升級方法如下。

通過組件管理安裝的組件

您可以參考以下表格,在組件管理頁面將當前叢集已安裝的組件升級到要求的最低版本或者組件的最新版本。對於無需升級的組件,您需要參考以下表格中的重新部署組件命令來部署已安裝的組件,也可以通過控制台重新部署組件。

組件名稱

最低組件版本要求

執行重新部署組件的命令

備忘

metrics-server

v0.3.9.4-ff225cd-aliyun

kubectl -n kube-system rollout restart deployment/metrics-server

alicloud-monitor-controller

v1.5.5

kubectl -n kube-system rollout restart deployment/alicloud-monitor-controller

logtail-ds

v1.0.29.1-0550501-aliyun

kubectl -n kube-system rollout restart daemonset/logtail-ds
kubectl -n kube-system rollout restart deployment/alibaba-log-controller

terway

v1.0.10.333-gfd2b7b8-aliyun

kubectl -n kube-system rollout restart daemonset/terway

terway-eni

v1.0.10.333-gfd2b7b8-aliyun

kubectl -n kube-system rollout restart daemonset/terway-eni

terway-eniip

v1.0.10.333-gfd2b7b8-aliyun

kubectl -n kube-system rollout restart daemonset/terway-eniip

terway-controlplane

v1.2.1

kubectl -n kube-system rollout restart deployment/terway-controlplane

flexvolume

v1.14.8.109-649dc5a-aliyun

kubectl -n kube-system rollout restart daemonset/flexvolume

建議遷移Flexvolume至CSI

csi-plugin

v1.18.8.45-1c5d2cd1-aliyun

kubectl -n kube-system rollout restart daemonset/csi-plugin

csi-provisioner

v1.18.8.45-1c5d2cd1-aliyun

kubectl -n kube-system rollout restart deployment/csi-provisioner

storage-operator

v1.18.8.55-e398ce5-aliyun

kubectl -n kube-system rollout restart deployment/storage-auto-expander
kubectl -n kube-system rollout restart deployment/storage-cnfs
kubectl -n kube-system rollout restart deployment/storage-monitor
kubectl -n kube-system rollout restart deployment/storage-snapshot-manager
kubectl -n kube-system rollout restart deployment/storage-operator

alicloud-disk-controller

v1.14.8.51-842f0a81-aliyun

kubectl -n kube-system rollout restart deployment/alicloud-disk-controller

ack-node-problem-detector

1.2.16

kubectl -n kube-system rollout restart deployment/ack-node-problem-detector-eventer

aliyun-acr-credential-helper

v23.02.06.2-74e2172-aliyun

kubectl -n kube-system rollout restart deployment/aliyun-acr-credential-helper

組件升級前,您需要先進行授權

  • 如果您沒有自訂RAM許可權以及跨帳號拉取鏡像的需求,請前往組件管理頁面修改組件配置,確保tokenMode的值為managedRole

  • 如果您不需要使用該組件提供的私人鏡像免密拉取功能,可以卸載該組件。

ack-cost-exporter

1.0.10

kubectl -n kube-system rollout restart deployment/ack-cost-exporter

組件升級前,您需要先進行授權

mse-ingress-controller

1.1.5

kubectl -n mse-ingress-controller rollout restart deployment/ack-mse-ingress-controller

組件升級前,您需要先進行授權

arms-prometheus

1.1.11

kubectl -n arms-prom rollout restart deployment/arms-prometheus-ack-arms-prometheus

ack-onepilot

3.0.11

kubectl -n ack-onepilot rollout restart deployment/ack-onepilot-ack-onepilot

組件升級前,您需要先進行授權

通過節點池安裝的組件cluster-autoscaler

組件名稱

最低組件版本要求

執行以下重新部署命令

備忘

cluster-autoscaler

v1.3.1-bcf13de9-aliyun

kubectl -n kube-system rollout restart deployment/cluster-autoscaler

您可以通過以下兩種方式查看cluster-autoscaler組件的版本。如需升級組件版本,請參見【組件升級】cluster-autoscaler升級公告

檢查Terway組件配置

如果您的叢集中安裝了terway、terway-eni或terway-eniip組件,您還需要手動檢查叢集內Terway的設定檔,即檢查kube-system命名空間下名為eni-config的ConfigMap中eni_conf配置的內容。

  1. 執行以下命令,編輯查看Terway的配置ConfigMap。

    kubectl edit cm eni-config -n kube-system
    • 如果檔案中包含配置項"credential_path": "/var/addon/token-config",則無需進行額外操作。

    • 如果檔案中未包含配置項"credential_path": "/var/addon/token-config",則需要您手動修改eni_conf配置,在min_pool_size配置項下面新增一行"credential_path": "/var/addon/token-config",配置。

      "credential_path": "/var/addon/token-config",
  2. 根據以上Terway組件對應的部署命令,重新部署Terway組件工作負載。

步驟三:採集Action Trail日誌

您需要採集APIAction Trail日誌,以便分析測試叢集產生的日誌,檢查叢集內是否還有應用在依賴Worker RAM角色被授與權限策略。關於Action Trail功能支援的雲端服務,請參見支援的雲端服務

說明

建議您至少採集一周以上的Action Trail日誌。

Action Trail控制台建立叢集所在地區的帳號跟蹤,同時在建立時選擇將事件投遞到Log ServiceSLS。具體操作,請參見建立單帳號跟蹤

步驟四:測試叢集功能

以上收斂操作完成後,您需要對叢集的基礎功能進行測試,確保系統組件能正常工作。

基礎功能點

基礎測試點

參考文檔

計算

可以正常擴縮容節點。

擴縮容節點池

網路

可以正常為Pod分配IP。

應用部署

儲存

可以正常部署使用外置儲存的工作負載(如果已使用該功能)。

儲存-CSI

監控

可以正常擷取監控警示資料。

可觀測性

彈性

可以正常實現節點的自動Auto Scaling(如果已使用該功能)。

啟用節點自動調整

安全

可以正常使用鏡像免密拉取功能(如果已使用該功能)。

使用免密組件拉取容器鏡像

重要

叢集基礎功能測試完成後,請您根據實際的業務情境,再測試一下叢集中部署應用的商務邏輯,確保業務正常工作。

步驟五:分析Action Trail日誌

  1. 登入Log Service控制台

  2. 在Project列表地區,單擊目標Project。

    image

  3. 日誌儲存 > 日誌庫頁簽中,單擊目標Logstore。

    查詢步驟三指定的日誌Project中審計日誌所屬的Logstore,即名為actiontrail_<跟蹤名稱>的日誌庫(Logstore)中儲存的所有Action Trail日誌。

  4. 使用以下查詢統計語句,統計叢集內應用使用Worker RAM角色的STS Token調用的OpenAPI列表。

    請將以下語句中的<worker_role_name>替換為叢集的Worker RAM角色名稱。

    * and event.userIdentity.userName: <worker_role_name> | select "event.serviceName", "event.eventName", count(*) as total GROUP BY "event.eventName", "event.serviceName"

步驟六:收斂Worker RAM角色被授與權限

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊目的地組群名稱。然後單擊基本資料頁簽。單擊Worker RAM 角色右側的連結進入Resource Access Management控制台。

  3. 角色頁面的許可權管理頁簽,單擊目標權限原則進入策略內容頁簽,然後單擊修改策略內容

    重要

    修改策略內容變更操作前,請您備份當前已有的權限原則內容,便於及時復原許可權配置。

    修改策略內容時,根據實際需求結合步驟五審計日誌的分析結果,決策是否刪除不再需要的許可權,例如刪除未出現在統計結果中的許可權action。如果確認不需要任何許可權的話,可以解除授權的所有權限原則。

  4. 重新部署系統組件的工作負載。具體操作,請參見步驟二中的重新部署命令。

  5. 依次重複步驟四步驟五步驟六的收斂操作,直至確保Worker RAM角色僅被授予組件或應用所需的最小許可權。

相關文檔

如需瞭解ACK的整體授權體系,請參見授權最佳實務