[英]Allow lambda function to access S3 bucket but block external IPs
[英]AWS Bucket Policy to Allow Lambda but block all other external IPs
我需要创建一个 AWS 存储桶策略来阻止所有外部 IP 地址,除了我们的办公室 IP,但仍然允许 Lambda 函数访问存储桶。
我知道如何使用 AWS VPC 和 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 和其他论坛上搜索了解决方案,但没有任何效果。
如果不让 Lambda 函数的 IP 地址通过 NAT 网关,您将无法将其列入白名单。 这样做需要将 AWS 的每个 IP 地址列入白名单,这不仅是一个非常难以管理的 IP 列表,而且完全不安全,因为它会将任何拥有 AWS 账户的人列入白名单。
问题是您当前拥有的"NotIpAddress"
规则始终适用,因此它始终会拒绝您的 Lambda 函数。 我认为解决这个问题的办法是增加一个NotPrincipal条款的SourceIP
规则,因此它并不适用于拉姆达函数调用。 类似于以下内容:
{
"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"
]
}
}
},
这在很大程度上受到 Mark B's answer 的启发,但固定为包括假定的角色 principal 。
请注意,假定的角色是sts
而不是iam
!
{
"Sid": "SourceIP",
"Effect": "Deny",
"NotPrincipal": {"AWS": [
"arn:aws:iam::6XXXXXX:role/app-backend-dev-lambdaFunctionRole-1XXXX",
"arn:aws:sts::6XXXXXX:assumed-role/app-backend-dev-lambdaFunctionRole-1XXXX/lambda-name"
]},
"Action": "s3:*",
"Resource": "arn:aws:s3:::files-dev/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"81.111.111.111/24"
]
}
}
},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.