View a markdown version of this page

AWS CloudTrail 基于资源的策略示例 - AWS CloudTrail

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

AWS CloudTrail 基于资源的策略示例

本节为 L CloudTrail ake 仪表板、事件数据存储和渠道提供基于资源的策略示例。

CloudTrail 支持以下类型的基于资源的策略:

  • Resource-based 有关用于 CloudTrail Lake 与外部事件源集成的频道的 AWS政策。用于该通道的基于资源的策略将定义哪些主体实体(账户、用户、角色和联合用户)可以针对该通道调用 PutAuditEvents,以将事件传送到目标事件数据存储。有关创建与 L CloudTrail ake 集成的更多信息,请参阅与外部的事件源创建集成 AWS

  • Resource-based 控制哪些委托人可以对您的事件数据存储执行操作的策略。您可以使用基于资源的策略来提供对事件数据存储的跨账户访问。

  • Resource-based 仪表板上的策略 CloudTrail 允许按照您在为仪表板设置刷新计划时定义的间隔刷新 CloudTrail Lake 仪表板。有关更多信息,请参阅 使用 CloudTrail 控制台为自定义仪表板设置刷新计划

Resource-based 渠道政策示例

用于该通道的基于资源的策略将定义哪些主体实体(账户、用户、角色和联合用户)可以针对该通道调用 PutAuditEvents,以将事件传送到目标事件数据存储。

该策略所需的信息由集成类型决定。

  • 对于定向集成, CloudTrail 要求保单包含合作伙伴的 AWS 账户 ID,并要求您输入合作伙伴提供的唯一外部 ID。 CloudTrail 当您使用 CloudTrail 控制台创建集成时,会自动将合作伙伴的 AWS 账户 ID 添加到资源策略中。请参阅合作伙伴的文档,了解如何获取保单所需的 AWS 账户 数字。

  • 对于解决方案集成,您必须指定至少一个 AWS 账户 ID 作为主体,并且可以选择输入外部 ID 以防止代理人混淆。

以下是对基于资源的策略的要求:

  • 该策略至少包含一个语句。该策略最多可以包含 20 个语句。

  • 每个语句至少包含一个主体。主体可以是账户、用户、角色或联合用户。一个语句最多可以包含 50 个主体。

  • 该策略中定义的资源 ARN 必须与该策略附加到的通道 ARN 相匹配。

  • 该策略仅包含一项操作:cloudtrail-data:PutAuditEvents

除非该策略拒绝通道所有者访问资源,否则该所有者可以针对该通道调用 PutAuditEvents API。

示例:为主体提供通道访问权限

以下示例向拥有 ARN 的委托人授予权限 arn:aws:iam::111122223333:rootarn:aws:iam::444455556666:root,以及arn:aws:iam::123456789012:root使用 ARN 在 CloudTrail 频道上调用 PutAuditEvents API 的权限。arn:aws:cloudtrail:us-east-1:777788889999:channel/EXAMPLE-80b5-40a7-ae65-6e099392355b

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ChannelPolicy", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:root", "arn:aws:iam::123456789012:root" ] }, "Action": "cloudtrail-data:PutAuditEvents", "Resource": "arn:aws:cloudtrail:us-east-1:777788889999:channel/EXAMPLE-80b5-40a7-ae65-6e099392355b" } ] }

示例:使用外部 ID 防范混淆代理

以下示例将使用外部 ID 来解决和防范混淆代理。混淆代理问题是一个安全性问题,即不具有某操作执行权限的实体可能会迫使具有更高权限的实体执行该操作。

集成合作伙伴会创建要在策略中使用的外部 ID,然后在创建集成的过程中向您提供该外部 ID。该值可以是任意唯一字符串,如密码或账号。

该示例向拥有 ARN 的委托人授予权限 arn:aws:iam::111122223333:rootarn:aws:iam::444455556666:root,如果PutAuditEvents对 API 的调用包含政策中定义的外部 ID 值,则授予在 CloudTrail 渠道资源上调用 PutAuditEvents API 的权限。arn:aws:iam::123456789012:root

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ChannelPolicy", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:root", "arn:aws:iam::123456789012:root" ] }, "Action": "cloudtrail-data:PutAuditEvents", "Resource": "arn:aws:cloudtrail:us-east-1:777788889999:channel/EXAMPLE-80b5-40a7-ae65-6e099392355b" } ] }

Resource-based 事件数据存储的策略示例

Resource-based 策略允许您控制哪些委托人可以对您的事件数据存储执行操作。

您可以使用基于资源的策略来提供跨账户访问,以允许选定的主体查询您的事件数据存储、列出和取消查询以及查看查询结果。

