委托人
Principal
元素用于指定被允许或拒绝访问资源的用户、账户、服务或其他实体。下面是指定 Principal
的示例。有关更多信息,请参阅 IAM 用户指南中的委托人。
向 AWS 账户授予权限
要向 AWS 账户授予权限,则使用以下格式标识此账户。
"AWS":"
account-ARN
"
示例如下。
"Principal":{"AWS":"arn:aws:iam::
AccountIDWithoutHyphens
:root"}
"Principal":{"AWS":["arn:aws:iam::
AccountID1WithoutHyphens
:root","arn:aws:iam::AccountID2WithoutHyphens
:root"]}
Amazon S3 还支持规范用户 ID,这是 AWS 账户 ID 的模糊形式。可使用以下格式指定此 ID。
"CanonicalUser":"
64-digit-alphanumeric-value
"
以下是示例。
"Principal":{"CanonicalUser":"
64-digit-alphanumeric-value
"}
有关如何查找您的账户的规范用户 ID 的信息,请参阅查找账户的规范用户 ID。
重要
在策略中使用规范用户 ID 时,Amazon S3 可能会将规范 ID 更改为相应的 AWS 账户 ID。这不会影响策略,因为这两个 ID 标识相同的账户。
向 IAM 用户授予权限
要向您的账户中的 IAM 用户授予权限,您必须提供 "AWS":"
名称值对。user-ARN
"
"Principal":{"AWS":"arn:aws:iam::
account-number-without-hyphens
:user/username
"}
有关提供分步说明的详细示例,请参阅 示例 1:桶拥有者向其用户授予桶权限 和 示例 3:桶拥有者授予不属于自己的对象的权限。
注意
如果您在更新桶策略后删除了 IAM 身份,则桶策略将在主体元素中显示唯一标识符,而不是 ARN。这些唯一 ID 从不会重复使用,因此,您可以安全地从所有策略语句中删除具有唯一标识符的主体。有关唯一标识符的更多信息,请参阅《IAM 用户指南》中的 IAM 标识符。
授予匿名权限
要授予每个人权限,也称为匿名访问,请将 Principal
值设置为通配符 ("*"
)。例如,如果您将桶配置为网站,您将需要使该桶中的所有对象都可公开访问。
"Principal":"*"
"Principal":{"AWS":"*"}
在基于资源的策略中使用具有 Allow
效果的 "Principal": "*"
允许任何人访问您的资源,即便未登录 AWS。
在基于资源的策略中使用具有 Allow
效果的 "Principal" : { "AWS" : "*" }
允许任何根用户、IAM 用户、代入角色会话或联合身份用户在同一分区的任何账户中访问您的资源。
对于匿名用户,这两种方法是等效的。有关更多信息,请参阅《IAM 用户指南》中的所有委托人。
您不能使用通配符匹配一部分主体名称或 ARN。
重要
因为任何人都可以创建 AWS 账户,安全级别在这两种方法中是等效的,尽管它们的功能不同。
警告
在授予对您的 Amazon S3 桶的匿名访问权限时应谨慎。如果您授予匿名访问权限,那么世界上的任何人都可以访问您的桶。我们强烈建议您绝对不要授予对 S3 桶的任何类型的匿名写入权限。
要求通过 CloudFront URL 进行访问
您可以要求用户使用 Amazon CloudFront URL 而不是 Amazon S3 URL 访问您的 Amazon S3 内容。为此,请创建 CloudFront 源访问身份 (OAI)。然后,更改对您的桶或桶中对象的权限。在 Principal
语句中指定 OAI 的格式如下所示。
"Principal":{"CanonicalUser":"
Amazon S3 Canonical User ID assigned to origin access identity
"}
有关更多信息,请参阅 Amazon CloudFront 开发人员指南中的使用源访问身份限制对您的 Amazon S3 内容的访问。