在 EventBridge 调度器中使用基于身份的策略 - EventBridge 调度器

在 EventBridge 调度器中使用基于身份的策略

默认情况下,用户和角色没有创建或修改 EventBridge 调度器资源的权限。要授予用户对所需资源执行操作的权限,IAM 管理员可以创建 IAM 策略。

要了解如何使用这些 JSON 策略文档示例创建基于身份的 IAM 策略,请参阅《IAM 用户指南》中的创建 IAM 策略(控制台)

有关 EventBridge 调度器定义的操作和资源类型的详细信息,包括每种资源类型的 ARN 格式,请参阅《服务授权参考》中的 Amazon EventBridge 调度器的操作、资源和条件键

策略最佳实践

基于身份的策略确定某个人是否可以创建、访问或删除您账户中的 EventBridge 调度器资源。这些操作可能会使 AWS 账户 产生成本。创建或编辑基于身份的策略时,请遵循以下指南和建议:

  • AWS 托管式策略及转向最低权限许可入门 – 要开始向用户和工作负载授予权限,请使用 AWS 托管式策略来为许多常见使用场景授予权限。您可以在 AWS 账户 中找到这些策略。我们建议通过定义特定于您的使用场景的 AWS 客户托管式策略来进一步减少权限。有关更多信息,请参阅《IAM 用户指南》中的 AWS 托管式策略工作职能的 AWS 托管式策略

  • 应用最低权限:在使用 IAM 策略设置权限时,请仅授予执行任务所需的权限。为此,您可以定义在特定条件下可以对特定资源执行的操作,也称为最低权限许可。有关使用 IAM 应用权限的更多信息,请参阅《IAM 用户指南》中的 IAM 中的策略和权限

  • 使用 IAM 策略中的条件进一步限制访问权限:您可以向策略添加条件来限制对操作和资源的访问。例如,您可以编写策略条件来指定必须使用 SSL 发送所有请求。如果通过特定 AWS 服务(例如 CloudFormation)使用服务操作,您还可以使用条件来授予对服务操作的访问权限。有关更多信息,请参阅《IAM 用户指南》中的 IAM JSON 策略元素:条件

  • 使用 IAM Access Analyzer 验证您的 IAM 策略,以确保权限的安全性和功能性 – IAM Access Analyzer 会验证新策略和现有策略,以确保策略符合 IAM 策略语言(JSON)和 IAM 最佳实践。IAM Access Analyzer 提供 100 多项策略检查和可操作的建议,以帮助您制定安全且功能性强的策略。有关更多信息,请参阅《IAM 用户指南》中的使用 IAM Access Analyzer 验证策略

  • 需要多重身份验证(MFA):如果您所处的场景要求您的 AWS 账户 中有 IAM 用户或根用户,请启用 MFA 来提高安全性。若要在调用 API 操作时需要 MFA,请将 MFA 条件添加到您的策略中。有关更多信息,请参阅《IAM 用户指南》中的使用 MFA 保护 API 访问

有关 IAM 中的最佳实操的更多信息,请参阅《IAM 用户指南》中的 IAM 中的安全最佳实践

EventBridge 调度器权限

为了让 IAM 主体(用户、组或角色)在 EventBridge 调度器中创建计划并通过控制台或 API 访问 EventBridge 调度器资源,主体必须在其权限策略中添加一组权限。您可以根据主体的工作职能配置这些权限。例如,仅使用 EventBridge 调度器控制台查看现有计划列表的用户或角色无需拥有调用 CreateSchedule API 操作所需的权限。我们建议您调整基于身份的权限,以便仅提供最低访问权限。

以下列表显示了 EventBridge 调度器的资源及其对应的支持操作。

  • 计划

    • scheduler:ListSchedules

    • scheduler:GetSchedule

    • scheduler:CreateSchedule

    • scheduler:UpdateSchedule

    • scheduler:DeleteSchedule

  • 计划组

    • scheduler:ListScheduleGroups

    • scheduler:GetScheduleGroup

    • scheduler:CreateScheduleGroup

    • scheduler:DeleteScheduleGroup

    • scheduler:ListTagsForResource

    • scheduler:TagResource

    • scheduler:UntagResource

您可以使用 EventBridge 调度器权限来创建自己的客户管理型策略,以用于 EventBridge 调度器。您还可以使用下一节中描述的 AWS 托管策略为常见用例授予必要的权限,而无需管理自己的策略。

EventBridge 调度器的 AWS 托管策略

通过提供 AWS 创建和管理的单独 IAM 策略,AWS 可以满足很多常见使用案例的要求。托管 策略也称为预定义策略,可针对常见使用场景授予必要的权限,让您不必调查需要哪些权限。有关更多信息,请参阅《IAM 用户指南》中的 AWS 托管策略。以下 AWS 托管策略(可将它们附加到账户中的用户)是特定于 EventBridge 调度器的:

  • AmazonEventBridgeSchedulerFullAccess

    授予对调度和调度组使用所有 EventBridge 调度器操作的权限。

    要查看此策略的权限,请参阅《AWS 托管式策略参考》中的 AmazonEventBridgeSchedulerFullAccess

  • AmazonEventBridgeSchedulerReadOnlyAccess

    授予只读权限,以查看有关您的调度和调度组的详细信息。

    要查看此策略的权限,请参阅《AWS 托管式策略参考》中的 AmazonEventBridgeSchedulerReadOnlyAccess

EventBridge 调度器的客户管理型策略

