威胁防护 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

威胁防护

威胁防护是监视用户操作以寻找帐户被盗迹象并自动响应受影响的用户帐户的功能的统称。当用户使用标准和自定义身份验证流程登录时,您可以对他们应用威胁防护设置。

威胁防护会生成日志,详细说明用户的登录、注销和其他活动。您可以将这些日志导出到第三方系统。有关更多信息,请参阅 查看和导出用户事件历史记录

威胁防护执法概念

威胁防护从仅限审计的模式开始,在此模式下,您的用户池会监控用户活动、分配风险级别并生成日志。最佳做法是,在启用全功能模式之前,在仅审核模式下运行两周或更长时间。全功能模式包括对检测到的危险活动和密码泄露的一组自动反应。在仅限审计模式下,您可以监控 Amazon Cognito 正在执行的威胁评估。您还可以提供反馈,对功能进行误报和负面训练。

您可以在用户池级别配置威胁防护强制措施,以覆盖用户池中的所有应用程序客户端,也可以在单个应用程序客户端级别配置威胁防护。应用程序客户端威胁防护配置会覆盖用户池配置。要为应用程序客户端配置威胁防护,请在 Amazon Cognito 控制台的用户池的 “应用程序集成” 选项卡中导航到应用程序客户端设置。在那里,你可以使用客户端级别的设置并配置应用程序客户端专有的强制执行。

此外,您可以分别为标准和自定义身份验证类型配置威胁防护。

标准身份验证和自定义身份验证的威胁防护

配置威胁防护的方式取决于您在用户池和应用程序客户端中进行的身份验证类型。以下每种类型的身份验证都可以有自己的强制模式和自动响应。

标准身份验证

标准身份验证是在托管用户界面中使用用户名密码流进行用户登录、注销和密码管理。当操作使用托管用户界面登录或使用以下APIAuthFlow参数登录时,Amazon Cognito 威胁防护会监控操作是否存在风险指标:

InitiateAuth

USER_PASSWORD_AUTHUSER_SRP_AUTH。 被泄露的凭证功能无法在USER_SRP_AUTH登录时访问密码,也无法通过此流程监视或处理事件。

AdminInitiateAuth

ADMIN_USER_PASSWORD_AUTHUSER_SRP_AUTH。 被泄露的凭证功能无法在USER_SRP_AUTH登录时访问密码,也无法通过此流程监视或处理事件。

您可以将标准身份验证的强制模式设置为 “仅限审计” 或 “全功能”。要禁用标准身份验证的威胁监控,请禁用高级安全功能。

自定义身份验证

自定义身份验证是用户使用自定义质询 Lambda 触发器登录。您无法在托管用户界面中进行自定义身份验证。当操作使用和的APIAuthFlow参数登录时,Amazon Cognito 威胁防护会监控操作是否存在风险指标CUSTOM_AUTHInitiateAuth AdminInitiateAuth

您可以将自定义身份验证的强制模式设置为 “仅审计”、“全功能” 或 “不强制执行”。“不强制执行” 选项可在不影响其他高级安全功能的情况下禁用自定义身份验证的威胁监控。

威胁防护先决条件

在开始之前,您需要:

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

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

  • 如果您使用的是电子邮件通知,请前往 Amazon SES 控制台配置和验证用于电子邮件通知的电子邮件地址或域名。有关亚马逊的更多信息SES,请参阅在亚马逊中验证身份SES

设置高级安全功能和威胁防护

按照以下说明设置 Amazon Cognito 的高级安全功能。

注意

要在 Amazon Cognito 用户池控制台中为应用程序客户端设置不同的威胁防护配置,请从 “应用程序集成” 选项卡中选择应用程序客户端,然后选择 “使用客户端级设置”。

Amazon Web Services Management Console
为用户池配置高级安全功能
  1. 转到 Amazon Cognito 控制台。如果出现提示,请输入您的 Amazon 凭据。

  2. 选择用户池

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

  4. 选择 “高级安全” 选项卡,然后选择 “激活”。

  5. 选择要配置的威胁防护方法:标准和自定义身份验证。您可以为自定义和标准身份验证设置不同的强制模式,但在全功能模式下,它们共享自动响应的配置。

  6. 选择编辑

  7. 选择执法模式。要立即开始对检测到的风险做出响应,请选择全功能并配置针对已泄露凭据和自适应身份验证的自动响应。要在用户级日志中收集信息 CloudWatch,请选择 “仅审计”。

    高级安全定价适用于仅审计完整功能模式。有关更多信息,请参阅 Amazon Cognito 定价

    我们建议您在启用操作之前,将高级安全功能保持在审核模式下两周。在此期间,Amazon Cognito 可以了解您的应用程序用户的使用模式,并且您可以提供事件反馈以调整响应。

  8. 如果您已选择仅审计,请选择保存更改。如果您已选择完整功能

    1. 选择是否要进行自定义操作或使用 Cognito 默认设置响应可疑已泄露的凭证Cognito 默认设置

      1. 检测登录注册密码更改中的已泄露的凭证。

      2. 使用禁止登录操作响应已泄露的凭证。

    2. 如果您为已泄露的凭证选择了自定义操作,请选择 Amazon Cognito 将用于事件检测的用户池操作,以及您希望 Amazon Cognito 执行的 已泄露凭证的响应。您可以使用可疑的已泄露凭证进行禁止登录允许登录

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

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

      1. 允许登录 – 不采取任何预防性操作。

      2. 可选 MFA-如果用户已MFA配置,Amazon Cognito 将始终要求用户在登录时提供额外SMS或基于时间的一次性密码 (TOTP) 系数。如果用户尚未MFA进行配置,他们可以继续正常登录。

      3. 必MFA填项-如果用户已MFA配置,Amazon Cognito 将始终要求用户在登录时提供额外的SMS或TOTP系数。如果用户尚未MFA进行配置,Amazon Cognito 将提示他们进行设置。MFA在自动向用户MFA请求之前,请在应用程序中配置一种机制 SMSMFA,以捕获其电话号码或为其注册身份验证器应用程序。TOTP MFA

      4. 禁止登录 – 阻止用户登录。

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

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

    1. 在 “电子邮件配置” 下,选择要用于自适应身份验证的SES区域电子邮件地址FROM发件人姓名和REPLY收件人电子邮件地址。FROM有关将用户池电子邮件消息与 Amazon Simple Email Service 集成的更多信息,请参阅 Amazon Cognito 用户池的电子邮件设置

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

  10. 扩展 IP 地址例外以创建始终允许始终阻止的列表IPv4或IPv6地址范围,无论高级安全风险评估如何,这些地址范围都将始终被允许或阻止。用CIDR符号指定 IP 地址范围(例如 192.168.100.0/24)。

  11. 选择 Save changes(保存更改)

