我有一个NodeJS应用程序,它将消息发布到AWS SNS主题字符串,并为其订阅AWS SQS。在SQS控制台上,我可以看到发布的消息。但是,我不清楚SQS队列的访问策略。
这个答案提到了"Principal": "*"
-的使用,但这是非常广泛的。可能使用CCD_ 2;但是,这也不窄。
{
"Version": "2012-10-17",
"Id": "Policy1607949016538",
"Statement": [
{
"Sid": "Stmt1607949012567",
"Effect": "Allow",
"Principal": "*",
"Action": [
"sqs:ReceiveMessage",
"sqs:SendMessage"
],
"Resource": "arn:aws:sqs:ap-south-1:463113000000:orders"
}
]
}
问题
- 在向SQS队列传递消息时,由于订阅,哪个用户有效?和发表该主题的人一样吗
- 当我使用
"Principal" : {"AWS": "*"}
时,我只能让消息流入队列。那么,我应该如何定义一个限制性策略,使消息仅作为订阅的结果写入队列 - 在AWS SQS CLI中,创建具有
"Principal" : {"AWS": "*"}
权限的队列的等效项是什么
- 唯一重要的用户是符合订阅和SQS访问策略定义的策略的用户
- 政策文件中的
Condition
可以使整个政策具有限制性。请参阅下面的示例 - 使用AWS CLI命令添加带有条件的SQS权限
限制访问帐户ID的策略文档示例。
{
"Version": "2012-10-17",
"Id": "Policy1607960702002",
"Statement": [
{
"Sid": "Stmt1607960701004",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"sqs:ReceiveMessage",
"sqs:SendMessage"
],
"Resource": "arn:aws:sqs:ap-south-1:463113000000:orders",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "463113000000"
}
}
}
]
}