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

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

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

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

使用 EventBridge 所需的权限

为使用 EventBridge 控制台或 API 的用户,用户必须拥有访问其他用户的最低权限集。Amazon资源的费用。其他Amazon服务可以发送事件去 EventBridge 或成为目标EventBridge规则. 下表列出了示例Amazon服务及其相应的最低权限:

  • 自动化

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

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

  • AmazonEventBridgeFullAccess— 授予对 EventBridge 的完全访问权限。

  • AmazonEventBridgeReadOnlyAccess— 授予对 EventBridge 的只读访问权限。

AmazonEventBridgeFullAccess 政策

AmazonEventBridgeFullAccess 政策于 2021 年 3 月 4 日更新,其中包括iam:CreateServiceLinkedRole和Amazon Secrets Manager使用 API 目标所需的权限。

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

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

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

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

以下 JSON 显示了 AmazonEventBridgeFullAccess 政策。

{ "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 角色。

创建向 EventBridge 发送事件的 IAM 角色

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

  2. 要创建 IAM 角色,请按中的步骤操作创建向向委派权限的角色Amazon服务中的IAM 用户指南. 当您按步骤操作时,请执行以下操作:

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

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

    • In附加策略,选择AmazonEventBridgeFullAccess.

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

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

为了让 EventBridge 访问作为 API 目标、Kinesis 流、Systems Manager 运行命令、Amazon Step Functions状态机或 Amazon Elastic ContainServices 任务,则您必须指定访问该目标的 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 Run 命令,且您为命令指定了一个或多个标签,则您指定的角色必须包含以下策略。

{ "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 时,可以使用这些策略,AmazonSDK,或者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:EventBridge 完全访问

以下策略允许全部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 用户指南中的使用策略控制访问