我正在尝试创建一个存储桶并为另外两个帐户设置完全权限。首先,我在存储桶Permissions中添加了这些帐户。文件仍然无法访问。然后,我试了一个政策。我为每个帐户创建了两个角色,以便在其中指定它们。这是政策:
Scanner input = new Scanner(System.in);
int in = input.nextInt();
for(int x = 0; x < 99;)
{
x = x + in;
System.out.println(x);
}
仍然没有。然后我看到,即使存储桶具有所有权限设置,其中的文件也没有。当我为文件设置它们时,其他用户可以访问它。但对于我上传的每个文件,我都不想这样做。怎么了?
我尝试使用aws cli加载文件并使用&#34; - grants&#34;设置权限。选项,但上传后,我甚至无法通过aws控制台自行下载。
答案 0 :(得分:1)
为了演示这是如何工作的,我做了以下几点:
bucket-1
{
"Id": "Account1Policy",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowBucketAccess",
"Action": "s3:*",
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket-1",
"arn:aws:s3:::bucket-1/*"
],
"Principal": {
"AWS": [
"arn:aws:iam::222222222222:user/account-2-user"
]
}
}
]
}
此政策说:允许account2:account-2-user对account1执行任何操作:bucket-1
account-2-user
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowBucket1Access",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::bucket-1",
"arn:aws:s3:::bucket-1/*"
]
}
]
}
此政策说明:允许向此政策附加的用户授权使用bucket-1
如果存储桶和用户都在同一帐户中,则此策略足以授予对存储桶的完全访问权限。但是,由于bucket-1实际上属于不同的帐户,因此第一个策略(上面)也是必需的,因此account-1实际上授予访问权限。这意味着第二个策略实际上并未授予对存储区的访问权限 - 它只是授予account-user-2
发出请求访问存储区的权限。真实访问权限在第一个政策中授予。
然后,我成功使用account-2-user
的凭据访问bucket-1
:
$ aws s3 cp foo.txt s3://bucket-1 --profile account-2-user
upload: ./foo.txt to s3://bucket-1/foo.txt
答案 1 :(得分:0)
如果存储桶策略授予对对象的访问权限,则无需在对象级别授予访问权限。
如果通过从名为user1
或user2
的角色颁发的凭据访问,则您列出的存储分区策略将授予对存储区的访问权限。 (你给角色名称'用户'前缀很奇怪。)
例如,如果您有一个分配了名为user1
的IAM角色的Amazon EC2实例,那么它将自动获得访问该存储桶的凭据。
如果user1
和user2
实际上是用户,那么ARN应为:
arn:aws:iam::id:user/user1
在这种情况下,访问该用户的凭据时可以访问该存储桶。
<强>更新强>
我认为它实际上需要在两个位置分配权限:
s3:*
资源拥有*
权限,则不需要这样做。对于所需的存储桶,它至少需要针对S3的权限。