向用户池添加高级安全 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

向用户池添加高级安全

在创建用户池之后,即可访问 Amazon Cognito 控制台中导航栏上的 Advanced security (高级安全)。可以打开用户池高级安全功能并自定义为响应不同风险要执行的操作。或者,您可以使用审计模式收集与检测到的风险相关的指标,而无需应用任何安全缓解措施。在审核模式下,高级安全功能会将指标发布到 Amazon CloudWatch。请参阅查看高级安全指标

注意事项和限制

  • Amazon Cognito 高级安全功能适用其他定价。请参阅 Amazon Cognito 定价页面

  • Amazon Cognito 支持在以下标准身份验证流中使用高级安全功能:USER_PASSWORD_AUTHADMIN_USER_PASSWORD_AUTHUSER_SRP_AUTHADMIN_USER_SRP_AUTH。无法在 CUSTOM_AUTH 流和 自定义身份验证质询 Lambda 触发器 中或者通过联合登录使用高级安全功能。

  • 使用 Full function(完整功能)模式下的 Amazon Cognito 高级安全功能,您可以创建 Always block(始终阻止)和 Always allow(始终允许)IP 地址例外。对于来自 Always block(始终阻止)例外列表中 IP 地址的会话,自适应身份验证不会向其分配风险级别,该会话也无法登录您的用户池。

  • 在您的用户池中阻止来自 Always block(始终阻止)例外列表中 IP 地址的请求,可以帮助您的用户池保持在请求速率配额以内。Amazon Cognito 高级安全功能无法防止分布式拒绝服务 (DDoS) 攻击。有关如何阻止 Amazon Cognito 端点上不需要流量的信息,请参阅 Amazon 安全博客 中的 Protect public clients for Amazon Cognito by using an Amazon CloudFront proxy(使用 Amazon CloudFront 代理保护 Amazon Cognito 的公共客户端)。

先决条件

在开始之前,您需要:

  • 用户池和应用程序客户端。有关更多信息,请参阅 用户池入门

  • 在 Amazon Cognito 控制台中将多重身份验证(MFA)设置为 Optional (可选),以使用基于风险的自适应身份验证功能。有关更多信息,请参阅向用户池添加 MFA

  • 如果您使用电子邮件通知,请转到 Amazon SES 控制台配置并验证要用于通知电子邮件的电子邮件地址或域。有关 Amazon SES 的更多信息,请参阅在 Amazon SES 中验证身份

配置高级安全功能

您可以在 Amazon Web Services Management Console 中配置 Amazon Cognito 高级安全功能。

Original console

为用户池配置高级安全功能

  1. 从左侧导航栏中,选择 Advanced security(高级安全功能)。

  2. 对于 Do you want to enable advanced security features for this user pool?(是否要为此用户池启用高级安全功能?),选择 Yes(是)以启用高级安全功能。或者,选择 Audit only(仅审核)来收集信息并将用户池数据发送到 CloudWatch。

    建议在启用操作之前,先将高级安全功能保持在审核模式下两周。在此期间,Amazon Cognito 可以了解应用程序用户的使用模式。

  3. 从下拉列表中,选择 What app client do you want to customize settings for?(您希望自定义哪个应用程序客户端的设置?) 默认情况下,对于所有应用程序客户端将设置保留为全局。

  4. 对于 Which action do you want to take with the compromised credentials?(对于对遭盗用的凭证,您希望采取什么操作?),选择 Allow(允许)或 Block use(阻止使用)。

  5. 选择 Customize when compromised credentials are blocked(自定义何时阻止遭盗用的凭证),以选择哪些事件应发起遭盗用的凭证检查:

    • 登录

    • 注册

    • 密码更改

  6. How do you want to use adaptive authentication for sign-in attempts rated as low, medium and high risk?(当登录尝试被评为低、中和高风险时,您希望如何使用自适应身份验证?)下选择如何响应恶意登录尝试。可以允许或阻止登录尝试,或者在允许登录前要求额外的质询。

    要在检测到异常登录尝试时发送电子邮件通知,请选择 Notify users(通知用户)。

    
                    通知用户
  7. 如果在上一步中选择了 Notify users(通知用户),则可通过使用 Notification message customization(通知消息自定义)表单自定义电子邮件通知消息。

  8. 选择 Customize(自定义)以自定义包含 HTML 和纯文本版本的电子邮件消息的自适应身份验证通知。要了解有关电子邮件消息模板的更多信息,请参阅消息模板

  9. 键入不管高级安全风险评估如何都要 Always allow(始终允许)或 Always block(始终阻止)的任何 IP 地址。用 CIDR 表示法指定 IP 地址范围(例如,192.168.100.0/24)。

  10. 选择保存更改

New console

