本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
以编程方式启用安全湖
本教程介绍如何以编程方式启用和开始使用 Security Lake。Amazon Security Lake API 允许您以编程方式全面访问您的安全湖账户、数据和资源。或者,您可以使用 AWS 命令行工具(或用于的工具 PowerShell)AWS Command Line Interface或AWS SDKs
步骤 1:创建IAM角色
如果您以编程方式访问 Security Lake,则需要创建一些 AWS Identity and Access Management (IAM) 角色才能配置您的数据湖。
重要
如果您使用 Security Lake 控制台启用和配置 Security Lake,则无需创建这些IAM角色。
IAM如果您要执行以下一项或多项操作,则必须在中创建角色(选择链接以查看有关每个操作的IAM角色的更多信息):
-
创建自定义来源:自定义来源是指除原生支持的 AWS 服务 之外的其他向安全湖发送数据的来源。
-
创建具有数据访问权限的订阅用户:拥有权限的订阅用户可以直接从您的数据湖访问 S3 对象。
-
创建具有查询权限的订阅用户:拥有权限的订阅用户可以使用诸如 Amazon Athena 之类的服务查询来自 Security Lake 的数据。
-
配置汇总区域:汇总区域合并来自多个 AWS 区域的数据。
创建前面提到的角色后,附上 AmazonSecurityLakeAdministrator AWS 托管策略适用于你用于启用 Security Lake 的角色。此策略授予管理权限,允许主体登录到 Security Lake 并访问所有 Security Lake 操作。
附上 AmazonSecurityLakeMetaStoreManager AWS 托管策略,用于创建您的数据湖或从安全湖查询数据。Security Lake 需要使用此策略来支持对从源收到的原始日志和事件数据进行提取、转换和加载 (ETL) 作业。
第 2 步:启用 Amazon 安全湖
要以编程方式启用 Security Lake,请使用 CreateDataLake安全湖的运营API。如果您使用的是 AWS CLI,请运行该create-data-lakeconfigurations
对象的 region
字段为要在其中启用 Security Lake 的区域指定区域代码。有关区域代码的列表,请参阅 AWS 一般参考 中的 Amazon Security Lake 端点。
示例 1
以下示例命令在us-east-1
和us-east-2
区域中启用安全湖。在这两个区域中,该数据湖均使用 Amazon S3 托管密钥进行加密。对象在 365 天后过期,对象在 60 天后过渡到 ONEZONE_IA
S3 存储类别。此示例是针对 Linux、macOS 或 Unix 进行格式化的,它使用反斜杠 (\) 行继续符来提高可读性。
$
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 进行格式化的,它使用反斜杠 (\) 行继续符来提高可读性。
$
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 并想要更新某个区域或来源的配置设置,请使用 UpdateDataLake操作,或者如果使用 AWS CLI,则为update-data-lakeCreateDataLake
操作。
步骤 3:配置源
Security Lake 会从您的 AWS 账户 和 AWS 区域中的各种来源收集日志和事件数据。按照以下说明指定您希望 Security Lake 收集哪些数据。您只能使用这些说明将原生支持的 AWS 服务 添加为来源。有关添加自定义来源的更多信息,请参阅从 Security Lake 中的自定义来源收集数据。
要以编程方式定义一个或多个集合源,请使用 Security Lake API 的CreateAwsLogSource操作。对于每个来源,请为 sourceName
参数指定区域唯一的值。(可选)使用其他参数将来源的范围限制为特定账户 (accounts
) 或特定版本 (sourceVersion
)。
注意
如果您在请求中未包含可选参数,Security Lake 会根据您排除的参数,将请求应用到指定来源的所有账户或所有版本。例如,如果您是组织委托的 Security Lake 管理员,并且您排除 accounts
参数,则 Security Lake 会将请求应用于组织中的所有账户。同样,如果您排除 sourceVersion
参数,Security Lake 会将请求应用于指定来源的所有版本。
如果请求指定了您尚未启用 Security Lake 的区域,则会发生错误。要解决此错误,请确保 regions
数组仅指定您已启用 Security Lake 的区域。或者,您也可以在区域中启用 Security Lake,然后再次提交请求。
首次在账户中启用 Security Lake 时,所有选定的日志和事件来源都将包含在 15 天免费试用期内。有关使用情况统计数据的信息,请参阅查看使用量和估算费用。
步骤 4:配置存储设置和汇总区域(可选)
您可以指定 Security Lake 用来存储数据的 Amazon S3 存储类以及存储多长时间。您也可以指定一个汇总区域,以整合来自多个区域的数据。这些是可选步骤。有关更多信息,请参阅 Security Lake 中的生命周期管理。
要在启用 Security Lake 时以编程方式定义目标目标,请使用 CreateDataLake安全湖的运营API。如果你已经启用了 Security Lake 并想定义目标目标,请使用 UpdateDataLake操作,而不是CreateDataLake
操作。
对于任一操作,请使用受支持的参数来指定所需的配置设置:
-
要指定汇总区域,请使用该
region
字段指定要向汇总区域提供数据的区域。在replicationConfiguration
对象的regions
数组中,为每个汇总区域指定区域代码。有关区域代码的列表,请参阅 AWS 一般参考 中的 Amazon Security Lake 端点。 -
要为数据指定留存期设置,请使用
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
"
现在,您已经创建了数据湖。使用 ListDataLakes运行安全湖,API以验证每个区域是否启用了安全湖和您的数据湖设置。
如果在创建数据湖时出现问题或错误,您可以使用查看异常列表 ListDataLakeExceptions操作,并通知用户有异常情况 CreateDataLakeExceptionSubscription操作。有关更多信息,请参阅 对数据湖状态进行故障排除。
第 5 步:查看和查询您自己的数据
创建数据湖后,您可以使用 Amazon Athena 或类似服务查看和查询数据库和表 AWS Lake Formation 中的数据。当您以编程方式启用 Security Lake 时,不会自动授予数据库查看权限。中的数据湖管理员账户 AWS Lake Formation 必须向要用于查询相关数据库和表的IAM角色授予SELECT
权限。该角色必须至少拥有数据分析师权限。有关权限级别的更多信息,请参阅 Lake Formation 角色和IAM权限参考。有关授予 SELECT
权限的说明,请参阅《AWS Lake Formation 开发人员指南》中的使用命名的资源方法授予数据目录权限。
第 6 步:创建订阅者
创建数据湖后,您可以添加订阅用户来使用您的数据。订阅用户可以通过直接访问您的 Amazon S3 存储桶中的对象或查询数据湖来使用数据。有关订阅用户的更多信息,请参阅 安全湖中的用户管理。