有没有办法让匿名的仅从单个 AWS 帐户中的 EC2 实例(全部)访问某个 S3 存储桶?
我知道我可以使用 IAM 角色,但我发现它有太多的移动部件,并且使必须使用访问密钥/密钥的任何脚本变得复杂(例如,当它发生变化时重写 /etc/apt/* 行)。更不用说没有办法将角色附加到现有实例,这让它变得更加痛苦。
也不可能简单地通过使用 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 存储桶。
希望有帮助,
亚伦