容器服务Kubernetes版ACK集成KMS凭据

容器服务安装凭据Kubernetes插件(ack-secret-manager)后,您可以在插件中配置KMS凭据名称,插件将定期从KMS中读取最新的凭据值,缓存在Kubernetes集群中。从而可以按照使用Kubernetes原生Secret的方式使用托管在KMS中的动态Secret,避免敏感数据在应用开发构建流程中的传播和泄露。

操作步骤

  1. 安装凭据Kubernetes插件。

    • 容器服务Kubernetes版ACK(Alibaba Cloud Container Service for Kubernetes)

      1. 登录容器服务管理控制台,在应用市场中定位到ack-secret-manager

      2. ack-secret-manager页面右上角,单击一键部署

      3. 在弹出面板中,选择集群命名空间发布名称可保持默认值,然后单击下一步

      4. 参数配置页面,设置相应参数,然后单击确定

        参数

        说明

        示例值

        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页面,检查安装结果。若下图中所有资源创建成功,则表明组件安装成功。image.png

    • 容器服务自建Kubernetes集群

      访问ack-secret-manager安装。

  2. 在KMS中创建凭据。

    支持所有凭据类型。具体操作,请参见管理及使用通用凭据管理及使用RAM凭据管理及使用RDS凭据管理及使用ECS凭据

  3. 在凭据Kubernetes插件中设置访问KMS的权限。

    • 通过Shared KMS访问

      适用于KMS实例中的凭据,或非KMS实例中的凭据(即旧版本KMS中,无需购买KMS实例也能创建的凭据)。

      1. 在RAM创建可用于访问KMS凭据的自定义权限策略。策略内容示例如下,您也可以根据需要按需设置,具体请参考使用RAM实现对资源的访问控制

        {
            "Action": [
               "kms:GetSecretValue",
               "kms:Decrypt"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        }
      2. 为容器服务工作负载或Pod授权。

        方式

        在集群对应的 WorkerRole中添加权限

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

        2. 定位到目标集群,单击操作列的详情

        3. 在集群资源页签,单击Worker RAM角色中对应的命名为KubernetesWorkerRole-******的角色名称,会自动跳转到RAM角色对应的控制台页面,绑定上面创建的自定义策略。

        通过RRSA实现Pod维度的授权

        1. 启用RRSA功能

        2. 使用RRSA功能

          为指定的serviceaccount创建对应的RAM角色,为RAM角色设置信任策略,并为RAM角色授权绑定上面创建的自定义策略

    • 通过KMS实例Endpoint访问({kmsInstanceId}.cryptoservice.kms.aliyuncs.com)

      仅适用于KMS实例中的凭据。如果您使用KMS实例管理凭据,并且希望访问KMS的网络限制在您的VPC内,推荐使用本方式。具体操作,请参见创建应用接入点

    • 说明

      通过KMS实例Endpoint访问前,请将容器服务工作负载或Pod的VPC绑定到KMS实例。具体操作,请参见同地域多VPC访问KMS实例

  4. 在凭据Kubernetes插件中设置protocol(访问KMS的协议)、endpoint(接入点)、client key(身份认证方式)、SecretName(凭据名称)等信息。详细内容,请参见 ack-secret-manager

后续操作

为了进一步保护从KMS读取后缓存在Kubernetes集群中的Secret,您可以对Kubernetes集群Secret进行一键加密。具体操作,请参见使用KMS一键加密Kubernetes集群Secret

说明

一键加密也可以加密保护Kubernetes集群中的其他静态Secret,这些静态Secret通常为系统Secret。

相关文档