Amazon S3:允许联合身份用户以编程方式和在控制台中访问其 S3 主目录 - Amazon Identity and Access Management
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon S3:允许联合身份用户以编程方式和在控制台中访问其 S3 主目录

此示例说明了如何创建基于身份的策略以允许联合用户访问其位于 S3 中的主目录存储桶对象。主目录是一个包含 home 文件夹和个人联合用户文件夹的存储桶。此策略定义了程序访问和控制台访问的权限。要使用此策略,请将示例策略中的斜体占位符文本替换为您自己的信息。然后,按照创建策略编辑策略中的说明操作。

此策略中的 ${aws:userid} 变量解析为 role-id:specified-name。联合身份用户 ID 的 role-id 部分是创建过程中分配给联合身份用户的唯一标识符。有关更多信息,请参阅唯一标识符specified-name 是当联合身份用户担任其角色时传递给 AssumeRoleWithWebIdentity 请求的 RoleSessionName 参数

您可使用 Amazon CLI 命令 aws iam get-role --role-name specified-name 查看此角色 ID。例如,假设您指定友好名称 John 并且 CLI 返回角色 ID AROAXXT2NJT7D3SIQN7Z6。在此示例中,联合身份用户 ID 为 AROAXXT2NJT7D3SIQN7Z6:John。此策略之后允许联合身份用户 John 访问具有前缀 AROAXXT2NJT7D3SIQN7Z6:John 的 Amazon S3 存储桶。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3ConsoleAccess", "Effect": "Allow", "Action": [ "s3:GetAccountPublicAccessBlock", "s3:GetBucketAcl", "s3:GetBucketLocation", "s3:GetBucketPolicyStatus", "s3:GetBucketPublicAccessBlock", "s3:ListAccessPoints", "s3:ListAllMyBuckets" ], "Resource": "*" }, { "Sid": "ListObjectsInBucket", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::bucket-name", "Condition": { "StringLike": { "s3:prefix": [ "", "home/", "home/${aws:userid}/*" ] } } }, { "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::bucket-name/home/${aws:userid}", "arn:aws:s3:::bucket-name/home/${aws:userid}/*" ] } ] }