如何保障云上数据安全?一文详解云原生全链路加密

点击下载《不一样的 双11 技术:阿里巴巴经济体云原生实践》

如何保障云上数据安全?一文详解云原生全链路加密

本文节选自《不一样的 双11 技术:阿里巴巴经济体云原生实践》一书,点击上方图片即可下载!

作者
李鹏(壮怀)阿里云容器服务高级技术专家
黄瑞瑞  阿里云技术架构部资深技术专家

导读:对于云上客户而言,其云上数据被妥善的安全保护是其最重要的安全需求,也是云上综合安全能力最具象的体现。本文作者将从云安全体系出发,到云数据安全,再到云原生安全体系对全链路加密进行一次梳理,从而回答:在云原生时代,全链路加密需要做什么?如何做到?以及未来要做什么?

什么是云原生全链路加密

数据安全在云上的要求,可以用信息安全基本三要素 "CIA"来概括,即机密性(Confidentiality)、完整性(Integrity)和可用性(Availability)。

  • 机密性专指受保护数据只可以被合法的(或预期的)用户可访问,其主要实现手段包括数据的访问控制、数据防泄露、数据加密和密钥管理等手段;
  • 完整性是保证只有合法的(或预期的)用户才能修改数据,主要通过访问控制来实现,同时在数据的传输和存储中可以通过校验算法来保证用户数据的完整性;
  • 数据的可用性主要体现在云上环境整体的安全能力、容灾能力、可靠度,以及云上各个相关系统(存储系统、网络通路、身份验证机制和权限校验机制等等)的正常工作保障。

在三要素中,第一要素机密性(Confidentiality)最常见也是最常被要求的技术实现手段就是数据加密。具体到云原生维度,需要实现的就是云原生的全链路加密能力。

“全链路”指的是数据在传输 (in Transit,也叫 in-motion)、计算 (Runtime,也叫 in-process),存储 (in storage,也叫 at-rest) 的过程,而“全链路加密”指的是端到端的数据加密保护能力,即从云下到云上和云上单元之间的传输过程、到数据在应用运行时的计算过程(使用/交换),和到数据最终被持久化落盘的存储过程中的加密能力。

• 数据传输 (数据通信加密,微服务通信加密,应用证书和密钥的管理);
• 数据处理(运行时安全沙箱 runV, 可信计算安全沙箱 runE);
• 数据存储 (云原生存储的 CMK/BYOK 加密支持、密文/密钥的存储管理、容器镜像的存储加密、容器操作/审计日志安全)。

如何保障云上数据安全?一文详解云原生全链路加密

本文中的技术描述针对的是在云原生全链路加密中已有的和未来需要实现的技术目标。

云安全 > 云数据安全 > 云原生全链路加密

如何保障云上数据安全?一文详解云原生全链路加密

云安全

针对用户群体的不同,对安全链路有不同的层次定义,云安全涵盖了云客户安全和云厂商安全在 IaaS 的软件、硬件以及物理数据中心等的安全。

如何保障云上数据安全?一文详解云原生全链路加密

  • 云原生客户(Cloud Native Customer)安全
    • 应用安全
    • 操作安全
    • 商业安全
    • 容器网络安全
    • 容器数据安全
    • 容器运行时安全
  • 云客户(Cloud Customer)安全
  • 云厂商(Cloud IaaS DevOps)安全

云原生安全

如何保障云上数据安全?一文详解云原生全链路加密

云原生安全首先需要遵循云数据安全标准,在复用了云基础架构安全能力的前提下,同时在安全运行时,软件供应链上有进一步的安全支持。

云原生存储是通过声明式 API 来描述了云数据的生命周期,并不对用户透出底层 IaaS 的数据加密细节。不同的云原生存储一般作为云数据的载体,复用了云 IaaS 基础安全能力,还需要包括软件供应链中的镜像安全,和容器运行时 root 文件系统安全和容器网络安全。

  • 云原生安全的运行时 = 数据处理过程中的计算安全,内存安全,文件系统安全和网络安全
  • 云原生软件供应链安全 = 可执行文件/用户代码安全 
  • 云原生基础架构的安全 = 云数据存储安全

云数据安全

云用户数据安全包括以下的三个方面的工作:

  • 数据保护:RAM ACL 控制细粒度的数据的访问权限;敏感数据保护(Sensitive
    Data Discovery and Protection,简称 SDDP)、数据脱敏、数据分级分类。

  • 数据加密:CMK 加密数据能力;BYOK 加密数据能力。

  • 密钥/密文管理:KMS/HSM 等云服务;三方 Vault 服务。

数据安全的生命周期

为了更好的理解数据保护,需要对数据安全的生命周期有一个了解,因为数据保护贯穿于整个的数据生命周期:

  • 数据收集
  • 数据传输
  • 数据处理
  • 数据交换
  • 数据存储
  • 数据销毁

如何保障云上数据安全?一文详解云原生全链路加密

云原生数据生命周期,以 ACK(容器服务 Kubernetes)挂载阿里云云盘为例:

  • 云盘 PV 的申明和创建定义了数据,云盘数据的加密需要在申明定义中就体现,对密钥匙选择、加密算法选择都可以申明式支持,RAM 权限细粒度遵循最小权限;
  • 云盘挂载到虚拟机通过 PVC 在容器组 Pod 引用得以触发和实现;
  • 云盘数据的解密通过用户 CMK/BYOK 在块设备上实现透明加密解密;
  • Pod 生命周期的变化导致 PVC 关联云盘在不同宿主 ECS 上的 Detach/Attach;
  • 对 PV 的 Snapshot 生命触发了云盘 Snapshot 的创建;
  • PV 的删除可以通过 OnDelete 关联到云盘的中止和数据的删除。

全链路的数据安全

在狭义上来说是对数据端到端的加密,主要集中在了数据生命周期中的三个阶段:

  • 数据传输
  • 数据处理
  • 数据存储

数据传输阶段

安全通信设计,密文/密钥的安全管理和传输,既要满足云环境下的安全传输、云原生引入的容器网络、微服务、区块链场景,又对云原生数据安全传输提出了进一步的要求。

  • 云安全传输

在云环境下 VPC/安全组的使用,密文/密钥的安全管理 KMS 南北向流量通过 SSL 证书服务获取可信有效的 CA,对南北流量实现 HTTPS 加密和卸载,以及对 RPC/gRPC 通信使用 SSL 加密, 减小 VPC 的***面,通过 ***/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 持久化)。

如何保障云上数据安全?一文详解云原生全链路加密

结论

云原生全链路的数据安全、云安全体系下的全链路加密已经成为了基础配置,新的容器化基础架构和应用架构的变化,结合云原生技术体系的特征,在数据传输、数据处理、数据存储阶段都需要增加相应云原生环境对网络、运行时、存储的全链路加密需求。

  • 既要满足云环境下的安全传输、云原生引入的容器网络、微服务、区块链场景,又对云原生数据安全传输提出了进一步的要求;
  • 既有云安全虚拟化安全运行的要求,又有容器安全沙箱,可信安全沙箱的需求;
  • 既有云安全对云存储加密、云数据服务加密需求,又有对容器镜像存储加密、审计日志、应用日志加密和三方集成的需求,以及对密文密码的不落盘存储的支持。

如何保障云上数据安全?一文详解云原生全链路加密

本书亮点

  • 双11 超大规模 K8s 集群实践中,遇到的问题及解决方法详述
  • 云原生化最佳组合:Kubernetes+容器+神龙,实现核心系统 100% 上云的技术细节
  • 双 11 Service Mesh 超大规模落地解决方案

“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术圈。”