Amazon web services 如何将多个用户添加到S3上多个文件的访问控制列表中

Amazon web services 如何将多个用户添加到S3上多个文件的访问控制列表中,amazon-web-services,amazon-s3,aws-cli,Amazon Web Services,Amazon S3,Aws Cli,我找到了如何让S3存储桶访问其他AWS帐户的方法。如果我理解正确,那么给bucket的权限与给bucket中每个对象的权限是不同的。我希望bucket中的所有对象都具有相同的权限 要向用户提供对bucket的列表访问权限,请执行以下操作: aws2 s3api put-bucket-acl --bucket BucketName --grant-read-acp emailaddress=email1@emal.com,emailaddress=email2@emal.com,… --grant

我找到了如何让S3存储桶访问其他AWS帐户的方法。如果我理解正确,那么给bucket的权限与给bucket中每个对象的权限是不同的。我希望bucket中的所有对象都具有相同的权限

要向用户提供对bucket的列表访问权限,请执行以下操作:

aws2 s3api put-bucket-acl --bucket BucketName --grant-read-acp emailaddress=email1@emal.com,emailaddress=email2@emal.com,… --grant-read emailaddress=email1@emal.com,emailaddress=email2@emal.com,…
要授予用户对一个对象的列表访问权限,请执行以下操作:

aws2 s3api put-object-acl --bucket BucketName --key myObject.txt --grant-read-acp emailaddress=email1@emal.com,emailaddress=email2@emal.com --grant-read emailaddress=email1@emal.com,emailaddress=email2@emal.com

然而,我在S3上有数十万个对象。如何使用Amazon Web Service命令行界面(AWS CLI)授予对所有用户相同的访问权限?

您要查找的
放置bucket acl
。这是你的电话号码

提供的示例是:

aws s3api put-bucket-acl --bucket MyBucket --grant-full-control emailaddress=user1@example.com,emailaddress=user2@example.com --grant-read uri=http://acs.amazonaws.com/groups/global/AllUsers
在您的示例中,您只有标志
--grant read acp
,这并不授予对bucket中对象的访问权。根据文档,
--grant read acp
“允许受让人读取bucket ACL”。对你来说不是很有用


其中as
——grant full control
向存储桶提供读、写、读ACP和写ACP。如果您查看我链接的文档,您可以看到所有允许的标志

您正在寻找的
放置bucket acl
。这是你的电话号码

提供的示例是:

aws s3api put-bucket-acl --bucket MyBucket --grant-full-control emailaddress=user1@example.com,emailaddress=user2@example.com --grant-read uri=http://acs.amazonaws.com/groups/global/AllUsers
在您的示例中,您只有标志
--grant read acp
,这并不授予对bucket中对象的访问权。根据文档,
--grant read acp
“允许受让人读取bucket ACL”。对你来说不是很有用

其中as
——grant full control
向存储桶提供读、写、读ACP和写ACP。如果您查看我链接的文档,您可以看到所有允许的标志

由于您“希望bucket中的所有对象都具有相同的权限”,并且希望将权限应用于一组用户,因此我建议:

  • 创建一个IAM组
  • 将所需的IAM用户分配给IAM组
  • 向IAM组添加授予对bucket访问权限的策略
以下是一个例子:

您可以根据需要修改策略。上述政策授予以下权限:

  • 查看所有存储桶的列表
  • 列出特定存储桶的内容
  • 获取/放置/删除特定存储桶的内容
由于您“希望bucket中的所有对象具有相同的权限”,并且希望将权限应用于一组用户,因此我建议:

  • 创建一个IAM组
  • 将所需的IAM用户分配给IAM组
  • 向IAM组添加授予对bucket访问权限的策略
以下是一个例子:

您可以根据需要修改策略。上述政策授予以下权限:

  • 查看所有存储桶的列表
  • 列出特定存储桶的内容
  • 获取/放置/删除特定存储桶的内容

此答案基于以下要求:

  • 授予对整个存储桶的读取和列表访问权限
  • 到AWS帐户列表
您可以使用AWS帐户ID列表将Bucket策略附加到Amazon S3 Bucket:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::ACCOUNT-ID-1:root",
                    "arn:aws:iam::ACCOUNT-ID-2:root",
                    "arn:aws:iam::ACCOUNT-ID-3:root"
                ]
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::BUCKET-NAME",
                "arn:aws:s3:::BUCKET-NAME/*"
            ]
        }
    ]
}

如果他们使用root登录(通过电子邮件地址登录),这将提供访问权限,我认为这也适用于他们帐户中的IAM用户,只要他们在自己的帐户中被授予足够的Amazon S3 IAM权限。(例如,
s3:
或者更安全地说,
s3:GetObject
s3:ListBucket
用于所需的bucket)

此答案基于以下要求:

  • 授予对整个存储桶的读取和列表访问权限
  • 到AWS帐户列表
您可以使用AWS帐户ID列表将Bucket策略附加到Amazon S3 Bucket:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::ACCOUNT-ID-1:root",
                    "arn:aws:iam::ACCOUNT-ID-2:root",
                    "arn:aws:iam::ACCOUNT-ID-3:root"
                ]
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::BUCKET-NAME",
                "arn:aws:s3:::BUCKET-NAME/*"
            ]
        }
    ]
}

如果他们使用root登录(通过电子邮件地址登录),这将提供访问权限,我认为这也适用于他们帐户中的IAM用户,只要他们在自己的帐户中被授予足够的Amazon S3 IAM权限。(例如,
s3:
或者更安全地说,
s3:GetObject
s3:ListBucket
用于所需的bucket)

旁注:如果您希望向特定用户组授予对bucket(或子文件夹)的访问权限,则可以使用这些用户创建一个IAM组,然后向该IAM组授予权限。这样,这些用户也可以访问该bucket/文件夹中的任何其他文件。但是,如果我想将S3权限与用户的帐户(通过他们的电子邮件)关联,我认为您不能将IAM角色与其他用户的帐户链接。我的建议与IAM角色无关。我建议创建一个IAM组,并将所需的IAM用户放入该IAM组中。然后,将策略添加到IAM组。这适用于整个存储桶或子目录,但不适用于临时选择的对象。
emailAddress
的使用似乎有点奇怪。它可能仅与帐户的根登录名关联,而与特定用户关联。这是因为IAM用户没有根据其IAM用户记录存储电子邮件地址。如果创建IAM组需要我创建IAM角色,而我无法将这些角色与单个AWS帐户关联,则我不想创建IAM组。旁注:如果您希望授予对存储桶(或子文件夹)的访问权限对于特定的用户组,您可以改为使用这些用户创建IAM组,然后向该IAM组授予权限。这样,这些用户也可以访问该bucket/文件夹中的任何其他文件。但是,如果我想将S3权限与用户的帐户(通过他们的电子邮件)关联,我认为您不能将IAM角色与其他用户的帐户链接。我的建议与IAM角色无关。我被推荐