amazon-web-services - IAM 政策允许 SMS 发布但不拒绝所有 SNS
问题描述
我想设置 IAM 策略以允许用户发布到 SNS 以发送 SMS 并发布到特定的 SNS arn。
我找到了一种允许 SMS 发布而不允许任何 SNS 发布的方法: 使用 AmazonSNSClient 发送文本消息时的授权
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"sns:Publish"
],
"Resource": "arn:aws:sns:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"Resource": "*"
}
]
}
但此政策明确拒绝所有其他 SNS 发布,因此我无法添加允许特定 SNS 的政策。
问题是 SMS 发布没有特定的 arn。
因此,我正在研究条件以找到一种方法来限制只允许发布 SMS。但是特定的 SMS 参数(PhoneNumber cf https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#publish-property)无法在条件下过滤:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "*",
"Condition": {"Null":{"PhoneNumber":"false"}}
}
]
}
有没有办法完成这样的政策?
解决方案
实际上,为了做到这一点,我找到了一种使用NotResource
JSON 策略元素(规范)的方法。我使用此属性来匹配没有 ARN 的资源:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"NotResource": "arn:aws:sns:*:*:*"
}
]
}
有了这个技巧,我可以允许所有没有 ARN 的 sns 发布(但我不知道除了 SMS 之外是否还有其他服务......)。
这也允许我在另一个策略中允许具体的 ARN。
推荐阅读
- python - 写文件 python 我认为我有问题 else:count
- android - 访问 InternalStorage/Android/data/package_name/files 中的文件?
- mysql - 为什么这个 GROUP BY Mysql 查询不起作用?
- ms-access - Microsoft Access 无法创建主键
- sql - SQL:如何为每一列中具有重复值的每组行选择一行?
- javascript - 需要根据年份和月份选择所有数据
- slack - OpenNMS 为同一事件发送多个通知
- javascript - 我想通过验证用户是否存在于 sqlite3 数据库中来创建一个注册表单来注册用户
- jquery - 使用 JQuery 从 JSON 获取日期格式的字段值
- asp.net-core - ILogger 的自定义实现