使用以下示例为 EventBridge 调度器创建自己的客户管理型策略。客户管理型策略允许您根据主体的工作职能,仅授予团队中应用程序和用户所需的操作和资源的权限。

示例:CreateSchedule

创建新计划时,您可以选择使用 AWS 拥有的密钥客户管理的密钥在 EventBridge 调度器上加密数据。

以下策略允许主体使用 AWS 拥有的密钥创建计划并应用加密。使用 AWS 拥有的密钥 时,AWS 可以为您管理 AWS Key Management Service (AWS KMS) 上的资源,因此您无需其他权限即可与 AWS KMS 交互。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "scheduler:CreateSchedule" ], "Effect": "Allow", "Resource": [ "arn:aws:scheduler:us-west-2:123456789012:schedule/my-group/my-schedule-name" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/*", "Condition": { "StringLike": { "iam:PassedToService": "scheduler.amazonaws.com" } } } ] }

使用以下策略允许主体创建计划并使用 AWS KMS 客户托管密钥进行加密。要使用由客户托管的密钥,主体必须有权访问您账户中的 AWS KMS 资源。此策略授予访问单个指定的 KMS 密钥的权限,该密钥用于加密 EventBridge 调度器上的数据。或者,您可以使用通配符 (*) 来授予对账户中所有密钥或与给定名称模式匹配的子集的访问权限。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "scheduler:CreateSchedule" ], "Effect": "Allow", "Resource": [ "arn:aws:scheduler:us-east-1:123456789012:schedule/my-group/my-schedule-name" ] }, { "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" ], "Effect": "Allow", "Resource": [ "arn:aws:kms:us-west-2:123456789012:key/my-key-id" ], "Condition": { "StringLike": { "kms:ViaService": "scheduler.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:scheduler:schedule:arn": "arn:aws:scheduler:us-west-2:123456789012:schedule/my-group/my-schedule-name" } } }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/*", "Condition": { "StringLike": { "iam:PassedToService": "scheduler.amazonaws.com" } } } ] }

示例:GetSchedule

使用以下策略允许主体获取有关计划的信息。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "scheduler:GetSchedule" ], "Effect": "Allow", "Resource": [ "arn:aws:scheduler:us-west-2:123456789012:schedule/my-group/my-schedule-name" ] } ] }

示例:UpdateSchedule

使用以下策略允许主体通过调用 scheduler:UpdateSchedule 操作来更新计划。与 CreateSchedule 类似,该策略取决于计划是使用 AWS KMS AWS 拥有的密钥 还是客户托管密钥进行加密。对于配置了 AWS 拥有的密钥 的计划,请使用以下策略:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "scheduler:UpdateSchedule" ], "Effect": "Allow", "Resource": [ "arn:aws:scheduler:us-west-2:123456789012:schedule/my-group/my-schedule-name" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/*", "Condition": { "StringLike": { "iam:PassedToService": "scheduler.amazonaws.com" } } } ] }

对于配置了客户托管的密钥的计划,请使用以下策略。此政策包括允许主体访问您账户中的 AWS KMS 资源的额外权限:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "scheduler:UpdateSchedule" ], "Effect": "Allow", "Resource": [ "arn:aws:scheduler:us-east-1:123456789012:schedule/my-group/my-schedule-name" ] }, { "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" ], "Effect": "Allow", "Resource": [ "arn:aws:kms:us-west-2:123456789012:key/my-key-id" ], "Condition": { "StringLike": { "kms:ViaService": "scheduler.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:scheduler:schedule:arn": "arn:aws:scheduler:us-east-1:123456789012:schedule/my-group/my-schedule-name" } } }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/*", "Condition": { "StringLike": { "iam:PassedToService": "scheduler.amazonaws.com" } } } ] }

示例:DeleteScheduleGroup

使用以下策略允许主体删除计划组。删除组时,还会删除与该组相关联的计划。删除该组的主体还必须拥有删除与该组关联的计划的权限。此策略授予主体对指定的计划组以及该组中的所有计划调用 scheduler:DeleteScheduleGroup 操作的权限:

注意

EventBridge 调度器不支持为单个计划指定资源级别权限。例如,以下语句无效,不应包含在您的策略中:

"Resource": "arn:aws:scheduler:us-west-2:123456789012:schedule/my-group/my-schedule-name"

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "scheduler:DeleteSchedule", "Resource": "arn:aws:scheduler:us-west-2:123456789012:schedule/my-group/*" }, { "Effect": "Allow", "Action": "scheduler:DeleteScheduleGroup", "Resource": "arn:aws:scheduler:us-west-2:123456789012:schedule/my-group/*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/*", "Condition": { "StringLike": { "iam:PassedToService": "scheduler.amazonaws.com" } } } ] }

AWS 托管策略更新

更改 描述 日期

AmazonEventBridgeSchedulerFullAccess:新的托管式策略

EventBridge 调度器增加了对新的托管策略的支持,该策略允许用户完全访问所有资源,包括计划和计划组。

2022 年 11 月 10 日

AmazonEventBridgeSchedulerReadOnlyAccess:新的托管式策略

EventBridge 调度器增加了对新的托管策略的支持,该策略向用户授予对所有资源(包括计划和计划组)的只读访问权限。

2022 年 11 月 10 日

EventBridge 调度器已开始跟踪更改

EventBridge 调度器为其 AWS 托管策略开启了跟踪更改。

2022 年 11 月 10 日