API (user pool)

要为用户池设置高级安全配置,请发送包含UserPoolId参数但不包含ClientId参数的SetRiskConfigurationAPI请求。以下是用户池的请求正文示例。此风险配置会根据风险的严重程度采取一系列不断升级的操作,并通知所有风险级别的用户。它对注册操作应用受损凭证封锁。

要强制执行此配置,您必须在单独AdvancedSecurityModeCreateUserPoolUpdateUserPoolAPI请求ENFORCED中将设置为。有关占位符模板的更多信息(如本例{username}所示),请参阅配置 SMS 和电子邮件验证消息以及用户邀请消息

{ "AccountTakeoverRiskConfiguration": { "Actions": { "HighAction": { "EventAction": "MFA_REQUIRED", "Notify": true }, "LowAction": { "EventAction": "NO_ACTION", "Notify": true }, "MediumAction": { "EventAction": "MFA_IF_CONFIGURED", "Notify": true } }, "NotifyConfiguration": { "BlockEmail": { "Subject": "You have been blocked for suspicious activity", "TextBody": "We blocked {username} at {login-time} from {ip-address}." }, "From": "admin@example.com", "MfaEmail": { "Subject": "Suspicious activity detected, MFA required", "TextBody": "Unexpected sign-in from {username} on device {device-name}. You must use MFA." }, "NoActionEmail": { "Subject": "Suspicious activity detected, secure your user account", "TextBody": "We noticed suspicious sign-in activity by {username} from {city}, {country} at {login-time}. If this was not you, reset your password." }, "ReplyTo": "admin@example.com", "SourceArn": "arn:aws:ses:us-west-2:123456789012:identity/admin@example.com" } }, "CompromisedCredentialsRiskConfiguration": { "Actions": { "EventAction": "BLOCK" }, "EventFilter": [ "SIGN_UP" ] }, "RiskExceptionConfiguration": { "BlockedIPRangeList": [ "192.0.2.0/24","198.51.100.0/24" ], "SkippedIPRangeList": [ "203.0.113.0/24" ] }, "UserPoolId": "us-west-2_EXAMPLE" }
API (app client)

要为应用程序客户端设置高级安全配置,请发送包含UserPoolId参数和ClientId参数的SetRiskConfigurationAPI请求。以下是应用程序客户端的请求正文示例。这种风险配置比用户池配置更为严重,会阻止高风险条目。它还将泄露的凭据封锁应用于注册、登录和密码重置操作。

要强制执行此配置,您必须在单独AdvancedSecurityModeCreateUserPoolUpdateUserPoolAPI请求ENFORCED中将设置为。有关占位符模板的更多信息(如本例{username}所示),请参阅配置 SMS 和电子邮件验证消息以及用户邀请消息

{ "AccountTakeoverRiskConfiguration": { "Actions": { "HighAction": { "EventAction": "BLOCK", "Notify": true }, "LowAction": { "EventAction": "NO_ACTION", "Notify": true }, "MediumAction": { "EventAction": "MFA_REQUIRED", "Notify": true } }, "NotifyConfiguration": { "BlockEmail": { "Subject": "You have been blocked for suspicious activity", "TextBody": "We blocked {username} at {login-time} from {ip-address}." }, "From": "admin@example.com", "MfaEmail": { "Subject": "Suspicious activity detected, MFA required", "TextBody": "Unexpected sign-in from {username} on device {device-name}. You must use MFA." }, "NoActionEmail": { "Subject": "Suspicious activity detected, secure your user account", "TextBody": "We noticed suspicious sign-in activity by {username} from {city}, {country} at {login-time}. If this was not you, reset your password." }, "ReplyTo": "admin@example.com", "SourceArn": "arn:aws:ses:us-west-2:123456789012:identity/admin@example.com" } }, "ClientId": "1example23456789", "CompromisedCredentialsRiskConfiguration": { "Actions": { "EventAction": "BLOCK" }, "EventFilter": [ "SIGN_UP", "SIGN_IN", "PASSWORD_CHANGE" ] }, "RiskExceptionConfiguration": { "BlockedIPRangeList": [ "192.0.2.1/32","192.0.2.2/32" ], "SkippedIPRangeList": [ "192.0.2.3/32","192.0.2.4/32" ] }, "UserPoolId": "us-west-2_EXAMPLE" }