如何扩展SQS队列默认策略且不破坏归属账户权限
解决SQS队列添加自定义权限不破坏归属账户访问的方法
核心逻辑
SQS队列默认没有资源策略,归属账户的访问权限来自于IAM身份策略(比如账户root用户默认拥有全权限,或该账户下的IAM实体配置了对应SQS权限)。但为了避免添加自定义策略后意外限制归属账户的访问,最安全的方式是在自定义策略中显式保留归属账户的完全访问权限。
具体操作步骤
- 获取队列归属账户ID:从队列ARN中提取,ARN格式为
arn:aws:sqs:区域ID:归属账户ID:队列名称,其中的数字串就是归属账户ID。 - 构造包含双语句的资源策略:将归属账户的全权限语句和目标账户的发消息语句合并,示例如下:
{ "Version": "2012-10-17", "Id": "Queue_Custom_Policy", "Statement": [ { "Sid": "Allow_Owner_Full_Access", "Effect": "Allow", "Principal": { "AWS": ["归属账户ID"] }, "Action": "sqs:*", "Resource": "队列的完整ARN" }, { "Sid": "Allow_External_Account_SendMessage", "Effect": "Allow", "Principal": { "AWS": ["111122223333"] }, "Action": "sqs:SendMessage", "Resource": "队列的完整ARN" } ] }
- 应用策略到队列:通过AWS控制台、CLI或SDK将上述策略设置为队列的资源策略。
关键说明
- 显式添加归属账户的全权限语句,能确保无论IAM身份策略如何变化,归属账户都能正常访问队列,不会破坏现有功能。
- 替换策略中的
归属账户ID和队列的完整ARN为实际值,确保策略生效。
内容的提问来源于stack exchange,提问作者Shadow
相关产品推荐
相关产品推荐

