Amazon web services 如何将S3存储桶保护到实例';谁的角色?
使用cloudformation,我启动了一个EC2实例,其角色有一个S3策略,如下所示Amazon web services 如何将S3存储桶保护到实例';谁的角色?,amazon-web-services,amazon-s3,amazon-iam,amazon-cloudformation,Amazon Web Services,Amazon S3,Amazon Iam,Amazon Cloudformation,使用cloudformation,我启动了一个EC2实例,其角色有一个S3策略,如下所示 {"Statement":[{"Action":"s3:*","Resource":"*","Effect":"Allow"}]} 在S3中,桶策略是这样的 { "Version": "2012-10-17", "Id": "MyPolicy", "Statement": [ { "Sid": "ReadAccess", "Effect": "Allow",
{"Statement":[{"Action":"s3:*","Resource":"*","Effect":"Allow"}]}
在S3中,桶策略是这样的
{
"Version": "2012-10-17",
"Id": "MyPolicy",
"Statement": [
{
"Sid": "ReadAccess",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456678:role/Production-WebRole-1G48DN4VC8840"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::web-deploy/*"
}
]
}
当我登录到实例并尝试将我上传的任何对象卷曲到bucket中(没有acl修改)时,我收到了未经授权的403错误
这是将对bucket的访问限制为仅使用特定角色启动的实例的正确方法吗?在Amazon S3中,有三种方法可以授予对对象的访问权限:
- 对象ACL:特定对象可以标记为“公共”,以便任何人都可以访问它们
- 存储桶策略:放置在存储桶上的策略,用于确定公开或特定用户允许/拒绝哪些访问
- IAM策略:放置在用户、组或角色上的策略,授予他们访问AWS资源(如Amazon S3 bucket)的权限
{"Statement":[{"Action":"s3:*","Resource":"*","Effect":"Allow"}]}
这将为实例提供凭据,该实例可由或任何使用AWS SDK的应用程序访问。他们将拥有对Amazon S3的无限访问权限,除非另有拒绝策略限制访问
如果有的话,该策略授予的权限过多。它允许该实例上的应用程序对Amazon S3存储执行它想要的任何操作,包括全部删除!最好分配最小权限,只允许应用程序需要执行的操作
亚马逊S3存储桶策略
您还创建了一个Bucket策略,该策略允许任何假定为Production-WebRole-1G48DN4VC8840
角色的对象检索web部署
Bucket的内容
不管角色本身拥有什么特定权限——此策略意味着仅使用角色访问web部署
存储桶将允许它读取所有文件。因此,仅此策略就足以满足您对使用角色的实例授予bucket访问权限的要求——您不需要角色本身中的策略
那么,为什么你不能访问这些内容呢?这是因为使用直接卷曲不能识别您的角色/用户。AmazonS3接收请求并将其视为匿名,因此不授予访问权限
尝试通过CLI或通过SDK调用以编程方式访问数据。例如,此CLI命令将下载一个对象:
aws s3 cp s3://web-deploy/foo.txt foo.txt
CLI将自动获取与您的角色相关的凭据,从而允许访问对象。在Amazon S3中有三种授予对象访问权限的方法:
- 对象ACL:特定对象可以标记为“公共”,以便任何人都可以访问它们
- 存储桶策略:放置在存储桶上的策略,用于确定公开或特定用户允许/拒绝哪些访问
- IAM策略:放置在用户、组或角色上的策略,授予他们访问AWS资源(如Amazon S3 bucket)的权限
{"Statement":[{"Action":"s3:*","Resource":"*","Effect":"Allow"}]}
这将为实例提供凭据,该实例可由或任何使用AWS SDK的应用程序访问。他们将拥有对Amazon S3的无限访问权限,除非另有拒绝策略限制访问
如果有的话,该策略授予的权限过多。它允许该实例上的应用程序对Amazon S3存储执行它想要的任何操作,包括全部删除!最好分配最小权限,只允许应用程序需要执行的操作
亚马逊S3存储桶策略
您还创建了一个Bucket策略,该策略允许任何假定为Production-WebRole-1G48DN4VC8840
角色的对象检索web部署
Bucket的内容
不管角色本身拥有什么特定权限——此策略意味着仅使用角色访问web部署
存储桶将允许它读取所有文件。因此,仅此策略就足以满足您对使用角色的实例授予bucket访问权限的要求——您不需要角色本身中的策略
那么,为什么你不能访问这些内容呢?这是因为使用直接卷曲不能识别您的角色/用户。AmazonS3接收请求并将其视为匿名,因此不授予访问权限
尝试通过CLI或通过SDK调用以编程方式访问数据。例如,此CLI命令将下载一个对象:
aws s3 cp s3://web-deploy/foo.txt foo.txt
CLI将自动获取与您的角色相关的凭据,从而允许访问对象。EC2实例角色足以放入/读取任何S3存储桶,但您需要使用实例角色,而curl不会自动执行此操作
例如,您应该使用aws s3 cp s3://,它将自动使用实例角色。EC2实例角色足以放入/读取任何s3存储桶,但您需要使用实例角色,而curl不会自动执行此操作 你应该使用examp