云平台为客户提供技术和工具来保护他们的资产,包括最重要的资产——数据。在撰写本文时,关于谁负责保护数据存在很多争论,但一般来说,作为数据合法所有者的公司必须确保它符合(国际)法律和标准。在英国,公司必须遵守数据保护法,而在欧盟,所有公司都必须遵守通用数据保护条例( GDPR )。
数据保护法和 GDPR 都涉及隐私。国际标准 ISO/IEC 27001:2013 和 ISO/IEC 27002:2013 是涵盖数据保护的安全框架。这些标准规定所有数据都必须有一个所有者,以便明确谁负责保护数据。简而言之,在云平台上存储数据的公司仍然拥有该数据,因此有责任保护数据。
为了保护云平台上的数据,企业必须关注两个方面:
- 加密
- 访问,使用身份验证和授权
这些只是安全问题。企业还需要能够确保可靠性。他们需要确保,例如,密钥保存在数据本身以外的另一个地方,即使由于技术原因无法访问密钥保管库,仍然有办法以安全的方式访问数据。工程师不能简单地带着磁盘或 USB 设备开车到数据中心来检索数据。Azure、AWS 和 GCP 如何解决这个问题?我们将在下一节中对此进行探讨。
在 Azure 中使用加密和密钥
在 Azure 中,用户将数据写入 blob 存储。存储由自动生成的存储密钥保护。存储密钥保存在存储本身所在的子网之外的密钥保管库中。但密钥保管库不仅仅存储密钥。它还通过轮换定期重新生成密钥,提供共享访问签名( SAS ) 令牌来访问存储帐户。概念如下图所示:
图 1:Azure Key Vault 的概念
Microsoft Azure 强烈推荐使用 Key Vault 来管理加密密钥。加密是 Azure 中的一个复杂域,因为 Microsoft 在 Azure 中提供了多种加密服务。可以使用 BitLocker 或适用于 Linux 系统的 DM-Crypt 对 Azure 中的磁盘进行加密。使用 Azure,存储服务加密( SSE ) 数据可以在存储到 blob 之前自动加密。SSE 使用 AES-256。对于 Azure SQL 数据库,Azure 使用透明数据加密( TDE )为静态数据提供加密,它还使用 AES-256 和三重数据加密标准( 3DES )。
在 AWS 中使用加密和密钥
与 Azure 一样,AWS 也有一个称为密钥管理服务( KMS ) 的密钥保管库解决方案。原理也很相似,主要是使用服务端加密。服务器端意味着要求云提供商在数据存储在该云平台内的解决方案之前对数据进行加密。当用户检索数据时,数据被解密。另一种选择是客户端,客户在存储数据之前负责加密过程。
AWS 中的存储解决方案是 S3。如果客户在 S3 中使用服务器端加密,AWS 会提供 S3 托管密钥 (SSE-S3)。这些是使用主密钥加密的唯一数据加密密钥( DEK ),即密钥加密密钥( KEK )。主密钥不断地重新生成。对于加密,AWS 使用 AES-256。
AWS 通过客户主密钥( CMK )提供一些附加服务。这些密钥也在 KMS 中进行管理,提供审计跟踪以查看谁在何时使用了密钥。最后,可以选择使用客户提供的密钥( SSE-C ),客户自己管理密钥。AWS中使用CMK的KMS概念如下图所示:
图 2:在 AWS KMS 中存储 CMK 的概念
Azure 和 AWS 都在加密方面实现了很多自动化。他们对关键服务使用不同的名称,但主要原则非常相似。这对 GCP 也很重要,这将在下一节中讨论。
在 GCP 中使用加密和密钥
在 GCP 中,存储在 Cloud Storage 中的所有数据默认情况下都是加密的。就像 Azure 和 AWS 一样,GCP 提供了管理密钥的选项。这些可以由 Google 或客户提供和管理。密钥存储在Cloud Key Management Service中。如果客户选择自己提供和/或管理密钥,这些将作为 GCP 提供的标准加密之上的附加层。这在客户端加密的情况下也是有效的——数据以加密格式发送到 GCP,但 GCP 仍然会执行自己的加密过程,就像服务器端加密一样。GCP Cloud Storage 使用 AES-256 加密数据。
加密过程本身类似于 AWS 和 Azure,并使用 DEK 和 KEK。当客户将数据上传到 GCP 时,数据会被分成块。这些块中的每一个都使用 DEK 加密。这些 DEK 被发送到 KMS,在那里生成主密钥。概念如下图所示:
图 3:GCP 中的数据加密概念
在OCI和阿里云实现加密
与指定的主要公共云一样,OCI 提供使用存储在 OCI 密钥管理服务中的加密密钥加密静态数据的服务。公司也可以使用自己的密钥,但这些密钥必须符合密钥管理互操作性协议( KMIP )。加密过程就像其他云一样。首先,创建一个主加密密钥,用于加密和解密所有数据加密密钥。请记住,我们之前讨论过这些 KEK 和 DEK。可以从 OCI 控制台、命令行界面或 SDK 创建密钥。
数据可以加密并存储在块存储卷、对象存储或数据库中。显然,OCI 也建议将密钥轮换作为最佳实践。
客户自己生成的密钥保存在 OCI Vault 中,并存储在弹性集群中。
阿里云步骤相同。从控制台或 CLI 创建密钥,然后将加密数据存储在阿里云提供的一种存储服务中:OSS、Apsara File Storage 或数据库。
到目前为止,我们一直在关注数据本身、数据存储、数据加密以及数据访问安全。架构师的任务之一是将其转化为原则。这是一项需要与 CIO 或首席信息安全官( CISO )一起执行的任务。最低限度的原则如下:
- 加密传输中的所有数据(端到端)
- 对所有关键业务或敏感数据进行静态加密
- 应用 DLP 并有一个矩阵,清楚地显示什么是关键和敏感数据以及需要保护到什么程度。
最后,开发用例并测试数据保护场景。创建数据模型、定义 DLP 矩阵并应用数据保护控制后,组织必须测试用户是否可以创建和上传数据,以及其他授权用户可以对该数据执行哪些操作——读取、修改或删除。这不仅适用于用户,也适用于其他系统和应用程序中的数据使用。因此,数据集成测试也是必须的。
数据策略和加密很重要,但有一件事不容忽视:加密并不能保护公司免受错误放置的身份和访问管理( IAM ) 凭据的影响。认为数据因为经过加密和安全存储而受到充分保护会给人一种错误的安全感。安全真正始于身份验证和授权。