Amazon S3存储桶策略:如何锁定仅对您的EC2实例的访问

时间:2013-07-20 09:19:37

标签: amazon-web-services amazon-s3 amazon-ec2 amazon

为了安全起见,我希望锁定一个S3存储桶 - 我将部署映像存储在存储桶中。

我想要做的是创建一个存储桶策略,该策略仅支持通过我的帐户中的EC2实例通过http 进行匿名下载

有办法做到这一点吗?

我正在尝试使用的政策示例(它不允许自己应用):

{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::[my bucket name]",
      "Condition": {
        "ArnEquals": {
          "aws:SourceArn": "arn:aws:ec2:us-east-1:[my account id]:instance/*"
        }
      }
    }
  ]
}

2 个答案:

答案 0 :(得分:2)

只是为了澄清这是如何做到的。您创建IAM策略,将其附加到新角色或现有角色,并使用角色装饰ec2实例。您还可以通过存储桶策略提供访问权限,但这不太精确。

以下详细信息:

  1. 除我的拥有者外,S3存储桶是默认拒绝的。因此,您可以创建存储桶并上传数据。您可以尝试使用https://s3.amazonaws.com/MyBucketName/file.ext向浏览器验证无法访问这些文件。应该返回错误代码"访问被拒绝"在xml中。如果您收到错误代码" NoSuchBucket",则说明您的网址错误。

  2. 根据arn:aws:iam :: aws:policy / AmazonS3ReadOnlyAccess创建IAM策略。开始看起来像下面的剪辑。看看"资源"键,并注意它被设置为外卡。你只需将其修改为你的桶的arn。你必须为一个桶及其内容做一个,所以它变成:"资源":[" arn:aws:s3 ::: MyBucketName"," arn :aws:s3 ::: MyBucketName / *"]

  3. 现在您有了一个策略,您要做的是使用IAM角色装饰您的实例,该角色会自动授予此策略。所有没有任何身份验证密钥必须在实例中。因此,请转到角色,创建新角色,创建Amazon EC2角色,查找刚创建的策略,并准备好角色。

  4. 最后,您创建实例,并添加刚刚创建的IAM角色。如果机器已经有自己的角色,则只需将两个角色合并为一台新角色即可。如果机器已在运行,则在重新启动之前它不会获得新角色。

  5. 现在你应该好好去。机器有权访问s3共享。现在,您可以使用以下命令将文件复制到您的实例。请注意,您必须指定区域

      

    aws s3 cp --region us-east-1 s3://MyBucketName/MyFileName.tgz / home / ubuntu

  6. 请注意,术语"通过默默无闻的安全"只是电影中的一件事。任何东西都可证明是安全的,或者它是不安全的。

答案 1 :(得分:0)

我用过类似的东西

{
    "Version": "2012-10-17",
    "Id": "Allow only My VPC",
    "Statement": [
        {
            "Sid": "Allow only My VPC",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject", "s3:ListBucket",
            "Resource": [
                "arn::s3:::{BUCKET_NAME}",
                "arn::s3:::{BUCKET_NAME}/*"
            ],
            "Condition": {
                "StringLike": {
                    "aws:sourceVpc": "{VPC_ID}" OR "aws:sourceVpce": "{VPCe_ENDPOINT}"
                }
            }
        }
    ]
}