我有一个只能通过VPC端点访问的专用API网关。我希望资源策略只允许通过的请求进入
一个VPC端点(例如同一VPC内的Lambda(
或
B-不在VPC内,而是来自一组外部IP地址/CIDR块。
我知道A可以通过实现
"Condition": {
"StringEquals": {
"aws:SourceVpce": "vpce-xyz"
}
}
我知道B可以实现:
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"xx.xx.xx.xx/32"
]
}
}
然而,有可能以OR风格的方式同时应用它们吗?VPC的入站规则允许使用IP地址/CIDR块。同一VPC内的Lambda可以访问专用API网关。
感谢
编辑-政策的完整示例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:eu-west-1:x:y/*",
"Condition": {
"StringEquals": {
"aws:SourceVpce": "vpce-123"
},
"IpAddress": {
"aws:SourceIp": [
"1234",
"1234"
]
}
}
}
]
}
是的,这应该是可能的。您需要两个IAM语句才能获得OR
。所以基本上第二个语句和第一个语句完全相同,只是条件不同。例如:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:eu-west-1:x:y/*",
"Condition": {
"StringEquals": {
"aws:SourceVpce": "vpce-123"
}
}
},
{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:eu-west-1:x:y/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"1234",
"1234"
]
}
}
}
]
}