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

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

Amazon EventBridge 事件总线的权限

默认事件总线在您的Amazon账户仅允许事件从一个帐户。您可以向事件总线授予其他权限,方法是将基于资源的策略到它。使用基于资源的策略,您可以允许PutEventsPutRule, 和PutTargetsAPI 调用。您还可以使用IAM 条件在向组织授予权限的策略中,应用标签,或者仅过滤特定规则或帐户中的事件。您可以在创建事件总线时或之后为事件总线设置基于资源的策略。

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

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

管理事件总线权限

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

管理现有事件总线的权限

  1. 打开位于 https://console.aws.amazon.com/events/ 的 Amazon EventBridge 控制台。

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

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

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

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

    • 输入包含事件总线授予权限的策略。您可以从另一个源粘贴策略,也可以输入策略的 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" } ] }

示例策略:将事件发送到另一个帐户中的自定义总线

以下示例策略向账户 1111222333 授予将事件发布到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::123412341234:root" }, "Action": [ "events:PutRule", "events:DeleteRule", "events:DescribeRule", "events:DisableRule", "events:EnableRule", "events:PutTargets", "events:RemoveTargets" ], "Resource": "arn:aws:events:us-east-1:123412341234:rule/central-event-bus/*", "Condition": { "StringEqualsIfExists": { "events:creatorAccount": "${aws:PrincipalAccount}", "events:source": "com.exampleCorp.webStore" } } } ] }

示例策略:仅将事件从特定规则发送到不同区域中的总线

以下示例策略向账户 1111222333 授予发送与名为SendToUSE1AnotherAccount中东(巴林)和美国西部(俄勒冈)区域的事件总线CrossRegionBus在美国东部(弗吉尼亚北部)账户 123456789012。示例策略将添加到名为CrossRegionBus在账户中. 仅当事件与帐户 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:*:*" ] } } } ] }