仅从我的 EC2 实例匿名访问 S3 存储桶

仅从我的 EC2 实例匿名访问 S3 存储桶

有没有办法让匿名的仅从单个 AWS 帐户中的 EC2 实例(全部)访问某个 S3 存储桶?

  1. 我知道我可以使用 IAM 角色,但我发现它有太多的移动部件,并且使必须使用访问密钥/密钥的任何脚本变得复杂(例如,当它发生变化时重写 /etc/apt/* 行)。更不用说没有办法将角色附加到现有实例,这让它变得更加痛苦。

  2. 也不可能简单地通过使用 VPC 子网来限制访问,因为 S3 存储桶访问是通过公共 EC2 接口进行的。

答案1

是的,您已经将存储桶策略附加到存储桶,如下所示:

{
   "Version":"2012-10-17",
   "Statement":[{
         "Sid":"AddCannedAcl",
         "Effect":"Allow",
         "Principal": {
            "AWS": ["arn:aws:iam::111122223333:root"]
         },
         "Action":[
            "s3:GetObject",
            "s3:GetObjectAcl"
         ],
         "Resource":["arn:aws:s3:::bucket/*"]
      ]
   }]
}

111122223333你的账户 ID 在哪里

答案2

AWS 此后添加了用于 S3 访问的 VPC 端点,您可以在 AWS 博客上阅读有关新功能的信息:https://aws.amazon.com/blogs/aws/new-vpc-endpoint-for-amazon-s3/

在 VPC 的私有子网中运行的 EC2 实例现在可以控制对与 VPC 位于同一区域的 S3 存储桶、对象和 API 函数的访问。您可以使用 S3 存储桶策略来指示哪些 VPC 和哪些 VPC 终端节点可以访问您的 S3 存储桶。

希望有帮助,

亚伦

相关内容