如何获取用户添加S3权限的规范ID

jig*_*zon 27 amazon-s3 amazon-web-services

我想为特定用户添加S3权限.AWS控制台正在向我询问用户的Canonical ID.我使用AWS CLI命令aws iam list-users检索用户列表,但没有"Canonical ID"字段,并且无法识别"User ID",这给我一个"Invalid ID"消息.我也尝试过使用ARN而且没用.

Dan*_*ott 16

要向存储桶上的IAM用户授予权限,您需要创建存储桶策略 - 这是一个JSON文档.ACL中的"访问其他AWS账户"选项用于授予对其他(完全独立的)根AWS账户的访问权限,而不是授予对您自己的root账户中的IAM用户的访问权限.

创建/编辑策略

要访问存储桶策略,请在S3 Web控制台中浏览到存储桶.在那里,您将看到概述/属性/权限/管理选项卡.在权限下,有一个名为"Bucket Policy"的子选项卡.在Bucket Policy页面的底部有一个指向"Policy Generator"的链接,它将为您生成JSON.(或直接链接是http://awspolicygen.s3.amazonaws.com/policygen.html)

识别要分配权限的IAM用户

要标识要授予其权限的IAM用户,您将使用ARN(Amazon资源名称).IAM用户的ARN格式如下:"arn:aws:iam :: {Account-ID}:user/{Username}"(注意花括号不是格式的一部分).IAM ARN的示例如下所示:arn:aws:iam :: 100123456789:user/Daniel

要获取您的数字帐户ID,请以root用户身份登录并单击页面右上角的用户名,然后选择"我的帐户"(可转到https://console.aws.amazon.com/billing)/home?#/ account).帐户ID列在页面顶部的"帐户设置"下.

将用户ARN插入策略生成器的"Principal"字段,并从下拉列表中选择要授予用户的操作.

指定授予权限的内容

要为存储桶或存储桶中的一组文件(对象)授予权限,您需要在"Amazon资源名称"字段中输入标识存储桶的ARN或存储桶中的某些对象子集(例如,如果我有一个名为daniels-stuff的存储桶和该存储桶中的文件夹称为图像,我想授予访问权限,然后我可以提供ARN,例如arn:aws:s3 ::: daniels-stuff/images/*

在输入必要信息后点击"添加声明",然后点击"生成策略".请注意,您可以将多个语句(访问权限分配)放入一个策略中.

更多信息

最后,https: //brandonwamboldt.ca/understanding-s3-permissions-1662/对s3存储桶策略有一个很好的入门,其中包含一些示例策略.

祝你好运(虽然我认为你现在可能已经解决了你的问题,其他人可能会觉得这很有帮助).

  • 很有用。尽管如此,还是有点难以理解,aws 会做出如此基本的东西,好吧,不是。 (3认同)

End*_*ell 7

可以通过调用as s3api list-buckets作为要查找其ID的用户,最容易找到用户的规范ID:

aws --profile PROD s3api list-buckets
{
    "Owner": {
        "DisplayName": "a-display-name",
        "ID": "a-64?-char-hex-string"  <<-- this HERE is the canonical user ID
    },
    "Buckets": [
        {
            "CreationDate": "2018-03-28T21:50:56.000Z",
            "Name": "bucket-1"
        },
        {
            "CreationDate": "2018-03-22T14:08:48.000Z",
            "Name": "bucket-2"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

使用此ID,然后可以调用s3api授予访问权限,例如授予读取访问权限,如下所示:

aws --profile OTHER s3api put-object-acl \
    --bucket bucket-3 \
    --key path/to/file \
    --grant-read id="the-64-char-hex"
Run Code Online (Sandbox Code Playgroud)


Rat*_*han 5

要获取规范ID,最简单的方法之一是使用CLI和run aws s3api list-buckets命令。您将在输出中获得ID。

还有其他获取规范ID的方法,并且在AWS文档中有明确说明:https ://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html

清单桶AWS文档:https ://docs.aws.amazon.com/cli/latest/reference/s3api/list-buckets.html


Saj*_*ved 5

要查找帐户的规范 ID,请按照以下步骤操作:

  1. 单击位于顶部菜单栏中的用户名。
  2. 将出现一个下拉菜单。选择我的安全凭证
  3. 规范用户 ID 存在