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用户,您将使用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存储桶策略有一个很好的入门,其中包含一些示例策略.
祝你好运(虽然我认为你现在可能已经解决了你的问题,其他人可能会觉得这很有帮助).
可以通过调用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)
| 归档时间: |
|
| 查看次数: |
30623 次 |
| 最近记录: |