为用户池配置高级安全功能

  1. 转到 Amazon Cognito 控制台。如果出现提示,请输入 Amazon 凭证。

  2. 选择 User Pools(用户池)。

  3. 从列表中选择一个现有用户池,或创建一个用户池

  4. 选择 App integration(应用程序集成)选项卡。找到 Advanced security(高级安全),然后选择 Enable(启用)。如果之前启用了高级安全,请选择 Edit(编辑)。

  5. 选择 Full function(完整功能)以配置对盗用凭证和自适应身份验证的高级安全响应。选择 Audit only(仅审计)以收集信息并将用户池数据发送到 CloudWatch。高级安全定价适用于 Audit only(仅审计)和 Full function(完整功能)模式。有关更多信息,请参阅 Amazon Cognito 定价

    建议在启用操作之前,先将高级安全功能保持在审核模式下两周。在此期间,Amazon Cognito 可以了解应用程序用户的使用模式。

  6. 如果您已选择 Audit only(仅审计),请选择 Save changes(保存更改)。如果您已选择 Full function(完整功能):

    1. 选择是否要进行 Custom(自定义)操作或使用 Cognito defaults(Cognito 默认设置)响应可疑 Compromised credentials(盗用凭证)。Cognito defaults(Cognito 默认设置):

      1. 检测 Sign-in(登录)、Sign-up(注册)和 Password change(密码更改)中的盗用凭证。

      2. 使用 Block sign-in(阻止登录)操作响应盗用凭证。

    2. 如果您为 Compromised credentials(盗用凭证)选择了 Custom(自定义)操作,请选择 Amazon Cognito 将用于 Event detection(事件检测)的用户池操作,以及您希望 Amazon Cognito 执行的 Compromised credentials responses(盗用凭证响应)。您可以使用可疑盗用凭证进行 Block sign-in(阻止登录)或 Allow sign-in(允许登录)。

    3. Adaptive authentication(自适应身份验证)下,选择如何响应恶意登录尝试。选择是否要进行 Custom(自定义)操作或使用 Cognito defaults(Cognito 默认设置)响应可疑恶意活动。当您选择 Cognito defaults(Cognito 默认设置)时,Amazon Cognito 会阻止所有风险级别的登录,并且不会通知用户。

    4. 如果您针对 Adaptive authentication(自适应身份验证)已选择 Custom(自定义操作),请根据严重性级别选择 Amazon Cognito 对检测到的风险执行的 Automatic risk response(自动风险响应)操作。当您针对风险级别分配响应时,您无法为较高风险级别分配限制性较小的响应。您可以为风险级别分配以下响应:

      1. Allow sign-in(允许登录)– 不采取任何预防性操作。

      2. Optional MFA(可选 MFA)– 如果用户配置了 MFA,Amazon Cognito 将始终要求用户在登录时提供其它 SMS 或基于时间的一次性密码(TOTP)因素。如果用户没有配置 MFA,他们可以继续正常登录。

      3. Require MFA(需要 MFA)– 如果用户配置了 MFA,Amazon Cognito 将始终要求用户在登录时提供其它短信或 TOTP 因素。如果用户没有配置 MFA,Amazon Cognito 将提示他们设置 MFA。在您自动要求用户使用 MFA 之前,请在应用程序中配置一种机制来捕获 SMS MFA 的电话号码,或为 TOTP MFA 注册身份验证器应用程序。

      4. Block sign-in(阻止登录)– 阻止用户登录。

      5. Notify user(通知用户)– 向用户发送电子邮件,其中包含有关 Amazon Cognito 检测到的风险以及您所采取的响应的信息。您可以为发送的消息自定义电子邮件消息模板。

  7. 如果您在上一步骤中选择了 Notify user(通知用户),您可以自定义电子邮件发送设置和电子邮件消息模板以进行自适应身份验证。

    1. Email configuration(邮件配置)下,选择您希望与自适应身份验证一起使用的 SES Region(SES 区域)、FROM email address(FROM 电子邮件地址)、FROM sender name(FROM 发件人名称)和 REPLY-TO email address(REPLY-TO 电子邮件地址)。有关将用户池电子邮件消息与 Amazon Simple Email Service 集成的更多信息,请参阅 Amazon Cognito 用户池的电子邮件设置

      
                        用户事件历史记录
    2. 展开 Email templates(电子邮件模板)以自定义包含 HTML 和纯文本版本电子邮件消息的自适应身份验证通知。要了解有关电子邮件消息模板的更多信息,请参阅消息模板

  8. 展开 IP address exceptions(IP 地址异常)以创建 Always-allow(始终允许)或者 Always-block(始终阻止)的 IPv4 或 IPv6 地址清单,该清单将始终允许或阻止其 IPv4 或 IPv6 地址范围,无论高级安全风险评估如何。用 CIDR 表示法指定 IP 地址范围(例如,192.168.100.0/24)。

  9. 选择保存更改