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

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

为使用基于身份的策略(IAM 策略)

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

使用 EventBridge 所需的权限

对于要使用 EventBridge 控制台或 API 的用户,用户必须拥有一组最低权限才能访问其他Amazon资源的费用。其他Amazon服务可以发送事件设置为 EventBridge 或者是targetEventBridge 的规则。下表列出了Amazon服务及其相应的最低权限:

  • Automation

    • automation:CreateAction

    • automation:DescribeAction

    • automation:UpdateAction

  • Amazon EC2 Auto Scaling

    • autoscaling:DescribeAutoScalingGroups

  • Amazon CloudTrail

    • cloudtrail:DescribeTrails

  • Amazon EC2

    • ec2:DescribeInstances

    • ec2:DescribeVolumes

  • EventBridge

    • events:DeleteRule

    • events:DescribeRule

    • events:DisableRule

    • events:EnableRule

    • events:ListRuleNamesByTarget

    • events:ListRules

    • events:ListTargetsByRule

    • events:PutEvents

    • events:PutRule

    • events:PutTargets

    • events:RemoveTargets

    • events:TestEventPattern

  • IAM

    • iam:ListRoles

  • Kinesis

    • kinesis:ListStreams

  • Lambda

    • lambda:AddPermission

    • lambda:ListFunctions

    • lambda:RemovePermission

  • Amazon SNS

    • sns:GetTopicAttributes

    • sns:ListTopics

    • sns:SetTopicAttributes

  • Amazon SWF

    • swf:DescribeAction

    • swf:ReferenceAction

    • swf:RegisterAction

    • swf:RegisterDomain

    • swf:UpdateAction

如果创建比必需的最低权限更为严格的 IAM 策略,对于附加了该 IAM 策略的用户,EventBridge 控制台无法按预期正常运行。为确保这些用户仍可使用 EventBridge 控制台,还请将AmazonEventBridgeReadOnlyAccess托管的策略转换为用户,如AmazonEventBridge 的托管策略

对于只需要调用Amazon CLI。

AmazonEventBridge 的托管策略

Amazon通过提供由Amazon创建和管理的独立 IAM 策略来满足许多常用案例的要求。托管或预定义的策略可授予常用案例的必要权限,因此,您无需调查都需要哪些权限。有关更多信息,请参阅 。Amazon托管策略中的IAM 用户指南

以下Amazon托管策略是特定于 EventBridge 的:

  • 亚马逊活动桥全面访问— 授予对 EventBridge 的完全访问权限。

  • 亚马逊活动桥只读访问— 授予对 EventBridge 的只读访问权限。

Amazon EventBridge Full 访问策略

亚马逊活动桥全面访问政策已于 2021 年 3 月 4 日更新,包括iam:CreateServiceLinkedRole和Amazon Secrets Manager使用 API 目标所需的权限。

亚马逊事件桥充分访问策略授予使用所有 EventBridge 操作的权限以及以下权限:

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

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

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

以下 JSON 显示了卓越亚马逊活动桥全面访问政策。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "events:*", "Resource": "*" }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/AmazonEventBridgeApiDestinationsServiceRolePolicy", "Condition": { "StringEquals": { "iam:AWSServiceName": "apidestinations.events.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "secretsmanager:CreateSecret", "secretsmanager:UpdateSecret", "secretsmanager:DeleteSecret", "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue" ], "Resource": "arn:aws:secretsmanager:*:*:secret:events!*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/*", "Condition": { "StringLike": { "iam:PassedToService": "events.amazonaws.com" } } } ] }

用于发送事件的 IAM 角色

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

为创建 IAM 角色

  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

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

    • In角色名称,请使用在您的账户内唯一的名称。

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

    • In附加策略中,选择亚马逊活动桥全面访问

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

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

对于 EventBridge 来访问 API 目标、Kinesis 流、Systems Manager 运行命令、Amazon Step Functions状态计算机或 Amazon 弹性容器服务任务时,您必须指定访问该目标的 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 运行命令,并且您指定了一个或多个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 运行命令,且您为命令指定了一个或多个标签,则您指定的角色必须包含以下策略。

{ "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 操作的权限的用户策略。当您使用 EventBridge API 时,可以使用这些策略,Amazon软件开发工具包或Amazon CLI。

注意

所有示例都使用美国西部(俄勒冈)区域 (us-west-2) 和虚构的账户 ID,您需要替换这些账户 ID。

您可以使用列出的以下示例 IAM 策略来限制 IAM 用户和角色对 EventBridge 的访问。

示例 1:对 Amazon EC2 目标的访问权限

以下策略允许 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": "*" } ] }

示例 2:Kinesis

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

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

示例 3:控制台访问

以下策略允许 IAM 用户使用 EventBridge 控制台。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ConsoleAccess", "Effect": "Allow", "Action": [ "automation:CreateAction", "automation:DescribeAction", "automation:UpdateAction", "autoscaling:DescribeAutoScalingGroups", "cloudtrail:DescribeTrails", "ec2:DescribeInstances", "ec2:DescribeVolumes", "events:*", "iam:ListRoles", "kinesis:ListStreams", "lambda:AddPermission", "lambda:ListFunctions", "lambda:RemovePermission", "sns:GetTopicAttributes", "sns:ListTopics", "sns:SetTopicAttributes", "swf:DescribeAction", "swf:ReferenceAction", "swf:RegisterAction", "swf:RegisterDomain", "swf:UpdateAction" ], "Resource": "*" }, { "Sid": "IAMPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::*:role/AWS_Events_Invoke_Targets", "arn:aws:iam::*:role/AWS_Events_Actions_Execution" ] } ] }

示例 4:活动桥全面访问

以下策略允许所有Amazon资源来执行对 EventBridge 的操作,通过Amazon CLI和开发工具包。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "FullAccess", "Effect": "Allow", "Action": "events:*", "Resource": "*" }, { "Sid": "IAMPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/AWS_Events_Invoke_Targets" } ] }

示例 5:ReadOnlyAccess

以下策略允许所有Amazon资源以便对 EventBridge 具有只读访问权限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadOnlyAccess", "Effect": "Allow", "Action": [ "events:Describe*", "events:List*", "events:TestEventPattern" ], "Resource": "*" } ] }

示例 6:使用标签控制对规则的访问权限

您可以授予用户访问特定 EventBridge 规则的权限,同时禁止他们访问其他规则。为此,您需要标记两组规则,然后使用引用这些标签的 IAM 策略。有关标记 EventBridge 资源的更多信息,请参阅。Amazon EventBridge 标签

您可以向用户授予 IAM 策略,以允许其仅访问带有特定标签的规则。您可以通过使用特定标记对哪些规则进行标记来选择要授予访问权限的规则。例如,以下策略授予用户访问值为Prod的标签键Stack

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

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