阿里云容器服务Kubernetes版ACK和阿里云服务网格ASM提供的多云混合云方案具有统一的集群管理,动态弹性和服务治理能力。在注册外部Kubernetes集群时,ACK Register Agent组件提供了多集群的管理能力,同时提供了在外部集群上应用的部署和生命周期管理能力。本文主要介绍ACK和ASM服务在实现多云混合云方案中进行外部集群注册和管理过程中的最佳安全实践。
组件说明
组件名称 | 组件功能 |
---|---|
ACK Console | ACK容器服务管理控制台。 |
ACK Register Agent | ACK集群注册Agent,以deployment形式部署在指定外部集群中,用于接收ACK集群注册代理组件的请求并转发给对应的K8s API Server,同时接收K8s API Server的返回并发送给ACK集群注册代理组件。 |
ACK Stub | ACK集群注册代理组件,部署在容器服务管控侧,每一个注册外部集群都会部署一个与之对应的Stub代理组件,用于代理转发ACK管控组件和指定外部集群中注册Agent组件之间的请求。 |
K8s API Server | 注册集群中运行的K8s API Server组件。 |
连接架构

当用户完成外部集群注册流程后,ACK Register Agent组件会完成部署并与ACK管控侧建立TLS 1.2的长链接。对于已授权用户或授权后的ACK管控服务,ACK Console组件通过链路向指定的外部集群发送请求,请求会首先发送到Stub代理组件,然后请求被转发到对应的Agent,并最终由Agent组件将请求发送到外部API server。API server在收到请求后,会经过认证(Authentication)、鉴权(Authorization)和准入控制(Admission control)流程,在完成审计后返回请求。请求返回的路径同样经由Agent,Stub代理组件并最终返回给ACK管控服务。所有请求在链路上都经过了认证鉴权流程,保证了集群访问的安全可控。
组件访问安全

在认证上,访问组件之间通过RAM账号的登录认证和组件之间的双向TLS认证,保证所有访问链接数据在传输过程中的TLS加密。而鉴权采用基于阿里云RAM服务的访问控制和x509证书校验中的白名单机制。
请求链路安全
在多云混合云管理请求链路上的所有访问凭证均包含了请求者的身份信息,包括用户使用阿里云容器服务下发的访问凭证和容器服务内部组件访问凭证,以保证所有发送到外部集群API server的请求都能够经过鉴权和审计处理。
终端用户请求链路
在阿里云平台侧,集群的管理人员可以通过RAM访问控制策略配置指定终端用户对外部集群的控制权限。经过RAM鉴权的用户可以在容器服务控制台获取指定外部集群的访问凭证,该访问凭证会作为认证凭据在Stub和Agent组件处认证,且组件间所有的访问链路都经过TLS加密。在Agent组件完成认证后,会将用户访问凭证中的身份信息作为请求目标API server的身份扮演header,在API server中会根据接收到的用户身份完成认证,鉴权和请求审计等操作。
服务组件请求链路
集群内部安全

- 如果请求凭据不是一个合法的凭据,则API server会直接返回401的认证失败错误。
- 如果认证通过,API server会查看请求是否有指定格式的身份扮演header,如果存在的话会以指定的身份扮演身份去进行下一段的鉴权流程。
- 如果鉴权失败,则API server返回403的鉴权失败错误。
- 如果鉴权成功,则经过审计流程后返回请求结果。
Agent组件是Go语言编写的代理转发和集群注册组件,代码的编写和发布均经过了阿里云相关团队的安全审核。与此同时,指定集群的管理员也需要根据Kubernetes相关的最佳安全实践规范保护集群节点的安全性,通过对基础设施和应用相关的安全配置保障Agent组件和集群的安全性。
在文档使用中是否遇到以下问题
更多建议
匿名提交