将基于身份的策略(IAM 策略)用于 Amazon EventBridge - Amazon EventBridge
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

将基于身份的策略(IAM 策略)用于 Amazon EventBridge

基于身份的策略是附加到 IAM 身份的权限策略。

适用于 EventBridge 的 Amazon 托管策略

Amazon通过提供由Amazon创建和管理的独立 IAM policy 来满足许多常用案例的要求。托管 策略也称为预定义策略,可针对常见使用场景授予必要的权限,让您不必调查需要哪些权限。有关更多信息,请参阅《IAM 用户指南》中的 Amazon 托管式策略

以下 Amazon 托管策略是特定于 EventBridge 的,可将它们附加到账户中的用户:

  • AmazonEventBridgeFullAccess - 对 EventBridge 授予完全访问权限,包括 EventBridge Pipes、EventBridge 架构和 EventBridge 调度器。

  • AmazonEventBridgeReadOnlyAccess - 对 EventBridge 授予只读访问权限,包括 EventBridge Pipes、EventBridge 架构和 EventBridge 调度器。

AmazonEventBridgeFullAccess 策略

AmazonEventBridgeFullAccess 策略授予使用所有 EventBridge 操作的权限,以及以下权限:

  • iam:CreateServiceLinkedRole - EventBridge 需要此权限在您的账户中为 API 目标创建服务角色。此权限仅授予 IAM 服务在您的账户中专门为 API 目标创建角色的权限。

  • iam:PassRole - EventBridge 需要此权限才能将调用角色传递给 EventBridge,以调用规则的目标。

  • Secrets Manager 权限 - 当您通过连接资源提供凭证,对 API 目标进行授权时,EventBridge 需要这些权限来管理您账户中的密钥。

