上云安全话题:数据加密全攻略

本文涉及的产品
云安全中心 免费版,不限时长
简介: 云上数据安全的挑战 数据是企业的生命,对数据提供必备的保护,就是保护企业的生命,因此数据安全是企业上云的刚需。 在原来传统的IT系统中,企业是将应用系统跟数据放在自己的IDC里,认为在这样的环境下其系统和硬件、数据安全是可控的。

云上数据安全的挑战

数据是企业的生命,对数据提供必备的保护,就是保护企业的生命,因此数据安全是企业上云的刚需。

在原来传统的IT系统中,企业是将应用系统跟数据放在自己的IDC里,认为在这样的环境下其系统和硬件、数据安全是可控的。企业会花更多的成本去打造防火墙,保证逻辑上的城墙牢不可破。这就是传统的鸡蛋壳模型——在这种模型下,企业对防火墙内的数据保护是有限度和有选择的。

而如今企业上云,底层的基础设施是共享的,企业不再物理上拥有对计算设施和存储设施的全盘掌控,一切都只能交给云服务提供商。分布式多租户的架构导致鸡蛋壳模型被打破。企业虽然通过在虚拟网络中构建云防火墙来防止一些外部威胁,但是云服务的本质是多租户、大规模分布式系统,企业托管在云上的数据分布于各个云产品的分布式系统中,无论是企业自身还是云服务提供商,均不能建立一个租户级别的“防火墙”把这些数据隔离起来。

所以企业要上云,对数据安全的需求会非常迫切。归根到底是环境的变化而导致了需求的优先级不一样。传统IT设施的数据安全,着重解决内部威胁(insider threat)和外部威胁(outsider threat),云上IT设施则还要解决数据托管在云厂商带来的安全与合规挑战,这并不是传统意义上的内外部威胁 - 从另一个角度看,可以被认为是云服务提供商如何提供一个可信、可控制的计算和存储托管环境。

解决方案:数据加密

那如何解决这个难题?

数据加密。

加密是一个古老的技术,有个叫潜伏的电视剧中,特务们发出的电报,在公共空间传播,谁都可以去把电波截获下来,但是他们有一个密码本,拿不到密码本,即便电波被截获下来也是枉然。

阿里云的大数据计算平台、云原生数据库、云服务器等,都支持云原生的数据加密能力,且阿里云给用户提供了密钥管理服务,通过密钥管理和云产品的数据加密功能,保证用户在云上使用这些产品时,数据都是可加密的。密钥管理服务的设计,正是为了保护好用户的“密码本”,并且安全的授权云服务或者企业自己的用户使用它来达成数据的加密保护。

1. 加密入门:可见的“默认加密”

为了更方便的让用户对低安全级别的数据进行加密保护,阿里云KMS提供了服务密钥,方便用户以最低成本实现可见的数据加密

服务密钥

由云服务(云产品)托管在KMS的,归属于用户的密钥,这类密钥用户可见,但是其生命周期由用户授权的云产品托管。云产品使用服务密钥对数据进行加解密的过程,KMS记录在用户的ActionTrail中,用户可以对其使用进行审计。

打开“默认加密”

在已经支持的云产品中,用户可以选择对应的加密功能,如果用户不进一步指定加密密钥,那么云产品就会为用户创建一个服务密钥(一个云产品为一个用户仅创建一个服务密钥),并使用此服务密钥对用户数据进行加密保护。

举个栗子:用户创建ECS云盘时,可以打开加密功能,随后并不指定具体的加密密钥。此时ECS则会使用服务密钥。

查看服务密钥

用户可以在KMS控制台,或者通过CLI、SDK、OpenAPI Explorer等等等等方式去查看服务密钥。服务密钥特征明显:其别名为acs/${云产品代码}

如下图中的别名为acs/oss的服务密钥,为OSS服务为用户创建的默认加密密钥。其生命周期由OSS服务为用户托管(例如用户不能禁用)
ba8f6e522fb34ed10ffd3eef70999783

