来自EC2的AWS S3 Bucket Access

问题描述 投票:8回答:2

我需要启动一个S3存储桶,以便我的EC2实例可以访问存储图像文件。 EC2实例需要读/写权限。我不想让S3存储桶公开,我只希望EC2实例能够访问它。

另一个问题是我的EC2实例正在由OpsWorks管理,我可以根据负载/使用情况启动不同的实例。如果我通过IP限制它,我可能并不总是知道EC2实例具有的IP。我可以通过VPC限制吗?

我是否必须为静态网站托管启用我的S3存储桶?我是否需要公开存储桶中的所有文件以使其正常工作?

amazon-web-services amazon-s3 amazon-ec2
2个回答
9
投票

您不需要将存储桶公开读取,也不需要将文件公共可读。桶和它的内容可以保密。

不要基于IP地址限制对存储桶的访问,而是根据EC2实例正在使用的IAM角色对其进行限制。

  1. 为EC2实例创建IAM EC2实例角色。
  2. 使用该角色运行EC2实例。
  3. 为此IAM角色提供访问S3存储桶的策略。

例如:

{
  "Version": "2012-10-17",
  "Statement":[{
    "Effect": "Allow",
    "Action": "s3:*",
    "Resource": ["arn:aws:s3:::my_bucket",
                 "arn:aws:s3:::my_bucket/*"]
    }
  ]
} 
  1. 如果要限制对存储桶本身的访问,请尝试使用S3存储桶策略。

例如:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": ["arn:aws:iam::111122223333:role/my-ec2-role"]
      },
      "Action": "s3:*",
      "Resource": ["arn:aws:s3:::my_bucket",
                   "arn:aws:s3:::my_bucket/*"]
    }
  ]
}

其他信息:http://blogs.aws.amazon.com/security/post/TxPOJBY6FE360K/IAM-policies-and-Bucket-Policies-and-ACLs-Oh-My-Controlling-Access-to-S3-Resourc


1
投票

IAM角色是您的解决方案。

您需要创建具有s3访问权限的角色,如果ec2实例在没有任何角色的情况下启动,则必须使用分配的角色重新构建它。

enter image description here

参考:Allowing AWS OpsWorks to Act on Your Behalf

© www.soinside.com 2019 - 2024. All rights reserved.