使用 AWS Transfer Family 和 AWS Secrets Manager 实现基于多

产品展示

26

使用AWS Transfer Family和AWS Secrets Manager实现基于多因素身份验证的受管理文件传输

文章重点

高度监管行业对安全的文件交换需求。AWS Transfer Family新功能支持多种身份验证方法。本文介绍使用AWS本地服务构建MFA解决方案的架构与实施步骤。

由Yohan Supangat于2024年1月4日发表于Amazon Elastic File System (EFS), Amazon Simple Storage Service (S3), AWS CloudFormation, AWS Secrets Manager, AWS Transfer Family, Migration amp Transfer Services, Security Identity amp Compliance,以及 Storage。永久连结 评论 分享

使用 AWS Transfer Family 和 AWS Secrets Manager 实现基于多

在金融、医疗和政府等高度监管的行业中,安全地交换业务文件变得至关重要。常用的协议,如SFTP,提供了一种广泛支持的标准方法,用于安全地通过公共网络传输文件。对于某些客户,合规性要求促使他们在SFTP身份验证方面设置更高的标准。为了满足更严格的合规性要求,这些客户通常希望为其受管理文件传输MFT架构实现多因素身份验证MFA或双因素身份验证2FA机制。

最近,AWS Transfer Family推出了支持多种身份验证方法的能力。此功能使客户可以选择使用标准的公私钥交换以及密码来验证用户。虽然此新功能支持双因素身份验证2FA,但客户有时需要MFA来满足其企业治理或安全要求。AWS Transfer Family提供了一种完全受管的SFTP服务,并以Amazon S3或EFS作为其MFT架构的支撑。AWS Transfer Family可与其他AWS服务或第三方解决方案集成,以实现MFA身份验证。客户可以通过外部身份提供者IdP如Okta和Azure Active Directory找到第三方解决方案来实现MFA身份验证。对于那些可能更愿意使用更简单解决方案并便于部署的客户,本文将帮助您使用AWS本地服务快速部署MFA解决方案。

在本文中,我将手把手介绍如何使用安全文件传输协议SFTP为您的MFT工作负载实现MFA身份验证的架构。使用云原生服务部署的MFT可以降低成本并加快部署速度。您将学到如何使用基于MFA的身份验证构建由AWS Transfer Family支持的受管理SFTP,并以Amazon S3或EFS作为后端存储。此架构还使用其他AWS服务,例如AWS Lambda来处理身份验证处理逻辑,以及AWS Secrets Manager来存储用户身份验证详细信息。

解决方案概览

我们将使用Google Authenticator作为Transfer Family身份验证的MFA。Google Authenticator使用基于时间的一次性密码TOTP;在RFC 6238中指定。要从Google Authenticator生成唯一的一次性密码,您需要生成并注册一个80位秘密金钥到Google Authenticator应用中的基于时间的帐户。这个80位秘密金钥将与用户名和用户帐户的密码存储在Secrets Manager中。为了使此架构正常运行,每个用户名都需要在S3桶或EFS文件系统中拥有一个相应名称的文件夹,以为用户在AWS Transfer Family中的配置提供主目录。

下图显示了使用AWS Lambda、AWS Secrets Manager及作为存储的S3或EFS的MFA身份验证架构及过程:

云梯官网入口最新版

身份验证步骤如下:

打开Google Authenticator应用,检索该应用中为您设置的帐户生成的唯一令牌。使用任何SFTP客户端登录Transfer Family的SFTP。输入用户名以及包含生成的唯一令牌的密码进行登录。AWS Transfer Family将调用一个Lambda函数,使用用户名和密码连同令牌作为函数参数完成身份验证。Lambda函数将根据用户输入的帐户用户名从Secrets Manager中检索凭证,并验证密码和存储在Secrets Manager中的秘密金钥。身份验证成功后,Lambda将返回IAM权限,允许Transfer Family列出配置为用户帐户的S3桶文件夹或EFS文件夹中的文件。

前提条件

首先,您需要一个AWS帐户来部署该解决方案。可以参考有关创建AWS帐户的文档。访问AWS帐户,并具有运行CloudFormation及执行AWS Transfer Family、Lambda、S3和Secrets Manager的IAM操作的权限。一个具有POSIX配置文件的S3桶或EFS文件夹作为存储。要创建S3桶,请参考关于创建桶的文档。要创建具有POSIX配置文件的EFS文件系统,请参考有关创建EFS文件系统和创建访问点的文档。可选为使用最低权限来部署CloudFormation,您需要创建一个AWS CloudFormation服务角色,并将以下IAM策略附加到该角色。在配置堆栈选项时选择该角色。

