如果请求不是来自这些ips ["192.0.2.0/24","203.0.113.0/24"]
,并且请求在以下[example1.com, example2.com ]
中没有引荐来源,那么我的条件就像我想要的那样。然后拒绝它。我个人知道我可以这样做:
{
"Sid": "6",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my_bucket/*",
"Condition": {
"IpAddress":{
"aws:SourceIp": ["192.0.2.0/24","203.0.113.0/24"]
}
}
}
{
"Sid": "7",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::indeev5-dev-media/*/video/*",
"Condition": {
"StringNotLike": {
"aws:Referer": [
"http://example1.com/*",
"http://example2.com/*",
]
}
}
}
但我怎样才能做一个" 和 "在这里。我们同时检查这两个条件。我发布了一个有同样最终目标的问题,所以任何指针都会受到高度赞赏here。 简而言之,我想要做的是拒绝所有不是来自推荐者列表的请求,除了来自ip列表的请求。感谢
答案 0 :(得分:1)
您的逻辑要求似乎是:
["192.0.2.0/24","203.0.113.0/24"]
["http://example1.com/*", "http://example2.com/*"]
因此,您可以将其配置为 OR 而不是 AND NOT ,并且仅使用ALLOW而不是DENY。这样做的好处是允许用户策略工作(可以通过使用DENY来覆盖)。
该政策分为两部分:
"Condition": {"IpAddress":{"aws:SourceIp": ["192.0.2.0/24","203.0.113.0/24"]}}
"Condition": {"StringLike": {"aws:Referer": ["http://example1.com/*","http://example2.com/*",]}}
(我没有测试过这个。)