2. 加密进阶:可见可控的全托管加密

使用服务密钥,用户实际上是通过牺牲一定的自主性,换取更低的加密成本。

如果需要有更大的可控能力,则需要在云产品服务端加密时,选择由用户自己托管在KMS中的密钥。由于云产品并不是密钥托管者,对密钥的使用需要获得用户的显式授权。RAM服务是云产品和KMS之间的权限鉴别仲裁者,用户通过RAM服务配置权限策略,允许或者拒绝云产品使用特定的主密钥,云产品访问KMS时,KMS向RAM服务验证云产品是否具备使用特定主密钥的权限。

用户可以参考各个云产品的相关文档,获取进一步信息了解如何使用自选密钥加密的功能。官网文档链接:服务端集成KMS加密的云产品

3. 加密高阶:可见可控的半托管加密 - Bring Your Own Key

更高级的安全能力来自于业界普遍认可的一项技术:BYOK。简而言之,BYOK是指,通过安全的方式,将用户线下生成的密钥导入到云上的KMS托管的加密机中,并且保证加密机不能导出此密钥。而用户可以随时删掉云上的密钥,保留下一次导入同一个密钥的能力。

几乎所有的加密机生产商都会提供导入密钥,且设置密钥不可被导出的能力,KMS的BYOK功能提供了用户一项可信度非常高的保证,让用户几乎可以100%控制住云上的加密密钥,用于服务端的原生数据加密。参考官网文档链接:导入密钥材料

中途小结:云产品服务端加密技术框架

不同产品基于业务形态和客户需求,其加密的具体设计略有不同。通常,存储加密中密钥层次结构会至少分为两层,并通过信封加密的机制实现对数据的加密。

第一层为KMS中的用户主密钥(CMK),第二层为数据密钥(DK)。CMK对DK进行加解密操作和保护,DK对业务数据进行加解密操作和保护。在业务数据落盘存储时,云产品会将DK的密文(由KMS使用CMK加密)与业务数据的密文(由云产品使用DK加密)一同写入持久化存储介质中。信封加密中的“信封”是指在概念上DK的密文和业务数据的密文被打包在一个“信封”(Envelope)中。在读取加密数据时,DK的密文也会一同被读取,并先于业务数据进行解密。只有在DK被解密后,密文的业务数据才能够被正常解密读取。
p64857.png
在信封加密机制中,CMK受KMS提供的密钥管理基础设施的保护。云产品必须通过恰当的用户授权,才可以使用对应的主密钥来产生DK,用于业务数据的加密,也只有通过用户授权,才可以使用对应的主密钥来解密DK的密文,用于业务数据的解密。DK的明文仅会在您使用的云产品服务实例所在的宿主机的内存中使用,不会以明文形式存储在永久介质上。

4. 加密更高阶:自己写代码调用KMS

如果用户有更敏感的数据需要保护,或者为了满足GPDR或者其他法律法规要求,必须针对特定的数据实现主动加密保护,也可以直接调用KMS的API。KMS的API使用方式的常见实践有以下两种

当然用户也可以设计更复杂的密钥层次结构和密钥分区方式,完成复杂系统的数据加密。

5. 加密最高阶:自己管理HSM集群和写代码

最有可控力的方式,是使用阿里云加密服务的加密机(也叫HSM)。使用加密服务的HSM,用户可以有独享的HSM实例。相对而言,虽然KMS也支持使用HSM来托管用户的密钥,但是KMS的HSM设施是由多租户共享的。除此之外,加密服务的HSM是由用户自主管理和控制,而KMS的HSM则是由KMS托管。

由于加密服务提供的是HSM实例,用户需要考虑以下运维能力

  • HSM的可用区分布:可用性
  • HSM中密钥持久化的存储系统:可靠性
  • HSM初始化安全参数的持久化:可靠性和安全性
  • HSM集群搭建提供负载均衡的能力:可扩展性