以下 JSON 展示 AmazonEventBridgeFullAccess 策略。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EventBridgeActions", "Effect": "Allow", "Action": [ "events:*", "schemas:*", "scheduler:*", "pipes:*" ], "Resource": "*" }, { "Sid": "IAMCreateServiceLinkedRoleForApiDestinations", "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/AmazonEventBridgeApiDestinationsServiceRolePolicy", "Condition": { "StringEquals": { "iam:AWSServiceName": "apidestinations.events.amazonaws.com" } } }, { "Sid": "IAMCreateServiceLinkedRoleForAmazonEventBridgeSchemas", "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/schemas.amazonaws.com/AWSServiceRoleForSchemas", "Condition": { "StringEquals": { "iam:AWSServiceName": "schemas.amazonaws.com" } } }, { "Sid": "SecretsManagerAccessForApiDestinations", "Effect": "Allow", "Action": [ "secretsmanager:CreateSecret", "secretsmanager:UpdateSecret", "secretsmanager:DeleteSecret", "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue" ], "Resource": "arn:aws:secretsmanager:*:*:secret:events!*" }, { "Sid": "IAMPassRoleAccessForEventBridge", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/*", "Condition": { "StringLike": { "iam:PassedToService": "events.amazonaws.com" } } }, { "Sid": "IAMPassRoleAccessForScheduler", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/*", "Condition": { "StringLike": { "iam:PassedToService": "scheduler.amazonaws.com" } } }, { "Sid": "IAMPassRoleAccessForPipes", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/*", "Condition": { "StringLike": { "iam:PassedToService": "pipes.amazonaws.com" } } } ] }
注意

本节中的信息也适用于 CloudWatchEventsFullAccess 策略。但是,强烈建议您使用 Amazon EventBridge 来代替 Amazon CloudWatch Events。

AmazonEventBridgeReadOnlyAccess 策略

AmazonEventBridgeReadOnlyAccess 策略授予使用所有读取 EventBridge 操作的权限。

以下 JSON 展示 AmazonEventBridgeReadOnlyAccess 策略。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "events:DescribeRule", "events:DescribeEventBus", "events:DescribeEventSource", "events:ListEventBuses", "events:ListEventSources", "events:ListRuleNamesByTarget", "events:ListRules", "events:ListTargetsByRule", "events:TestEventPattern", "events:DescribeArchive", "events:ListArchives", "events:DescribeReplay", "events:ListReplays", "events:DescribeConnection", "events:ListConnections", "events:DescribeApiDestination", "events:ListApiDestinations", "events:DescribeEndpoint", "events:ListEndpoints", "schemas:DescribeCodeBinding", "schemas:DescribeDiscoverer", "schemas:DescribeRegistry", "schemas:DescribeSchema", "schemas:ExportSchema", "schemas:GetCodeBindingSource", "schemas:GetDiscoveredSchema", "schemas:GetResourcePolicy", "schemas:ListDiscoverers", "schemas:ListRegistries", "schemas:ListSchemas", "schemas:ListSchemaVersions", "schemas:ListTagsForResource", "schemas:SearchSchemas", "scheduler:GetSchedule", "scheduler:GetScheduleGroup", "scheduler:ListSchedules", "scheduler:ListScheduleGroups", "scheduler:ListTagsForResource", "pipes:DescribePipe", "pipes:ListPipes", "pipes:ListTagsForResource" ], "Resource": "*" } ] }
注意

本节中的信息也适用于 CloudWatchEventsReadOnlyAccess 策略。但是,强烈建议您使用 Amazon EventBridge 来代替 Amazon CloudWatch Events。

特定于 EventBridge 架构的托管策略

架构定义了发送到 EventBridge 的事件的结构。EventBridge 为 Amazon 服务生成的所有事件提供架构。以下是可用的 EventBridge 架构专用 Amazon 托管策略:

特定于 EventBridge 调度器的托管策略

Amazon EventBridge 调度器是一个无服务器调度器,使您能够从一个中央托管服务创建、运行和管理任务。有关特定于 EventBridge 调度器的 Amazon 托管策略,请参阅《EventBridge 调度器用户指南》中的适用于 EventBridge 调度器的 Amazon 托管策略

特定于 EventBridge Pipes 的托管策略

Amazon EventBridge Pipes 可将事件源与目标连接起来。在开发事件驱动型架构时,Pipes 可减少对专业知识和集成代码的需求。这有助于确保贵公司应用程序的一致性。以下是可用的 EventBridge Pipes 专用 Amazon 托管策略:

用于发送事件的 IAM 角色

为了将事件中继到目标,EventBridge 需要一个 IAM 角色。

创建 IAM 角色,向 EventBridge 发送事件
  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 要创建 IAM 角色,请按照《IAM 用户指南》中的创建角色,向 Amazon 服务委派权限中的步骤操作。在执行这些步骤时,请注意以下操作:

    • 角色名称中,使用账户中的唯一名称。

    • 选择角色类型中,选择 Amazon 服务角色,然后选择 Amazon EventBridge。这会授予 EventBridge 代入该角色的权限。

    • 附加策略中,选择 AmazonEventBridgeFullAccess

此外,您还可以创建您自己的自定义 IAM 策略,以授予 EventBridge 操作和资源的相关权限。您可以将这些自定义策略附加到需要这些权限的 IAM 用户或组。有关 IAM 策略的更多信息,请参阅《IAM 用户指南》中的 IAM 策略概述。有关管理和创建自定义 IAM 策略的更多信息,请参阅《IAM 用户指南》中的管理 IAM 策略

EventBridge 使用 IAM 角色访问目标所需的权限

EventBridge 目标通常需要 IAM 角色,来向 EventBridge 授予调用目标的权限。以下是各种 Amazon 服务和目标的一些示例。对于其他目标,请使用 EventBridge 控制台创建一条规则并创建一个新角色,该角色将包含一条策略,具有预先配置、范围明确的权限。

Amazon SQS、Amazon SNS、Lambda、CloudWatch Logs 和 EventBridge 总线目标不使用角色,必须通过资源策略对 EventBridge 授予权限。API Gateway 目标可以使用资源策略或 IAM 角色。

如果目标是 API 目标,您指定的角色必须包含以下策略。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "events:InvokeApiDestination" ], "Resource": [ "arn:aws:events:::api-destination/*" ] } ] }

如果目标是 Kinesis 流,则用于将事件数据发送到该目标的角色必须包含以下策略。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:PutRecord" ], "Resource": "*" } ] }

如果目标是 Systems Manager Run Command 且您为命令指定了一个或多个 InstanceIds 值,则您指定的角色必须包含以下策略。

{ "Version": "2012-10-17", "Statement": [ { "Action": "ssm:SendCommand", "Effect": "Allow", "Resource": [ "arn:aws:ec2:region:accountId:instance/instanceIds", "arn:aws:ssm:region:*:document/documentName" ] } ] }

如果目标是 Systems Manager Run Command 且您为命令指定了一个或多个标签,则您指定的角色必须包含以下策略。

{ "Version": "2012-10-17", "Statement": [ { "Action": "ssm:SendCommand", "Effect": "Allow", "Resource": [ "arn:aws:ec2:region:accountId:instance/*" ], "Condition": { "StringEquals": { "ec2:ResourceTag/*": [ "[[tagValues]]" ] } } }, { "Action": "ssm:SendCommand", "Effect": "Allow", "Resource": [ "arn:aws:ssm:region:*:document/documentName" ] } ] }

如果目标是 Amazon Step Functions 状态机,则您指定的角色必须包含以下策略。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:StartExecution" ], "Resource": [ "arn:aws:states:*:*:stateMachine:*" ] } ] }

如果目标是 Amazon ECS 任务,则您指定的角色必须包含以下策略。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ecs:RunTask" ], "Resource": [ "arn:aws:ecs:*:account-id:task-definition/task-definition-name" ], "Condition": { "ArnLike": { "ecs:cluster": "arn:aws:ecs:*:account-id:cluster/cluster-name" } } }, { "Effect": "Allow", "Action":"iam:PassRole", "Resource": [ "*" ], "Condition": { "StringLike": { "iam:PassedToService": "ecs-tasks.amazonaws.com" } } }] }

以下策略允许 EventBridge 中的内置目标代表您执行 Amazon EC2 操作。您需要使用 Amazon Web Services Management Console 来创建具有内置目标的规则。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "TargetInvocationAccess", "Effect": "Allow", "Action": [ "ec2:Describe*", "ec2:RebootInstances", "ec2:StopInstances", "ec2:TerminateInstances", "ec2:CreateSnapshot" ], "Resource": "*" } ] }

以下策略允许 EventBridge 将事件中继到您账户中的 Kinesis 流。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "KinesisAccess", "Effect": "Allow", "Action": [ "kinesis:PutRecord" ], "Resource": "*" } ] }

客户管理型策略示例:使用标记来控制对规则的访问权限

以下示例展示向 EventBridge 操作授予权限的用户策略。当您使用 EventBridge API、Amazon 开发工具包或 Amazon CLI 时,此政策生效。

您可以授予用户访问特定 EventBridge 规则的权限,但不允许他们访问其他规则。要实现此目标,请标记这两组规则,并使用 IAM 策略引用这些标签。有关标记 EventBridge 资源的更多信息,请参阅 亚马逊 EventBridge 标签

您可以向用户授予 IAM 策略,仅允许其访问带有特定标签的规则。您可以用这个特定标签来标记所选规则,为它们授予访问权限。例如,以下策略仅向某用户授予对标签键 Stack 值为 Prod 的规则的访问权限。

{ "Statement": [ { "Effect": "Allow", "Action": "events:*", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Stack": "Prod" } } } ] }

有关使用 IAM policy 语句的更多信息,请参阅 IAM 用户指南中的使用策略控制访问

Amazon 托管策略的 Amazon EventBridge 更新

查看有关 EventBridge 的 Amazon 托管策略更新的详细信息(从该服务开始跟踪这些更改开始)。有关此页面更改的自动提示,请订阅 EventBridge 文档历史记录页面的 RSS 源。

更改 说明 日期

AmazonEventBridgePipesFullAccess - 新添加的策略

EventBridge 添加了托管策略,提供使用 EventBridge Pipes 的全部权限。

2022 年 12 月 1 日

AmazonEventBridgePipesReadOnlyAccess - 新添加的策略

EventBridge 添加了托管策略,提供查看 EventBridge Pipes 信息资源的权限。

2022 年 12 月 1 日

AmazonEventBridgePipesOperatorAccess - 新添加的策略

EventBridge 添加了托管策略,提供查看 EventBridge Pipes 信息,以及开始和停止运行管道的权限。

2022 年 12 月 1 日

AmazonEventBridgeFullAccess - 更新现有策略

EventBridge 更新了策略,增加了使用 EventBridge Pipes 功能所需的权限。

2022 年 12 月 1 日

AmazonEventBridgeReadOnlyAccess - 更新现有策略

EventBridge 添加了查看 EventBridge Pipes 信息资源所需的权限。

添加了以下操作:

  • pipes:DescribePipe

  • pipes:ListPipes

  • pipes:ListTagsForResource

2022 年 12 月 1 日

CloudWatchEventsReadOnlyAccess - 更新现有策略

更新以匹配 AmazonEventBridgeReadOnlyAccess。

2022 年 12 月 1 日

CloudWatchEventsFullAccess - 更新现有策略

更新以匹配 AmazonEventBridgeFullAccess。

2022 年 12 月 1 日

AmazonEventBridgeFullAccess - 更新现有策略

EventBridge 更新了策略,增加了使用架构和调度器功能所需的权限。

添加了以下权限:

  • EventBridge 架构注册表操作

  • EventBridge 调度器操作

  • 适用于 EventBridge 架构注册表的 iam:CreateServiceLinkedRole 权限

  • 适用于 EventBridge 调度器的 iam:PassRole 权限

2022 年 11 月 10 日

AmazonEventBridgeReadOnlyAccess - 更新现有策略

EventBridge 添加了查看架构和调度器信息资源所需的权限。

添加了以下操作:

  • schemas:DescribeCodeBinding

  • schemas:DescribeDiscoverer

  • schemas:DescribeRegistry

  • schemas:DescribeSchema

  • schemas:ExportSchema

  • schemas:GetCodeBindingSource

  • schemas:GetDiscoveredSchema

  • schemas:GetResourcePolicy

  • schemas:ListDiscoverers

  • schemas:ListRegistries

  • schemas:ListSchemas

  • schemas:ListSchemaVersions

  • schemas:ListTagsForResource

  • schemas:SearchSchemas

  • scheduler:GetSchedule

  • scheduler:GetScheduleGroup

  • scheduler:ListSchedules

  • scheduler:ListScheduleGroups

  • scheduler:ListTagsForResource

2022 年 11 月 10 日

AmazonEventBridgeReadOnlyAccess - 更新现有策略

EventBridge 添加了查看端点信息所需的权限。

添加了以下操作:

  • events:ListEndpoints

  • events:DescribeEndpoint

2022 年 4 月 7 日

AmazonEventBridgeReadOnlyAccess - 更新现有策略

EventBridge 添加了查看连接和 API 目标信息所需的权限。

添加了以下操作:

  • events:DescribeConnection

  • events:ListConnections

  • events:DescribeApiDestination

  • events:ListApiDestinations

2021 年 3 月 4 日

AmazonEventBridgeFullAccess - 更新现有策略

EventBridge 更新了策略,增加了使用 API 目标所需的 iam:CreateServiceLinkedRole 和 Amazon Secrets Manager 权限。

添加了以下操作:

  • secretsmanager:CreateSecret

  • secretsmanager:UpdateSecret

  • secretsmanager:DeleteSecret

  • secretsmanager:GetSecretValue

  • secretsmanager:PutSecretValue

2021 年 3 月 4 日

EventBridge 已开始跟踪更改

EventBridge 为其 Amazon 托管策略开启了改动跟踪。

2021 年 3 月 4 日