为了提升ACK托管集群节点的安全性,您可以基于最小化原则手动调整和优化已分配给Worker节点的RAM角色所具有的权限。
前提条件
- 已创建ACK托管集群(ACK托管集群Pro版和ACK托管集群基础版),且集群为1.18或以上版本。具体操作,请参见创建ACK托管集群、手动升级集群。 
- 如需收敛ACK专有版集群,请将其迁移至ACK托管集群Pro版。具体操作,请参见热迁移ACK专有集群至ACK托管集群Pro版。 
- 已授权ACK托管集群所依赖的默认服务角色。具体操作,请参见一键授权服务角色。 
步骤一:确认是否需要收敛
- 登录容器服务管理控制台,在左侧导航栏选择集群列表。 
- 在集群列表页面,单击目标集群名称。然后单击基本信息页签。单击Worker RAM 角色右侧的链接进入RAM管理控制台。 
- 在角色页面的权限管理页签,查看是否存在权限策略。 - 若列表为空,则无需收敛。 
- 若列表不为空,例如k8sWorkerRolePolicy-db8ad5c7***,则Worker RAM角色权限可能需要收敛。请根据实际业务场景,基于最小化原则进一步判断。 
 
步骤二:升级系统组件版本
ACK托管集群中安装的核心系统组件需升级到要求的最低版本或者组件的最新版本。具体操作,请参见管理组件。
- 请勿同时升级多个组件,请依次逐个组件升级,确认一个组件升级成功后再升级下一个组件。 
- 升级组件前,请注意查看每个组件的备注信息。 
组件分为通过组件管理安装和通过节点池安装两类,具体要求及升级方法如下。
通过组件管理安装的组件
您可以参考以下表格,在组件管理页面将当前集群已安装的组件升级到要求的最低版本或者组件的最新版本。对于无需升级的组件,您需要参考以下表格中的重新部署组件命令来部署已安装的组件,也可以通过控制台重新部署组件。
| 组件名称 | 最低组件版本要求 | 执行重新部署组件的命令 | 备注 | 
| metrics-server | v0.3.9.4-ff225cd-aliyun |  | 无 | 
| alicloud-monitor-controller | v1.5.5 |  | 无 | 
| logtail-ds | v1.0.29.1-0550501-aliyun |  | 无 | 
| loongcollector | v3.0.2 |  | 无 | 
| terway | v1.0.10.333-gfd2b7b8-aliyun |  | 
 | 
| terway-eni | v1.0.10.333-gfd2b7b8-aliyun |  | |
| terway-eniip | v1.0.10.333-gfd2b7b8-aliyun |  | |
| terway-controlplane | v1.2.1 |  | 无 | 
| flexvolume | v1.14.8.109-649dc5a-aliyun |  | |
| csi-plugin | v1.18.8.45-1c5d2cd1-aliyun |  | 无 | 
| csi-provisioner | v1.18.8.45-1c5d2cd1-aliyun |  | 无 | 
| storage-operator | v1.18.8.55-e398ce5-aliyun |  | 无 | 
| alicloud-disk-controller | v1.14.8.51-842f0a81-aliyun |  | 无 | 
| ack-node-problem-detector | 1.2.16 |  | 无 | 
| aliyun-acr-credential-helper | v23.02.06.2-74e2172-aliyun |  | 组件升级前,您需要先进行授权。 
 | 
| ack-cost-exporter | 1.0.10 |  | 组件升级前,您需要先进行授权。 | 
| mse-ingress-controller | 1.1.5 |  | 组件升级前,您需要先进行授权。 | 
| arms-prometheus | 1.1.11 |  | 无 | 
| ack-onepilot | 3.0.11 |  | 组件升级前,您需要先进行授权。 | 
通过节点池安装的组件cluster-autoscaler
| 组件名称 | 最低组件版本要求 | 执行以下重新部署命令 | 备注 | 
| cluster-autoscaler | v1.3.1-bcf13de9-aliyun |  | 您可以通过以下两种方式查看cluster-autoscaler组件的版本。如需升级组件版本,请参见【组件升级】cluster-autoscaler升级公告。 
 | 
检查Terway组件配置
如果您的集群中安装了terway、terway-eni或terway-eniip组件,您还需要手动检查集群内Terway的配置文件,即检查kube-system命名空间下名为eni-config的ConfigMap中eni_conf配置的内容。
- 执行以下命令,编辑查看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",
 
- 根据以上Terway组件对应的部署命令,重新部署Terway组件工作负载。 
步骤三:采集操作审计日志
您需要采集API操作审计日志,以便分析测试集群产生的日志,检查集群内是否还有应用在依赖Worker RAM角色被授予的权限策略。关于操作审计功能支持的云服务,请参见支持的云服务。
建议您至少采集一周以上的操作审计日志。
在操作审计控制台创建集群所在地域的账号跟踪,同时在创建时选择将事件投递到日志服务SLS。具体操作,请参见创建单账号跟踪。
步骤四:测试集群功能
以上收敛操作完成后,您需要对集群的基础功能进行测试,确保系统组件能正常工作。
| 基础功能点 | 基础测试点 | 参考文档 | 
| 计算 | 可以正常扩缩容节点。 | |
| 网络 | 可以正常为Pod分配IP。 | |
| 存储 | 可以正常部署使用外置存储的工作负载(如果已使用该功能)。 | |
| 监控 | 可以正常获取监控告警数据。 | |
| 弹性 | 可以正常实现节点的自动弹性伸缩(如果已使用该功能)。 | |
| 安全 | 可以正常使用镜像免密拉取功能(如果已使用该功能)。 | 
集群基础功能测试完成后,请您根据实际的业务场景,再测试一下集群中部署应用的业务逻辑,确保业务正常工作。
步骤五:分析操作审计日志
- 登录日志服务控制台。 
- 在Project列表区域,单击目标Project。  
- 在页签中,单击目标Logstore。 - 查询步骤三指定的日志Project中审计日志所属的Logstore,即名为actiontrail_<跟踪名称>的日志库(Logstore)中存储的所有操作审计日志。 
- 使用以下查询统计语句,统计集群内应用使用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角色被授予的权限
相关文档
如需了解ACK的整体授权体系,请参见授权最佳实践。