繁体   English   中英

EC2 (VPC) 拒绝 AWS S3 访问点访问

[英]AWS S3 Access point access denied from EC2 (VPC)

我有以下场景,我尝试使用访问点访问 S3 存储桶内容,但是出现AccessDenied错误。

  1. 具有公有子网的客户 VPC
  2. 此子网下具有公有 IP 的 EC2 实例
  3. 将 IAM 角色分配给 EC2 实例以拥有对 S3 的完全访问权限
  4. 创建 S3 存储桶my-test-bucket和访问点“my-test-ap”,提供默认策略和 VPC ID 以限制通过 Internet 的访问
  5. ssh到 EC2 实例并运行命令 - aws s3 ls --Bucket my-test-bucketaws s3api list-objects --bucket -my-test-bucket ,列出aws s3api list-objects --bucket -my-test-bucket中的所有内容
  6. 现在运行像aws s3api list-objects --bucket arn:aws:s3:us-east-1:my-account-id:accesspoint/my-test-ap给我“AccessDenied”消息

接入点策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:us-east-1:my-account-id:accesspoint/my-test-ap",
            "Condition": {
                "StringEquals": {
                    "s3:AccessPointNetworkOrigin": "VPC"
                }
            }
        }
    ]
}

请注意确定缺少什么才能使其正常工作。

为了重现您的情况,我执行了以下操作:

  • 创建了一个 Amazon S3 存储桶
  • 使用公有子网创建了一个新的 Amazon VPC(使用 VPC 向导)
  • 使用允许所有 Amazon S3 访问的 IAM 角色启动了一个 Amazon EC2 实例
  • SSH登录,确认可以访问S3
  • 在存储桶上创建了一个 S3 访问点:
    • Network origin = VPC
    • 指向新的 VPC
    • “阻止所有公共访问”设置为 true(全部被阻止)
    • 没有接入点策略(这与您的情况不同)

然后我尝试使用以下方法访问存储桶:

 aws s3api list-objects-v2 --bucket arn:aws:s3:ap-southeast-2:1111:accesspoint/my-access-point

结果: AccessDenied

然后我添加了一个VPC Endpoint ,因为创建访问点 - Amazon Simple Storage Service说:

要将访问点与 VPC 一起使用,您必须修改 VPC 终端节点的访问策略。 VPC 终端节点允许流量从您的 VPC 流向 Amazon S3。 它们具有访问控制策略,用于控制允许 VPC 内的资源与 S3 交互的方式。 如果 VPC 终端节点策略授予对访问点和底层存储桶的访问权限,则从您的 VPC 到 S3 的请求仅通过访问点成功。

然后我能够成功访问存储桶

因此,从 VPC 访问 S3 接入点时似乎需要 VPC 端点

示例如下所示: 使用 VPC 终端节点和 S3 访问点管理 Amazon S3 访问 | AWS 存储博客

暂无
暂无

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

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