我试图了解AWS API-Gateway资源策略中的条件元素如何触发。
我尝试使用SourceIP通过仅允许128.0.0.0/1和0.0.0.0/1来阻止所有流量,但是我两次都能够从同一IP访问我的API。我也尝试过使用CurrentTime阻止我的API。但是我没有添加任何条件似乎阻止了我调用API的能力。我有什么误会?
我目前试图阻止我的API进入所有调用的方法是
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<AccountID>:root"
},
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:us-west-2:<AccountID>:<API>/*/*",
"Condition": {
"DateGreaterThan": {
"aws:CurrentTime": "2019-12-15T12:00:00Z"
}
}
}
]
}
据我了解,通过将“ DateGreaterThan”“ CurrentTime”指定为2019年12月(当前是2019年9月),此API不得再使用三个月。
有人可以告诉我我偏离轨道了吗?
提前谢谢!
PS:我使用AWS PublicKey / SecretKey在主体中具有正确的授权。我只是想用当前条件阻止通话。
PPS:我忘了提到我已经确认我的API部署正在使用此资源策略,因为我的API在添加AWS PublicKey / SecreyKey之前拒绝了调用。 (我启用了AWS_IAM授权)
按照Joey Kilpatrick的要求,这是我更新的(仍然无效)的资源政策。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<AccountID>:user/Service_Account"
},
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:us-west-2:<AccountID>:<API>/*/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "0.0.0.0/1"
}
}
}
]
}
在这种情况下,我使用147.x.x.x IP来访问该API,因此我希望该API返回403。我还测试了前面提到的“ CurrentTime”条件。
答案 0 :(得分:1)
我想首先注意到,将SourceIP限制为128.0.0.0/1和0.0.0.0/1不会拒绝IP地址,因为每个IP都位于这两个CIDR块之一中。
但这不是您最大的问题:您不能限制root
用户的任何权限。这是设计使然。了解为什么使用root
用户here是个坏主意。