除此之外,由于HSM的特殊性,一些HSM厂商并不提供服务端LB的能力,需要配套的客户端LB模块。当然,可以实现LB之前,用户需要将密钥从一个HSM实例上,同步到另一个HSM实例上,否则即便是基于客户端的LB也无法工作。

如果用户需要一些高级功能,则需要自建一些额外的管理能力,例如网络鉴权规则;资源管理,标签;密钥版本管理,自动轮转等。这实际上就是要自建一套KMI了。当然,换来的是最高的云上数据的安全和隐私。

6. 配合使用加密服务和KMS

如果有必要,用户也可以配合使用加密服务和KMS:用户可以在加密服务中自主管理HSM,并且管理密钥的产生;通过安全导入密钥到KMS的托管密码机中,用户可以获得以下好处

  • 使得加密服务可以间接被用于云产品的服务端加密。
  • 可以通过KMS的密钥别名功能,实现自主加密业务的同时支持人工轮转加密密钥

参考文档

方式1:点一点按钮就加密

服务端集成KMS加密概述

服务端集成KMS加密的云产品

方式2:写代码加密

使用KMS主密钥进行在线加密、解密数据
使用KMS信封加密在本地加密、解密数据

目录
相关文章
|
3月前
|
安全 搜索推荐 前端开发
揭秘 HTTPS 加密协议:保护你的网上安全之道
揭秘 HTTPS 加密协议:保护你的网上安全之道
153 0
|
6月前
|
算法 安全 数据安全/隐私保护
互联网并发与安全系列教程(13) - 信息加密技术(对称&非对称加密)
互联网并发与安全系列教程(13) - 信息加密技术(对称&非对称加密)
35 0
|
6月前
|
安全 算法 Java
互联网并发与安全系列教程(12) - 信息加密技术(单向散列加密)
互联网并发与安全系列教程(12) - 信息加密技术(单向散列加密)
45 0
|
6天前
|
NoSQL 安全 MongoDB
MongoDB安全机制:认证、授权与加密
【4月更文挑战第30天】MongoDB提供全面的安全机制,包括认证(用户名/密码、LDAP、Kerberos、x.509证书)、授权(基于角色的访问控制,RBAC)和加密(TLS/SSL、透明数据加密TDE、字段级加密FLE),确保数据保密性、完整性和可用性。通过合理配置这些机制,企业可保障数据安全,应对不断变化的安全威胁。
|
6天前
|
安全 Java Go
【Go语言专栏】Go语言中的加密与安全通信
【4月更文挑战第30天】本文介绍了Go语言中的加密与安全通信。通过使用golang.org/x/crypto/ssh/terminal库实现终端加密,以及golang.org/x/net/websocket库实现WebSocket安全通信。文章展示了安装库的命令、加密操作及WebSocket通信的示例代码。此外,还列举了安全通信在数据传输加密、用户认证、密码保护和文件加密等场景的应用。掌握这些知识对开发安全的Web应用至关重要。
|
9天前
|
存储 安全 算法
【专栏】保护数据安全的重要性:安全加密算法在数据保护中的应用
【4月更文挑战第27天】在数字化时代,数据安全至关重要,关系到个人隐私、企业商业机密、国家安全及经济发展。安全加密算法(如对称加密、非对称加密和哈希算法)在保护数据方面发挥关键作用。它们应用于电子商务、金融、物联网、云存储和数字签名等领域,确保信息传输和存储的安全。面对日益复杂的挑战,我们需要持续研究和应用加密技术,提高数据安全意识,共同维护数字世界的繁荣与安全。
|
10天前
|
安全 算法 网络安全
|
20天前
|
SQL 安全 网络安全
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
45 0
|
2月前
|
机器学习/深度学习 安全 算法
安全多方计算之三:同态加密
安全多方计算之三:同态加密
410 42
|
3月前
|
安全 搜索推荐 API
【现代密码学】笔记 补充7-- CCA安全与认证加密《introduction to modern cryphtography》
【现代密码学】笔记 补充7-- CCA安全与认证加密《introduction to modern cryphtography》
115 0

相关产品

  • 云安全中心