json{ Version 20121017 Statement [ { Sid S31 Effect Allow Action [ s3CreateBucket s3PutBucketTagging s3DeleteBucket s3PutBucketPublicAccessBlock ] Resource } { Sid Lambda1 Effect Allow Action [ lambdaCreateFunction lambdaTagResource ] Resource Condition { StringEquals { awsRequestTag/blogSource TransferFamilyMFA } } } { Sid Lambda2 Effect Allow Action [ lambdaInvokeFunction lambdaAddPermission lambdaRemovePermission lambdaGetFunction lambdaDeleteFunction lambdaListTags lambdaPutFunctionConcurrency ] Resource Condition { StringEquals { awsResourceTag/blogSource TransferFamilyMFA } } } { Sid IAM1 Effect Allow Action [ iamCreateRole iamTagRole ] Resource Condition { StringEquals { awsRequestTag/blogSource TransferFamilyMFA } } } { Sid IAM2 Effect Allow Action [ iamAttachRolePolicy iamDeleteRole iamPutRolePolicy iamDeleteRolePolicy iamDetachRolePolicy iamGetRolePolicy iamListRoleTags iamGetRole iamListPolicyTags ] Resource Condition { StringEquals { awsResourceTag/blogSource TransferFamilyMFA } } } { Sid IAM3 Effect Allow Action [ iamPassRole ] Resource Condition { StringEquals { iamPassedToService [ lambdaamazonawscom transferamazonawscom ] } } } { Sid SecretsManager1 Effect Allow Action [ secretsmanagerCreateSecret secretsmanagerTagResource ] Resource Condition { StringEquals { awsRequestTag/blogSource TransferFamilyMFA } } } { Sid SecretsManager2 Effect Allow Action [ secretsmanagerDeleteSecret ] Resource Condition { StringEquals { awsResourceTag/blogSource TransferFamilyMFA } } } { Sid TransferFamily1 Effect Allow Action [ transferCreateServer transferTagResource ] Resource Condition { StringEquals { awsRequestTag/blogSource TransferFamilyMFA } } } { Sid TransferFamily2 Effect Allow Action [ transferDeleteServer transferDescribeServer transferListTagsForResource ] Resource Condition { StringEquals { awsResourceTag/blogSource TransferFamilyMFA } } } { Sid TransferFamily3 Effect Allow Action [ ec2CreateVpcEndpoint ec2DeleteVpcEndpoints ec2DescribeVpcEndpoints ec2DescribeVpcEndpointConnections ] Resource } ]}

解决方案设置步骤

要设置该解决方案,您需要执行以下步骤:

在您的移动设备上设置MFA。在您的AWS环境中部署解决方案。

在您的移动设备上设置MFA

在您的移动设备上下载Google Authenticator应用。您可以从这里为Android设备下载,从 这里为Apple设备下载。生成一个基于32位编码的秘密字符串,该字符串的最小长度为16个字符,仅包含字母A到Z和2到7,如RFC 4648中所述,并将其注册为Google Authenticator应用中帐户的基于时间的密钥。为此,打开移动设备上的Google Authenticator应用,选择添加代码或点击屏幕右下角的加号图标。选择输入设置密钥,在输入帐户详细信息页面中,输入帐户用户名,例如“demouser01”,和秘密金钥,例如“ABCDEFGHIJ234567”。确保在下拉选项中选择基于时间,然后点击添加按钮以完成设置。Google Authenticator应用会为该帐户生成一个每30秒旋转一次的唯一令牌。

在您的AWS环境中部署解决方案

在本节中,您将使用AWS CloudFormation来部署以下资源:

用于用户名、密码和MFA秘密金钥的Secrets Manager秘密。一个用于托管Transfer Family账户文件夹的Amazon S3桶。一个IAM角色,具有允许Lambda函数在S3桶中创建账户主文件夹的IAM策略。一个启用帐户主文件夹创建的AWS Lambda函数。一个CloudFormation自定义资源,以执行AWS Lambda以创建S3桶中的账户主文件夹。用于所有经过身份验证的AWS Transfer Family用户的IAM角色。一个IAM角色,具有允许Lambda函数访问Secrets Manager和CloudManager Logs的IAM策略。一个作为自定义身份提供者IdP的AWS Lambda函数。定义AWS Transfer Family触发Lambda的权限策略的AWS IAM角色。一个AWS Transfer Family服务,将Lambda函数用作其自定义身份提供者。

注意: 此AWS CloudFormation模板已在AWS区域cacentral1和useast1中测试。在您的AWS帐户中部署此模板将产生费用。后面将包含清理已部署资源的步骤。请务必遵循这些说明,以便您不会超过测试此示例解决方案所花费的时间而产生额外费用。

要部署CloudFormation,请遵循以下步骤:

要使用S3作为存储选项,下载CloudFormation模板TransferFamilyLambdaSecretsManagerMFAS3yaml。要使用EFS作为存储选项,下载CloudFormation模板TransferFamilyLambdaSecretsManagerMFAEFSyaml。在AWS CloudFormation控制台中,选择创建堆栈。选择上传模板文件并选择文件。上传文件名链接,然后选择下一步。在指定堆栈详细信息页面中,输入堆栈名称TransferSFTPMFA。在同一页面上,有几个参数:如果您选择S3作为存储选项模板,请输入将用作用户存储的现有S3桶名称。如果将其留空,CloudFormation将创建一个新的S3桶。如果您选择EFS作为存储选项模板,请输入现有EFS ARN。对于EFS,您还需要提供[POSIX用户ID和组ID](https//

AWS IoT Core for LoRaWAN 支持公共网络关键要点AWS IoT Core for LoRaWAN 新增对公共网络的支持,简化 LoRaWAN 网络的部署。该功能通过与 Everynet 合作,允许客户使用公共 LoRaWAN 网络,无需管理自有网关。该预览版本支持在美国及其东部...

简化 CNAME 链管理:使用 Route 53 Resolver 的 DNS 防火墙关键要点从今天起,您可以配置 DNS 防火墙以自动信任解析链中所有的域名,例如 CNAME 或 DNAME 链。DNS 防火墙为云中私有网络的出站 DNS 请求提供安全保护,帮助拦截和管理潜在的网络攻击。新增的防火...