云安全笔记云原生全链路加密
云安全笔记:云原生全链路加密
本文是阿里云博客《如何保障云上数据安全?一文详解云原生全链路加密》的学习笔记
云原生全链路加密
信息安全的CIA要素:机密性、完整性、可用性
机密性的常见手段是数据加密。在云原生中就是全链路加密能力。
“全链路”:数据在传输、计算,存储的过程。
“全链路加密”:端到端的数据加密保护能力,即从云下到云上和云上单元之间的传输过程、到数据在应用运行时的计算过程(使用/交换),和到数据最终被持久化落盘的存储过程中的加密能力。
- 数据传输 (数据通信加密,微服务通信加密,应用证书和密钥的管理);
- 数据处理(运行时安全沙箱 runV, 可信计算安全沙箱 runE);
- 数据存储 (云原生存储的 CMK/BYOK 加密支持、密文/密钥的存储管理、容器镜像的存储加密、容器操作/审计日志安全)。
下面将描述云原生全链路加密中已有的和未来需要实现的目标。
云安全 -> 云数据安全 -> 云原生全链路加密
云安全
涵盖了云客户和云厂商安全在IaaS的软件、硬件以及物理数据中心的安全。
云原生客户(Cloud Native Customer)安全
- 应用安全
- 操作安全
- 商业安全
- 容器网络安全
- 容器数据安全
- 容器运行时安全
云客户(Cloud Customer)安全
云厂商(Cloud IaaS DevOps)安全
云原生安全
云原生安全
云原生安全首先需要遵循云数据安全标准。
它需要复用基础设施的安全(比如物理安全,DDOS安防等);还需要在数据和软件上有安全。
云原生存储通过声明式 API 来描述了云数据的生命周期(比如Kubernetes的yml文件),并不对用户透出底层 IaaS 的数据加密细节。
云原生存储一般作为云数据的载体,复用了云 IaaS 基础安全能力,还需要包括软件供应链中的镜像安全,和容器运行时 root 文件系统安全和容器网络安全。
- 云原生安全的运行时 = 数据处理过程中的计算安全,内存安全,文件系统安全和网络安全
- 云原生软件供应链安全 = 可执行文件/用户代码安全
- 云原生基础架构的安全 = 云数据存储安全
云数据安全
包括三个方面的工作:
- 数据保护:RAM ACL 控制细粒度的数据的访问权限;敏感数据保护(Sensitive Data Discovery and Protection,简称 SDDP)、数据脱敏、数据分级分类。
- 数据加密:CMK 加密数据能力;BYOK 加密数据能力。
- 秘钥/密文管理:KMS/HSM 等云服务;三方 Vault 服务。
数据安全的生命周期
数据生命周期有上述六项。
云原生的数据生命周期(以ACK,即容器服务Kubernetes)为例:
- 云盘持久卷的创建定义了数据,云盘数据的加密需要在定义中就得到体现。密钥选择、加密算法选择都可以申明式支持,RAM 权限细粒度遵循最小权限;
- 云盘挂载到虚拟机:通过 PVC 在容器组 Pod 引用得以触发和实现;
- 云盘数据的解密:通过用户 CMK/BYOK 在块设备上实现 透明 加密解密;
- Pod 生命周期的变化导致 PVC 关联云盘在不同宿主 ECS 上的 Detach/Attach;
- 对 PV 的 Snapshot 生命触发了云盘 Snapshot 的创建;
- PV 的删除可以通过 OnDelete 关联到云盘的中止和数据的删除。
全链路的数据安全
狭义上指数据端到端加密。集中在数据生命周期的三个阶段。
- 数据传输
- 数据处理
- 数据存储
数据传输
安全通信设计,密文/密钥的安全管理和传输,既要满足云环境下的安全传输、云原生引入的容器网络、微服务、区块链场景,又对云原生数据安全传输提出了进一步的要求。
云安全传输
在云环境下 VPC/安全组的使用,密文/密钥的安全管理 KMS 南北向流量通过 SSL 证书服务获取可信有效的 CA,对南北流量实现 HTTPS 加密和卸载,以及对 RPC/gRPC 通信使用 SSL 加密, 减小 VPC 的攻击面,通过 VPN/SAG Gateway 来实现安全访问链路。
云原生安全传输
云原生场景,单一集群允许多租户的同时共享网络、系统组件权限控制、数据通信加密、证书轮转管理,多租场景下东西流量的网络隔离、网络清洗;云原生微服务场景,应用/微服务间通信加密,和证书管理;云原生场景下密钥、密文的独立管理和三方集成、KMS 与 Vault CA, fabric-ca, istio-certmanager 等的集成。
数据处理
对内存级的可信计算,既有云安全虚拟化安全运行的要求,又有容器安全沙箱和可信安全沙箱的需求。
- 云安全虚拟化可信计算:TEE SGX;ARM Trust Zone;
- 云原生容器安全沙箱:runV Kata 安全容器沙箱 ;runE Graphane/Occlum 可信安全沙箱。
数据存储
既有云安全对云存储加密、云数据服务加密需求,又有对容器镜像存储加密,审计日志、应用日志加密和三方集成的需求,以及对密文密码的不落盘存储支持。
云存储加密方式:
数据 + 加密算法 + 用户密钥或主密钥;
客户端加密/服务端加密。
云存储数据,以服务端加密为主;安全的密钥管理 KMS/HSM;安全的加密算法,全面支持国产算法以及部分国际通用密码算法,满足用户各种加密算法需求:
- 对称密码算法:支持 SM1、SM4、DES、3DES、AES;
- 非对称密码算法:支持 SM2、RSA(1024-2048);
- 摘要算法:支持 SM3、SHA1、SHA256、SHA384。
阿里云只能管理设备硬件,主要包括监控设备可用性指标、开通、停止服务等。密钥完全由客户管理,阿里云没有任何方法可以获取客户密钥。
云存储加密支持:
- 块存储 EBS 云盘:支持虚拟机内部使用的块存储设备(即云盘)的数据落盘加密,确保块存储的数据在分布式系统中加密存放,并支持使用服务密钥和用户自选密钥作为主密钥进行数据加密;
- 对象存储 OSS:支持服务端和客户端的存储加密能力。在服务端的加密中,支持使用服务密钥和用户自选密钥作为主密钥进行数据加密;在客户端的加密中,支持使用用户自管理密钥进行加密,也支持使用用户 KMS 内的主密钥进行客户端的加密;
- RDS 数据库的数据加密:RDS 数据库的多个版本通过透明加密(Transparent Data Encryption,简称 TDE)或云盘实例加密机制,支持使用服务密钥和用户自选密钥作为主密钥进行数据加密;
- 表格存储 OTS:支持使用服务密钥和用户自选密钥作为主密钥进行数据加密;
- 文件存储 NAS:支持使用服务密钥作为主密钥进行数据加密;
- MaxCompute 大数据计算:支持使用服务密钥作为主密钥进行数据加密;
- 操作日志,审计日志的安全存储,以及三方日志系统集成。
云原生存储加密:
目前阿里云容器服务 ACK 可以托管的主要以块存储、文件存储和对象存储为主,其他类型的 RDS、OTS 等数据服务是通过 Service Broker 等方式支持。
- 用户容器镜像/代码 (企业容器镜像服务,OSS CMK/BYOK 加密);
- 云原生存储卷 PV(申明式支持云存储的 CMK/BYOK 以及数据服务层的加密支持);
- 操作日志和审计日志 (ActionTrail OpenAPI/Kubernetes AuditLog: SLS 日志加密);
- 密文密码 (KMS/Vault 对密文的三方加密支持和内存存储,非 etcd 持久化)。