AWS Политика Bucket, чтобы разрешить Lambda, но заблокировать все другие внешние IP-адреса - PullRequest
0 голосов
/ 02 марта 2020

Мне нужно создать политику AWS Bucket, которая блокирует все внешние IP-адреса, кроме IP-адреса нашего офиса, но все же позволяет функциям Lambda получить доступ к Bucket.

Я знаю, как заставить это работать, используя AWS VP C и NAT, однако из-за высоких затрат клиент не хочет их активировать.

Пока так выглядит моя политика корзины, но она не работает:

{
"Version": "2008-10-17",
"Statement": [
    {
        "Sid": "GiveSESPermissionToWriteEmail",
        "Effect": "Allow",
        "Principal": {
            "Service": "ses.amazonaws.com"
        },
        "Action": "s3:PutObject",
        "Resource": "arn:aws:s3:::files-dev/*"
    },
    {
        "Sid": "SourceIP",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::files-dev/*",
        "Condition": {
            "NotIpAddress": {
                "aws:SourceIp": [
                    "81.111.111.111/24"
                ]
            }
        }
    },
    {
        "Sid": "GiveLambdaPermisssion",
        "Effect": "Allow",
        "Principal": {
            "AWS": [
                "arn:aws:iam::6XXXXXX:role/app-backend-dev-lambdaFunctionRole-1XXXX"
            ],
            "Service": "lambda.amazonaws.com"
        },
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::files-dev/*"
    }
]

}

Я думаю, что прочитал всю документацию AWS, которую смог найти, но не смог найти то, что искал. Это может быть потому, что их документы настолько запутаны и не охватывают всю функциональность. Я также искал решения здесь, на StackOverflow и других форумах, но ничего не помогло.

1 Ответ

0 голосов
/ 02 марта 2020

Вы не сможете внести в белый список IP-адреса лямбда-функции, не имея их go через шлюз NAT. Для этого потребуется внести в белый список каждый IP-адрес на AWS, который является не только чрезвычайно неуправляемым списком IP-адресов, но и совершенно небезопасным, поскольку он может внести в белый список любого пользователя с учетной записью AWS.

Проблема заключается в том, что что правило "NotIpAddress", которое у вас сейчас есть, всегда будет применяться, поэтому оно всегда будет запрещать ваши лямбда-функции. Я полагаю, что способ исправить это - добавить предложение NotPrincipal к правилу SourceIP, чтобы оно не применялось к вызовам функций Lambda. Примерно так:

    {
        "Sid": "SourceIP",
        "Effect": "Deny",
        "NotPrincipal": {"AWS": [
            "arn:aws:iam::6XXXXXX:role/app-backend-dev-lambdaFunctionRole-1XXXX"
        ]},
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::files-dev/*",
        "Condition": {
            "NotIpAddress": {
                "aws:SourceIp": [
                    "81.111.111.111/24"
                ]
            }
        }
    },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...