对于 CloudTrail Lake 控制面板,基于资源的策略用于 CloudTrail 允许在刷新仪表板时对事件数据存储库运行查询,以便为仪表板的控件填充数据。 CloudTrail 当您在 CloudTrail 控制台上创建自定义仪表板启用 Highlights 仪表板时,Lake 允许您选择将基于资源的默认策略附加到事件数据存储。

事件数据存储的基于资源的策略支持以下操作:

  • cloudtrail:StartQuery

  • cloudtrail:CancelQuery

  • cloudtrail:ListQueries

  • cloudtrail:DescribeQuery

  • cloudtrail:GetQueryResults

  • cloudtrail:GenerateQuery

  • cloudtrail:GenerateQueryResultsSummary

  • cloudtrail:GetEventDataStore

当你在 CloudTrail 控制台上创建更新事件数据存储或管理仪表板时,你可以选择向事件数据存储中添加基于资源的策略。您还可以运行put-resource-policy 命令来将基于资源的策略附加到事件数据存储。

基于资源的策略由一个或多个语句组成。例如,它可以包含一条 CloudTrail 允许查询仪表板事件数据存储库的语句和另一条允许跨账户访问查询事件数据存储的语句。您可以从 CloudTrail 控制台上事件数据存储的详细信息页面更新现有事件数据存储的基于资源的策略。

对于组织事件数据存储, CloudTrail 创建基于资源的默认策略,列出允许委派管理员帐户对组织事件数据存储执行的操作。此策略中的权限来自 AWS Organizations中的委派管理员权限。在组织事件数据存储或组织发生变化(例如,注册或删除 CloudTrail 委派管理员帐户)后,此策略会自动更新。

示例:允许 CloudTrail 运行查询以刷新仪表板

要在刷新期间在 CloudTrail Lake 仪表板上填充数据,您需要 CloudTrail 允许代表您运行查询。为此,请将基于资源的策略附加到与仪表板控件关联的每个事件数据存储,该控件包含一个允许 CloudTrail 执行StartQuery操作以填充小组件数据的声明。

下面是语句的要求:

  • 唯一 Principalcloudtrail.amazonaws.com

  • 唯一允许的 Actioncloudtrail:StartQuery

  • Condition仅包括仪表板 ARN 和 AWS 账户 ID。对于 AWS:SourceArn,您可以提供一系列控制面板 ARN。

以下示例策略包含一条语句,该语句 CloudTrail 允许在事件数据存储上对两个名为和的自定义仪表板example-dashboard1example-dashboard2以及以帐户命名的 Highlights 仪表板运行查询123456789012AWSCloudTrail-Highlights

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": [ "cloudtrail:StartQuery" ], "Resource": "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/*", "Condition": { "StringLike": { "AWS:SourceArn": [ "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/example-dashboard1", "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/example-dashboard2", "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/AWSCloudTrail-Highlights" ], "AWS:SourceAccount": "123456789012" } } } ] }

示例:允许其他账户查询事件数据存储并查看查询结果

您可以使用基于资源的策略来提供对事件数据存储的跨账户访问,以允许其他账户对您的事件数据存储运行查询。

以下示例策略包含一条语句,允许账户 111122223333777777777777999999999999111111111111 中的根用户运行查询并获取账户 ID 555555555555 拥有的事件数据存储的查询结果。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "policy1", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::777777777777:root", "arn:aws:iam::999999999999:root", "arn:aws:iam::111111111111:root" ] }, "Action": [ "cloudtrail:StartQuery", "cloudtrail:GetEventDataStore", "cloudtrail:GetQueryResults" ], "Resource": "arn:aws:cloudtrail:us-east-1:555555555555:eventdatastore/example80-699f-4045-a7d2-730dbf313ccf" } ] }

Resource-based 仪表板的策略示例

您可以为 CloudTrail Lake 仪表板设置刷新计划,这 CloudTrail 允许按照您在设置刷新计划时定义的间隔代表您刷新仪表板。为此,您需要在仪表板上附加基于资源的策略, CloudTrail 以允许在仪表板上执行StartDashboardRefresh操作。

以下是对基于资源的策略的要求:

  • 唯一 Principalcloudtrail.amazonaws.com

  • 策略中唯一允许的 Actioncloudtrail:StartDashboardRefresh

  • Condition仅包括仪表板 ARN 和 AWS 账户 ID。

以下示例策略允许 CloudTrail 刷新名exampleDash为账户的控制面板123456789012

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": [ "cloudtrail:StartDashboardRefresh" ], "Resource": "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/exampleDash", "AWS:SourceAccount":"123456789012" } } } ] }