建立具有自定义镜头的良好架构的 IDP 解决方案 – 第 2 部分:安全
创建安全的IDP解决方案第二部分:建立具有自定义镜头的优秀架构
在AWS上构建一个可投入生产的解决方案涉及资源、时间、客户期望和业务结果的一系列权衡。 AWS Well-Architected 框架 帮助你理解在AWS上构建工作负载时所做决策的利益和风险。通过使用该框架,你将了解在AWS上设计和操作可靠、安全、高效、具有成本效益和可持续性的工作负载的当前操作和架构建议。
智能文档处理(IDP)项目通常结合了光学字符识别(OCR)和自然语言处理(NLP)来阅读和理解文档,并提取特定实体或短语。这个 IDP Well-Architected 自定义镜头 为你提供指导,帮助你解决领域中常见的挑战。通过在该自定义镜头中回答一系列问题,你将能够识别潜在的风险,并通过遵循改进计划来解决它们。
本文重点介绍了IDP解决方案的安全支柱。从安全支柱和设计原则的介绍开始,我们接着讨论了四个重点领域的解决方案设计和实施:访问控制、数据保护、密钥和密钥管理以及工作负载配置。通过阅读本文,你将了解Well-Architected框架中的安全支柱及其在IDP解决方案中的应用。
设计原则
安全支柱包括IDP解决方案保护输入文档、文档处理系统和输出资产的能力,利用AWS技术在处理文档时提高安全性。
- 使用Amazon SageMaker JumpStart、Llama 2和Amazon OpenSearch Serverless with Vector Engine构建一个针对金融服务的上下文聊天机器人
- 用定制镜头打造良好结构的IDP解决方案- 第一部分:运营卓越
- 青少年的梦想:志愿成为计算机科学专业的学生体验NVIDIA人生,参观了Make-A-Wish
所有用于IDP解决方案的AWS AI服务(例如 Amazon Textract、Amazon Comprehend 或 Amazon Comprehend Medical)都是完全托管的AI服务,AWS保护它们的物理基础设施、API端点、操作系统和应用程序代码,并在给定区域内处理服务的弹性和故障转移。作为AWS客户,因此你可以专注于使用这些服务来完成IDP任务,而不必担心安全性。有许多设计原则可以帮助你加强IDP工作负载的安全性:
- 实施强大的身份基础 – 在IDP应用程序中,实施最小权限原则,通过适当的授权为与AWS资源的每次交互强制实施职责分离。集中身份管理,并努力消除对长期静态凭据的依赖。
- 保持可追溯性 – 在IDP中使用的AI服务与 AWS CloudTrail 集成,使你能够以低延迟监视、警报和审计对IDP环境的操作和更改。它们与 Amazon CloudWatch 的集成使你可以将日志和指标收集与IDP系统集成,以自动化调查和采取行动。
- 自动化当前的安全建议 – 基于软件的自动化安全机制提高了你快速安全扩展的能力,也降低了成本。使用 AWS CloudFormation 在受版本控制的模板中创建安全的IDP架构,包括实施作为代码定义和管理的控制。
- 保护数据在传输和静态状态下 – IDP所需的所有AI服务默认支持传输中的加密。注意保护静态状态和IDP输出中生成的数据。将你的数据分类为敏感级别,并在适当的情况下使用加密、记号化和访问控制等机制。
- 授予人员最小特权权限 – IDP大大减少了对文档的直接访问和手动处理的需求。只涉及必要的人员进行案例验证或增强任务,降低了在处理敏感数据时文件处理和人为错误的风险。
- 准备安全事件 – 准备好灾难事件,建立与组织需求相符的事件管理和调查政策和流程。进行事件响应模拟,并使用自动化工具来提高检测、调查和恢复的速度。
焦点领域
在架构IDP工作负载之前,您需要确保实施相关措施以满足安全要求。本文侧重于安全支柱,共有四个焦点领域:
- 访问控制 – 在IDP应用程序中,访问控制是确保信息安全的关键部分。它不仅与仅授权的用户能够访问应用程序有关,还与确保其他服务仅能以适当的安全方式访问环境并彼此交互有关。
- 数据保护 – 因为默认情况下支持在传输中加密所有IDP所需的人工智能服务数据,所以IDP应用程序中的数据保护更侧重于对静止数据加密和处理个人身份信息(PII)之类的敏感信息。
- 密钥和秘密管理 – 用于保护IDP工作流程安全的加密方法可能包括用于加密数据和授权用户跨多个服务和相关系统的不同密钥。应用全面的密钥和秘密管理系统可提供持久且安全的机制,进一步保护IDP应用程序和数据。
- 工作负载配置 – 工作负载配置涉及多个设计原则,包括使用监控和审计服务来维护IDP工作负载中交易和数据的可追溯性,设置事件响应程序,并将不同的IDP工作负载彼此分离。
访问控制
在访问控制的焦点领域中,请考虑以下当前的建议:
- 使用VPC端点与IDP相关服务建立私有连接 – 您可以通过可在世界范围内路由网络上使用Amazon Textract、Amazon Comprehend和Amazon Simple Storage Service (Amazon S3) API,或者通过使用VPC端点将您的网络流量保持在AWS网络内。为遵循当前的安全建议,您应该将IDP流量保持在您的VPC内,并通过创建接口VPC端点在您的VPC和Amazon Textract或Amazon Comprehend之间建立私有连接。您还可以使用网关VPC端点从您的VPC访问Amazon S3。
- 设置集中身份提供程序 – 为了对用户和系统进行身份验证,设置集中身份提供程序可更轻松地管理多个IDP应用程序和服务的访问。这减少了需要多组凭据的需求,并提供了与现有人力资源 (HR) 流程集成的机会。
- 对于与单个AWS账户的联合登录,您可以使用基于SAML 2.0的提供程序与AWS Identity and Access Management (IAM) 一起使用集中身份。
- 对于联合登录到您的多个AWS Organizations账户,您可以在AWS IAM身份中心中配置您的身份源,并指定您的用户和组的管理位置。
- 使用IAM角色控制访问并执行最小特权访问 – 为了管理用户对IDP服务的访问,应为IDP应用程序中的用户访问服务创建IAM角色,并附加适当的策略和标签以实现最小特权访问。然后,应将角色分配给与您的身份提供程序中的群组相对应的适当群组。您还可以使用IAM角色分配服务使用权限,从而使用短暂的AWS Security Token Service (STS)凭据来调用服务API。对于需要从未在AWS上运行的系统中用于IDP目的的AWS服务调用的情况,请使用AWS IAM Roles Anywhere在IAM中获取临时安全凭据,以用于在AWS之外运行的工作负载。
- 保护您账户中的Amazon Textract和Amazon Comprehend免受跨服务的冒充 – IDP应用程序通常使用多个AWS服务,以便一个服务可以调用另一个服务。因此,您需要防止跨服务的”混淆副官”场景。我们建议在资源策略中使用
aws:SourceArn
和aws:SourceAccount
全局条件上下文键来限制Amazon Textract或Amazon Comprehend向其他服务授予的权限。
数据保护
以下是一些当前的数据保护建议:
- 遵循当前的建议来保护数据存储中的敏感数据 – IDP通常涉及多个数据存储。这些数据存储中的敏感数据需要得到保护。在此领域的当前安全建议包括定义IAM控制、在数据库中实施检测控制的多种方式、通过网络流量控制加强数据周围的基础设施安全以及通过加密和令牌化来保护数据。
- 在Amazon Textract中对数据进行静态加密 – Amazon Textract使用传输层安全协议(TLS)和VPC端点对数据进行传输时的加密。对于Amazon Textract使用的静态加密数据的方法是服务器端加密。您可以选择以下选项:
- 使用Amazon S3进行服务器端加密(SSE-S3) – 当您使用Amazon S3管理的密钥时,每个对象都使用唯一的密钥进行加密。作为额外的保护措施,此方法通过定期轮换对密钥本身进行加密,使用的是主密钥。
- 使用AWS KMS进行服务器端加密(SSE-KMS) – 对于使用AWS密钥管理服务(AWS KMS)密钥的使用,有单独的权限,可以保护Amazon S3中对象的未经授权访问。SSE-KMS还提供了一个CloudTrail的审计跟踪,显示了您的KMS密钥何时被使用,以及被谁使用。此外,您可以创建和管理对您、您的服务和您所在区域唯一的KMS密钥。
- 在自定义的S3存储桶中对Amazon Textract的异步API输出进行加密 – 当您通过调用
StartDocumentTextDetection
或StartDocumentAnalysis
开始异步Amazon Textract作业时,API操作中的一个可选参数称为OutputConfig
。该参数允许您指定用于存储输出的S3存储桶。另一个可选的输入参数KMSKeyId
允许您指定用于加密输出的KMS客户管理密钥(CMK)。 - 在Amazon Comprehend中使用AWS KMS加密 – Amazon Comprehend与AWS KMS合作,为您的数据提供增强的加密功能。与AWS KMS集成可让您对
Start*
和Create*
作业的存储卷中的数据进行加密,并使用自己的KMS密钥加密Start*
作业的输出结果。 - 保护IDP输出中的PII – 对于包含PII的文档,IDP输出中的任何PII也需要得到保护。您可以在数据存储中保护输出的PII,或者在IDP输出中隐藏PII。
- 如果您需要将PII存储在IDP的下游系统中,请考虑定义IAM控制、在数据库上实施保护和检测控制、通过网络流量控制加强数据周围的基础设施安全,以及通过加密和令牌化实施数据保护。
- 如果您不需要将PII存储在IDP的下游系统中,请考虑在IDP工作流程中使用Amazon Comprehend设计一个PII隐藏步骤。
密钥和秘密管理
考虑以下有关密钥和秘密管理的当前建议:
- 使用AWS KMS实施安全的密钥管理 – 您需要制定一个包括密钥的存储、轮换和访问控制的加密方法,以帮助保护您的内容。AWS KMS帮助您管理加密密钥,并与许多AWS服务集成。它为您的KMS密钥提供持久、安全和冗余的存储。
- 使用AWS Secrets Manager实现秘密管理 – IDP工作流程中可能包含多个服务或阶段的秘密,例如数据库凭据。您需要一个工具来存储、管理、检索和可能轮换这些秘密。AWS Secrets Manager帮助您管理、检索和轮换数据库凭据、应用程序凭据和其他秘密,从而减轻任何可以检查您的应用程序代码的人可能窃取凭据的风险。
工作负载配置
要配置工作负载,请按照以下当前的建议进行操作:
- 使用不同的AWS账号分隔多个IDP工作负载 – 我们建议通过使用多账号策略来确保生产环境、开发环境和测试环境之间以及工作负载之间的共同防护和隔离。AWS提供工具以通过多账号策略来 规模化管理您的工作负载 以建立这种隔离边界。当您拥有多个在中央管理下的AWS账号时,应将这些账号组织成组织单元(OUs)的分层结构。然后,可以对组织单元和成员账号进行组织和应用安全控制,在组织中的成员账号上建立一致的预防性控制措施。
- 使用CloudTrail记录Amazon Textract和Amazon Comprehend的API调用 – Amazon Textract和Amazon Comprehend与CloudTrail集成。所捕获的调用包括从服务控制台和从您自己的代码到服务API终点的调用。
- 建立事件响应程序 – 即使具备全面的预防性和探测性控制措施,您的组织仍应建立应对和减轻安全事件潜在影响的流程。在安全事件发生前,通过部署工具和控制措施,并定期进行事件响应模拟,可以验证您的环境是否能够支持及时的调查和恢复。
结论
在本文中,我们分享了构建良好架构的IDP解决方案安全支柱的设计原则和当前建议。
了解更多有关IDP Well-Architected Custom Lens的信息,请查阅此系列中的以下文章:
可靠性](https://aws.amazon.com/blogs/machine-learning/build-w ell-architected-idp-solutions-with-a-custom-lens-part-3-reliability/) – 使用定制镜头构建良好架构的IDP解决方案 – 第4部分:性能效率 – 使用定制镜头构建良好架构的IDP解决方案 – 第5部分:成本优化 – 使用定制镜头构建良好架构的IDP解决方案 – 第6部分:可持续性 |
下一步,您可以阅读更多关于AWS Well-Architected Framework和我们的AWS智能文档处理指南,以设计和构建您的IDP应用程序。请与您的账号团队联系,进行IDP工作负载的良好架构审查。如果您需要额外的专业指导,请联系您的AWS账号团队,以获取IDP专家解决方案架构师的支持。
AWS致力于将IDP Well-Architected Lens作为一种活跃的工具。随着IDP解决方案和相关AWS AI服务的发展,我们将相应地更新IDP Well-Architected Lens。