权限 - Amazon Simple Storage Service

权限

Amazon S3 多区域接入点可以简化多个 AWS 区域中 Amazon S3 桶的数据访问。多区域接入点称为全局端点,您可以使用这些接入点执行 Amazon S3 数据接入点操作,如 GetObjectPutObject。对于通过全局端点发出的任何请求,每个多区域接入点都可以具有不同的权限和网络控制。

每个多区域接入点也可以强制实施自定义访问策略,该策略与附加到底层桶的桶策略结合使用。要使请求成功,以下所有条件都必须允许该操作:

  • 多区域接入点策略

  • 底层 AWS Identity and Access Management(IAM)策略

  • 底层桶策略(请求路由到哪里)

您可以将任何多区域接入点策略配置为仅接受来自特定 IAM 用户或组的请求。有关如何执行此操作的示例,请参阅多区域接入点策略示例中的示例 2。为了限制 Amazon S3 数据访问私有网络,您可以将任何多区域接入点策略配置为仅接受来自虚拟私有云(VPC)的请求。

例如,假设您通过多区域接入点使用您的 AWS 账户中名为 AppDataReader 的用户发出一个 GetObject 请求。为了帮助确保请求不会被拒绝,AppDataReader 用户必须被多区域接入点和多区域接入点底层的每个桶授予 s3:GetObject 权限。AppDataReader 将无法从任何未授予此权限的任何桶中检索数据。

重要

通过桶名称或 Amazon 资源名称(ARN)直接访问桶时,将桶的访问控制委派给多区域接入点策略不会改变桶的行为。直接对桶进行的所有操作将继续像以前一样运行。您在多区域接入点策略中包括的限制仅适用于通过该多区域接入点发出的请求。

管理多区域接入点的公共访问

多区域接入点支持每个多区域接入点的独立阻止公有访问设置。创建多区域接入点时,您可以指定应用于该多区域接入点的阻止公有访问设置。

注意

即使多区域接入点的独立屏蔽公共访问权限设置被禁用,在此账户的屏蔽公共访问权限设置(在您自己的账户中)或外部桶的屏蔽公共访问权限设置下启用的任何屏蔽公共访问权限设置也仍然适用。

对于通过多区域接入点发出的任何请求,Amazon S3 会评估以下各项的阻止公有访问设置:

  • 多区域接入点

  • 底层桶(包括外部桶)

  • 拥有多区域接入点的账户

  • 拥有底层桶的账户(包括外部账户)

如果这些设置中的任何一个指示应阻止请求,则 Amazon S3 会拒绝请求。有关 Amazon S3 阻止公有访问功能的更多信息,请参阅 阻止对您的 Amazon S3 存储的公有访问

重要

原定设置情况下,为多区域接入点启用所有阻止公有访问设置。您必须明确禁用不希望应用于多区域接入点的任何设置。

在创建多区域接入点之后,您无法更改其屏蔽公共访问权限设置。

查看多区域接入点的阻止公有访问设置

查看多区域接入点的阻止公有访问设置
  1. 登录到AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择 Multi-Region Access Points(多区域接入点)。

  3. 请选择要查看的多区域接入点的名称。

  4. 选择权限选项卡。

  5. Block Public Access settings for this Multi-Region Access Point(多区域接入点的阻止公有访问设置)下,查看多区域接入点的阻止公有访问设置。

    注意

    创建多区域接入点后,无法编辑阻止公有访问设置。因此,如果您要阻止公有访问,请在创建多区域接入点之前,确保您的应用程序在没有公有访问的情况下正常运行。

使用多区域接入点策略

