我有一个只能通过VPC端点访问的私有API网关。如果请求是通过
A- VPC端点(例如,位于同一VPC内的Lambda )
或
B-不是在VPC内部,而是来自一组外部IP地址/CIDR块。
我知道可以通过以下方式实现A:
"Condition": {
"StringEquals": {
"aws:SourceVpce": "vpce-xyz"
}
}我知道B可以通过以下方式实现:
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"xx.xx.xx.xx/32"
]
}
}然而,是否有可能以一种或一种风格同时应用这两种方法?在VPC的入站规则中允许IP地址/CIDR块。Lambda在同一个VPC中可以访问私有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"
]
}
}
}
]
}发布于 2022-03-29 11:18:27
是的,这应该是可能的。您需要两个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"
]
}
}
}
]
}https://stackoverflow.com/questions/71660970
复制相似问题