Недавно я начал работать над защитой доступа к своей корзине S3, и у меня есть два источника, которым я хочу предоставить доступ и запретить доступ к любому другому источнику.
В этом случае, мы добиваемся, чтобы получить доступНапример, мой локальный диапазон IP или VPC IP и функция Lambda.
Я создал следующую политику S3 Bucket:
{
"Version": "2019-10-10",
"Statement": [
{
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"arn:aws:iam::480311425080:role/<lambda role name>",
"arn:aws:sts::480311425080:assumed-role/<lambda role name>/<Lambda function name>"
],
"Service": "lambda.amazonaws.com"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::<bucket name>/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"<ip adress>/32",
"<ip adress>/32"
]
}
}
}
]
}
Итак, как вы видите, я использую NotPrincipal
чтобы исключить мою соответствующую роль и Lambda от отказа, и я использую NotIpaddress
для исключения моих действительных IP-адресов от отказа.
В этом случае я все еще могу подключиться к S3 из моей функции Lambda, но также и для подключенияк этому от "предположительно ни одного авторизованного IP-адреса". Таким образом, условие
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"<ip adress>/32",
"<ip adress>/32"
]
}
}
не работает должным образом.
Возможно, вы бы сказали использовать только роль ARN для NotPrincipal
, но оно также не работает.
Помещение принципала только в качестве роли "без указания arn с лямбда-функцией"
"NotPrincipal": {
"AWS": "arn:aws:iam::880719415082:role/lambda_s3_access"
},
применяет условие IP-фильтрации, но не позволяет Lambda подключиться.
Любая идея?
С уважением,
Ршад