

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon Security Sake 中的数据保护
<a name="data-protection"></a>

[责任 AWS 共担模式](https://aws.amazon.com/compliance/shared-responsibility-model/)适用于亚马逊安全湖中的数据保护。如本模型所述 AWS ，负责保护运行所有内容的全球基础架构 AWS Cloud。您负责维护对托管在此基础结构上的内容的控制。您还负责您所使用的 AWS 服务 的安全配置和管理任务。有关数据隐私的更多信息，请参阅[数据隐私常见问题解答AWS](https://aws.amazon.com/compliance/data-privacy-faq/)条款。 有关欧洲数据保护的信息，请参阅[通用数据保护条例（GDPR）中心](https://aws.amazon.com/compliance/gdpr-center/)。

出于数据保护目的，我们建议您保护 AWS 账户 凭证并使用 AWS IAM Identity Center 或 AWS Identity and Access Management (IAM) 设置个人用户。这样，每个用户只获得履行其工作职责所需的权限。还建议您通过以下方式保护数据：
+ 对每个账户使用多重身份验证（MFA）。
+ 用于 SSL/TLS 与 AWS 资源通信。我们要求使用 TLS 1.2，建议使用 TLS 1.3。
+ 使用设置 API 和用户活动日志 AWS CloudTrail。有关使用 CloudTrail 跟踪捕获 AWS 活动的信息，请参阅*AWS CloudTrail 用户指南*中的[使用跟 CloudTrail 踪](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html)。
+ 使用 AWS 加密解决方案以及其中的所有默认安全控件 AWS 服务。
+ 使用高级托管安全服务（例如 Amazon Macie），它有助于发现和保护存储在 Amazon S3 中的敏感数据。
+ 如果您在 AWS 通过命令行界面或 API 进行访问时需要经过 FIPS 140-3 验证的加密模块，请使用 FIPS 端点。有关可用的 FIPS 端点的更多信息，请参阅《美国联邦信息处理标准（FIPS）第 140-3 版》[https://aws.amazon.com/compliance/fips/](https://aws.amazon.com/compliance/fips/)。

强烈建议您切勿将机密信息或敏感信息（如您客户的电子邮件地址）放入标签或自由格式文本字段（如**名称**字段）。这包括你 AWS 服务 使用控制台、API 或 AWS SDK 与 Security Lake 或其他人合作时。 AWS CLI在用于名称的标签或自由格式文本字段中输入的任何数据都可能会用于计费或诊断日志。如果您向外部服务器提供 URL，强烈建议您不要在网址中包含凭证信息来验证对该服务器的请求。

## 静态加密
<a name="encryption-rest"></a>

Amazon Security Lake 使用 AWS 加密解决方案安全地存储您的静态数据。原始安全日志和事件数据存储在特定于源的多[租户亚马逊简单存储服务 (Amazon S3) Simple Storage S3 存储](https://docs.aws.amazon.com/AmazonS3/latest/userguide/common-bucket-patterns.html#multi-tenant-buckets)桶中，该存储桶由安全湖管理的账户。每个日志源都有自己的多租户存储桶。Security Lake 使用来自 AWS Key Management Service (AWS KMS) 的[AWS 自有密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)对这些原始数据进行加密。 AWS 拥有的密钥是 AWS 服务（在本例中为 Securit AWS KMS y Lake）拥有和管理的密钥集合，供多个账户使用。 AWS 

Security Lake 对原始日志和事件数据运行提取、转换和加载（ETL）任务。

ETL 任务完成后，Security Lake 会在您的账户中创建单租户 S3 存储桶（您在其中启用 Security Lake AWS 区域 的每个存储桶对应一个存储桶）。在 Security Lake 能够可靠地将数据传输到单租户 S3 存储分段之前，数据只能暂时存储在多租户 S3 存储桶中。单租户桶包含一个基于资源的策略，该策略授予 Security Lake 向桶写入日志和事件数据的权限。要加密 S3 存储桶中的数据，您可以选择[S3-managed 加密密钥](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)或[客户托管密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)（来自 AWS KMS）。两者都使用对称加密。

### 使用 KMS 密钥加密您的数据
<a name="customer-managed-key"></a>

默认情况下，由 Security Lake 传输到您的 S3 存储桶的数据通过亚马逊服务器端加密使用[亚马逊 S3-managed 加密密钥 (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html) 进行加密。要提供您可以直接管理的安全层，您可以改为使用[服务器端加密和 Security Lake 数据的 AWS KMS 密钥 (SSE-KMS)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)。

SSE-KMS Security Lake 控制台不支持。要 SSE-KMS 与 Security Lake API 或 CLI 一起使用，您需要先[创建 KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)或使用现有密钥。您需要向密钥附加一个策略，规定哪些用户可以使用该密钥加密和解密 Security Lake 数据。

如果使用客户托管密钥来加密写入到 S3 存储桶的数据，则无法选择多区域密钥。对于客户托管密钥，Security Lake 将通过向 AWS KMS发送 `CreateGrant` 请求来代表您创建[授权](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)。中的授权 AWS KMS 用于授予 Security Lake 访问客户账户中的 KMS 密钥的权限。

Security Lake 需要该授权才能将客户托管密钥用于以下内部操作：
+ 向发送`GenerateDataKey`请求 AWS KMS 以生成由您的客户托管密钥加密的数据密钥。
+ 向`RetireGrant`... 发送请求 AWS KMS。当您对数据湖进行更新时，此操作将导致添加到 AWS KMS 密钥以用于 ETL 处理的授权停用。

Security Lake 不需要 `Decrypt` 权限。当密钥的授权用户读取 Security Lake 数据时，S3 将管理解密，授权用户可以读取未加密形式的数据。但是，订阅用户需要 `Decrypt` 权限才能使用源数据。有关订阅用户的更多信息，请参阅[管理 Security Lake 订阅用户的数据访问权限](subscriber-data-access.md)。

如果要使用现有的 KMS 密钥来加密 Security Lake 数据，则必须修改 KMS 密钥的密钥策略。密钥策略必须允许与 Lake Formation 数据湖位置关联的 IAM 角色使用 KMS 密钥解密数据。有关如何更改 KMS 密钥的密钥策略的说明，请参阅 AWS Key Management Service 开发人员指南中的[更改密钥策略](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying.html)。

创建密钥策略或使用具有适当权限的现有密钥策略时，您的 KMS 密钥可以接受授权请求，从而允许 Security Lake 访问该密钥。有关创建密钥策略的说明，请参阅《AWS Key Management Service 开发人员指南》**中的[创建密钥策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-overview.html)。

将以下密钥策略附加到您的 KMS 密钥：

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/ExampleRole"},
  "Action": [
    "kms:CreateGrant",
    "kms:DescribeKey",
    "kms:GenerateDataKey"
  ],
  "Resource": "*"
}
```

### 使用客户托管密钥时所需的 IAM 权限
<a name="iam-permissions-key"></a>

有关使用 Security Lake 时需要创建的 IAM 角色的概述，请参阅[入门：先决条件](get-started-programmatic.md#prerequisites)部分。

添加自定义源或订阅用户时，Security Lake 会在您的账户中创建 IAM 角色。这些角色将与其他 IAM 身份共享。它们允许自定义源向数据湖写入数据，并允许订阅用户使用数据湖中的数据。名为的 AWS 托管策略`AmazonSecurityLakePermissionsBoundary`设置了这些角色的权限边界。

### 加密 Amazon SQS 队列
<a name="encrypt-sqs-queues"></a>

创建数据湖时，Security Lake 会在委派的 Security Lake 管理员账户中创建两个未加密的 Amazon Simple Queue Service (Amazon SQS) 队列。您应该加密这些队列以保护您的数据。Amazon Simple Queue Service 提供的默认服务器端加密 (SSE) 是不够的。您必须在 AWS Key Management Service (AWS KMS) 中创建客户托管密钥来加密队列，然后授予 Amazon S3 服务主体使用加密队列的权限。有关授予这些权限的说明，请参阅[为什么 Amazon S3 事件通知没有发送到使用服务器端加密的 Amazon SQS 队列](https://repost.aws/knowledge-center/sqs-s3-event-notification-sse)？ 在 AWS 知识中心。

由于 Security Lake 用于支持 AWS Lambda 对您的数据进行提取、传输和加载 (ETL) 任务，因此您还必须向 Lambda 授予管理您的 Amazon SQS 队列中消息的权限。有关信息，请参阅《AWS Lambda 开发人员指南》**中的[执行角色权限](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html#events-sqs-permissions)。

## 传输中加密
<a name="encryption-transit"></a>

Security Lake 对 AWS 服务之间传输的所有数据进行加密。通过使用传输层安全（TLS）1.2 加密协议自动加密所有网络间数据，Security Lake 在传输中数据进出服务时对其进行保护。发送到 Security Lake API 的直接 HTTPS 请求使用 [AWS 签名版本 4 算法](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)进行签名，以建立安全连接。