기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
위협 방지 기능이 있는 고급 보안
사용자 풀을 생성한 후에는 Amazon Cognito 콘솔의 탐색 메뉴에서 위협 방지에 액세스할 수 있습니다. 위협 방지 기능을 켜고 다양한 위험에 대응하여 수행되는 작업을 사용자 지정할 수 있습니다. 또는 감사 모드를 사용하여 보안 완화를 적용하지 않고 탐지된 위험에 대한 지표를 수집할 수 있습니다. 감사 모드에서 위협 보호는 Amazon CloudWatch에 지표를 게시합니다. Amazon Cognito가 첫 번째 이벤트를 생성한 후 지표를 볼 수 있습니다. 위협 방지 지표 보기을 참조하세요.
이전에는 고급 보안 기능이라고 했던 위협 방지는 사용자 풀에서 원치 않는 활동에 대한 모니터링 도구 세트이며 잠재적으로 악의적인 활동을 자동으로 종료하는 구성 도구입니다. 위협 방지에는 표준 인증 작업과 사용자 지정 인증 작업에 대한 다양한 구성 옵션이 있습니다. 예를 들어, 추가 보안 요소를 설정했지만 기본 사용자 이름-암호 인증으로 동일한 위험 수준의 사용자를 차단한 의심스러운 사용자 지정 인증 로그인이 있는 사용자에게 알림을 보낼 수 있습니다.
위협 보호는 Plus 기능 계획에서 사용할 수 있습니다. 자세한 내용은 사용자 풀 기능 계획 단원을 참조하십시오.
다음 사용자 풀 옵션은 위협 방지의 구성 요소입니다.
- 손상된 보안 인증
-
사용자는 여러 사용자 계정에 암호를 재사용합니다. Amazon Cognito의 손상된 보안 인증 기능은 사용자 이름 및 암호의 공개 유출 데이터를 수집하여 사용자의 보안 인증을 유출된 보안 인증 목록과 비교합니다. 손상된 보안 인증 탐지는 일반적으로 추측되는 암호도 검사합니다. 사용자 풀의 사용자 이름 및 암호 표준 인증 흐름에서 손상된 자격 증명을 확인할 수 있습니다. Amazon Cognito는 보안 원격 암호(SRP) 또는 사용자 지정 인증에서 손상된 자격 증명을 감지하지 않습니다.
손상된 보안 인증을 확인하도록 요청하는 사용자 작업과 이에 대한 응답으로 Amazon Cognito가 수행하기를 원하는 작업을 선택할 수 있습니다. 로그인, 가입, 암호 변경 이벤트의 경우, Amazon Cognito는 로그인을 차단하거나 로그인을 허용할 수 있습니다. 두 경우 모두 Amazon Cognito가 생성하는 사용자 활동 로그에서 이벤트에 대한 추가 정보를 찾을 수 있습니다.
- 조정 인증
-
Amazon Cognito는 사용자의 로그인 요청에서 위치 및 디바이스 정보를 검토하고 자동 응답을 적용하여 의심스러운 활동으로부터 사용자 풀의 사용자 계정을 보호할 수 있습니다. 사용자 활동을 모니터링하고 사용자 이름-암호 및 SRP의 감지된 위험 수준에 대한 응답과 사용자 지정 인증을 자동화할 수 있습니다.
위협 보호를 활성화하면 Amazon Cognito는 사용자 활동에 위험 점수를 할당합니다. 의심스러운 활동에 자동 응답을 할당할 수 있습니다. MFA를 요구하거나, 로그인을 차단하거나, 활동 세부 정보 및 위험 점수를 로깅할 수 있습니다. 또한 의심스러운 활동을 사용자에게 알리는 이메일 메시지를 자동으로 전송하여 사용자가 암호를 재설정하거나 기타 자체 안내 조치를 취할 수 있습니다.
- IP 주소 허용 목록 및 거부 목록
-
Amazon Cognito 위협 방지를 전체 함수 모드로 사용하면 IP 주소 항상 차단 및 항상 예외 허용을 생성할 수 있습니다. 항상 차단(Always block) 예외 목록에 있는 IP 주소의 세션에는 조정 인증별 위험 수준이 할당되지 않으며 이러한 세션은 사용자 풀에 로그인할 수 없습니다.
- 로그 내보내기
-
위협 방지는 사용자 풀에 대한 사용자 인증 요청의 세부 정보를 세분화하여 기록합니다. 이러한 로그에는 위협 평가, 사용자 정보, 위치 및 디바이스와 같은 세션 메타데이터가 포함됩니다. 보존 및 분석을 위해 이러한 로그의 외부 아카이브를 생성할 수 있습니다. Amazon Cognito 사용자 풀은 위협 방지 로그를 Amazon S3, CloudWatch Logs 및 Amazon Data Firehose로 내보냅니다. 자세한 내용은 사용자 이벤트 기록 보기 및 내보내기 단원을 참조하십시오.
위협 방지를 위한 고려 사항 및 제한 사항
위협 방지 옵션은 인증 흐름마다 다릅니다.
Amazon Cognito는 인증 흐름 USER_PASSWORD_AUTH
및 ADMIN_USER_PASSWORD_AUTH
를 통해 적응형 인증과 손상된 자격 증명 탐지를 모두 지원합니다. USER_SRP_AUTH
에 대한 적응형 인증만 활성화할 수 있습니다. 페더레이션 로그인에는 위협 방지를 사용할 수 없습니다.
상시 차단 IP 요청 할당량에 기여합니다.
사용자 풀의 항상 차단(Always block) 예외 목록에 있는 IP 주소의 차단된 요청은 사용자 풀에 대한 요청 비율 할당량에 기여합니다.
위협 방지는 속도 제한을 적용하지 않습니다.
일부 악성 트래픽은 분산 서비스 거부(DDoS) 공격과 같은 대량 요청의 특성을 갖습니다. Amazon Cognito가 들어오는 트래픽에 적용하는 위험 등급은 요청당이며 요청 볼륨을 고려하지 않습니다. 대량 이벤트의 개별 요청은 볼륨 공격에서의 역할과 관련이 없는 애플리케이션 계층 이유로 위험 점수와 자동 응답을 받을 수 있습니다. 사용자 풀에서 볼륨 측정 공격에 대한 방어를 구현하려면 AWS WAF 웹 ACLs 추가합니다. 자세한 내용은 AWS WAF 웹 ACL을 사용자 풀과 연결 단원을 참조하십시오.
위협 방지는 M2M 요청에 영향을 주지 않습니다.
클라이언트 보안 인증 부여는 사용자 계정과 연결되지 않은 M2M(Machine-to-Machine) 인증을 위한 것입니다. 위협 방지는 사용자 풀의 사용자 계정과 암호만 모니터링합니다. M2M 활동으로 보안 기능을 구현하려면 요청 속도 및 콘텐츠를 모니터링하기 AWS WAF 위한의 기능을 고려하세요. 자세한 내용은 AWS WAF 웹 ACL을 사용자 풀과 연결 단원을 참조하십시오.
사용자 풀에서 위협 방지 켜기
- Amazon Cognito user pools console
-
사용자 풀에 대한 위협 방지를 활성화하려면
-
Amazon Cognito 콘솔로 이동합니다. 메시지가 표시되면 AWS 자격 증명을 입력합니다.
-
[사용자 풀(User Pools)]을 선택합니다.
-
목록에서 기존 사용자 풀을 선택하거나 사용자 풀을 생성합니다.
-
아직 활성화하지 않은 경우 설정 메뉴에서 Plus 기능 계획을 활성화합니다.
-
위협 보호 메뉴를 선택하고 활성화를 선택합니다.
-
Save changes(변경 사항 저장)를 선택합니다.
- API
-
CreateUserPool 또는 UpdateUserPool API 요청에서 기능 계획을 Plus로 설정합니다. 다음 부분 예제 요청 본문은 위협 보호를 전체 기능 모드로 설정합니다. 전체 예제 요청은 예제 섹션을 참조하세요.
"UserPoolAddOns": {
"AdvancedSecurityMode": "ENFORCED"
}
위협 방지는 계정 탈취 징후에 대해 사용자 작업을 모니터링하고 영향을 받는 사용자 계정을 보호하기 위해 자동으로 대응하는 기능을 통칭하는 용어입니다. 사용자가 표준 및 사용자 지정 인증 흐름으로 로그인할 때 위협 방지 설정을 적용할 수 있습니다.
위협 방지는 사용자의 로그인, 로그아웃 및 기타 활동을 자세히 설명하는 로그를 생성합니다. 이러한 로그를 타사 시스템으로 내보낼 수 있습니다. 자세한 내용은 사용자 이벤트 기록 보기 및 내보내기 단원을 참조하십시오.
위협 방지 시행 개념
위협 방지는 사용자 풀이 사용자 활동을 모니터링하고 위험 수준을 할당하며 로그를 생성하는 감사 전용 모드에서 시작됩니다. 전체 기능 모드를 활성화하기 전에 2주 이상 감사 전용 모드에서 실행하는 것이 가장 좋습니다. 전체 기능 모드에는 감지된 위험한 활동 및 손상된 암호에 대한 자동 대응 세트가 포함됩니다. 감사 전용 모드를 사용하면 Amazon Cognito가 수행하는 위협 평가를 모니터링할 수 있습니다. 가양성 및 부정 사항에 대해 기능을 훈련하는 피드백을 제공할 수도 있습니다.
사용자 풀 수준의 위협 방지 적용은 사용자 풀의 모든 앱 클라이언트와 개별 앱 클라이언트 수준에서 구성할 수 있습니다. 앱 클라이언트 위협 방지 구성은 사용자 풀 구성을 재정의합니다. 앱 클라이언트에 대한 위협 보호를 구성하려면 Amazon Cognito 콘솔의 사용자 풀의 앱 클라이언트 메뉴에서 앱 클라이언트 설정으로 이동합니다. 여기서 클라이언트 수준 설정을 사용하고 앱 클라이언트 전용으로 적용을 구성할 수 있습니다.
또한 표준 인증 유형과 사용자 지정 인증 유형에 대해 위협 방지를 별도로 구성할 수 있습니다.
표준 인증 및 사용자 지정 인증을 위한 위협 방지
위협 방지를 구성할 수 있는 방법은 사용자 풀 및 앱 클라이언트에서 수행하는 인증 유형에 따라 다릅니다. 다음 각 유형의 인증에는 자체 적용 모드와 자동 응답이 있을 수 있습니다.
- 표준 인증
-
표준 인증은 사용자 이름-암호 흐름 및 관리형 로그인을 통한 사용자 로그인, 로그아웃 및 암호 관리입니다. Amazon Cognito 위협 보호는 관리형 로그인으로 로그인하거나 다음 API AuthFlow
파라미터를 사용하여 작업에서 위험 지표를 모니터링합니다.
- InitiateAuth
-
USER_PASSWORD_AUTH
, USER_SRP_AUTH
. 손상된 자격 증명 기능은 USER_SRP_AUTH
로그인에서 암호에 액세스할 수 없으며 이 흐름을 사용하여 이벤트를 모니터링하거나 작업하지 않습니다.
- AdminInitiateAuth
-
ADMIN_USER_PASSWORD_AUTH
, USER_SRP_AUTH
. 손상된 자격 증명 기능은 USER_SRP_AUTH
로그인에서 암호에 액세스할 수 없으며 이 흐름을 사용하여 이벤트를 모니터링하거나 작업하지 않습니다.
표준 인증의 적용 모드를 감사 전용 또는 전체 함수로 설정할 수 있습니다. 표준 인증에 대한 위협 모니터링을 비활성화하려면 위협 방지를 적용 없음으로 설정합니다.
- 사용자 지정 인증
-
사용자 지정 인증은 사용자 지정 챌린지 Lambda 트리거를 사용한 사용자 로그인입니다. 관리형 로그인에서는 사용자 지정 인증을 수행할 수 없습니다. Amazon Cognito 위협 방지는 InitiateAuth
및 AdminInitiateAuth
의 API AuthFlow
파라미터 CUSTOM_AUTH
를 사용하여 로그인할 때 위험 지표에 대한 작업을 모니터링합니다.
사용자 지정 인증의 적용 모드를 감사 전용, 전체 함수 또는 적용 없음으로 설정할 수 있습니다. 적용 없음 옵션은 다른 위협 보호 기능에 영향을 주지 않고 사용자 지정 인증에 대한 위협 모니터링을 비활성화합니다.
위협 방지 전제 조건
시작하려면 다음이 필요합니다.
-
앱 클라이언트가 포함된 사용자 풀. 자세한 내용은 사용자 풀 시작하기 단원을 참조하십시오.
-
Amazon Cognito 콘솔에서 멀티 팩터 인증(MFA)을 [선택 사항(Optional)]으로 설정하여 위험 기반 조정 인증 기능을 사용합니다. 자세한 내용은 사용자 풀에 MFA 추가 섹션을 참조하세요.
-
이메일 알림을 사용하고 있는 경우에는 Amazon SES 콘솔로 이동하여 이메일 알림에서 사용할 이메일 주소 또는 도메인을 구성하고 확인합니다. Amazon SES에 대한 자세한 내용은 Amazon SES에서 자격 증명 확인을 참조하세요.
다음 지침에 따라 사용자 풀 위협 방지를 설정합니다.
Amazon Cognito 사용자 풀 콘솔에서 앱 클라이언트에 대해 다른 위협 방지 구성을 설정하려면 앱 클라이언트 메뉴에서 앱 클라이언트를 선택하고 클라이언트 수준 설정 사용을 선택합니다.
- AWS Management Console
-
사용자 풀에 대한 위협 보호를 구성하려면
-
Amazon Cognito 콘솔로 이동합니다. 메시지가 표시되면 AWS 자격 증명을 입력합니다.
-
[사용자 풀(User Pools)]을 선택합니다.
-
목록에서 기존 사용자 풀을 선택하거나 사용자 풀을 생성합니다.
-
위협 보호 메뉴를 선택하고 활성화를 선택합니다.
-
구성하려는 위협 방지 방법인 표준 및 사용자 지정 인증을 선택합니다. 사용자 지정 및 표준 인증에 대해 다양한 적용 모드를 설정할 수 있지만 전체 함수 모드에서 자동 응답의 구성을 공유합니다.
-
편집을 선택합니다.
-
적용 모드를 선택합니다. 감지된 위험에 즉시 대응하려면 전체 함수를 선택하고 손상된 자격 증명 및 적응형 인증에 대한 자동 응답을 구성합니다. 사용자 수준 로그 및 CloudWatch에서 정보를 수집하려면 감사 전용을 선택합니다.
작업을 활성화하기 전에 2주 동안 위협 방지를 감사 모드로 유지하는 것이 좋습니다. 이 기간 동안 Amazon Cognito는 앱 사용자의 사용 패턴을 학습하고 응답을 조정하기 위한 이벤트 피드백을 제공할 수 있습니다.
-
감사 전용(Audit only)을 선택한 경우 변경 사항 저장(Save changes)을 선택합니다. [전체 기능(Full function)]을 선택한 경우 다음을 수행합니다.
-
[사용자 정의(Custom)] 작업을 수행할지 또는 [Cognito 기본값(Cognito defaults)]을 사용하여 의심스러운 [손상된 자격 증명(Compromised credentials)]에 대응할지 선택합니다. [Cognito 기본값(Cognito defaults)]은 다음과 같습니다.
-
[로그인(Sign-in)], [가입(Sign-up)], 암호 변경(Password change)]에서 손상된 자격 증명을 탐지합니다.
-
[로그인 차단(Block sign-in)] 작업으로 손상된 자격 증명에 대응합니다.
-
손상된 자격 증명(Compromised credentials)에 대해 사용자 지정(Custom) 작업을 선택한 경우 Amazon Cognito가 이벤트 감지(Event detection)에 사용할 사용자 풀 작업 및 Amazon Cognito가 수행하도록 할 손상된 자격 증명 응답(Compromised credentials responses)을 선택합니다. 의심스러운 손상된 자격 증명으로 [로그인 차단(Block sign-in)] 또는 [로그인 허용(Allow sign-in)]을 선택할 수 있습니다.
-
조정 인증(Adaptive authentication)에서 악의적인 로그인 시도에 대응하는 방법을 선택합니다. 사용자 지정(Custom) 작업을 수행할지 또는 Cognito 기본값(Cognito defaults)을 사용하여 의심스러운 악의적인 활동에 대응할지 선택합니다. Cognito 기본값(Cognito defaults)을 선택한 경우 Amazon Cognito는 모든 위험 수준에서 로그인을 차단하고 사용자에게 알리지 않습니다.
-
조정 인증(Adaptive authentication)에서 사용자 지정(Custom) 작업을 선택한 경우 Amazon Cognito에서 심각도 수준에 따라 탐지된 위험에 대응하여 수행할 자동 위험 대응(Automatic risk response)을 선택합니다. 위험 수준에 대응을 할당할 때 더 높은 수준의 위험에 덜 제한적인 대응을 할당할 수는 없습니다. 위험 수준에 할당할 수 있는 대응은 다음과 같습니다.
-
[로그인 허용(Allow sign-in)] - 예방 조치를 수행하지 않습니다.
-
[선택적 MFA(Optional MFA)] - 사용자에 대해 MFA가 구성되어 있는 경우 Amazon Cognito는 사용자가 로그인할 때 항상 추가 SMS 또는 시간 기반 일회용 암호(TOTP) 팩터를 제공하도록 요구합니다. MFA가 구성되어 있지 않은 사용자는 정상적으로 로그인을 계속할 수 있습니다.
-
[MFA 필요(Require MFA)] - 사용자에 대해 MFA가 구성되어 있는 경우 Amazon Cognito는 사용자가 로그인할 때 항상 추가 SMS 또는 TOTP 팩터를 제공하도록 요구합니다. MFA가 구성되어 있지 않은 사용자의 경우 Amazon Cognito에서 MFA를 설정하라는 메시지를 표시합니다. 사용자에게 MFA를 자동으로 요구하기 전에 SMS MFA용 전화 번호를 캡처하거나 TOTP MFA용 인증 앱을 등록하는 메커니즘을 앱에 구성합니다.
-
로그인 차단(Block sign-in) - 사용자가 로그인할 수 없도록 합니다.
-
사용자 알림(Notify user) - Amazon Cognito가 탐지한 위험과 수행된 대응 작업에 대한 정보가 포함된 이메일 메시지를 사용자에게 보냅니다. 보내는 메시지의 이메일 메시지 템플릿을 사용자 지정할 수 있습니다.
-
이전 단계에서 사용자 알림(Notify user)을 선택한 경우 조정 인증용 이메일 전송 설정 및 이메일 템플릿을 사용자 지정할 수 있습니다.
-
이메일 구성(Email configuration)에서 조정 인증과 함께 사용할 SES 리전(SES Region), 발신 이메일 주소(FROM email address), 발신 발신자 이름(FROM sender name) 및 회신 이메일 주소(REPLY-TO email address)를 선택합니다. 사용자 풀 이메일 메시지를 Amazon Simple Email Service와 통합하는 방법에 대한 자세한 내용은 Amazon Cognito 사용자 풀에 대한 이메일 설정을 참조하세요.
-
이메일 템플릿(Email templates)을 확장하여 HTML 버전의 이메일 메시지와 일반 텍스트 버전의 이메일 메시지 모두에서 조정 인증 알림을 사용자 지정합니다. 이메일 메시지 템플릿에 대한 자세한 내용은 메시지 템플릿 섹션을 참조하세요.
-
IP 주소 예외를 확장하여 위협 방지 위험 평가에 관계없이 항상 허용되거나 차단될 IPv4 또는 IPv6 주소 범위의 Always-allow 또는 Always-block 목록을 생성합니다. CIDR 표기법(예: 192.168.100.0/24)으로 IP 주소 범위를 지정합니다.
-
변경 사항 저장(Save changes)을 선택합니다.
- API (user pool)
-
사용자 풀에 대한 위협 방지 구성을 설정하려면 ClientId
파라미터가 아닌 UserPoolId
파라미터가 포함된 SetRiskConfiguration API 요청을 전송합니다. 다음은 사용자 풀에 대한 요청 본문의 예입니다. 이 위험 구성은 위험의 심각도에 따라 일련의 작업을 에스컬레이션하고 모든 위험 수준의 사용자에게 알립니다. 가입 작업에 손상된 자격 증명 블록을 적용합니다.
이 구성을 적용하려면 별도의 CreateUserPool 또는 UpdateUserPool API 요청에서 AdvancedSecurityMode
를 ENFORCED
로 설정해야 합니다. 이 예제의 {username}
와 같은 자리 표시자 템플릿에 대한 자세한 내용은 확인 및 초대 메시지 구성 섹션을 참조하십시오.
{
"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
파라미터가 포함된 SetRiskConfiguration API 요청을 전송합니다. 다음은 앱 클라이언트에 대한 요청 본문의 예입니다. 이 위험 구성은 사용자 풀 구성보다 더 심각하여 고위험 항목을 차단합니다. 또한 손상된 자격 증명 블록을 가입, 로그인 및 암호 재설정 작업에 적용합니다.
이 구성을 적용하려면 별도의 CreateUserPool 또는 UpdateUserPool API 요청에서 AdvancedSecurityMode
를 ENFORCED
로 설정해야 합니다. 이 예제의 {username}
와 같은 자리 표시자 템플릿에 대한 자세한 내용은 확인 및 초대 메시지 구성 섹션을 참조하십시오.
{
"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"
}