添加文件共享 - AWSStorage Gateway

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

添加文件共享

在激活和运行 S3 文件网关后,您可以添加额外的文件共享并为其授予 Amazon S3 存储桶访问权。您可以授权访问的存储桶包括在不同的存储桶中AWS 账户比文件共享。有关如何添加文件共享的信息,请参阅创建文件共享

授予对 Amazon S3 存储桶的访问权限

创建文件共享时,文件网关需要访问将文件上传到 Amazon S3 存储桶,以及对用于连接到存储桶的任何接入点或虚拟私有云 (VPC) 终端节点执行操作的访问权限。要授予此访问权限,您的文件网关假定AWS Identity and Access Management(IAM) 角色,该角色与授予此访问权限的 IAM 策略关联。

该角色需要此 IAM 策略以及与之有关的安全令牌服务 (STS) 信任关系。此策略确定了该角色可以执行的操作。此外,您的 S3 存储桶和任何关联的访问点或 VPC 终端节点都必须具有允许 IAM 角色访问它们的访问策略。

您可以自行创建该角色和访问策略,也可以让文件网关为您创建。如果文件网关为您创建该策略,该策略将包含 S3 操作列表。有关角色和权限的信息,请参阅。创建向AWS 服务中的IAM 用户指南.

下面是一个信任策略示例,该策略允许文件网关代入 IAM 角色。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "storagegateway.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

如果您不希望文件网关代表您创建策略,则可以创建自己的策略并将它附加到文件共享。有关此操作的详细信息,请参阅 创建文件共享

以下示例策略允许文件网关执行策略中列出的所有 Amazon S3 操作。语句的第一部分允许对名为 TestBucket 的 S3 存储桶执行列出的所有操作。第二部分允许对 TestBucket 中的所有对象执行列出的操作。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetAccelerateConfiguration", "s3:GetBucketLocation", "s3:GetBucketVersioning", "s3:ListBucket", "s3:ListBucketVersions", "s3:ListBucketMultipartUploads" ], "Resource": "arn:aws:s3:::TestBucket", "Effect": "Allow" }, { "Action": [ "s3:AbortMultipartUpload", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectVersion", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::TestBucket/*", "Effect": "Allow" } ] }

以下示例策略与前面的示例策略类似,但允许您的文件网关执行通过访问点访问存储桶所需的操作。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:AbortMultipartUpload", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectVersion", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:us-east-1:123456789:accesspoint/TestAccessPointName/*", "Effect": "Allow" } ] }
注意

如果您需要通过 VPC 终端节点将文件共享连接到 S3 存储桶,请参阅Amazon S3 终端节点策略中的AWS PrivateLink用户指南.

跨服务混淆代理问题防范

混淆代理问题是一个安全性问题,即不具有操作执行权限的实体可能会迫使具有更高权限的实体执行该操作。在 AWS 中,跨服务模拟可能会导致混淆代理问题。当一项服务(调用服务)调用另一项服务(被调用服务)时,可能会发生跨服务模拟。可以操纵调用服务,使用其权限以在其他情况下该服务不应有访问权限的方式对另一个客户的资源进行操作。为防止这种情况,AWS 提供可帮助您保护所有服务的数据的工具,而这些服务中的服务委托人有权限访问账户中的资源。

我们建议使用资源策略中的 aws:SourceArnaws:SourceAccount 全局条件上下文键,限制 AWS Storage Gateway 为另一项服务提供的资源访问权限。如果使用两个全局条件上下文键,在同一策略语句中使用时,aws:SourceAccount 值和 aws:SourceArn 值中的账户必须使用相同的账户 ID。

的价值aws:SourceArn必须是与文件共享关联的 Storage Gateway 的 ARN。

防范混乱的副手问题的最有效方法是使用aws:SourceArn具有资源的完整 ARN 的全局条件上下文键。如果您不知道资源的完整 ARN,或者您要指定多个资源,请使用aws:SourceArn带通配符的全局上下文条件键 (*) 对于 ARN 的未知部分。例如 arn:aws:servicename::123456789012:*

以下示例显示如何使用aws:SourceArnaws:SourceAccountStorage Gateway 中的全局条件上下文键,以防止混淆的副问题。

{ "Version": "2012-10-17", "Statement": { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "storagegateway.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:storagegateway:us-east-1:123456789012:gateway/sgw-712345DA" } } } ] }

使用文件共享进行跨账户访问

跨账户当 Amazon Web Services 账户和该账户的用户获得了对属于其他 Amazon Web Services 账户的资源的访问权限时,访问权限便出现了。有了文件网关,您可以使用一个 Amazon Web Services 账户中的文件共享访问属于另一个 Amazon Web Services 账户的 Amazon S3 存储桶中的对象。

使用一个 Amazon Web Services 账户拥有的文件共享访问另一个 Amazon Web Services 账户中的 S3 存储桶
  1. 确保 S3 存储桶拥有者授予 Amazon Web Services 账户访问您需要访问的 S3 存储桶和该存储桶中的对象的访问权限。有关如何授予此访问权限的信息,请参阅。示例 2:为了授予跨账户存储桶权限中的Amazon Simple Storage Service 用户指南. 有关所需权限的列表,请参阅授予对 Amazon S3 存储桶的访问权限

  2. 确保您的文件共享用来访问 S3 存储桶的 IAM 角色包含 s3:GetObjectAcls3:PutObjectAcl 等操作的权限。此外,确保 IAM 角色包括允许您的账户代入该 IAM 角色的信任策略。有关信任策略的示例,请参阅授予对 Amazon S3 存储桶的访问权限

    如果您的文件共享使用现有角色来访问 S3 存储桶,您应包含 s3:GetObjectAcl 和 s3:PutObjectAcl 操作的权限。IAM 角色还需要一个允许您的帐户带入此角色的信任策略。有关信任策略的示例,请参阅授予对 Amazon S3 存储桶的访问权限

  3. 打开 Storage Gateway 控制台https://console.aws.amazon.com/storagegateway/home.

  4. 配置文件共享设置对话框的对象元数据设置中,选择给予存储桶拥有者完全控制权限

在为跨账户访问权限创建或更新文件共享并在本地挂载该文件共享后,我们强烈建议您测试设置。为此,您可以列出目录内容或者编写测试文件并确保这些文件在 S3 存储桶中显示为对象。

重要

确保设置正确的策略以授予跨账户访问文件共享所使用的账户。如果您未这样做,则通过本地应用程序对文件所做的更新不能传播到您正在使用的 Amazon S3 存储桶。

有关访问策略和访问控制列表的更多信息,请参阅以下内容:

有关使用可用访问策略选项的准则中的Amazon Simple Storage Service 用户指南

访问控制列表 (ACL) 概述中的Amazon Simple Storage Service 用户指南