IAM 策略允许 SMS 发布但不拒绝所有 SNS
IAM policy allowing SMS publishing but not denying all SNS
我想设置 IAM 策略以允许用户发布到 SNS 以发送 SMS 并发布到特定的 SNS arn。
我找到了一种允许 SMS 发布但不允许任何 SNS 发布的方法:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"sns:Publish"
],
"Resource": "arn:aws:sns:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"Resource": "*"
}
]
}
但此策略明确拒绝所有其他 SNS 发布,因此我无法添加允许特定 SNS 的策略。
问题是短信发布没有具体的arn。
所以我正在研究条件以找到一种方法来限制只允许发布 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 策略元素 (spec) 允许的方法。我使用此 属性 来匹配没有 ARN 的资源:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"NotResource": "arn:aws:sns:*:*:*"
}
]
}
通过这个技巧,我可以允许所有没有 ARN 的 sns 发布(但我不知道除了 SMS 之外是否还有其他服务...)。
这也允许我在另一个策略中允许特定的 ARN。
我想设置 IAM 策略以允许用户发布到 SNS 以发送 SMS 并发布到特定的 SNS arn。
我找到了一种允许 SMS 发布但不允许任何 SNS 发布的方法:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"sns:Publish"
],
"Resource": "arn:aws:sns:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"Resource": "*"
}
]
}
但此策略明确拒绝所有其他 SNS 发布,因此我无法添加允许特定 SNS 的策略。
问题是短信发布没有具体的arn。
所以我正在研究条件以找到一种方法来限制只允许发布 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 策略元素 (spec) 允许的方法。我使用此 属性 来匹配没有 ARN 的资源:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"NotResource": "arn:aws:sns:*:*:*"
}
]
}
通过这个技巧,我可以允许所有没有 ARN 的 sns 发布(但我不知道除了 SMS 之外是否还有其他服务...)。
这也允许我在另一个策略中允许特定的 ARN。