手动收敛ACK托管版集群的Worker RAM角色权限

为了提升ACK托管集群节点的安全性,您可以基于最小化原则手动调整和优化已分配给Worker节点的RAM角色所具有的权限。

前提条件

步骤一:确认是否需要收敛

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称。然后单击基本信息页签。单击Worker RAM 角色右侧的链接进入RAM管理控制台。

  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模式的不同,选择对应的Terway组件进行升级。关于Terway模式介绍,请参见使用Terway网络插件

  • 组件升级后,还需要手动修改Terway组件配置。具体操作,请参见检查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组件工作负载。

步骤三:采集操作审计日志

您需要采集API操作审计日志,以便分析测试集群产生的日志,检查集群内是否还有应用在依赖Worker RAM角色被授予的权限策略。关于操作审计功能支持的云服务,请参见支持的云服务

说明

建议您至少采集一周以上的操作审计日志。

操作审计控制台创建集群所在地域的账号跟踪,同时在创建时选择将事件投递到日志服务SLS。具体操作,请参见创建单账号跟踪

步骤四:测试集群功能

以上收敛操作完成后,您需要对集群的基础功能进行测试,确保系统组件能正常工作。

基础功能点

基础测试点

参考文档

计算

可以正常扩缩容节点。

扩缩容节点池

网络

可以正常为Pod分配IP。

应用部署

存储

可以正常部署使用外置存储的工作负载(如果已使用该功能)。

存储-CSI

监控

可以正常获取监控告警数据。

可观测性

弹性

可以正常实现节点的自动弹性伸缩(如果已使用该功能)。

启用节点自动伸缩

安全

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

使用免密组件拉取容器镜像

重要

集群基础功能测试完成后,请您根据实际的业务场景,再测试一下集群中部署应用的业务逻辑,确保业务正常工作。

步骤五:分析操作审计日志

  1. 登录日志服务控制台

  2. 在Project列表区域,单击目标Project。

    image

  3. 日志存储 > 日志库页签中,单击目标Logstore。

    查询步骤三指定的日志Project中审计日志所属的Logstore,即名为actiontrail_<跟踪名称>的日志库(Logstore)中存储的所有操作审计日志。

  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. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称。然后单击基本信息页签。单击Worker RAM 角色右侧的链接进入RAM管理控制台。

  3. 角色页面的权限管理页签,单击目标权限策略进入策略内容页签,然后单击修改策略内容

    重要

    修改策略内容变更操作前,请您备份当前已有的权限策略内容,便于及时回滚权限配置。

    修改策略内容时,根据实际需求结合步骤五审计日志的分析结果,决策是否删除不再需要的权限,例如删除未出现在统计结果中的权限action。如果确认不需要任何权限的话,可以解除授权的所有权限策略。

  4. 重新部署系统组件的工作负载。具体操作,请参见步骤二中的重新部署命令。

  5. 依次重复步骤四步骤五步骤六的收敛操作,直至确保Worker RAM角色仅被授予组件或应用所需的最小权限。

相关文档

如需了解ACK的整体授权体系,请参见授权最佳实践