本指南可帮助您部署由 Amazon Kendra 提供支持的搜索功能。许多组织的关键业务信息都分散在多个内容存储库中,这使得员工难以访问和安全地共享正确的信息。Amazon Kendra 通过基于令牌的用户访问权限来帮助管理对文档的访问。Amazon Kendra 还支持基于用户访问令牌和文档访问控制列表(ACL)的搜索筛选。搜索结果会返回原始文档存储库的链接和简短描述。对完整文档的访问控制仍由原始存储库的访问策略执行。
架构图
第 1 步
Amazon Kendra 从 Amazon Simple Storage Service(Amazon S3)存储桶中抓取文档并为其编制索引,并从元数据文件中收集 ACL 和文档属性。
第 2 步
Amazon Cognito 用户池对已注册用户进行身份验证。Amazon Cognito 身份池授权应用程序使用 Amazon Kendra 和 Amazon S3。
第 3 步
将 Amazon Kendra 索引的用户访问控制配置为使用 Amazon Cognito 用户池作为 Open ID 提供程序。
第 4 步
AWS Amplify 构建和部署将用于 Web 应用程序托管的应用程序代码。
第 5 步
您的用户进行身份验证并登录应用程序以执行查询。
第 6 步
应用程序将用户的访问令牌(由 Amazon Cognito 用户池提供)发送到 Amazon Kendra 索引。Amazon Kendra 索引使用 Amazon Cognito 用户池签名 URL 解密访问令牌,并获取与用户关联的参数,例如 cognito:username 和 cognito:groups。
第 7 步
Amazon Kendra 索引根据存储的 ACL 及用户访问令牌中收到的信息对搜索结果进行筛选。这些筛选后的结果为回应应用程序发出的查询 API 调用而返回。
Well-Architected 支柱
当您在云中构建系统时,AWS Well-Architected Framework 可以帮助您了解所做决策的利弊。框架的六大支柱使您能够学习设计和操作可靠、安全、高效、经济高效且可持续的系统的架构最佳实践。使用 AWS 管理控制台中免费提供的 AWS Well-Architected Tool,您可以通过回答每个支柱的一组问题,根据这些最佳实践来检查您的工作负载。
上面的架构图是按照 Well-Architected 最佳实践创建的解决方案示例。要做到完全的良好架构,您应该遵循尽可能多的 Well-Architected 最佳实践。
-
卓越运营
Amazon Kendra 使用Amazon CloudWatch Logs 来深入了解数据来源的运行情况。Amazon Kendra 会记录文档在索引编制过程中的流程详情,并记录在为文档编制索引时发生的数据来源错误。CloudWatch Logs 可用于监控、存储和访问日志文件。CloudWatch Logs Insights 和异常检测可用于持续分析系统和应用程序的指标、确定正常基线及发现异常,需要的用户干预极少。
-
安全性
Amazon Cognito 可帮助管理、验证和授权 Web 应用程序最终用户。 该架构使用 Amazon Cognito 的身份池来授权 Web 应用程序仅使用 Amazon Kendra 和 Amazon S3,不允许 Web 应用程序访问任何其他服务。此外,该架构使用 AWS CloudFormation 模板将资源部署到 AWS 云。这些模板可降低与手动配置或管理相关的人为错误风险。
-
可靠性
默认情况下,Amazon Kendra 索引的企业版在某个区域内高度可用。当您开始使用 Amazon Kendra 时,每天可以获得 10 万个可搜索文档和多达 8000 个查询的基本容量。
-
性能效率
Amazon CloudFront 可降低交付 Web 应用程序时的延迟。在部署该架构期间,您应确保其所需的所有服务(例如 Amazon Kendra、Amazon Cognito、CloudFront)在您选择的部署区域内均可用。
-
成本优化
该架构使用 Amplify,Amplify 采用无服务器技术来托管 Web 应用程序的前端和后端服务。Amplify 会在用户量增加时扩展,然后随着用户量的减少而缩减,这有助于管理成本。
-
可持续性
Amplify 托管的 Web 应用程序根据用户对 Web 应用程序的需求进行扩展,有助于确保充分高效地利用能源资源。
实施资源
提供了在 AWS 账户中进行实验和使用的详细指南。构建指南的每个阶段(包括部署、使用和清理)都将被检查,以便为部署做好准备。
示例代码为起点。它经过行业验证,是规范性但不是决定性的,可以帮助您开始。
相关内容
Building a secure search application with access controls using Amazon Kendra
Amazon Kendra 是一项由机器学习(ML)提供支持的智能搜索服务,高度准确且易于使用。Amazon Kendra 支持根据您的搜索应用程序提供的用户访问令牌,以及 Amazon Kendra 连接器收集的文档访问控制列表(ACL)进行搜索筛选。
此博文演示了如何在 Amazon Kendra 中使用 Open ID 进行基于令牌的用户访问控制。
免责声明
示例代码;软件库;命令行工具;概念验证;模板;或其他相关技术(包括由我方人员提供的任何前述项)作为 AWS 内容按照《AWS 客户协议》或您与 AWS 之间的相关书面协议(以适用者为准)向您提供。您不应将这些 AWS 内容用在您的生产账户中,或用于生产或其他关键数据。您负责根据特定质量控制规程和标准测试、保护和优化 AWS 内容,例如示例代码,以使其适合生产级应用。部署 AWS 内容可能会因创建或使用 AWS 可收费资源(例如,运行 Amazon EC2 实例或使用 Amazon S3 存储)而产生 AWS 费用。