Dou*_*oug 8 amazon amazon-s3 amazon-ec2 amazon-web-services
我希望锁定一个S3存储桶用于安全目的 - 我将部署映像存储在存储桶中.
我想要做的是创建一个存储桶策略,该策略支持仅通过http 从我帐户中的EC2实例进行匿名下载.
有没有办法做到这一点?
我正在尝试使用的策略示例(它不允许自己应用):
{
"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/*"
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
只是为了澄清这通常是如何完成的。您创建 IAM 策略,将其附加到新的或现有的角色,并使用该角色装饰 ec2 实例。您还可以通过存储桶策略提供访问权限,但这不太精确。
详情如下:
除了我的所有者之外,S3 存储桶默认被拒绝。因此,您创建存储桶并上传数据。您可以通过尝试https://s3.amazonaws.com/MyBucketName/file.ext来使用浏览器验证文件是否无法访问。返回时应在 xml 中显示错误代码“访问被拒绝”。如果您收到“NoSuchBucket”错误代码,则说明您的网址错误。
基于 arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess 创建 IAM 策略。开始看起来像下面的片段。看一下“Resource”键,注意它被设置为通配符。您只需将其修改为您的存储桶的 arn 即可。您必须对存储桶及其内容执行一项操作,使其变为:"Resource": ["arn:aws:s3:::MyBucketName", "arn:aws:s3:::MyBucketName/*"]
现在您已经有了策略,您要做的就是使用自动授予该策略的 IAM 角色来装饰您的实例。所有这些都无需在实例中包含任何身份验证密钥。因此,转到角色,创建新角色,创建 Amazon EC2 角色,找到您刚刚创建的策略,您的角色就准备好了。
最后,您创建实例,并添加刚刚创建的 IAM 角色。如果机器已经有自己的角色,您只需将这两个角色合并为机器的新角色即可。如果计算机已经在运行,则在您重新启动之前它不会获得新角色。
现在你应该可以走了。该机器有访问s3共享的权限。现在您可以使用以下命令将文件复制到您的实例。请注意,您必须指定区域
aws s3 cp --region us-east-1 s3://MyBucketName/MyFileName.tgz /home/ubuntu
请注意,术语“通过默默无闻实现安全”只是电影中的情节。有些东西要么是可证明安全的,要么是不安全的。
归档时间: |
|
查看次数: |
3850 次 |
最近记录: |