容器服务安装凭据Kubernetes插件(ack-secret-manager)后,您可以在插件中配置KMS凭据名称,插件将定期从KMS中读取最新的凭据值,缓存在Kubernetes集群中。从而可以按照使用Kubernetes原生Secret的方式使用托管在KMS中的动态Secret,避免敏感数据在应用开发构建流程中的传播和泄露。
操作步骤
安装凭据Kubernetes插件。
容器服务Kubernetes版ACK(Alibaba Cloud Container Service for Kubernetes)
登录容器服务管理控制台,在应用市场中定位到ack-secret-manager。
在ack-secret-manager页面右上角,单击一键部署。
在弹出面板中,选择集群、命名空间和发布名称可保持默认值,然后单击下一步。
在参数配置页面,设置相应参数,然后单击确定。
参数
说明
示例值
command.backend
对接的外部密钥管理系统后端。当前仅支持阿里云KMS,配置为alicloud-kms。
alicloud-kms
command.region
从指定地域获取secret凭据。
cn-hangzhou
command.disablePolling
关闭从KMS后端自动同步拉取最新的凭据内容。默认false。
false
command.pollingInterval
从KMS后端同步存量secret实例的间隔时间。
120s
创建成功后,会自动跳转到目标集群的ack-secret-manager页面,检查安装结果。若下图中所有资源创建成功,则表明组件安装成功。
容器服务自建Kubernetes集群
访问ack-secret-manager安装。
在KMS中创建凭据。
支持所有凭据类型。具体操作,请参见管理及使用通用凭据、管理及使用RAM凭据、管理及使用RDS凭据或管理及使用ECS凭据。
在凭据Kubernetes插件中设置访问KMS的权限。
通过Shared KMS访问
适用于KMS实例中的凭据,或非KMS实例中的凭据(即旧版本KMS中,无需购买KMS实例也能创建的凭据)。
在RAM创建可用于访问KMS凭据的自定义权限策略。策略内容示例如下,您也可以根据需要按需设置,具体请参考使用RAM实现对资源的访问控制。
{ "Action": [ "kms:GetSecretValue", "kms:Decrypt" ], "Resource": [ "*" ], "Effect": "Allow" }
为容器服务工作负载或Pod授权。
方式
在集群对应的 WorkerRole中添加权限
登录容器服务管理控制台,在左侧导航栏选择集群。
定位到目标集群,单击操作列的详情。
在集群资源页签,单击Worker RAM角色中对应的命名为KubernetesWorkerRole-******的角色名称,会自动跳转到RAM角色对应的控制台页面,绑定上面创建的自定义策略。
通过RRSA实现Pod维度的授权
通过KMS实例Endpoint访问({kmsInstanceId}.cryptoservice.kms.aliyuncs.com)
仅适用于KMS实例中的凭据。如果您使用KMS实例管理凭据,并且希望访问KMS的网络限制在您的VPC内,推荐使用本方式。具体操作,请参见创建应用接入点。
说明通过KMS实例Endpoint访问前,请将容器服务工作负载或Pod的VPC绑定到KMS实例。具体操作,请参见同地域多VPC访问KMS实例。
在凭据Kubernetes插件中设置protocol(访问KMS的协议)、endpoint(接入点)、client key(身份认证方式)、SecretName(凭据名称)等信息。详细内容,请参见 ack-secret-manager。
后续操作
为了进一步保护从KMS读取后缓存在Kubernetes集群中的Secret,您可以对Kubernetes集群Secret进行一键加密。具体操作,请参见使用KMS一键加密Kubernetes集群Secret。
一键加密也可以加密保护Kubernetes集群中的其他静态Secret,这些静态Secret通常为系统Secret。