本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
亚马逊EventBridge活动总线的权限
您Amazon账户中的默认事件总线仅允许来自一个账户的事件。您可以通过向事件总线附加基于资源的策略来向其授予额外权限。使用基于资源的策略,您可以允许来自其他账户的PutEvents
PutRule
、和PutTargets
API 调用。您还可以在策略中使用 IAM 条件向组织授予权限、应用标签或筛选事件,仅向来自特定规则或账户的组织授予权限。可以在创建事件总线时或之后为其设置基于资源的策略。
EventBridge接受PutRule
、、、、PutTargets
等事件总线Name
参数且EnableRule
也接受事件总线 ARN 的 API。DeleteRule
RemoveTargets
DisableRule
使用这些参数通过 API 引用跨账户或跨区域事件总线。例如,您可以调PutRule
用在不同账户的事件总线上创建规则,而无需扮演角色。
您可以将本主题中的示例策略附加到 IAM 角色,以授予向其他账户或区域发送事件的权限。使用 IAM 角色设置组织控制策略和界限,确定谁可以将事件从您的账户发送到其他账户。当规则的目标是事件总线时,我们建议始终使用 IAM 角色。您可以使用PutTarget
调用附加 IAM 角色。有关创建向其他账户或地区发送事件的规则的信息,请参阅在Amazon账户之间发送和接收亚马逊 EventBridge 事件。
主题
管理事件总线
使用以下过程修改现有事件总线。有关Amazon CloudFormation如何使用创建事件总线,请参阅AWS::Events::EventBus策略。
管理现有事件总线的权限
通过 https://console.aws.amazon.com/events/
打开亚马逊EventBridge控制台。 -
在左侧导航窗格中,选择事件总线。
-
在名称中,选择要管理权限的事件总线。
如果将资源策略附加到事件总线,则会显示该策略。
-
选择管理权限,然后执行下列操作之一:
-
输入包含要为事件总线授予的权限的策略。您可以粘贴来自其他来源的策略,也可以输入该策略的 JSON。
-
要为策略使用模板,请选择加载模板。根据您的环境修改策略,并添加您授权策略中委托人使用的其他操作。
-
-
选择更新。
该模板提供了示例策略声明,您可以针对您的账户和环境进行自定义。模板是无效策略。您可以修改用例的模板,也可以复制其中一个示例策略并对其进行自定义。
该模板加载的策略包括如何向账户授予使用PutEvents
操作的权限、如何向组织授予权限以及如何向账户授予管理账户中规则的权限的示例。您可以为特定账户自定义模板,然后从模板中删除其他部分。本主题的后续部分中包含了更多策略示例。
如果您尝试更新总线的权限,但策略包含错误,则会显示一条错误消息,表明策略中存在特定问题。
### Choose which sections to include in the policy to match your use case. ### ### Be sure to remove all lines that start with ###, including the ### at the end of the line. ### ### The policy must include the following: ### { "Version": "2012-10-17", "Statement": [ ### To grant permissions for an account to use the PutEvents action, include the following, otherwise delete this section: ### { "Sid": "AllowAccountToPutEvents", "Effect": "Allow", "Principal": { "AWS": "<ACCOUNT_ID>" }, "Action": "events:PutEvents", "Resource": "arn:aws:events:us-east-1:123456789012:event-bus/default" }, ### Include the following section to grant permissions to all members of your Amazon Organizations to use the PutEvents action ### { "Sid": "AllowAllAccountsFromOrganizationToPutEvents", "Effect": "Allow", "Principal": "*", "Action": "events:PutEvents", "Resource": "arn:aws:events:us-east-1:123456789012:event-bus/default", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-yourOrgID" } } }, ### Include the following section to grant permissions to the account to manage the rules created in the account ### { "Sid": "AllowAccountToManageRulesTheyCreated", "Effect": "Allow", "Principal": { "AWS": "<ACCOUNT_ID>" }, "Action": [ "events:PutRule", "events:PutTargets", "events:DeleteRule", "events:RemoveTargets", "events:DisableRule", "events:EnableRule", "events:TagResource", "events:UntagResource", "events:DescribeRule", "events:ListTargetsByRule", "events:ListTagsForResource"], "Resource": "arn:aws:events:us-east-1:123456789012:rule/default", "Condition": { "StringEqualsIfExists": { "events:creatorAccount": "<ACCOUNT_ID>" } } }] }
策略示例:将事件发送到其他账户的默认总线
以下示例策略授予账户 111122223333 向账户 123456789012 中的默认事件总线发布事件的权限。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "sid1", "Effect": "Allow", "Principal": {"AWS":"arn:aws:iam::111112222333:root"}, "Action": "events:PutEvents", "Resource": "arn:aws:events:us-east-1:123456789012:event-bus/default" } ] }
策略示例:将事件发送到其他账户中的自定义总线
以下示例策略授予账户 111122223333 向账户 123456789012 发布事件的权限,但仅适用于源值设置为com.exampleCorp.webStore
且detail-type
设置为的事件newOrderCreated
。central-event-bus
{ "Version": "2012-10-17", "Statement": [ { "Sid": "WebStoreCrossAccountPublish", "Effect": "Allow", "Action": [ "events:PutEvents" ], "Principal": { "AWS": "arn:aws:iam::111112222333:root" }, "Resource": "arn:aws:events:us-east-1:123456789012:event-bus/central-event-bus", "Condition": { "StringEquals": { "events:detail-type": "newOrderCreated", "events:source": "com.exampleCorp.webStore" } } } ] }
策略示例:将事件发送到同一账户中的事件总线
以下附加到名为的事件总线的示例策略CustomBus1
允许事件总线接收来自同一账户和区域的事件。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "events:PutEvents" ], "Resource": [ "arn:aws:events:us-east-1:123456789:event-bus/CustomBus1" ] } ] }
策略示例:向同一个账户发送事件并限制更新
以下示例策略授予账户 123456789012 创建、删除、更新、禁用和启用规则以及添加或删除目标的权限。它限制这些规则与来源为的事件相匹配com.exampleCorp.webStore
,并使用"events:creatorAccount": "${aws:PrincipalAccount}"
来确保只有账户 123456789012 可以在创建这些规则和目标后对其进行修改。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "InvoiceProcessingRuleCreation", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": [ "events:PutRule", "events:DeleteRule", "events:DescribeRule", "events:DisableRule", "events:EnableRule", "events:PutTargets", "events:RemoveTargets" ], "Resource": "arn:aws:events:us-east-1:123456789012:rule/central-event-bus/*", "Condition": { "StringEqualsIfExists": { "events:creatorAccount": "${aws:PrincipalAccount}", "events:source": "com.exampleCorp.webStore" } } } ] }
策略示例:仅将来自特定规则的事件发送到不同区域的总线
以下示例策略授予账户 111122223333 的权限,允许将与SendToUSE1AnotherAccount
在中东(巴林)和美国西部(俄勒冈)地区命名的规则相匹配的事件发送到账户 123456789012CrossRegionBus
中以美国东部(弗吉尼亚北部)命名的事件总线。示例策略已添加到以账户 123456789012 命名的事件总线CrossRegionBus
中。只有当事件与账户 111122223333 中为事件总线指定的规则相匹配时,该策略才允许这些事件。该Condition
语句将事件限制为仅与具有指定规则 ARN 的规则相匹配的事件。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSpecificRulesAsCrossRegionSource", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111112222333:root" }, "Action": "events:PutEvents", "Resource": "arn:aws:events:us-east-1:123456789012:event-bus/CrossRegionBus", "Condition": { "ArnEquals": { "aws:SourceArn": [ "arn:aws:events:us-west-2:111112222333:rule/CrossRegionBus/SendToUSE1AnotherAccount", "arn:aws:events:me-south-1:111112222333:rule/CrossRegionBus/SendToUSE1AnotherAccount" ] } } } ] }
策略示例:仅将事件从特定区域发送到其他区域
以下示例策略授予账户 111122223333 的权限,允许将中东(巴林)和美国西部(俄勒冈)地区生成的所有事件发送到美国东部(弗吉尼亚北部)CrossRegionBus
地区以账户 123456789012 命名的事件总线。账户 111122223333 无权发送在任何其他区域生成的事件。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossRegionEventsFromUSWest2AndMESouth1", "Effect": "Allow", "Principal": { "Amazon": "arn:aws:iam::111112222333:root" }, "Action": "events:PutEvents", "Resource": "arn:aws:events:us-east-1:123456789012:event-bus/CrossRegionBus", "Condition": { "ArnEquals": { "aws:SourceArn": [ "arn:aws:events:us-west-2:*:*", "arn:aws:events:me-south-1:*:*" ] } } } ] }
策略示例:拒绝从特定区域发送事件
以下附加到名CrossRegionBus
为账户 123456789012 的事件总线的示例策略允许事件总线接收来自账户 111122223333 的事件,但不允许接收在美国西部(俄勒冈)地区生成的事件。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "1AllowAnyEventsFromAccount111112222333", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111112222333:root" }, "Action": "events:PutEvents", "Resource": "arn:aws:events:us-east-1:123456789012:event-bus/CrossRegionBus" }, { "Sid": "2DenyAllCrossRegionUSWest2Events", "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": "events:PutEvents", "Resource": "arn:aws:events:us-east-1:123456789012:event-bus/CrossRegionBus", "Condition": { "ArnEquals": { "aws:SourceArn": [ "arn:aws:events:us-west-2:*:*" ] } } } ] }