以下示例多区域接入点策略授予 IAM 用户从多区域接入点列出和下载文件的访问权限。要使用此示例策略,请将 user input placeholders 替换为您自己的信息。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::123456789012:user/JohnDoe" }, "Action":[ "s3:ListBucket", "s3:GetObject" ], "Resource":[ "arn:aws:s3::111122223333:accesspoint/MultiRegionAccessPoint_alias", "arn:aws:s3::111122223333:accesspoint/MultiRegionAccessPoint_alias/object/*" ] } ] }

要使用 AWS Command Line Interface(AWS CLI)将多区域接入点策略与指定的多区域接入点关联,请使用以下 put-multi-region-access-point-policy 命令。要使用此示例命令,请将 user input placeholders 替换为您自己的信息。每个多区域接入点只能有一个策略,因此,对 put-multi-region-access-point-policy 操作发出的请求将替换与指定多区域接入点关联的任何现有策略。

AWS CLI
aws s3control put-multi-region-access-point-policy --account-id 111122223333 --details { "Name": "amzn-s3-demo-bucket-MultiRegionAccessPoint", "Policy": "{ \"Version\": \"2012-10-17\", \"Statement\": { \"Effect\": \"Allow\", \"Principal\": { \"AWS\": \"arn:aws:iam::111122223333:root\" }, \"Action\": [\"s3:ListBucket\", \"s3:GetObject\"], \"Resource\": [ \"arn:aws:s3::111122223333:accesspoint/MultiRegionAccessPoint_alias", \"arn:aws:s3::111122223333:accesspoint/MultiRegionAccessPoint_alias/object/*\" ] } }" }

要查询上次操作的结果,请使用以下命令:

AWS CLI
aws s3control describe-multi-region-access-point-operation --account-id 111122223333 --request-token-arn requestArn

要检索多区域接入点策略,请使用以下命令:

AWS CLI
aws s3control get-multi-region-access-point-policy --account-id 111122223333 --name=amzn-s3-demo-bucket-MultiRegionAccessPoint

编辑多区域接入点策略

多区域接入点策略(以 JSON 编写)提供对与多区域接入点结合使用的 Amazon S3 桶的存储访问。您可以允许或拒绝特定主体对您的多区域接入点执行各种操作。当一个请求通过多区域接入点路由到一个桶时,多区域接入点和桶的访问策略都适用。限制性更强的访问策略始终优先。

注意

如果桶包含由其他账户拥有的对象,则多区域接入点策略不适用于由其他 AWS 账户拥有的对象。

应用多区域接入点策略后,无法删除该策略。您可以编辑策略,也可以创建覆盖现有策略的新策略。

编辑多区域接入点策略

  1. 登录到AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择 Multi-Region Access Points(多区域接入点)。

  3. 选择要为其编辑策略的多区域接入点的名称。

  4. 选择权限选项卡。

  5. 向下滚动到 Multi-Region Access Point policy(多区域接入点策略)部分。选择 Edit(编辑)以更新策略(采用 JSON 格式)。

  6. 将显示 Edit Multi-Region Access Point policy(编辑多区域接入点策略)页面。您可以直接在文本字段中输入策略,也可以选择 Add statement(添加语句)以从下拉列表中选择策略元素。

    注意

    控制台会自动显示您可以在策略中使用的多区域接入点 Amazon 资源名称(ARN)。有关多区域接入点策略示例,请参阅 多区域接入点策略示例

多区域接入点策略示例

Amazon S3 多区域接入点支持 AWS Identity and Access Management(IAM)资源策略。您可以使用这些策略,按资源、用户或其他条件控制多区域接入点的使用。为了使应用程序或用户能够通过多区域接入点访问对象,多区域接入点和底层桶都必须允许相同的访问权限。

要允许对多区域接入点和底层桶进行相同访问,请执行以下操作之一:

  • (推荐)要简化使用 Amazon S3 多区域接入点时的访问控制,请将 Amazon S3 桶的访问控制权委托给多区域接入点。有关如何执行此操作的示例,请参阅本节中的示例 1。

  • 将多区域接入点策略中包含的相同权限添加到底层桶策略中。

重要

通过桶名称或 Amazon 资源名称(ARN)直接访问桶时,将桶的访问控制委派给多区域接入点策略不会改变桶的行为。直接对桶进行的所有操作将继续像以前一样运行。您在多区域接入点策略中包括的限制仅适用于通过该多区域接入点发出的请求。

例 1 – 将访问权限委托给桶策略中的特定多区域接入点(针对同一账户或跨账户)

以下示例桶策略授予对特定多区域接入点的完全桶访问权限。这意味着,对此桶的所有访问都由附加到多区域接入点的策略控制。我们建议您以这种方式为所有不需要直接访问存储桶的使用案例配置存储桶。您可以将此桶策略结构用于同一账户或其他账户中的多区域接入点。

{ "Version": "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : { "AWS": "*" }, "Action" : "*", "Resource" : [ "Bucket ARN", "Bucket ARN/*"], "Condition": { "StringEquals" : { "s3:DataAccessPointArn" : "MultiRegionAccessPoint_ARN" } } }] }
注意

如果您正在授予对多个多区域接入点的访问权限,请确保列出每个多区域接入点。

例 2 – 在您的多区域接入点策略中授予账户对多区域接入点的访问权限

以下多区域接入点策略向账户 123456789012 授予列出和读取由 MultiRegionAccessPoint_ARN 定义的多区域接入点中包含的对象的权限。

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS":"arn:aws:iam::123456789012:user/JohnDoe" }, "Action":[ "s3:ListBucket", "s3:GetObject" ], "Resource":[ "MultiRegionAccessPoint_ARN", "MultiRegionAccessPoint_ARN/object/*" ] } ] }
例 3 – 允许列出桶内容的多区域接入点策略

以下多区域接入点策略向账户 123456789012 授予列出由 MultiRegionAccessPoint_ARN 定义的多区域接入点中包含的对象的权限。

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/JohnDoe" }, "Action": "s3:ListBucket", "Resource": "MultiRegionAccessPoint_ARN" } ] }