AWS安全文件共享解决方案:安全与成本分析指南(第一部分)
引言
与外部实体共享文件(例如在业务伙伴之间共享数据或促进客户访问文件)是Amazon Web Services(AWS)客户的常见用例。组织必须平衡安全性、成本和可用性。在企业对企业(B2B)数据共享场景中,这些挑战变得更加复杂,因为通常很少或没有人工交互,需要强大的自动化解决方案。许多AWS服务提供多种访问授权选项,最佳选择取决于多个因素。
本文帮助您决定使用哪些AWS服务来实现适合业务需求的文件共享方法。我们重点关注安全控制和成本影响,描述一些权衡,并突出关键差异,以帮助您根据特定需求做出明智决策。我们将逐一介绍每个选项,强调其优势和局限性,并提供选择适合用例的解决方案的指导。
首先了解您的需求
设计AWS文件共享解决方案的第一步是明确了解您的需求和约束。因为有几种可能的设计模式和多个不同的AWS服务需要考虑,您需要首先识别并优先考虑所需的功能。收集以下信息以指导您的方法:
访问模式和规模
在规划访问模式和规模时,有几个关键因素需要牢记。首先,考虑文件如何共享——机器到机器、人到机器或人到人——因为这会影响安全性和性能。然后,考虑传输频率——文件是每天只交换一次,还是每小时有数千个文件在移动?如果下载控制很重要,可能需要对文件访问频率设置限制。文件大小也起作用,从典型的日常传输到需要支持的最大文件。最后,总数据量决定了您定期传输的信息量。
技术要求
您的解决方案选择将受到技术约束和能力的影响。协议要求通常驱动初始决策,例如您是否需要SFTP、FTPS或HTTPS访问。考虑必须与您的解决方案接口的现有系统以及它们如何连接。性能考虑涵盖多个维度:文件传输的可接受延迟、用户的地理分布、带宽要求,以及是否需要内置的重试机制来处理失败的传输。此外,考虑您的解决方案需要支持多少同时传输。
安全与合规
安全和合规要求肯定会影响您的文件共享策略。考虑谁控制加密密钥——是由AWS管理还是由您的组织管理——以及需要什么密钥轮换策略。身份验证需求通常不同——您可能使用密码、API密钥、多因素身份验证或证书来验证单个用户、特定系统或整个业务实体。您的审计要求将影响您在日志记录和监控能力方面的选择。您可能有地理考虑,如数据主权要求、存储位置限制以及考虑接收者位置的访问控制。如果您的数据受法律(如欧洲的GDPR或美国的HIPAA)约束,或者您的数据受标准(如支付卡行业数据安全标准(PCI-DSS))监管,您需要咨询自己的法律和合规顾问以了解所需内容。在评估风险容忍度时,考虑安全三要素:机密性、完整性和可用性——某些用例可能容忍短暂的不可用,但不能冒险数据暴露,而其他用例则优先考虑持续可用性。
操作要求
日常操作带来自己的一系列考虑。文件保留策略确定数据需要保存多长时间,而自动删除功能可能对于管理存储和合规性是必要的。考虑您需要什么样的文件传输活动报告和监控。您需要月度报告、每日报告,还是详细的实时传输活动跟踪?通过添加处理和通知系统,您可以帮助确保问题被及时发现和处理。灾难恢复要求,通过恢复点目标(RPO)和恢复时间目标(RTO)表达,帮助确定解决方案所需的弹性。
业务约束
您的解决方案必须在业务约束内运行,例如预算限制、技术限制、时间表、可用专业知识和服务水平协议(SLA)。预算限制包括初始实施成本和持续运营费用。考虑其他方的技术限制——他们可能使用特定协议(如SFTP)、需要移动设备兼容性或操作具有有限加密能力的旧系统。实施时间表影响在可以快速部署的托管服务和需要更多时间和专业知识的自定义解决方案之间的选择。可用于解决方案维护的专业知识也是一个考虑因素。文件传输的SLA可能指定您有义务满足的可用性和性能要求。为了满足这些约束,您必须估计文件共享需求随时间增长的程度,并确定您需要区域还是全球解决方案。
通过仔细考虑这些方面,您将更好地准备评估不同的AWS文件共享解决方案,并选择最适合您用例的方案。了解您的上传和下载需求将有助于确定您的用例是否可以通过单个AWS服务支持,还是需要组合服务。
解决方案
让我们首先看看AWS支持的各种文件共享机制。下表确定了每个解决方案所需的关键AWS服务,描述了解决方案的安全和成本影响,并描述了它们的复杂性和协议支持能力。下表显示了本文中描述的解决方案。
解决方案 | AWS服务 | 安全特性 | 成本* | 区域控制 |
---|---|---|---|---|
AWS Transfer Family | Transfer Family, Amazon S3, API Gateway, Lambda | 托管安全、传输中和静态加密、IAM集成、自定义身份验证 | 每个协议每小时$0.30,数据传输费用,存储成本 | 可以部署到特定AWS区域,只能传输到同一区域的S3存储桶 |
Transfer Family web apps | Transfer Family, S3, CloudFront | 基于浏览器的访问、IAM Identity Center集成、S3 Access Grants | 按文件操作付费,CloudFront成本,存储成本 | 使用CloudFront(全球)进行Web访问,但后端组件可以是区域特定的 |
Amazon S3预签名URL | S3 | 时间限制的URL、用于URL生成的IAM控制、HTTPS | S3请求和数据传输费用 | 可以限制到特定区域 |
使用Amazon S3预签名URL的无服务器应用程序 | S3, AWS Lambda, API Gateway | 时间限制的URL、HTTPS、IAM控制、可自定义的身份验证 | 按请求付费和最小基础设施成本 | 组件可以是区域特定的 |
下表显示了第二部分中描述的解决方案。
解决方案 | AWS服务 | 安全特性 | 成本* | 区域控制 |
---|---|---|---|---|
CloudFront签名URL | CloudFront, Amazon S3, Lambda | 可选的使用AWS Lambda@Edge的边缘安全、AWS WAF集成、SSL/TLS、地理限制、AWS Shield Standard(自动包含) | 内容分发网络(CDN)成本、请求定价、数据传输费用 | 设计为全球服务;源可以是AWS区域特定的 |
Amazon VPC端点服务 | PrivateLink, VPC, NLB | 完全网络隔离、私有连接、多层安全 | 端点每小时费用、NLB成本、数据处理费用 | 服务端点严格区域特定;必须在每个需要访问的区域创建端点 |
S3访问点 | S3, IAM, VPC(用于VPC特定访问点) | 每个访问点的专用IAM策略、仅VPC访问限制可用、与存储桶策略配合使用以实现分层安全、支持用于私有网络访问的AWS PrivateLink、与S3阻止公共访问设置兼容 | 无S3访问点额外费用、标准S3请求定价适用、基于标准S3费率的数据传输费用适用、使用VPC端点与访问点时适用VPC端点费用 | 访问点是区域特定的、每个访问点创建在与S3存储桶相同的区域、跨区域访问需要在每个区域单独的访问点、VPC特定访问点限于VPC的区域 |
- 提供的定价信息基于发布时的AWS服务费率,仅作为估计。根据您的具体实施和使用模式,可能会产生额外费用。有关最新和最准确的定价详情,请查阅提到的每个服务的官方AWS定价页面。
让我们详细检查这些解决方案。
AWS Transfer Family
AWS Transfer Family是一个用于SFTP、FTPS和AS2协议的托管文件传输服务。它直接与Amazon Simple Storage Service(Amazon S3)集成以进行存储,并通过Amazon API Gateway和AWS Lambda支持自定义身份提供者进行身份验证。
如图1所示,当用户启动文件传输时,Transfer Family通过配置的身份提供者使用API Gateway和Lambda对其进行身份验证。身份验证成功后,服务将用户映射到定义其S3存储桶访问权限的AWS Identity and Access Management(IAM)角色。服务使用TLS 1.2加密传输中的数据,并使用S3服务器端加密加密静态数据。
Transfer Family自动处理从零到数千个并发用户的扩展,跨可用区管理高可用性,并最小化基础设施管理。它在Amazon CloudWatch中记录详细的指标和日志以进行监控和审计,通过活动跟踪支持合规要求。
需要注意的是,Transfer Family还提供服务管理的身份验证。这种更简单的设置将用户凭据(密码或SSH密钥)直接存储在Transfer Family中,最小化对外部身份提供者的需求。服务管理的身份验证最适合如果您有少量用户或没有现有的身份管理系统,或者当您想要有一个断开连接的身份系统并且不想给外部合作伙伴在您的身份提供者系统中帐户时。
优点
Transfer Family的最大优势之一是如何提供Amazon S3的可靠性和可扩展性来存储您的数据,同时保持这些数据对现有客户端应用程序和工作流的可用性。该服务通过自定义身份提供者与现有身份验证系统集成,同时通过IAM策略维护安全。其自动扩展能力处理可变工作负载,从偶尔传输到高容量场景。
Transfer Family还提供详细的CloudWatch日志记录和文件传输活动的审计跟踪,这对于大多数日志记录和审计需求应该足够。它使用TLS 1.2加密传输中的数据,并使用Amazon S3服务器端加密加密静态数据。您可以通过IAM角色实施细粒度访问控制,并与AWS Organizations集成以进行多账户管理。该服务支持VPC端点以进行安全内部访问,并支持自定义域名以用于品牌端点。
因为数据存储在S3中,您的一些需求将通过配置S3而不是Transfer Family服务来满足。数据保留(例如,避免删除和计划删除)通过S3对象锁定和S3生命周期事件实现。
缺点
Transfer Family的定价结构包括每个协议启用每小时$0.30和基于数据量的数据传输费用。自定义域名可能会有额外费用。如果您使用VPC端点进行安全内部访问Amazon S3,还会有VPC数据费用。如果您有高容量传输或多个跨AWS区域的端点,您将面临增加的成本。因为数据最终存在于S3中;S3存储和请求定价也适用。
自定义身份提供者实现(如SAML或OAuth)会增加身份验证过程的延迟,影响传输启动时间。与服务管理的身份验证相比,此身份验证过程需要额外配置,并在传输启动期间引入额外步骤和延迟。
Transfer Family的区域性质意味着您必须在部署在单个区域(更简单的管理但全球用户可能延迟)或多个区域(更好的性能但每个区域每个协议每小时$0.30的更高成本)之间选择。多区域可以作为灾难恢复策略或当需要区域数据隔离时使用。
Transfer Family web apps
Transfer Family web apps提供基于浏览器的Amazon S3访问,使用户能够通过Web界面上传和下载文件。使用web apps,您可以创建一个品牌化、安全且高可用的门户,供用户浏览、上传和下载S3中的数据。Web apps使用Storage Browser for S3构建,并在完全托管的产品中提供相同的用户功能,无需编写代码或托管自己的应用程序。
当用户访问Web应用程序时,身份验证通过AWS IAM Identity Center进行,S3 Access Grants确定他们对特定S3存储桶或前缀的权限。访问授予权限可以是只读或读写。身份验证成功后,用户可以通过Web界面上传或下载文件。该服务使用Amazon CloudFront进行内容分发,并为数据传输实施SSL/TLS加密,而S3为静态数据提供服务器端加密。图2显示了一个简化的Transfer Family web app架构。
Web应用程序自动扩展以适应不同数量的用户,并通过CloudFront全球边缘网络提供高可用性。它最小化自定义Web应用程序开发的需求,并通过AWS CloudTrail和CloudWatch提供日志记录。您可以通过CloudFront分发实施自定义域名来自定义用户体验。
Transfer Family web apps支持多种身份验证方法,IAM Identity Center是主要选项之一。虽然Identity Center提供简化的用户管理和与现有身份提供者的集成。它还提供有用的机制,如多因素身份验证(MFA)、强密码策略和重置丢失的密码。它不是唯一可用的身份验证方法;您还可以使用自定义身份提供者进行身份验证,提供如何管理用户对Web应用程序访问的灵活性。
优点
Transfer Family web apps最小化构建和维护自定义Web界面以进行Amazon S3文件共享的需求。它提供与IAM Identity Center的无缝集成以进行用户管理和身份验证,使您能够使用现有身份提供者。该服务通过S3 Access Grants提供细粒度访问控制,允许在存储桶和前缀级别进行精确权限管理。其与CloudFront的集成提供全球可用性和增强性能,而CloudTrail日志记录提供审计能力。
该服务提供强大的安全功能,包括SSL/TLS加密、CORS策略管理,以及可选的与AWS WAF集成以保护免受机器人、网络爬虫、DDoS事件等的侵害。您可以实施自定义域名以用于品牌体验,并使用CloudFront安全功能,包括使用AWS Shield的DDoS保护。Web界面提供直观的文件管理能力,无需客户端软件或用户具有技术专业知识。
缺点
Transfer Family web apps需要使用IAM Identity Center,如果您当前未使用此服务,可能需要额外设置和配置。Web界面目前要求Identity Center身份与S3存储桶位于同一AWS账户中。如果您想将身份保留在一个AWS账户中并将数据存储在另一个账户中,这可能会创建设计挑战。实施需要为每个S3存储桶仔细配置跨源资源共享(CORS)。
该服务产生Transfer Family和关联服务的成本,包括CloudFront分发和数据传输费用。自定义域名实施需要通过AWS Certificate Manager(ACM)进行额外配置和SSL证书管理。Web界面非常适合人类上传或下载,但对于从机器到机器传输文件的自动化工作流不太适合。您必须仔细管理用户分配和访问授予以维护安全,增加管理开销。
S3预签名URL
Amazon S3预签名URL启用对S3中对象的安全、时间限制访问,而不需要文件接收者在您的身份系统中有身份。URL使用AWS SDK或AWS命令行界面(AWS CLI)生成,授予特定权限(GET、PUT),有效期为最多七天。当访问文件时,S3在允许访问对象之前验证这些URL中的加密签名参数。这通过HTTPS端点提供了一种直接的安全文件共享方法。
该解决方案只需要一个S3存储桶和适当的IAM权限以进行URL生成。S3处理预签名URL参数的身份验证并管理对对象的访问。文件传输通过HTTPS端点直接在用户和S3之间发生,预签名URL控制访问模式。
Amazon S3提供安全功能,包括服务器端加密、访问日志记录和CloudTrail集成。预签名URL的安全性主要通过URL生成期间定义的过期时间和特定操作权限管理。
优点
Amazon S3预签名URL遵循简单的按使用付费定价模型,仅对S3存储、请求和数据传输收费。例如,如果您创建预签名URL但对象实际上未下载,您照常支付存储成本,但不支付传输成本。该解决方案使用S3的本机可扩展性来处理不同数量的并发用户,无需额外基础设施。您可以通过URL过期时间和特定操作权限(GET、PUT、DELETE)实施细粒度访问控制。
访问通过URL过期强制执行控制。Amazon S3服务器访问日志记录和CloudTrail集成启用审计能力。该解决方案的简单性使其成为基本文件共享需求的理想选择,同时保持安全性和可扩展性。
缺点
预签名URL可以被任何有权访问URL的人使用。这是此设计的目标:您不需要为用户拥有身份。预签名URL可以在过期前无限次重用。为了提高安全性,短过期时间可以限制URL重用的可能性。然而,较短的过期时间要求接收者在URL创建后很快下载文件。
在实施此解决方案时,您应建立安全URL生成和分发的流程。根据关于接收者下载文件速度的现实期望设置URL过期时间。一个Web或移动应用程序,用户选择链接下载某些内容(如文档、图像、数据文件)并期望立即开始下载,是此设计的良好候选。
该解决方案适用于单个操作最多5 GB的文件。要共享大于5 GB的文件,您必须将文件分成多个部分,发出多个预签名URL,然后接收者必须下载所有部分并正确连接部分。这不是共享大文件的好解决方案。此外,如果接收者没有良好的连接性,分发大文件作为单个下载可能很困难。Amazon S3可以从对象中间开始对象下载,但选择预签名URL不能。因此,如果接收者传输2 GB下载中的1 GB,然后他们的连接中断,他们无法从中断处继续。他们将从头开始,这是不希望的。总体而言,此设计不适合在不可靠的互联网连接上传输大文件。
您应通过Amazon S3访问日志和CloudTrail启用适当的监控以跟踪使用模式并满足安全合规性。
如果您寻求直接、安全的文件共享能力,其中文件足够小以在一个请求中下载,并且您有安全机制来共享下载URL,此解决方案特别有效。
使用S3预签名URL的无服务器Web应用程序
Amazon S3预签名URL与自定义Web应用程序结合,启用对S3对象的安全、时间限制访问。应用程序生成URL,授予特定S3权限(GET、PUT),有效期在一分钟到七天之间。当请求文件访问时,应用程序对用户进行身份验证,并使用AWS SDK生成具有定义权限和过期时间的预签名URL。
Web应用程序使用API Gateway和Lambda函数进行身份验证和URL生成。Amazon S3在允许访问对象之前验证这些URL中的加密签名参数。文件传输通过HTTPS端点直接在用户和S3之间发生,应用程序控制访问模式。架构如图3所示。
Web应用程序可以实施安全控制,包括请求日志记录、速率限制(每秒请求数)和身份验证工作流。CloudWatch日志记录API访问模式和Lambda执行指标,而Amazon S3访问日志记录对象级操作。
优点
Amazon S3预签名URL遵循按使用付费定价模型。此解决方案仅对API