为非管理员用户创建精细的 IAM 权限 - AWS Step Functions

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

为非管理员用户创建精细的 IAM 权限

IAM 中的默认托管策略(例如ReadOnly)并不能完全涵盖所有类型的 AWS Step Functions 权限。本节将介绍这些不同类型的权限并提供一些示例配置。

Step Functions 具有四种类别的权限。根据您要为用户提供的访问权限,您可以使用这些类别的权限控制访问权限。

服务级别权限

适用于作用于特定资源的 API 组件。

状态机级权限

适用于对特定状态机执行的所有 API 组件。

执行级权限

适用于对特定执行采用的所有 API 组件。

活动级权限

适用于对特定活动或活动的特殊实例执行的所有 API 组件。

服务级别权限

此权限级别适用于作用于特定资源的所有 API 操作。这些包括CreateStateMachineCreateActivityListStateMachinesListActivities、和ValidationStateMachineDefinition

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:ListStateMachines", "states:ListActivities", "states:CreateStateMachine", "states:CreateActivity", "states:ValidationStateMachineDefinition", ], "Resource": [ "arn:aws:states:*:*:*" ] }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam:::role/my-execution-role" ] } ] }

状态机级权限

此权限级别适用于对特定状态机执行的所有 API 操作。这些 API 操作要求状态机的 Amazon 资源名称 (ARN) 作为请求的一部分,例如 DeleteStateMachineDescribeStateMachineStartExecutionListExecutions

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:DescribeStateMachine", "states:StartExecution", "states:DeleteStateMachine", "states:ListExecutions", "states:UpdateStateMachine", "states:TestState", "states:RevealSecrets" ], "Resource": [ "arn:aws:states:*:*:stateMachine:StateMachinePrefix*" ] } ] }

执行级权限

此权限级别适用于对特定执行采用的所有 API 操作。这些 API 操作要求执行的 ARN 作为请求的一部分,例如 DescribeExecutionGetExecutionHistoryStopExecution

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:DescribeExecution", "states:DescribeStateMachineForExecution", "states:GetExecutionHistory", "states:StopExecution" ], "Resource": [ "arn:aws:states:*:*:execution:*:ExecutionPrefix*" ] } ] }

活动级权限

此权限级别适用于将对特定活动或活动的特殊实例执行的所有 API 操作。这些 API 操作要求活动的 ARN 或实例的令牌作为请求的一部分,例如 DeleteActivityDescribeActivityGetActivityTaskSendTaskHeartbeat

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:DescribeActivity", "states:DeleteActivity", "states:GetActivityTask", "states:SendTaskHeartbeat" ], "Resource": [ "arn:aws:states:*:*:activity:ActivityPrefix*" ] } ] }