繁体   English   中英

允许从特定VPC或控制台访问S3存储桶

[英]Allow S3 Bucket access from either specific VPC or console

我在S3存储桶(API密钥)的文件中存储了一些应用程序配置。 我将S3存储桶配置为仅允许通过特定的VPC端点进行访问,该端点将密钥与特定环境联系在一起,并防止例如生产密钥在登台或测试环境中意外使用。

但是有时我需要修改这些键,这很痛苦。 当前存储桶策略阻止控制台访问,因此我必须删除存储桶策略,更新文件,然后替换该策略。

如何允许从控制台,特定的VPC端点进行访问,而在其他地方没有访问权限?

目前的政策,我已经尝试过但失败了:

{
    "Version": "2012-10-17",
    "Id": "Policy12345",
    "Statement": [
        {
            "Sid": "Principal-Access",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::account-id:root"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::my-keys-staging",
                "arn:aws:s3:::my-keys-staging/*"
            ]
        },
        {
            "Sid": "Access-to-specific-VPCE-only",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::my-keys-staging",
                "arn:aws:s3:::my-keys-staging/*"
            ],
            "Condition": {
                "StringNotEquals": {
                    "aws:sourceVpce": "vpce-vpceid"
                }
            }
        }
    ]
}

如评论中所述,拥有明确的Deny不能被覆盖。 通过包含与特定VPC绑定的Deny ,您不能添加任何其他Allow元素来抵消该Deny语句。

选项1

一种选择是将“如果不是从VPC abc拒绝,则”语句更改为“如果从VPC abc拒绝,则允许”语句。 这将允许您向策略中添加其他Allow语句,以允许您从其他位置访问存储桶。

但是,这样做有两个非常重要的警告:

  1. 任何通过IAM策略具有“通用” S3访问权限的用户都可以访问该存储桶,并且
  2. 该VPC中的任何角色/用户都将被允许进入您的存储桶。

因此,通过将Deny更改为Allow ,您将在存储桶级别不再具有VPC限制。

这可能会或可能不会在您组织的安全要求之内。

选项2

相反,您可以修改现有的Deny以添加其他条件,这些条件将在“与”情况下起作用:

"Condition": {
  "StringNotEquals": {
    "aws:sourceVpce": "vpce-vpceid",
    "aws:username": "your-username"
  }
}

在以下情况下,这种类型的条件将拒绝请求:

  1. 该请求不是来自您的魔术VPC,并且
  2. 该请求不是来自您的用户名

因此,除了允许用户登录从任何地方访问存储桶之外,您应该能够限制对VPC的请求限制。

注意执行此操作将打开的安全漏洞。 您应该确保将用户名限制为(a)未分配任何访问密钥,并且(b)启用了MFA。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM