本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:设置具有选择性多存储桶访问权限的 AWS Transfer Family Web 应用程序
本教程将指导您为单个用户配置具有特定的 Amazon S3 存储桶权限的 Transfer Family 网络应用程序。您将学习如何设置一个解决方案,允许用户从一个存储桶下载并上传到另一个存储桶,同时保持安全性。这是一个基于基础教程中介绍的概念的高级教程。如果你不熟悉 AWS Transfer Family Web 应用程序,可以考虑从开始教程:设置基本的 Transfer Family 网络应用程序。
先决条件
开始本教程之前,您需要:
-
IAM 身份中心配置在与您的 AWS Transfer Family Web 应用程序相同的区域。请注意,所有区域的每个 AWS 账户只 AWS 允许一个 IAM 身份中心实例。
-
在 IAM 身份中心中配置了至少一个用户。
-
两个 S3 存储桶:一个用于下载,一个用于上传。
注意
本教程与基本 Web 应用程序教程有许多共同的前提条件。有关设置 IAM 身份中心和创建用户的更多信息,请参阅教程:设置基本的 Transfer Family 网络应用程序。
第 1 步:创建 Transfer Family 网络应用程序
创建 Transfer Family 网络应用程序
-
登录 AWS Management Console 并打开 AWS Transfer Family 控制台,网址为https://console.aws.amazon.com/transfer/
。 -
在左侧导航窗格中,选择 Web 应用程序。
-
选择 “创建 Web 应用程序”。
对于身份验证访问,请注意,该服务会自动找到您设置为先决条件的 AWS IAM Identity Center 实例。
-
在 “权限类型” 窗格中,选择 “创建并使用新的服务角色”。该服务为您创建身份持有者角色。身份持有者角色在其会话中包括经过身份验证的用户的身份。
-
在 Web 应用程序单位窗格中,接受默认值 1,或者根据需要调整为更高的值。
-
添加标签以帮助您整理 Web 应用程序。在本教程中,为密钥输入名称,为值输入教程 Web 应用程序。
提示
创建 Web 应用程序名称后,您可以直接从 Web 应用程序列表页面对其进行编辑。
-
选择 “下一步” 打开 “设计 Web 应用程序” 页面。在此屏幕上,提供以下信息。
您可以选择为 Web 应用程序提供标题。您也可以上传徽标和网站图标的图片文件。
-
对于页面标题,请自定义用户在连接到 Web 应用程序时看到的浏览器选项卡的标题。如果您没有为页面标题输入任何内容,则默认为 Transfer Web App。
-
要获取徽标,请上传图片文件。徽标图片的最大文件大小为 50 KB。
-
对于网站图标,请上传图片文件。您的网站图标的最大文件大小为 20 KB。
-
-
选择 “下一步”,然后选择 “创建 Web 应用程序”。
步骤 2:为 S3 访问权限配置 IAM 角色
您需要创建两个 IAM 角色:一个对第一个存储桶具有仅下载访问权限,另一个对第二个存储桶具有仅限上传的访问权限。
两个角色的信任政策
对两个 IAM 角色使用以下信任策略:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AccessGrantsTrustPolicy", "Effect": "Allow", "Principal": { "Service": "access-grants.s3.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity", "sts:SetContext" ] } ] }
下载存储桶的 IAM 政策
使用以下策略创建 IAM 角色,以获取对您的下载存储桶的只读访问权限:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ObjectLevelReadPermissions", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:GetObjectAcl", "s3:GetObjectVersionAcl", "s3:ListMultipartUploadParts", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*", "arn:aws:s3:::amzn-s3-demo-bucket1" ] } ] }
重要
将 amzn-s3-demo-bucket1 替换为下载存储桶的实际名称。
上传存储桶的 IAM 政策
使用以下策略创建另一个 IAM 角色以获取对上传存储桶的写入权限:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ObjectLevelWritePermissions", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectVersionAcl", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:AbortMultipartUpload", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket2/*", "arn:aws:s3:::amzn-s3-demo-bucket2" ] } ] }
重要
将 amzn-s3-demo-bucket2 替换为上传存储桶的实际名称。
步骤 3:设置 S3 访问授权
-
打开 S3 控制台,网址为https://console.aws.amazon.com/s3/
。 -
在导航窗格中,选择访问授权。
-
单击 “创建 S3 访问权限授予实例”。
-
选择添加 IAM 身份中心实例选项并输入身份中心实例 ARN。
-
单击 “下一步”,然后单击 “取消” 以完成 S3 访问权限授予实例的创建,无需继续执行其他步骤。
此步骤创建 S3 访问权限授予实例。现在,您将注册营业地点并创建访问授权。
步骤 4:注册 S3 存储桶位置
使用 S3 访问权限将两个 S3 存储桶注册为位置:
-
在 S3 访问权限授予控制台中,导航到 “位置”,然后单击 “注册位置”。
-
在 “位置范围” 下,选择用于下载的特定的 S3 存储桶(amzn-s3-demo-bucket1)。
-
当系统提示您选择 IAM 角色时,请选择您之前创建的下载 IAM 角色。
-
完成注册流程。
-
重复该过程注册上传存储桶 (amzn-s3-demo-bucket2),并在出现提示时选择上传 IAM 角色。
步骤 5:创建访问授权
创建两个赠款,每个注册地点一个:
-
在 S3 访问权限授权控制台中,导航到 “授权”,然后单击 “创建授权”。
-
在 “位置” 中,单击 “浏览位置”,然后选择下载存储桶位置 (amzn-s3-demo-bucket1)。
-
在 Subprefix(可选)中,输入
*
以允许访问整个存储桶,或者指定路径,例如限制folder1/folder2/*
对特定前缀的访问。使用
*
会将授权范围设置为s3://bucket-name/*
,允许访问整个存储桶。要仅允许访问特定的前缀,请输入类似的路径folder1/folder2/*
,该路径会将授权范围设置为s3://bucket-name/folder1/folder2/*
。 -
在 “权限和访问权限” 下,为下载存储桶选择 “读取”。
-
在被授权者类型中,从 IAM 身份中心选择目录身份。
-
对于 IAM 委托人类型,选择用户并输入您的 IAM 身份中心用户的用户 ID。
-
完成赠款创建流程。
-
重复该过程为上传存储桶 (amzn-s3-demo-bucket2) 创建授权,但为权限选择读写。
步骤 6:为 S3 存储桶配置 CORS 策略
为两个 S3 存储桶配置 CORS 策略,以允许通过以下方式进行访问: AWS Transfer Family WebApp
-
打开 S3 控制台并导航到您的下载存储桶 (amzn-s3-demo-bucket1)。
-
选择权限选项卡。
-
向下滚动到跨源资源共享 (CORS) 部分,然后点击编辑。
-
添加以下 CORS 配置,替换为实际
WebAppEndpoint
的 WebApp 终端节点 URL:你可以在 AWS Transfer Family 控制台的下方找到你的 Web 应用程序终端节点 URL WebApps。它看起来会像 https://webapp-***************.transfer-webapp.us-west-2.on.aws。
[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "GET", "PUT", "POST", "DELETE", "HEAD" ], "AllowedOrigins": [ "https://
WebAppEndpoint
" ], "ExposeHeaders": [ "last-modified", "content-length", "etag", "x-amz-version-id", "content-type", "x-amz-request-id", "x-amz-id-2", "date", "x-amz-cf-id", "x-amz-storage-class", "access-control-expose-headers" ], "MaxAgeSeconds": 3000 } ] -
单击保存更改。
-
对您的上传存储桶 (amzn-s3-demo-bucket2) 重复该过程。
步骤 7:测试配置
-
打开您的 AWS Transfer Family 网络应用程序网址。您可以在 AWS Transfer Family 控制台的 “访问端点” 字段 WebApps 下找到此 URL。
-
使用您配置的访问权限的 IAM Identity Center 用户证书登录。
-
登录后,您应该会在主页上看到两个 S3 位置。
-
导航到下载存储桶 (amzn-s3-demo-bucket1),确认您可以下载文件但不能上传。
-
导航到上传存储桶 (amzn-s3-demo-bucket2),然后验证您是否可以上传文件。
结论
您已成功为单个用户配置 AWS Transfer Family WebApp 了选择性 S3 存储桶访问权限。此设置允许用户从一个存储桶下载并上传到另一个存储桶,同时通过 IAM 角色和 S3 访问权限授予维护安全。
通过在 S3 访问权限中为每个用户创建额外的授权,可以将此方法扩展到多个用户,从而对存储桶访问权限进行精细控制。有关基本 Web 应用程序设置的信息,请参阅教程:设置基本的 Transfer Family 网络应用程序。