amazon-web-services - 使用 AWS 资源策略有条件地允许来自 Lambda 的默认 VPC 的流量
问题描述
对于 Amazon EMR 提取、转换、加载 (ETL) 步骤,我有一个最低权限存储桶策略,该策略拒绝对所有资源的所有操作,除非流量通过 S3 VPC 终端节点传入(如下所示)。不幸的是,我的 Lambda 函数被拒绝访问存储桶,因为默认情况下,Lambda 在安全 VPC 中运行函数,Lambda 拥有该 VPC,并且未连接到我账户的默认 VPC。该文档建议我将我的函数连接到 VPC。但是,由于我的环境中的一些限制,我无法将我的函数连接到我的 VPC,我只能使用 Lambda 默认 VPC。仅从我的 VPC 终端节点和 Lambda 函数对我的 S3 存储桶进行最低权限访问的解决方法是什么?
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Deny",
"Principal":"*",
"Action":"s3:*",
"Resource":[
"arn:aws:s3:::inputs3bucket",
"arn:aws:s3:::inputs3bucket/*"
],
"Condition":{
"StringNotEquals":{
"aws:SourceVpce":"S3VPCGWEndpoint"
}
}
}
]
}
解决方案
如果您的 Lambda 使用 IAM 角色进行交互,您可以NotPrincipal
通过引用 Lambdas IAM 角色来使用该策略。
调整后的政策如下所示。
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012"
]
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::inputs3bucket",
"arn:aws:s3:::inputs3bucket/*"
],
"Condition": {
"StringNotEquals": {
"aws:SourceVpce": "S3VPCGWEndpoint"
}
}
}]
}
通过使用此策略,它将拒绝 IAM 角色不是指定 IAM 角色且流量不是来自 VPC 终端节点的所有操作。
推荐阅读
- c# - 使用 NEST 使用 ElasticSearch 2.x 搜索多种类型时,如何获得混合结果?
- mysql - 如何检查 INSERT INTO SELECT 块中一列的两个不同条件?
- javascript - 筛选多个类别的产品
- jfreechart - 在 JFreeChart 中连接设计信封点
- awk - GAWK 使用 -i inplace 选项将字符串打印到 STDOUT
- workflow - 如何将 Watson Knowledge Catalog (WKC) 连接到我的 Oracle Cloud ATP 数据库?
- python - 删除了 jupyter 笔记本单元格 - 有没有办法从仍在内存中的对象返回代码?
- angular - 使用 Angular 自定义电子邮件验证
- shell - 在活动窗口中的选定字段中填充文本 - VBScript、WScript.Shell
- python - 使用 Pandas 根据另一列的值选择一列