能否在IAM策略语句中使用AWS托管SQS密钥?别名ARN尝试失败
解决IAM策略中使用AWS托管SQS KMS密钥的问题
你需要用AWS托管SQS密钥的实际密钥ARN替换策略里的别名ARN,因为IAM策略的Resource字段必须指定KMS密钥的真实ARN,不能用别名ARN、别名名称或密钥ID。
步骤1:获取托管SQS密钥的实际ARN
有两种方式获取:
- AWS控制台:进入KMS控制台,切换到「AWS托管的密钥」标签,筛选服务为SQS,找到对应的密钥,复制它的ARN(格式为
arn:aws:kms:<region>:<account-id>:key/<key-id>)。 - AWS CLI:执行以下命令:
从返回结果中提取aws kms list-aliases --alias-name alias/aws/sqsTargetKeyId字段的值,然后拼接成完整ARN:arn:aws:kms:<region>:<account-id>:key/<TargetKeyId>
步骤2:修改IAM策略
把策略里的Resource替换为刚才获取的实际密钥ARN,修改后的策略示例:
PolicyDocument: Statement: - Effect: Allow Principal: Service: s3.amazonaws.com Action: - kms:Encrypt - kms:Decrypt Resource: arn:aws:kms:<region>:<account-id>:key/<actual-key-id>
这样修改后,S3就能正常使用该托管密钥向SQS队列发送事件了。
内容的提问来源于stack exchange,提问作者skumar
相关产品推荐
相关产品推荐

