演练:使用策略管理针对 Amazon S3 资源的访问权限
本主题提供了以下介绍性示例演练,演示如何授予针对 Amazon S3 资源的访问权限。这些示例使用 AWS Management Console 来创建资源(存储桶、对象、用户)并授予它们相应的权限。然后这些示例将向您演示如何使用命令行工具来验证这些权限而不必编写任何代码。我们使用 AWS Command Line Interface(AWS CLI)和 AWS Tools for Windows PowerShell 提供命令。
-
您在您的账户中创建的 IAM 用户默认情况下没有权限。在本练习中,您要授予用户权限来执行存储桶和对象操作。
-
在本练习中,存储桶拥有者账户 A 对另一个 AWS 账户(账户 B)授予跨账户权限,然后账户 B 将这些权限委派给其账户中的用户。
-
在对象与存储桶拥有者不同的情况下管理对象权限
在本例中的示例方案是一个存储桶拥有者向其他人授予对象权限,但并不是该存储桶中所有对象都归该存储桶拥有者所有。存储桶拥有者需要什么权限,以及如何能委派这些权限?
创建存储桶的 AWS 账户称为 存储桶拥有者。该拥有者可以向其他 AWS 账户授予上传对象的权限,而创建对象的 AWS 账户拥有该对象。存储桶拥有者对其他 AWS 账户创建的对象不拥有权限。如果该存储桶拥有者编写了一个存储桶策略来授予针对对象的访问权限,则该策略不适用于其它账户拥有的对象。
在这种情况下,对象拥有者必须首先使用对象 ACL 向存储桶拥有者授予权限。然后存储桶拥有者才能够如以下示例所示,将这些对象权限委派给其他人、其自己账户中的用户或另一个 AWS 账户。
-
在本练习中,存储桶拥有者首先从对象拥有者获取权限。然后存储桶拥有者将这些权限委派给自己的账户中的用户。
-
在从对象拥有者获得权限后,存储桶拥有者无法将权限委派给其它 AWS 账户,因为不支持跨账户委派(请参阅授予权限)。但是,存储桶拥有者可以创建具有执行特定操作(如 get object)的权限的 IAM 角色,并允许其他 AWS 账户担任该角色。这样,任何担任该角色的人都能够访问对象。此示例显示存储桶拥有者如何使用 IAM 角色来启用跨账户委派。
-
在尝试示例演练之前
这些示例使用 AWS Management Console 来创建资源和授予权限。为了测试权限,这些示例使用命令行工具 AWS CLI 和 AWS Tools for Windows PowerShell,因此您无需编写任何代码。要测试权限,您必须设置其中的一个工具。有关更多信息,请参阅 设置用于演练的工具。
此外,在创建资源时,这些示例并未使用 AWS 账户的根用户凭证。而是在这些账户中创建一个管理员用户来执行这些任务。
关于使用管理员用户来创建资源和授予权限
AWS Identity and Access Management(IAM)建议不要使用 AWS 账户 的根用户凭证发起请求。而是应创建 IAM 用户或角色,向他们授予完全访问权限,然后使用其凭证来发出请求。我们将其称为管理员用户或角色。有关更多信息,请转至《AWS 一般参考》中的 AWS 账户根用户 凭证和 IAM 身份以及《IAM 用户指南》中的 IAM 最佳实践。
本部分中的所有示例演练都使用管理员用户凭证。如果您还未创建您的 AWS 账户的管理员用户,此处的主题会向您演示这一过程。
要使用用户凭证登录 AWS Management Console,您必须使用 IAM 用户登录 URL。IAM 控制台