如何扩展sqs队列默认策略

问题描述 投票:0回答:1

我有 sqs 队列,它没有定义策略。队列不属于我,我不知道它是如何使用的,我也不想破坏它。我需要添加从不同帐户发送消息的权限,即:

{
   "Version": "2012-10-17",
   "Id": "Queue1_Policy_UUID",
   "Statement": [{
      "Sid":"Queue1_Send_Receive",
      "Effect": "Allow",
      "Principal": { "AWS": [ "111122223333" ] },
      "Action": [ "sqs:SendMessage" ],
      "Resource": "arn:aws:sqs:us-east-1:my-queue"
   }]
}

将此类策略添加到队列将覆盖默认策略,该策略授予对创建队列的帐户的完全访问权限。我找不到此默认策略的定义/等效项。

如何将我的语句添加到队列的资源策略中,而不中断拥有队列的帐户的访问权限?

amazon-web-services amazon-iam amazon-sqs
1个回答
0
投票

您显示的策略将授予向队列发送消息的权限。

最安全的选择是专门添加想要向队列发送消息的资源的 ARN。例如,如果某些代码使用 IAM 角色,您可以添加如下权限:

  "Principal": { 
    "AWS": [
      "111122223333",
      "arn:aws:iam::123456789012:role/role-from-other-account"
    ]
  },

或者,如果您希望信任整个 AWS 账户,只需添加该帐号:

  "Principal": { 
    "AWS": [
      "111122223333",
      "123456789012"
    ]
  },

为此,其他帐户中还必须有一个策略来授予资源使用 SQS 队列的权限。例如,如果“其他”账户 (

Other-Role
) 中的 IAM 角色想要“此”账户 (
This-Account
) 中的 SQS 角色,那么它将需要以下权限:

{
   "Version": "2012-10-17",
   "Statement": [
     {
      "Effect": "Allow",
      "Action": "sqs:SendMessage",
      "Resource": "arn:aws:sqs:us-east-2:111122223333:queue1"
     }
   ]
}

这是因为必须将跨账户权限添加到发送账户接收资源中的IAM实体。这会阻止其他人访问您的资源,除非您专门授予许可。

© www.soinside.com 2019 - 2024. All rights reserved.