amazon-web-services - “AWS::SQS::QueuePolicy”中的“Principal”属性未纳入 AWS ARN
问题描述
我在不同的帐户中使用 CloudFormation 创建了 SNS 和 SQS,并且能够订阅 SNS,能够接收消息,按预期工作。使用的代码:
Account-02 中的 CF:
AWSTemplateFormatVersion: 2010-09-09
Resources:
Queue:
Type: AWS::SQS::Queue
Properties:
QueueName: "SampleQueue"
SqsQueuePolicy:
Type: AWS::SQS::QueuePolicy
Properties:
PolicyDocument:
Version: '2012-10-17'
Id: MyQueuePolicy
Statement:
- Sid: Allow-SNS-SendMessage
Effect: Allow
Principal: "*"
Action:
- sqs:SendMessage
Resource: !GetAtt Queue.Arn
Condition:
ArnEquals:
aws:SourceArn: "arn:aws:sns:eu-west-1:<account-01>:SampleTopic"
Queues:
- !Ref Queue
SnsSubscription:
Type: AWS::SNS::Subscription
Properties:
Protocol: sqs
Endpoint: !GetAtt Queue.Arn
Region: "eu-west-1"
TopicArn: "arn:aws:sns:eu-west-1:<account-01>:SampleTopic"
当 Principal 设置如下时,它不起作用(没有收到 SQS 的消息)。有什么不对吗?
Principal:
AWS:
- arn:aws:iam::<account-02>:user/user01
它也适用于“SQS::QueuePolicy”主体,如下所示:
Principal:
Service:
- sns.amazonaws.com
想要查看 Principal 为何没有采用有效的 AWS ARN?
(是的,Policy 中的 Condition 元素足够严格,其他主题无法发布到队列中,但我们的安全团队对此并不满意……想了解为什么 Principal 不接受有效的吗?)
解决方案
推荐阅读
- django - 如何从 django admin 中添加外键关系
- sapui5 - 对话框内的 SAPUI5 智能表
- jetty - 配置Jetty请求超时的正确方法
- visual-studio - 此项目与当前版本的 Visual Studio VS2017 不兼容
- reactjs - 在 Reactstrap 中更改默认字体的最简单方法是什么?
- elixir - 在什么情况下需要在 Ecto 迁移中调用 flush()?
- javascript - 复杂键 - 按第一个键过滤并仅按第二个键排序
- java - 如何接近当前时间 [Android Studio]
- javascript - Chrome 扩展程序:通过链接 [rel*='shortcut icon'] 或链接 [rel*='icon'] 获取 Google 的网站图标不起作用
- python - 在python中计算字符串中相同顺序字母的数量