通过加密存储在阿里云ECS上的数据就能保护数据的隐私性和自主性。本文主要介绍加密云盘的方法。
使用KMS中的指定密钥对指定云盘存储卷进行加密
阿里云ACK集群适用于有高安全性或合规性要求的应用场景,您无需自建和维护密钥管理基础设施,通过加密保护存储在阿里云ECS上的数据就能保护数据的隐私性和自主性。更多信息,请参见加密云盘存储卷。
本文将以配置加密云盘数据卷为例来说明,在创建存储资源实例时,您可以使用KMS中的指定密钥对指定云盘存储卷进行加密。
- 配置StorageClass参数。
- 创建PVC。
云盘加密建议
密钥管理
Kubernetes Secrets模型一般用于存储业务应用涉及的敏感信息,例如应用密码、证书、API访问凭据等敏感信息,所有Secrets对象在原生的K8s集群会以Base64编码的形式存储在集群etcd中。在ACK托管集群管控侧,所有控制平面中的etcd节点云盘均开启了数据盘加密特性,保证用户业务数据的基本隐私性。您可以通过环境变量或挂载存储卷的方式在业务Pod中使用指定的Secret对象。更多信息,请参见Secrets。
- 使用阿里云KMS进行Secret的落盘加密
在ACK Pro集群中,您可以使用在密钥管理服务(KMS)中创建的密钥加密Kubernetes Secret,加密过程基于Kubernetes提供的KMS Encryption Provider机制,使用信封加密的方式对存储在etcd中的Kubernetes Secret密钥进行自动加密和解密。更多信息,请参见KMS Encryption Provider机制、使用KMS信封加密在本地加密和解密数据、使用阿里云KMS进行Secret的落盘加密。
- 为密钥创建单独的Namespace并与不同的应用程序隔离
如果您的密钥不需要在命名空间中的应用程序之间共享,请为每个应用程序创建一个独立的命名空间并严格控制授予Secret的读写权限。
- 使用卷挂载Secret而不是存储在环境变量中
环境变量的值可能会无意中出现在日志中。作为卷挂载的
Secret
被实例化为tmpfs
卷,当Pod被删除时,这些卷会自动从节点中删除。 - 使用外部密钥管理系统
您可以选择将应用密钥管理在外部的专业密钥管理系统中,这些外部密钥管理系统可以提供细粒度的访问控制,多种加密算法以及密钥自动轮转等高级特性。更多信息,请参见凭据管家概述和Vault。
在应用需要使用指定密钥时,可以将外部密钥系统中存储的指定密文实时同步到ACK集群中,并以K8s原生Secret的形式集成在应用中。例如,将阿里云凭据管家中管理的密钥以Secret形式实时同步到ACK集群。具体操作,请参见ack-secret-manager。
- 使用ACK-TEE机密计算
ACK支持创建基于Intel SGX2.0技术的加密计算托管集群,可以帮助您保护数据使用(计算)过程中的安全性、完整性和机密性,同时简化了可信或机密应用的开发、交付和管理成本。机密计算可以让您把重要的数据和代码放在一个特殊的可信执行加密环境(Trusted Execution Environment,TEE)中,而不会暴露给系统其他部分。其他应用、BIOS、OS、Kernel、管理员、运维人员、云厂商、甚至除了CPU以外的硬件均无法访问机密计算平台数据,极大减少泄露敏感数据的风险,有更好的控制、透明度和隐秘性。更多信息,请参见ACK-TEE机密计算介绍。