암호, 암호 복구 및 암호 정책
페더레이션 사용자를 포함하여 사용자 풀에 로그인하는 모든 사용자는 사용자 프로필에 암호가 할당됩니다. 로컬 사용자와 연결된 사용자는 로그인할 때 암호를 제공해야 합니다. 페더레이션 사용자는 사용자 풀 암호를 사용하지 않지만 해당 ID 제공업체(idP)를 사용하여 로그인합니다. 사용자가 자신의 암호를 재설정하고, 관리자로서 암호를 재설정 또는 변경하고, 암호 복잡성 및 기록에 대한 정책을 설정하도록 허용할 수 있습니다.
Amazon Cognito는 사용자 암호를 일반 텍스트로 저장하지 않습니다. 대신 각 사용자의 암호 해시를 사용자별 솔트와 함께 저장합니다. 이로 인해 사용자 풀의 사용자 프로필에서 기존 암호를 검색할 수 없습니다. 가장 좋은 방법은 일반 텍스트 사용자 암호를 어디에도 저장하지 않는 것입니다. 사용자가 암호를 잊어버린 경우 암호 재설정을 수행합니다.
암호 재설정 및 복구
사용자가 암호를 잊어버렸습니다. 암호를 직접 재설정하거나 관리자가 암호를 재설정하도록 요구할 수 있습니다. Amazon Cognito 사용자 풀에는 두 모델 모두에 대한 옵션이 있습니다. 가이드의 이 부분에서는 사용자 풀 설정과 암호 재설정을 위한 API 작업을 설명합니다.
ForgotPassword API 작업 및 호스팅 UI 옵션 암호를 잊으셨습니까?는 사용자에게 코드를 전송하여 올바른 코드를 가지고 있음을 확인하면 ConfirmForgotPassword를 사용하여 새 암호를 설정할 수 있는 기회를 제공합니다. 이는 셀프 서비스 암호 복구 모델입니다.
AdminSetUserPassword 및 AdminResetUserPassword API 작업은 관리자가 암호를 재설정하는 방법입니다. AdminSetUserPassword
는 임시 또는 영구 암호를 설정하고, AdminResetUserPassword
는 ForgotPassword
와 동일한 방식으로 사용자에게 암호 재설정 코드를 보냅니다.
AccountRecoverySetting
파라미터는 사용자가 ForgotPassword
API를 호출할 때 암호를 복구하는 데 사용할 수 있는 방법을 설정하는 사용자 풀 파라미터입니다. ForgotPassword
는 확인된 이메일 또는 확인된 전화 번호로 복구 코드를 보냅니다. 복구 코드는 1시간 동안 유효합니다. 사용자 풀에 대해 AccountRecoverySetting
을 지정할 때 Amazon Cognito는 사용자가 설정한 우선 순위에 따라 코드 전달 대상을 선택합니다.
사용자가 AccountRecoverySetting
를 정의하고 SMS MFA를 구성한 경우 SMS를 계정 복구 메커니즘으로 사용할 수 없습니다. 이 설정의 우선 순위는 1이 가장 높은 우선 순위로 결정됩니다. Cognito는 지정된 메서드 중 하나에만 확인을 보냅니다.
예를 들어 admin_only
는 사용자가 자신의 계정을 직접 복구하지 않고 대신 관리자에게 연락하여 계정을 재설정하도록 관리자가 요구할 때 사용되는 값입니다. admin_only
는 다른 계정 복구 메커니즘과 함께 사용할 수 없습니다.
AccountRecoverySetting
을 지정하지 않으면 Amazon Cognito는 기존 메커니즘을 사용하여 암호 복구 방법을 결정합니다. 이 경우 Cognito는 확인된 휴대폰을 먼저 사용합니다. 사용자에 대해 확인된 휴대폰을 찾을 수 없는 경우 Cognito는 폴백하고 다음 번 확인된 이메일을 사용합니다.
사용자가 선호하는 MFA 메서드는 암호를 복구하는 데 사용할 수 있는 메서드에 영향을 미칩니다. 선호하는 MFA가 이메일 메시지인 사용자는 이메일로 암호 재설정 코드를 받을 수 없습니다. 선호하는 MFA가 SMS 메시지인 사용자는 SMS로 암호 재설정 코드를 받을 수 없습니다.
사용자가 선호하는 암호 재설정 방법을 사용할 수 없는 경우 암호 복구 설정에서 대체 옵션을 제공해야 합니다. 예를 들어 복구 메커니즘에 이메일이 최우선 순위일 수 있고 이메일 MFA가 사용자 풀의 옵션일 수 있습니다. 이 경우 SMS 메시지 계정 복구를 두 번째 옵션으로 추가하거나 관리 API 작업을 사용하여 해당 사용자의 암호를 재설정합니다.
AccountRecoverySetting
에 대한 자세한 내용은 Amazon Cognito 자격 증명 공급자 API 참조에서 CreateUserPool 및 UpdateUserPool을 참조하세요.
암호 찾기 동작
암호 및 암호 확인 작업의 일부로서 지정된 시간 동안 사용자가 암호 재설정 코드를 요청 또는 입력하는 데 5~20회의 시도가 허용됩니다. 정확한 값은 요청과 관련된 위험 매개 변수에 따라 다릅니다. 이 동작은 변경될 수 있습니다.
사용자 풀 암호 요구 사항 추가
강력하고 복잡한 암호를 설정하는 것이 사용자 풀을 위해 가장 좋습니다. 특히 인터넷에 공개된 애플리케이션에서 약한 암호를 사용하면 사용자의 자격 증명이 암호를 추측하고 데이터에 액세스하려고 시도하는 시스템에 노출될 수 있습니다. 암호가 복잡할수록 추측하기가 더 어렵습니다. Amazon Cognito에는 고급 보안 기능 및 AWS WAF 웹 ACL과 같은 보안 의식이 있는 관리자를 위한 추가 도구가 있지만 암호 정책이 사용자 디렉터리 보안의 핵심 요소입니다.
Amazon Cognito 사용자 풀의 로컬 사용자 암호는 자동으로 만료되지 않습니다. 사용자 암호 재설정의 시간, 날짜 및 메타데이터를 외부 시스템에 기록하는 것이 가장 좋습니다. 암호 수명에 대한 외부 로그를 사용하면 애플리케이션 또는 Lambda 트리거가 사용자의 암호 기간을 조회하고 지정된 기간 후에 재설정을 요구할 수 있습니다.
사용자 풀을 구성하여 보안 표준을 준수하는 최소한의 암호 복잡성을 요구할 수 있습니다. 복잡한 암호의 길이는 최소 8자입니다. 대문자, 숫자 및 특수 문자를 혼합한 것도 포함됩니다.
고급 보안 기능을 사용하면 암호 재사용 정책을 설정할 수도 있습니다. 사용자가 현재 암호 또는 최대 23개의 이전 암호와 일치하는 새 암호로 재설정하지 못하도록 설정하여 최대 총 24개의 암호를 사용할 수 있도록 할 수 있습니다.
사용자 풀 암호 정책 설정
-
사용자 풀을 생성하고 보안 요구 사항 구성 단계로 이동하거나 기존 사용자 풀에 액세스하여 로그인 경험 탭으로 이동합니다.
-
암호 정책으로 이동합니다.
-
암호 정책 모드를 선택합니다. Cognito 기본값은 권장 최소 설정으로 사용자 풀을 구성합니다. 사용자 지정 암호 정책을 선택할 수도 있습니다.
-
암호 최소 길이를 설정합니다. 모든 사용자는 이 값보다 크거나 같은 길이의 암호를 등록하거나 생성해야 합니다. 이 최솟값을 99까지 설정할 수 있지만 사용자는 최대 256자의 암호를 설정할 수 있습니다.
-
암호 요구 사항에서 암호 복잡성 규칙을 구성하십시오. 각 사용자 암호에 필요한 문자 유형(숫자, 특수 문자, 대문자, 소문자)을 선택합니다.
암호에 다음 문자 중 하나 이상을 요구할 수 있습니다. Amazon Cognito가 암호에 최소 필수 문자가 포함되어 있는지 확인한 후에는 사용자의 암호에 최대 암호 길이까지 모든 유형의 추가 문자를 포함할 수 있습니다.
-
기본 라틴
문자의 대문자와 소문자 -
숫자
-
다음은 특수 문자입니다.
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ ` = + -
-
비선행 비후행 공백 문자
-
-
관리자가 설정한 임시 암호의 만료 기간을 설정합니다. 이 기간이 지나면 Amazon Cognito 콘솔에서 또는
AdminCreateUser
를 통해 생성한 새 사용자는 로그인하거나 새 암호를 설정할 수 없습니다. 임시 암호로 로그인한 후에는 사용자 계정이 만료되지 않습니다. Amazon Cognito 사용자 풀 API에서 암호 지속 기간을 업데이트하려면 CreateUserPool 또는 UpdateUserPool API 요청에서 TemporaryPasswordValidityDays 값을 설정합니다. -
사용 가능한 경우 이전 암호 사용 방지 값을 설정합니다. 이 기능을 사용하려면 사용자 풀에서 고급 보안 기능을 활성화합니다. 이 파라미터의 값은 사용자가 암호를 재설정할 때 새 암호와 일치하지 않도록 하는 이전 암호의 수입니다.
만료된 사용자 계정의 액세스 권한을 재설정하려면 다음 중 하나를 수행합니다.
-
사용자 프로필을 삭제하고 새 프로필을 생성합니다.
-
AdminSetUserPassword API 요청에서 새 영구 비밀번호를 설정합니다.
-
AdminResetUserPassword API 요청에서 새 확인 코드를 생성합니다.