【问题标题】:Error: Access Denied in S3 bucket after applying VPC policy错误:应用 VPC 策略后 S3 存储桶中的访问被拒绝
【发布时间】:2017-09-08 14:28:14
【问题描述】:

我已对allow only connections from my VPC应用了一项政策:

{
   "Version": "2012-10-17",
   "Id": "Policy1415115909153",
   "Statement": [
     {
       "Sid": "Access-to-specific-VPC-only",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": ["arn:aws:s3:::examplebucket",
                    "arn:aws:s3:::examplebucket/*"],
       "Condition": {
         "StringNotEquals": {
           "aws:sourceVpc": "vpc-111bbb22"
         }
       },
       "Principal": "*"
     }
   ]
}

但现在我得到“拒绝访问”,即使我尝试从给定 VPC 中的实例从 AWS 控制台访问它:

我已经阅读了https://aws.amazon.com/premiumsupport/knowledge-center/s3-regain-access/,但很遗憾我使用的是公司提供的联合登录,并且无法访问完整的 root 用户。

我的问题是为什么即使在 VPC 中我也无法访问存储桶?

我发现的一些类似问题 - Policy Denying Access On Amazon S3S3 VPC end point Bucket policy

【问题讨论】:

  • 在该 EC2 实例上安装 awscli,然后使用“aws s3 ls examplebucket”测试 S3 访问。
  • 我使用联合登录(我使用公司的 AD 帐户登录)。我无权访问根用户或 IAM 用户。我不确定我是否可以访问 AWS CLI。

标签: amazon-web-services amazon-s3


【解决方案1】:

为防止您的策略在 AWS 控制台中应用于联合用户,您可以在策略声明中使用 NotPrincipal 元素而不是 Principal 将他们“列入白名单”。例如:

{
   "Version": "2012-10-17",
   "Id": "Policy1415115909153",
   "Statement": [
     {
       "Sid": "Access-to-specific-VPC-only",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": ["arn:aws:s3:::examplebucket",
                    "arn:aws:s3:::examplebucket/*"],
       "Condition": {
         "StringNotEquals": {
           "aws:sourceVpc": "vpc-111bbb22"
         }
       },
       "NotPrincipal": {
         "Federated": "arn:aws:iam::YOUR-AWS-ACCOUNT-ID:saml-provider/YOUR-PROVIDER-NAME"
       }
     }
   ]
}

【讨论】:

    【解决方案2】:

    您是否设置了 S3 的 VPC 终端节点?

    在 S3 中有两种访问对象的方法。一种是通过 AWS 控制台,另一种是通过对 S3 对象的 HTTPS 调用。

    如果您尝试从 AWS 控制台访问存储桶,则权限由您的 IAM 用户/角色和存储桶策略控制。您正在使用联合登录,所以我假设它是一个角色。

    从 VPC-111bbb222 中的一个实例,注销 AWS 控制台并尝试使用 HTTPS URL 访问该存储桶中的对象。

    【讨论】:

    • 请注意,我在策略中使用的是aws:sourceVpc,而不是aws:sourceVpce。我正在关注教程“限制对特定 VPC 的访问”。 “限制对特定 VPC 端点的访问”位于其上方。
    • 顺便说一句,我实际上可以从 VPC 访问存储桶中的文件,但我无法管理存储桶(如添加其他文件、更改策略等)我也在尝试遵循这个答案 - stackoverflow.com/a/43372890/492336,但到目前为止没有成功。
    • 如果您可以访问存储桶中的对象,那么您可能有一个允许它的 ACL。您能否在“权限”选项卡中向我们展示任何 ACL?
    • 我不能,因为一旦我应用该策略,我就会被拒绝访问。
    • 啊啊啊,我在关注!我看到您正在使用 aws:sourceVpc,但是否有 VPC 端点? 1) 如果有一个端点,任何来自该 VPC 的发往 S3 的流量都将被强制流出该端点。 2) 现有政策限制了任何不是来自 VPC 的 s3 操作。 3) 如果源因为存在端点而被强制为 VPCE,您将永远无法在 VPC 中获取实例来正确管理存储桶,因为该策略仅允许 VPC 源。您需要删除端点以创建您的源 VPC 而不是 VPCE。
    猜你喜欢
    • 2018-01-10
    • 2019-04-20
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 2021-09-03
    • 2021-05-23
    相关资源
    最近更新 更多