Q88 — AWS SAA-C03 第16章

第 88/100 题 | ← 返回第16章

Q1288. 一家公司正在设计一款股票交易应用程序,为客户提供交易洞察。该公司需要一个解决方案,用于撤销超过 180 天未登录该应用程序的非活跃用户的访问权限。哪种解决方案可以满足这一要求?

正确答案: B. 使用 Amazon Cognito 对用户进行身份验证。将 AWS CloudTrail 事件中的用户登录日期和时间存储在 Amazon DynamoDB 中。安排一个 Amazon EventBridge 事件,每天调用 AWS Lambda 函数来停用上次登录日期超过 180 天的用户。

解析

正确的解决方案必须能够自动撤销非活跃用户(超过 180 天未登录的用户)的访问权限,同时尽量减少运营开销,并可靠地跟踪上次登录时间。让我们评估一下每个选项:正确答案:B。使用 Amazon Cognito 对用户进行身份验证。将 AWS CloudTrail 事件中的用户登录日期和时间存储在 Amazon DynamoDB 中。安排一个 Amazon EventBridge 事件,每天调用 AWS Lambda 函数来停用上次登录日期超过 180 天的用户。为什么选项 B 是最佳选择:用于身份验证和日志记录的本机 AWS 集成:Amazon Cognito 是 AWS 中用户身份验证的最佳选择(支持 OAuth、OIDC 和 SAML)。AWS CloudTrail 会自动记录 Cognito API 调用(例如 AdminInitiateAuth),并可对其进行解析以提取上次登录的时间戳。高效且可扩展的存储:Amazon DynamoDB 是一种无服务器 NoSQL 数据库,可自动扩展并支持快速查询上次登录时间。使用 EventBridge 和 Lambda 自动停用:Amazon EventBridge 可以每日触发 Lambda 函数来扫描 DynamoDB 中不活跃的用户。Lambda 可以调用 Cognito 的 AdminDisableUser API 来撤销访问权限。无需人工干预(全自动)。低运营开销:无需 Glue、Athena 或自定义爬虫(与选项 A/C/D 不同)。经济高效(DynamoDB + Lambda + EventBridge 为无服务器架构,且按使用付费)。其他选择为何失败:A. 使用 OpenID Connect (OIDC) 提供商对用户进行身份验证。将用户登录元数据存储在 Amazon RDS 中。创建一个 AWS Glue DataBrew 作业,检查用户的上次登录时间,如果上次登录日期超过 180 天,则禁用该用户记录。不必要的复杂和昂贵:RDS 需要手动扩展、修补和备份(开销高于 DynamoDB)。Glue DataBrew 用于数据转换,而非计划内用户停用(对于此用例来说有点过度)。没有与 Cognito 原生集成用于停用(需要自定义逻辑)。C. 使用 Amazon Cognito 对用户进行身份验证。将用户登录元数据存储在 Amazon DocumentDB(兼容 MongoDB)中。将登录时间属性的 TTL 定义为 180 天。配置 AWS Glue 爬虫程序,检查登录日期 TTL 已过期的用户,并调用 AWS Lambda 函数停用这些用户。低效且不可靠的TTL处理:DocumentDB TTL 会自动删除文档,但不会触发 Lambda(需要外部流程来检测删除)。Glue 爬虫对于实时或日常检查来说速度慢且成本高昂。最好直接使用 EventBridge + Lambda 查询 DynamoDB(更可靠)。D. 使用基于 Kerberos 的身份提供商 (IdP) 对用户进行身份验证。将用户登录元数据存储在加密的 Amazon S3 存储桶中。配置 AWS Glue 爬虫来编目用户登录元数据。使用 Amazon Athena 查询数据目录以获取上次登录的详细信息。删除超过 180 天的数据。不适合该工作的工具链:Kerberos 并不适合基于 Web 的股票交易应用(Cognito/OIDC 更佳)。S3 + Glue + Athena 适用于分析,而非实时用户管理(延迟高、成本高)。删除 S3 记录不会撤销 Cognito 访问权限(需要单独调用 API)。主要比较:要求选项 B其他选项自动停用不活跃用户(EventBridge + Lambda + Cognito API)(A:Glue DataBrew;C:不可靠的TTL;D:无直接停用)可扩展且低延迟的登录元数据存储(DynamoDB)(A:RDS;C:DocumentDB + Glue;D:S3 + Athena)原生 AWS 集成(无自定义解析)(CloudTrail + Cognito)(A:OIDC + RDS;C:DocumentDB TTL;D:Kerberos + S3)最低运营开销(完全无服务器)(A:RDS 管理;C:Glue 爬虫;D:S3 + Athena)结论:选项 B 是唯一的解决方案:使用 Cognito 进行身份验证(AWS 应用的最佳实践)。高效追踪上次登录时间(CloudTrail + DynamoDB)。自动停用(EventBridge + Lambda)。需要最少的维护(无服务器组件)。最终答案:B