Amazon EventBridge 事件总线的权限 - Amazon EventBridge
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

Amazon EventBridge 事件总线的权限

默认事件总线在你的Amazon仅允许账户事件来自一个账户。您可以通过附加基于资源的策略对它来说。使用基于资源的策略,您可以允许PutEventsPutRule, 和PutTargets来自另一个账户的 API 调用。您还可以使用IAM 条件在向组织授予权限的策略中,应用标签,或者将事件过滤为仅来自特定规则或帐户的事件。您可以在创建事件总线时或之后为事件总线设置基于资源的策略。

接受事件总线的 EventBridge APIName例如参数PutRulePutTargetsDeleteRuleRemoveTargetsDisableRule, 和EnableRule还可以接受活动总线 ARN。使用这些参数可以通过 API 引用跨账户或跨区域事件总线。例如,您可以打电话PutRule要创建规则在不同账户的活动总线上,而无需担任角色。

您可以使用本主题中的示例策略授予向其他账户或区域发送事件的权限。有关创建规则以将事件发送到其他账户或区域的信息,请参阅发送和接收亚马逊EventBridge之间的事件Amazon账户.

管理事件总线权限

使用以下过程修改现有事件总线的权限。有关如何使用的信息Amazon CloudFormation要创建事件总线策略,请参阅AWS::Events::EventBusPolicy.

管理现有事件总线的权限

  1. 访问 https://console.aws.amazon.com/events/,打开 Amazon EventBridge 控制台。

  2. 在左侧导航窗格中,选择事件总线.

  3. In名称中,选择要管理权限的事件总线的名称。

    如果资源策略已附加到事件总线,则会显示该策略。

  4. 选择管理权限,然后执行以下操作之一:

    • 输入包含对事件总线授予权限的策略。您可以从另一个来源粘贴策略,也可以输入策略的 JSON。

    • 要为策略使用模板,请选择加载模板. 根据您的环境修改策略,然后添加您授权策略中的委托人使用的其他操作。

  5. 选择 Update (更新)。

该模板提供了示例策略声明,您可以为自己的账户和环境进行自定义。该模板不是有效策略。您可以修改用例的模板,也可以复制其中一个示例策略并对其进行自定义。

模板加载的策略包括一个示例,说明如何向账户授予使用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": "allow_account_to_put_events", "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": "allow_all_accounts_from_organization_to_put_events", "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": "allow_account_to_manage_rules_they_created", "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 中的默认事件总线上使用所有 API 操作。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "sid1", "Effect": "Allow", "Principal": {"AWS":"arn:aws:iam::111112222333:root"}, "Action": "events:*", "Resource": "arn:aws:events:us-east-1:123456789012:event-bus/default" } ] }

示例策略:在其他账户中将活动发送到自定义巴士

以下示例策略向账户 111122223333 授予向central-event-bus在账户 123456789012 中,但仅适用于源值设置为的事件com.exampleCorp.webStoredetail-type设置为newOrderCreated.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "WebStoreCrossAccountPublish", "Effect": "Allow", "Action": [ "events:PutEvents" ], "Principal": { "AWS": "111112222333" }, "Resource": "arn:aws:events:us-east-1:123456789012:event-bus/central-event-bus", "Condition": { "StringEquals": { "events:detail-type": "newOrderCreated", "events:source": "com.exampleCorp.webStore" } } } ] }

示例策略:将事件发送到同一账户并限制更新

以下示例策略向账户 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在中东(巴林)和美国西部(俄勒冈)区域向名为的事件总线CrossRegionBus在美国东部(弗吉尼亚北部)账户 123456789012。示例策略将添加到名为的事件总线CrossRegionBus在账户 123456789012 中。只有在事件与账户 111122223333 中为事件总线指定的规则相匹配时,该策略才允许事件。这些区域有:Condition语句将事件限制为仅限于与指定规则 ARN 匹配规则的事件。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow_specific_rules_as_cross_region_source", "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": "allow_cross_region_events_from_us-west-2_and_me-south-1", "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": "1_allow_any_events_from_account_111112222333", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111112222333:root" }, "Action": "events:PutEvents", "Resource": "arn:aws:events:us-east-1:123456789012:event-bus/CrossRegionBus" }, { "Sid": "2_deny-all-cross-region-us-west-2-events", "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:*:*" ] } } } ] }