

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

# 以编程方式启用安全湖
<a name="get-started-programmatic"></a>

本教程介绍如何以编程方式启用和开始使用 Security Lake。Amazon Security Lake API 让您能够以编程方式全面访问您的安全湖账户、数据和资源。或者，您可以使用 AWS 命令行工具（或[用于](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-welcome.html)的工具 PowerShell）[AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)或[AWS SDKs](https://aws.amazon.com/developertools/)来访问 Security Lake。AWS 

## 步骤 1：创建 IAM 角色
<a name="prerequisites"></a>

如果您以编程方式访问 Security Lake，则需要创建一些 AWS Identity and Access Management (IAM) 角色才能配置您的数据湖。

**重要**  
如果您使用 Security Lake 控制台启用和配置 Security Lake，则无需创建这些 IAM 角色。

如果您要执行以下一项或多项操作，则必须在 IAM 中创建角色（选择链接以查看有关每个操作的 IAM 角色的更多信息）：
+ [创建自定义来源](custom-sources.md#iam-roles-custom-sources)：自定义来源是指除原生支持的 AWS 服务 之外的其他向安全湖发送数据的来源。
+ [创建具有数据访问权限的订阅用户](prereqs-creating-subscriber.md#iam-role-subscriber)：拥有权限的订阅用户可以直接从您的数据湖访问 S3 对象。
+ [创建具有查询权限的订阅用户](prereqs-query-subscriber.md#iam-role-query-subscriber)：拥有权限的订阅用户可以使用诸如 Amazon Athena 之类的服务查询来自 Security Lake 的数据。
+ [配置汇总区域](add-rollup-region.md#iam-role-replication)：汇总区域合并来自多个 AWS 区域的数据。

创建前面提到的角色后，将[https://docs.aws.amazon.com/security-lake/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonSecurityLakeAdministrator](https://docs.aws.amazon.com/security-lake/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonSecurityLakeAdministrator) AWS 托管策略附加到您用于启用 Security Lake 的角色。此策略授予管理权限，允许主体登录到 Security Lake 并访问所有 Security Lake 操作。

附加[https://docs.aws.amazon.com/security-lake/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonSecurityLakeAdministrator](https://docs.aws.amazon.com/security-lake/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonSecurityLakeAdministrator) AWS 托管策略以创建您的数据湖或从 Security Lake 查询数据。Security Lake 需要使用此策略来支持对从源收到的原始日志和事件数据进行提取、转换和加载 (ETL) 作业。

## 第 2 步：启用 Amazon 安全湖
<a name="enable-service-programmatic"></a>

要以编程方式启用安全湖，请使用安全湖 API 的[https://docs.aws.amazon.com/security-lake/latest/APIReference/API_CreateDataLake.html](https://docs.aws.amazon.com/security-lake/latest/APIReference/API_CreateDataLake.html)操作。如果您使用的是 AWS CLI，请运行该[create-data-lake](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/securitylake/create-data-lake.html)命令。在您的请求中，使用 `configurations` 对象的 `region` 字段为要在其中启用 Security Lake 的区域指定区域代码。有关区域代码的列表，请参阅 *AWS 一般参考* 中的 [Amazon Security Lake 端点](https://docs.aws.amazon.com/general/latest/gr/securitylake.html)。

**示例 1**

以下示例命令在`us-east-1`和`us-east-2`区域中启用安全湖。在这两个区域中，该数据湖均使用 Amazon S3 托管密钥进行加密。对象在 365 天后过期，对象在 60 天后过渡到 `ONEZONE_IA` S3 存储类别。此示例是针对 Linux、macOS 或 Unix 进行格式化的，它使用反斜杠（\$1）行继续符来提高可读性。

```
$ aws securitylake create-data-lake \
--configurations '[{"encryptionConfiguration": {"kmsKeyId":"S3_MANAGED_KEY"},"region":"us-east-1","lifecycleConfiguration": {"expiration":{"days":365},"transitions":[{"days":60,"storageClass":"ONEZONE_IA"}]}}, {"encryptionConfiguration": {"kmsKeyId":"S3_MANAGED_KEY"},"region":"us-east-2","lifecycleConfiguration": {"expiration":{"days":365},"transitions":[{"days":60,"storageClass":"ONEZONE_IA"}]}}]' \
--meta-store-manager-role-arn "arn:aws:iam:us-east-1:123456789012:role/service-role/AmazonSecurityLakeMetaStoreManager"
```

**示例 2**

以下示例命令在`us-east-2`区域中启用安全湖。此数据湖使用在 AWS Key Management Service (AWS KMS) 中创建的客户托管密钥进行加密。对象在 500 天后过期，对象在 30 天后转换到 `GLACIER` S3 存储类别。此示例是针对 Linux、macOS 或 Unix 进行格式化的，它使用反斜杠（\$1）行继续符来提高可读性。

```
$ aws securitylake create-data-lake \
--configurations '[{"encryptionConfiguration": {"kmsKeyId":"1234abcd-12ab-34cd-56ef-1234567890ab"},"region":"us-east-2","lifecycleConfiguration": {"expiration":{"days":500},"transitions":[{"days":30,"storageClass":"GLACIER"}]}}]' \
--meta-store-manager-role-arn "arn:aws:iam:us-east-1:123456789012:role/service-role/AmazonSecurityLakeMetaStoreManager"
```

**注意**  
如果您已经启用了 Security Lake，并且想要更新某个区域或来源的配置设置，请使用[https://docs.aws.amazon.com/security-lake/latest/APIReference/API_UpdateDataLake.html](https://docs.aws.amazon.com/security-lake/latest/APIReference/API_UpdateDataLake.html)操作，或者如果使用 AWS CLI，则使用[update-data-lake](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/securitylake/update-data-lake.html)命令。不要使用该`CreateDataLake`操作。

## 步骤 3：配置源
<a name="define-collection-objective-programmatic"></a>

Security Lake 会从您的 AWS 账户 和 AWS 区域中的各种来源收集日志和事件数据。按照以下说明指定您希望 Security Lake 收集哪些数据。您只能使用这些说明将原生支持的 AWS 服务 添加为来源。有关添加自定义来源的更多信息，请参阅[从 Security Lake 中的自定义来源收集数据](custom-sources.md)。

要以编程方式定义一个或多个集合源，请使用 Security Lake API 的[CreateAwsLogSource](https://docs.aws.amazon.com/security-lake/latest/APIReference/API_CreateAwsLogSource.html)操作。对于每个来源，请为 `sourceName` 参数指定区域唯一的值。（可选）使用其他参数将来源的范围限制为特定账户 (`accounts`) 或特定版本 (`sourceVersion`)。

**注意**  
如果您在请求中未包含可选参数，Security Lake 会根据您排除的参数，将请求应用到指定来源的所有账户或所有版本。例如，如果您是组织委托的 Security Lake 管理员，并且您排除 `accounts` 参数，则 Security Lake 会将请求应用于组织中的所有账户。同样，如果您排除 `sourceVersion` 参数，Security Lake 会将请求应用于指定来源的所有版本。

如果请求指定了您尚未启用 Security Lake 的区域，则会发生错误。要解决此错误，请确保 `regions` 数组仅指定您已启用 Security Lake 的区域。或者，您也可以在区域中启用 Security Lake，然后再次提交请求。

首次在账户中启用 Security Lake 时，所有选定的日志和事件来源都将包含在 15 天免费试用期内。有关使用情况统计数据的信息，请参阅[查看使用量和估算费用](reviewing-usage-costs.md)。

## 步骤 4：配置存储设置和汇总区域（可选）
<a name="define-target-objective-programmatic"></a>

您可以指定 Security Lake 用来存储数据的 Amazon S3 存储类以及存储多长时间。您也可以指定一个汇总区域，以整合来自多个区域的数据。这些是可选步骤。有关更多信息，请参阅 [Security Lake 中的生命周期管理](lifecycle-management.md)。

要在启用 Security Lake 时以编程方式定义目标目标，请使用 Security Lake API 的[https://docs.aws.amazon.com/security-lake/latest/APIReference/API_CreateDataLake.html](https://docs.aws.amazon.com/security-lake/latest/APIReference/API_CreateDataLake.html)操作。如果您已经启用 Security Lake 并想要定义目标目标，请使用[https://docs.aws.amazon.com/security-lake/latest/APIReference/API_UpdateDataLake.html](https://docs.aws.amazon.com/security-lake/latest/APIReference/API_UpdateDataLake.html)操作而不是`CreateDataLake`操作。

对于任一操作，请使用受支持的参数来指定所需的配置设置：
+ 要指定汇总区域，请使用该`region`字段指定要向汇总区域提供数据的区域。在`replicationConfiguration`对象的`regions`数组中，为每个汇总区域指定区域代码。有关区域代码的列表，请参阅 *AWS 一般参考* 中的 [Amazon Security Lake 端点](https://docs.aws.amazon.com/general/latest/gr/securitylake.html)。
+ 要为数据指定留存期设置，请使用 `lifecycleConfiguration` 参数：
  + 对于 `transitions`，请指定要在特定 Amazon S3 存储类 (`storageClass`) 中存储 S3 对象的总天数 (`days`)。
  + 对于 `expiration`，可以使用任意存储类指定对象创建后在 Amazon S3 中存储对象的总天数。此留存期结束后，对象将过期，Amazon S3 会将其删除。

  Security Lake 会将指定的留存期设置应用于您在 `configurations` 对象的 `region` 字段中指定的区域。

例如，以下命令创建一个以汇总区域`ap-northeast-2`为数据湖。该`us-east-1`地区将向该`ap-northeast-2`地区提供数据。此示例还为添加到数据湖中的对象设定了 10 天的过期期。

```
$ aws securitylake create-data-lake \
--configurations '[{"encryptionConfiguration": {"kmsKeyId":"S3_MANAGED_KEY"},"region":"us-east-1","replicationConfiguration": {"regions": ["ap-northeast-2"],"roleArn":"arn:aws:iam::123456789012:role/service-role/AmazonSecurityLakeS3ReplicationRole"},"lifecycleConfiguration": {"expiration":{"days":10}}}]' \
--meta-store-manager-role-arn "arn:aws:iam::123456789012:role/service-role/AmazonSecurityLakeMetaStoreManager"
```

现在，您已经创建了数据湖。使用 Security Lake API 的[https://docs.aws.amazon.com/security-lake/latest/APIReference/API_ListDataLakes.html](https://docs.aws.amazon.com/security-lake/latest/APIReference/API_ListDataLakes.html)操作来验证每个区域中是否启用了安全湖和您的数据湖设置。

如果在创建数据湖时出现问题或错误，则可以使用该[https://docs.aws.amazon.com/security-lake/latest/APIReference/API_ListDataLakeExceptions.html](https://docs.aws.amazon.com/security-lake/latest/APIReference/API_ListDataLakeExceptions.html)操作查看异常列表，并将[https://docs.aws.amazon.com/security-lake/latest/APIReference/API_CreateDataLakeExceptionSubscription.html](https://docs.aws.amazon.com/security-lake/latest/APIReference/API_CreateDataLakeExceptionSubscription.html)操作的异常通知用户。有关更多信息，请参阅 [对数据湖状态进行故障排除](securitylake-data-lake-troubleshoot.md)。

## 第 5 步：查看和查询您自己的数据
<a name="explore-data-lake-programmatic"></a>

创建数据湖后，您可以使用 Amazon Athena 或类似服务查看和查询数据库和表 AWS Lake Formation 中的数据。当您以编程方式启用 Security Lake 时，不会自动授予数据库查看权限。中的数据湖管理员账户 AWS Lake Formation 必须向要用于查询相关数据库和表的 IAM 角色授予`SELECT`权限。该角色必须至少拥有*数据分析师*权限。有关权限级别的更多信息，请参阅 [Lake Formation 角色和 IAM 权限参考](https://docs.aws.amazon.com/lake-formation/latest/dg/permissions-reference.html)。有关授予 `SELECT` 权限的说明，请参阅《*AWS Lake Formation 开发人员指南》*中的[使用命名的资源方法授予数据目录权限](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-cat-perms-named-resource.html)。

## 步骤 6：创建订阅者
<a name="subscribe-data-programmatic"></a>

创建数据湖后，您可以添加订阅用户来使用您的数据。订阅用户可以通过直接访问您的 Amazon S3 存储桶中的对象或查询数据湖来使用数据。有关订阅用户的更多信息，请参阅 [安全湖中的订阅者管理](subscriber-management.md)。