委托人
Principal 元素用于指定被允许或拒绝访问资源的用户、账户、服务或其他实体。下面是指定 Principal 的示例。有关更多信息,请参阅 IAM 用户指南中的委托人。
向 Amazon Web Services 账户授予权限
要向 Amazon Web Services 账户授予权限,则使用以下格式标识此账户。
"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,这是 Amazon Web Services 账户 ID 的模糊形式。可使用以下格式指定此 ID。
"CanonicalUser":"64-digit-alphanumeric-value"
以下是示例。
"Principal":{"CanonicalUser":"64-digit-alphanumeric-value"}
有关如何查找您的账户的规范用户 ID 的信息,请参阅查找账户的规范用户 ID。
重要
在策略中使用规范用户 ID 时,Amazon S3 可能会将规范 ID 更改为相应的 Amazon Web Services 账户 ID。这不会影响策略,因为这两个 ID 标识相同的账户。
向 IAM 用户授予权限
要向您的账户中的 IAM 用户授予权限,您必须提供 "AWS":" 名称值对。user-ARN"
"Principal":{"AWS":"arn:aws:iam::account-number-without-hyphens:user/username"}
有关提供分步说明的详细示例,请参阅 示例 1:存储桶拥有者向其用户授予存储桶权限 和 示例 3:存储桶拥有者授予不属于自己的对象的权限。
授予匿名权限
要授予每个人权限,也称为匿名访问,请将 Principal 值设置为通配符 ("*")。例如,如果您将存储桶配置为网站,您将需要使该存储桶中的所有对象都可公开访问。
"Principal":"*"
"Principal":{"Amazon":"*"}
在基于资源的策略中使用具有 Allow 效果的 "Principal": "*" 允许任何人访问您的资源,即便未登录 Amazon。
在基于资源的策略中使用具有 Allow 效果的 "Principal" : { "Amazon" : "*" } 允许任何根用户、IAM 用户、代入角色会话或联合身份用户在同一分区的任何账户中访问您的资源。有关更多信息,请参阅《IAM 用户指南》中的所有委托人。
您不能使用通配符匹配一部分主体名称或 ARN。
重要
因为任何人都可以创建 Amazon Web Services 账户,安全级别在这两种方法中是等效的,尽管它们的功能不同。
警告
在授予对您的 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 内容的访问。