KMS密钥权限问题:Step Function无法使用加密SNS主题
状态机调用KMS GenerateDataKey权限报错解决思路
问题核心
KMS的访问控制需要IAM角色权限+KMS资源策略(Key Policy)双重允许,虽然你给状态机角色配置了IAM权限,但KMS的Key Policy未授权状态机角色执行kms:GenerateDataKey操作,导致报错。
具体修正步骤
更新KMS资源策略
在KMS KeyPolicy的Statement数组中新增一条授权语句,直接允许状态机的角色ARN执行所需KMS操作:- Sid: AllowStepFunctionRoleToUseKey Effect: Allow Principal: AWS: "arn:aws:iam::190565753270:role/dfx5-health-monitoring-dev-StepFun-StepFunctionRole-kMolFlKjZ3lh" Action: - kms:Encrypt - kms:Decrypt - kms:DescribeKey - kms:GenerateDataKey - kms:ReEncrypt* Resource: '*'注意:替换为你实际的状态机角色ARN(即错误信息中
assumed-role/后的角色部分,去掉末尾的会话ID)。原策略无效原因
你原策略中AllowAccountPoliciesToUseKey语句授权的是states.amazonaws.com服务主体,但状态机是通过**角色的临时身份(assumed-role)**访问KMS,并非服务直接调用,因此该授权不适用。权限验证
修改后可通过IAM Access Analyzer或KMS权限测试工具,模拟状态机角色执行kms:GenerateDataKey操作,确认权限配置生效。
内容的提问来源于stack exchange,提问作者Martin Golis
相关产品推荐
相关产品推荐

