带你读《从基础到应用云上安全航行指南》——万字干货教你如何保证业务数据全流程安全(2):https://developer.aliyun.com/article/1441578
四、如何保证数据在存储、传输、计算三大环节的机密性
前面介绍了通过快照、镜像备份、数据盘分区数据恢复方案、多可用区部署架构实现容灾备份的几个方案,实现对数据可用性的保证。除了数据可用性之外,数据安全另外一个至关重要的点是数据的机密性,如何去保证数据的机密性,ECS在存储、传输以及运行态计算环境在全链路环节上提供了丰富的产品安全能力和方案,以保证用户对数据机密性的诉求。
接下来会从以下三个方面进行介绍,数据存储的机密性方案,数据网络传输的机密性方案,数据运行态计算环境的机密性方案。
数据存储的机密性方案,通过以下两个维度详细展开,使用加密云盘、使用KMS自选密钥创建加密云盘。
首先我们来看一下使用加密云盘。
什么是加密云盘?
云盘加密是指在创建ECS实例的时候,或者创建单独的数据盘的时候,用户为云盘勾选加密选项,ECS采用行业标准的AES-256加密算法对云盘进行加密。创建完加密盘后,系统将会从ECS实例传输到硬盘的数据在宿主机上的存储进行自动的加密,并且在读取数据的时候自动进行解密。
用户对这系列的行为在GuestOS内数据是否加密是无感的,用户无需自建和维护密钥管理的基础设施,就可以保护数据的隐私性和自主性,为业务数据提供了安全边界。
ECS使用了对应的阿里云密钥管理服务KMS密钥管理。所以使用加密云盘前,用户需要先开通KMS密钥管理服务,才能使用ECS云盘加密功能,ECS默认使用服务密钥为用户数据进行加密,也支持用户在KMS上自选密钥为用户数据进行加密。
云盘加密中,密钥主要分为两层,并通过信封加密的机制实现对数据的加密,第一层为客户的主密钥,第二层为根据主密钥生成的数据密钥。其中,主密钥是对数据密钥进行加解密的操作和保护,数据密钥对真实数据进行加解密操作和保护。
在数据密钥落盘存储时,ECS将数据密钥明文在写入数据的时候以明文数据一同写入到存储介质中。在读取加密数据时,数据密钥的明文也会一同被读取,并先于数据进行解密。只有在数据密钥被解密之后,加密数据才能够被正常的读取。在信封加密机制中,客户主密钥受阿里云KMS提供的密钥管理基础设施的保护,实施强逻辑和物理安全控制,以防止未经授权的访问。
整个信封加密过程中,主密钥的明文不会在KMS托管的密码机之外进行存储和使用。同时,数据密钥明文仅会在用户使用的服务实例所在宿主机的内存中进行使用,永远不会以明文形式存储在任何存储介质上。
ECS的云盘加密功能为用户当前使用地域在KMS上自动创建一个用户主密钥,也就是服务密钥。服务密钥的生命周期由ECS管理,用户可以查询到该密钥,但不能删除,不能禁用,也不能进管理操作。
存储加密的常规使用场景包括创建加密的数据盘,随实例创建加密数据盘和系统盘。如右图所示的用户创盘或者创实例时,可以选择加密密钥,也可以直接使用快照或者镜像中自带的密钥创建加密盘。需要注意的是,以快照方式创建数据盘或者创建系统盘的时候,磁盘的类型是约束限制的,并不是所有的云盘类型都支持,用户可以优先选择使用ESSD类型云盘。
另外,也支持更换加密系统盘,快照、镜像的加密拷贝,加密快照与镜像的共享,在ECS全生命周期内都支持加密能力。
对于部分高安全合规要求的企业或者客户,针对企业账号下所有子账号可能要求必须要使用加密以保护数据的机密性,可以使用账号云盘默认加密的能力,或者使用RAM Policy的策略方案,限制子账号、RAM角色必须创建加密云盘,账号云盘默认加密的能力目前还在灰度阶段,可以联系产品开启试用。
接下来来详细了解一下RAM Policy强制创建加密云盘的方案的一些细节。
账号配置RAM Policy策略,强制子账号或者RAM角色创建加密云盘的具体实现原理。首先,用户需要在事前为子账号或RAM角色配置policy策略。该policy策略的逻辑需要明确定义接口的一些行为,如右图所示的RunInstances、CreateInstance、CreateDisk接口请求参数中系统盘、数据盘存在非加密云盘时,policy策略配置返回deny。
配置RAM Policy策略以后,用户在ECS新购实例以及新购云盘的时候,由ECS后台判断当前新购系统盘或者数据盘是否为加密云盘,并把判断结果返回RAM平台进行鉴权。
如图所示的会将系统盘、数据盘是否加密的结果返回RAM平台进行鉴权。ECS根据RAM平台返回的结果进行判断,若权限通过,允许继续执行,若RAM返回权限鉴权失败,终止创建流程。通过配置RAM Policy的权限策略可以限制子账号、RAM角色创建云盘时必须创建加密云盘,以满足企业的安全合规要求。
需要注意的是,加密云盘也存在一些限制。首先,加密行为不可逆,一旦创建为加密云盘,无法转化为非加密云盘。加密属性也是继承的,加密云盘创建的快照、镜像将自动继承云盘的加密属性。加密密钥一旦删除,关联的加密云盘、加密快照、加密镜像都不可恢复,数据无法找回。另外,本地盘目前还不支持加密能力。
到这里可能有一部分同学会有一个疑问,平台怎么证明用户的数据在落盘的时候是加密的?云盘的加密机制中,系统将会从ECS实例传输到宿主机的数据在磁盘IO上写数据时自动进行加密,并且在读数据时自动进行解密,用户在操作系统内读写数据时,对数据是否加密是无感的,所以会有这个疑问。
我们推荐用户在创建加密云盘的时候使用KMS自选密钥,创建加密盘成功之后,可以禁用KMS自选密钥并重启ECS实例,这个时候ECS会提示您因为您的加密云盘关联的KMS加密密钥失效,导致ECS实例无法重启。这时磁盘的数据无法正常的读写,侧面证明了用户数据在落盘的时候是加密的。
可能这里也有同学会问什么是KMS自选密钥,接下来我们详细展开了解一下使用KMS自选密钥创建加密云盘。
用户首次使用ECS创建加密盘时,会为用户在KMS创建一个服务密钥,每个用户在每个地域的服务密钥是唯一的,用户无法管理服务密钥的生命周期。服务密钥可以帮助用户获得最基本的数据保护能力。但是对有高安全要求级别的客户,还有可能存在一些密钥管理上的一些短板,例如不能自主管理密钥的生命周期,不能设定自动轮转,保护级别仅仅为软件密钥等等。
因此,用户可以选择自己创建或者上传主密钥到KMS,并且直接管理自选密钥的生命周期。使用自选密钥,用户可以获得更多的安全能力。用户可以禁用或者启用密钥控制ECS加解密数据能力,用户可以配置授权策略控制ECS加解密数据能力,用户可以通过KMS导入自带的密钥,进一步增强了密钥生命周期管理能力和控制ECS数据加解密的能力。
对于KMS自选密钥,用户还可以选择将密钥托管在硬件安全模块中,利用硬件机制保护密钥的明文材料不会离开安全边界,密码计算过程也会在硬件中进行,为用户的主密钥提高了更高层次的保护,从而保护用户密钥的机密性。
因为用户自选密钥是用户的资产,ECS必须得到用户的RAM角色授权才可以使用数据进行加解密,用户也可以随时取消相应的自选密钥的授权,达到对数据加解密操作的可控。请注意,当选择自选密钥和上述安全能力的时候,也意味着用户需要有更多的考虑己方的责任,管理好密钥的授权以及生命周期。
KMS自选密钥还支持密钥轮转的能力,建议客户开启密钥轮转能力。密钥轮转加强密钥使用的安全性,以提升业务数据的安全性。
密钥轮转有很多优点,减少每一个密钥加密的数据量,降低密码分析的攻击的风险。一个密钥的安全性以它被加密的数据量呈负相关关系。数据量通常是指一个密钥加密的数据总质结束。通过定期轮转密钥,可以使每个密钥具有更小的密码分析攻击面,使加密方案整体具有更高的安全性,提前具备响应安全事件能力。
在系统设计和实现时,引入密钥的轮转功能,使密钥轮转作为常规的系统安全管理事务,这样可以使系统在特定安全事件发生的时候具备实际执行能力,减小破坏密钥的时间窗口。
如果在定期轮转密钥的基础上,在旧密钥加密的密文数据用新密钥重新加密。则轮转周期即为一个密钥的一个破解的窗口,这意味着恶意者只能在两次密钥轮转之间完成破解才能拿到数据,对保护数据不受密码分析攻击风险具有很强的实际意义。另外,满足合规要求密钥的周期性轮转功能可以方便企业符合各种合规规范。密钥轮转的实现原理是密钥支持多个密钥版本。
同一个密钥下,多个密钥版本在密码学上互不相关。KMS通过生成一个新的密钥版本来实现密钥的轮转。密钥创建后,KMS生成初始密钥版本,并将其设置为主版本,轮转后会生成一个新的密钥版本,并将新的版本设置为主版本。密钥轮转仅新增密钥版本,密钥ID、密钥ARN、别名等属性不会改变。KMS不会删除任何密钥版本,密钥版本紧随密钥的删除而删除。
使用KMS自选密钥创建加密云盘时也存在一些限制。创建自选密钥时,KMS加密密钥必须为对称密钥,比如AES-256、SM4。使用自选密钥的时候,仅对称密钥支持密钥轮转的能力。使用自选密钥的时候,必须授予ECS云资源KMS加密密钥相关访问权限。KMS加密密钥必须是有效状态的,禁用、过期、计划、删除等状态无法正常使用,失效状态下密钥关联的加密ECS资源无法保证可靠性。
除了数据存储机密性之外,一些是在数据传输机密性上也提供了很多产品安全能力,会从以下三个维度详细展开,使用安全加固模式访问实例元数据,使用VPN网关安全访问,使用HTTPS访问ECS资源。
首先来看一下加固模式访问实例元数据。
什么是实例元数据,ECS实例元数据是指在ECS内部通过访问元数据服务Metadata Service获取实例的属性信息。实例元数据可以用来配置或者管理正在运行的ECS实例,ECS实例的IP地址、网卡、Mac地址、操作系统属性等等都是属于元数据信息。
普通模式访问与加固模式访问有什么区别,在普通模式访问Metadata Service查看实例元数据时没有任何身份验证。如果实例或者实例元数据中包含敏感信息,容易在传输链路中遭到窃听或者泄露。如果ECS的服务存在SSRF漏洞,攻击者可以利用Metaserver的数据获取STS token,导致类似AK泄露的风险。
相比于普通模式,加固模式基于token的鉴权访问实例数据对SSRF攻击有更好的防范效果。
加固模式具有三个特点:
∙ 一是短时效性,访问凭证有效期最短为一秒,最长为六个小时,超过有效期将自动失效,需要进行重新获取;
∙ 第二是绑定实例,仅适用于一台实例,如果将凭证复制到其他实例中使用,会被拒绝访问;
∙ 第三是不接受代理访问,请求图中包含X-Forwarded-For元数据访问服务器信息会拒绝签发访问凭证。因此,强烈建议用户使用加固模式来访问Metaserver获取元数据信息。
这里访问Metaserver需要分两步,第一步是获取元数据服务访问凭证,可以通过传递参数来设置token的访问有效期,例子中为30秒钟,超过有效期后需要重新颁发凭证,否则无法获取实例元数据。第二步使用访问凭证获取ECS实例元数据。
开启加固模式访问ECS实例数据的方法也很简单,可以通过Open API开启加固模式访问元数据。后续也可以通过控制台开启仅加固模式。对于新创建实例可以通过RunInstances接口指定HttpTokens参数为required进行开启,对已有实例也可以ModifyInstanceMetadataOptions接口指定HttpTokens参数为required开启。
不过需要注意的是,使用仅加固模式也存在一些限制,仅加固模式访问实例元数据要求镜像支持cloud-init 23.2.2以上版本。当前支持仅加固模式的镜像版本,像Alma Linux8/9、Centos Stream8/9、Rocky8/9、Debian12、Fedora38等等。对于不支持镜像版本开启仅加固模式,可能导致cloud-init初始阶段初始化内容失败、实例启动失败、修改密码失败等等问题。
除了加固模式访问实例元数据之外,还可以使用VPN保证数据传输的机密性。
什么是VPN网关?
VPN网关可以通过建立加密隧道的方式实现企业本地数据、企业办公网络、互联网客户端,以阿里云专有网络VPC之间的一个安全可靠的私网连接。VPN使用网络密钥交互和IP协议层安全结构IPsec协议对传输数据进行加密,从合保护数据的安全可信。
VPN网关主要提供两种网络连接方式,IPsec-VPN和SSL-VPN,IPsec-VPN主要用于本地数据中心和阿里云之间的流量加密,SSL-VPN主要用于客户端与阿里云之间的流量。它们分别实现的原理是什么。
IPsec-VPN常在本地数据中心与阿里云之间传输,进行加密。它的实现原理是每一个待传输的数据包在传输数据之前都使用IPsec协议对数据进行加密、数据认证,确保数据的完整性。数据的加密算法采用了是AES、DES等国际行业标准的加密算法,使用SHA、MD5等等国际行业标准的哈希函数进行身份认证。也可以选择指定的加密算法以及认证算法。
SSL-VPN通常是在客户端与阿里云之间进行传输加密的,它的实现原理是通过客户端安装SSL证书实现客户端VPN网关之间建立。链接通过SSL链接传输的流量会使用SSL协议加密,最终达到数据加密、身份认证、确保数据完整性的目的。SSL-VPN连接默认支持AES-128-CBC加密算法,也可以选择AES-192-CBC和AES-256-CBC加密算法。
数据传输机密性上,刚刚讲了使用加固模式访问实例元数据、使用VPN网关安全访问,另外一个重要的点是使用HTTPS访问ECS资源。
HTTP协议无法加密数据,数据传输时可能产生泄露、篡改、钓鱼攻击等等问题。使用HTTPS协议加密连接可以为您的网站进行安全加锁,保证数据安全传输,同时满足对应APP市场或者应用生态安全合规要求。
ECS控制台使用HTTPS进行加密传输,并且支持HTTPS的API访问点,并提供256位密钥的传输加密强度,满足敏感信息加密的传输要求。使用ECS会话管理登录实例会使用SSH密钥对登录实例,使用云助手对实例进行远程访问均已使用TLS加密。
您需要负责使用传输层、安全性等加密协议在客户端与ECS实例之间传输的敏感信息进行加密。阿里云提供了acs:SecureTransport配置方案,开启配置后,用户只允许通过HTTPS访问ECS。
如图所示的通过配置RAM Policy策略,您可以限制子账号或RAM角色只能通过HTTPS访问ECS资源,我们强烈建议您开启acs:SecureTransport限制子账号只允许HTTPS访问,并且建议您使用TLS1.2以上版本与ECS资源进行通信。
阿里云还提供了SSL证书服务,由权威机构颁发的可信证书,具备网站身份认证、加密传输双重功能。阿里云的SSL证书服务支持包括SSL证书的协助部署、SSL证书部署到阿里云产品以及第三方平台SSL证书管理、域名监控、多年期SSL证书订阅模式等等功能。
除了数据存储的机密性、数据传输的机密性之外,数据运行态计算环境的机密性也是至关重要的。
ECS计算安全实例通过技术手段,包括硬件加密、隔离、用户审计能力,提供安全可靠的隔离技术环境,并且在这个基础上提供了不同等级的安全保护能力。当前ECS的计算安全实例主要提供了默认内存加密的规格实例、可信计算规格的规格实例、机密计算的规格实例这三种。
默认内存加密规格实例,内存加密可以加强内存数据的抗物理攻击能力,进一步提升ECS数据的安全性。您无需对操作系统以及应用进行任何改动,即可享受更高一级等级的安全防护。
可信计算规格实例,可信实例底层物理服务器搭载可信平台模块TPM作为硬件可信跟实现服务器的可信启动确保零篡改,并且在虚拟化层面支持虚拟可信的vTPM,提供实例可信启动核心组件的校验能力。
机密计算能力:通过CPU硬件加密及隔离能力,机密计算规格可以通过CPU硬件加密及隔离的能力,提供了可信执行环境,保护数据不受未授权第三方的修改。此外,您还可以通过远程证明服务等方式验证云平台实例是否处于预期的安全状态。
机密计算规格实例,主要包括两种安全能力,Enclave安全能力以及机密虚拟机安全能力。
阿里云基于Intel SGX 2.0与阿里云的虚拟化业务提供了机密计算能力,这个能力可以将可信根大大减小,降低业务可能受攻击的影响范围,可支持用户打造更高安全等级的一个机密计算环境。机密虚拟机安全能力,机密虚拟机可以在没有任何应用代码更改的情况下,将原有的敏感业务以加密预算的方式运行在云上,可以满足对敏感信息保护的要求。当前阿里云是基于英特尔TDX、AMD SEV和海光CSV的机密虚拟机能力。
可信计算用于实现云租户计算环境的底层高等级安全的主要功能之一,通过在硬件平台上引入可信平台模块TPM,构建涵盖了系统启动和用户指定应用的信任链,并实现远程证明机制,为用户提供了针对环境启动阶段和运行阶段的全方位可信保证,在系统和应用中加入可信验证,能够减少由于使用未知或遭到篡改的系统软件攻击的可能性。
可信计算实现的原理如右图所示的,可信实例基于硬件的TPM可信根,通过UEFI安全固件,软件层面实现了虚拟可行平台的vTPM远程证明服务实例,实现启动度量和完整性校验,从而保证了实例的安全可信。可信计算为您的ECS实例提供了可验证的完整性,以确保实例未受到启动级或内核级恶意软件或Rootkit的侵害。
除了可信计算规格实例外,我们还提供了丰富的机密计算实力规格,包含 Intel® SGX、Intel® TDX、AMD SEV、海光CSV虚拟化技术以及虚拟化Enclave 技术的安全增强实力规格。
Intel® SGX与硬件安全保障信息安全,不依赖固件软件的安全动态为用户提供物理级的机密计算环境。SGX通过新的指令级扩展和访问控制机制,实现SGX程序的隔离运行,保证关键代码和数据的机密性与完整性不受恶意软件的破坏。不同于其他安全技术,SGX的可信根仅包括硬件,避免了基于软件的可信根可能自身存在的安全漏洞的缺陷,极大的提升了系统安全保障能力。
Intel® TDX是一项基于CPU硬件的ECS保护技术。TDX实现的是CPU寄存器、内存数据中断处理等经受CPU硬件的保护,云厂商和外部攻击无法监控和篡改TDX实例内的运行状态,包括运行的进程、计算中的敏感数据。
海光安全加密虚拟化CSV是一项基于海光国产CPU硬件的ECS保护技术。CSV实例的运行状态,如内存数据均受CPU硬件的机密保护,云厂商和外部攻击者均无法监控和定向篡改CSV实例的内部运行状态,包括运行的进程、计算中的敏感数据。
虚拟化Enclave在ECS实例内部提供了一个可信的隔离环境,将合法软件的安全操作分装在Enclave中,保护您的代码和数据的机密性和完整性,不受恶意攻击者的攻击。虚拟化Enclave提供的安全性有多个方面组成,底层基于带有TPM芯片的第三代神农架构,且为EVM提供了vTPM设备带来的增强安全性、可信能力,上层提供了高兼容性的SDK,方便您快速搭建Enclave环境并使用。
在可信证明能力方面,您可以对运行的机密计算环境的代码进行验证,例如借助SDK机密应用在运行生成证明材料,再通过远程证明服务验证证明材料的有效性。
当主VM切分资源给EVM边时,并且EVM开始运行时,底层会执行资源访问隔离。确保主VM无法访问这些已经分出去的为CPU和内存资源,保护EVM的正常运行和私密性。
刚刚提到了远程证明服务,什么是远程证明服务?阿里云远程证明服务是以背调模型为基础,可以验证阿里云安全增强型ECS实例的安全状态和可信。
具体证明如右图所示的,证明者在ECS实例中收集和生成证据。证明者将证据传递给依赖方,依赖方将其直接转发给验证方,验证方将证据与其评估策略进行比较,验证方将证明结果返回给依赖方,依赖方将证明结果与自己的评估策略进行比较。
在验证过程中,证明结果由可信的验证方通过安全性到传递给依赖方,因此安全性较高。在基于背调模型的阿里云远程证明服务设计中,除了支持依赖方中转证据以外,还支持证明服务者直接将证据传递给证明服务,依赖方可以随时向远程证明服务查询特定的实体的证明结果。
这种方式可以大大降低依赖方的负载,并有利于管理员集中管理所有实体的状态。介绍了数据运行态机密计算环境,包括了内存加密、可信计算、机密计算、远程证明服务。如果您对数据运行态机密计算环境的感兴趣,在后续的安全topic中,会由我的其他同事进行专项分享。
五、总结
前面从信息安全的三要素完整性、可用性、机密性展开,介绍了很多数据安全的产品、安全能力以及建议。
数据完整性上,介绍了云平台自身如何保证数据的完整性,包括了数据安全擦除机制。数据安全擦除机制中,分布式快速组系统中已删除的数据一定会被完全擦除,保证数据擦除的完整性,数据全链路的CRC完整性校验,且会定期对存储介质中的数据进行完整性的扫描,以保证数据全链路的完整性,通过云盘三副本技术实现在部分物理硬件故障时,ECS实例依旧保持九个九的数据可靠性。
数据可用性上,我们建议客户对关键业务数据备份以恢复以保证数据的可用性。具体方案是使用快照、自动快照策略、主动备份硬盘数据,并利用快照回滚硬盘、快照创建新盘的方式恢复数据,使用自定义镜像对整机数据包括操作系统、预装软件、云盘数据等进行备份,并通过镜像创建新的ECS实例以达到恢复数据的目的。使用数据盘分区数据丢失恢复方案,恢复分区以及恢复数据。但是这是处理数据丢失问题的最后一道防线,并不能保证一定能够找回。使用多可能区部署架构与确保在单个节点发生故障时整体服务依旧不受影响,达到容灾恢复的一个效果。
数据机密性上,建议客户数据在存储、传输、计算前链路进行加密,以保证数据的机密性。具体的方案是使用加密云盘以保证数据的隐私性和自主性,为业务数据提供安全边界,使用KMS自选密钥实现自主管理密钥的生命周期,密钥自动轮转以及提高密钥保护级别,使用加固模式访问实例元数据,防止被SSRF攻击后实例元数据被获取的风险。使用VPN网关对企业本地数据中心、企业办公网络、互联网客户端与阿里云的VPC之间数据进行加密,保证数据的安全可信。
另外,启用SecureTransport 配置,并使用可信的HTTPS协议连接访问的ECS资源,保证数据的安全传输。使用基于硬件TPM/TCM可信根的可信规格实例,实现实例启动度量和完整性校验,从而保障实例的安全可信,使用基于CPU硬件加密及隔离能力的机密计算实例规格,提供可信计算环境,保护数据不受未授权第三方的修改,使用远程服务证明平台的可信度和平台中运行代码的完整性。
数据安全从来不是一个点的安全,需要多维度的纵深安全防御。
以上就是本节课程的全部内容。