Политика ресурсов AWS на Api Gateway: анонимный пользователь не имеет права выполнять вызов ресурса с явным запретом - PullRequest
0 голосов
/ 11 декабря 2019

Ниже политики ресурсов на AWS API-Gateway, генерирующей этот ответ при вызове как снаружи, так и внутри VPC

{"Message":"User: anonymous is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:ap-south-1:********2818:d5cbeh0e78/default/GET/autoimageresize-staging with an explicit deny"}

Политика ресурсов: белый список VPC

{
    "Version": "2012-10-17",<
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:ap-south-1:********2818:d5cbeh0e78/*/*/*"
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:ap-south-1:********2818:d5cbeh0e78/*/*/*",
            "Condition": {
                "StringNotEquals": {
                    "aws:SourceVpc": "vpc-********"
                }
            }
        }
    ]
}

тогда как белый список ресурса с соответствующим IP-адресом работает достаточно хорошо с политикой ресурса ниже

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:ap-south-1:********2818:d5cbeh0e78/*/*/*"
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:ap-south-1:********2818:d5cbeh0e78/*/*/*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "xx.xxx.xxx.xx"
                }
            }
        }
    ]
}

Может кто-нибудь подсказать, где я могу ошибаться, а также как я могу проверить, что такое aws: SourceVpc-значениеполучать, если не то, что я ожидаю. И еще, в некоторых местах я получаю ключ как SourceVpc, а другие как sourceVpc в документах aws.

Заранее спасибо

1 Ответ

0 голосов
/ 11 декабря 2019

API-интерфейс шлюза API является общедоступным, если вы не создадите частную конечную точку VPC для шлюза API.

Только при наличии частной конечной точки VPC существует:

  • вы можете проверить SourceVPC
  • Условие SourceIp для частных IP-адресов

Это происходит потому, что трафик поступает из внутренней сети

Если у вас есть конечная точка VPC шлюза API:

Один разсоздается частная конечная точка VPC, доступ ко всем существующим общедоступным API-интерфейсам в одной и той же учетной записи возможен только через их собственный домен.

Также убедитесь, что повторно развернули API-интерфейс для отражения изменений политики ресурсов.

Ссылка: https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-resource-policies-aws-condition-keys.html

...