Amazon Cognito 로그인 AWS CloudTrail - Amazon Cognito

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon Cognito 로그인 AWS CloudTrail

Amazon Cognito는 Amazon Cognito의 사용자, 역할 또는 AWS 서비스에서 수행한 작업의 레코드를 제공하는 AWS CloudTrail서비스인 와 통합됩니다. 는 Amazon Cognito 콘솔의 API 호출 및 Amazon Cognito API 작업에 대한 코드 호출을 포함하여 Amazon Cognito에 대한 호출의 하위 집합을 이벤트로 CloudTrail 캡처합니다. Amazon Cognito Amazon Cognito 추적을 생성하는 경우 Amazon Cognito용 CloudTrail 이벤트를 포함하여 Amazon S3 버킷에 이벤트를 전송하도록 선택할 수 있습니다. 추적을 구성하지 않은 경우에도 CloudTrail 콘솔의 이벤트 기록 에서 최신 이벤트를 볼 수 있습니다. 에서 수집한 정보를 사용하여 Amazon Cognito 수행된 요청 CloudTrail, 요청이 수행된 IP 주소, 요청을 수행한 사람, 요청이 수행된 시간 및 추가 세부 정보를 확인할 수 있습니다.

구성 및 활성화 방법을 CloudTrail포함하여 에 대한 자세한 내용은 AWS CloudTrail 사용 설명서 섹션을 참조하세요.

특정 CloudTrail 이벤트에 대한 Amazon CloudWatch 경보를 생성할 수도 있습니다. 예를 들어 자격 증명 풀 구성이 변경된 경우 경보를 트리거 CloudWatch 하도록 를 설정할 수 있습니다. 자세한 내용은 CloudTrail 이벤트에 대한 CloudWatch 경보 생성: 예제 를 참조하세요.

Amazon Cognito가 보내는 정보 CloudTrail

CloudTrail 는 를 생성할 때 켜집니다 AWS 계정. Amazon Cognito 에서 지원되는 이벤트 활동이 발생하면 해당 활동은 CloudTrail 이벤트 기록 의 다른 AWS 서비스 이벤트와 함께 이벤트에 기록됩니다. AWS 계정에서 최근 이벤트를 보고 검색하고 다운로드할 수 있습니다. 자세한 내용은 이벤트 기록을 사용하여 CloudTrail 이벤트 보기를 참조하세요.

Amazon Cognito 에 대한 이벤트를 포함하여 AWS 계정의 이벤트에 대한 지속적인 기록을 위해 추적을 생성합니다. CloudTrail 추적은 Amazon S3 버킷에 로그 파일을 전달합니다. 콘솔에서 추적을 생성하면 기본적으로 모든 지역에 추적이 적용됩니다. 추적은 AWS 파티션의 모든 리전에서 이벤트를 기록하고 지정한 Amazon S3 버킷에 로그 파일을 전달합니다. 또한 CloudTrail 로그에서 수집된 이벤트 데이터를 추가로 분석하고 이에 따라 작업하도록 다른 AWS 서비스를 구성할 수 있습니다. 자세한 내용은 다음을 참조하세요.

모든 이벤트 및 로그 항목에는 요청을 생성한 사용자에 대한 정보가 들어 있습니다. 보안 인증 정보를 이용하면 다음을 쉽게 판단할 수 있습니다.

  • 루트 또는 IAM 사용자 자격 증명으로 요청이 이루어졌는지 여부.

  • 역할 또는 페더레이션 사용자에 대한 임시 보안 보안 인증을 사용하여 요청이 생성되었는지 여부.

  • 요청이 다른 AWS 서비스에 의해 이루어졌는지 여부.

자세한 내용은 CloudTrail userIdentity 요소를 참조하세요.

의 기밀 데이터 AWS CloudTrail

사용자 풀과 자격 증명 풀은 사용자 데이터를 처리하기 때문에 Amazon Cognito는 CloudTrail 이벤트의 일부 프라이빗 필드를 로 가립니다HIDDEN_FOR_SECURITY_REASONS. Amazon Cognito가 이벤트에 채우지 않는 필드의 예는 Amazon Cognito 이벤트 예제 섹션을 참조하세요. Amazon Cognito는 암호 및 토큰과 같이 일반적으로 사용자 정보를 포함하는 일부 필드만 가립니다. Amazon Cognito는 API 요청의 비공개 필드에 채우는 개인 식별 정보를 자동으로 감지하거나 마스킹하지 않습니다.

사용자 풀 이벤트

Amazon Cognito는 사용자 풀 작업 페이지에 로그 파일의 이벤트로 나열된 모든 작업에 대한 CloudTrail 로깅을 지원합니다. Amazon Cognito는 사용자 풀 이벤트를 에 관리 이벤트 CloudTrail 로 기록합니다.

Amazon Cognito 사용자 풀 CloudTrail 항목의 eventType 필드는 앱이 Amazon Cognito 사용자 풀 API 또는 OpenID Connect, SAML 2.0 또는 호스팅 UI 에 대한 리소스를 제공하는 엔드포인트에 요청했는지 여부를 알려줍니다. API 요청에는 eventType 의 가 AwsApiCall 있고 엔드포인트 요청에는 eventType 의 가 있습니다AwsServiceEvent.

Amazon Cognito는 호스팅 UI에 다음과 같은 호스팅 UI 요청을 의 이벤트로 기록합니다 CloudTrail.

에서 호스팅된 UI 작업 CloudTrail
Operation 설명
Login_GET, CognitoAuthentication 사용자가 보안 인증을 보거나 Login 엔드포인트에 제출합니다.
OAuth2_Authorize_GET, Beta_Authorize_GET 사용자가 권한 부여 엔드포인트를 봅니다.
OAuth2Response_GET, OAuth2Response_POST 사용자가 /oauth2/idpresponse 엔드포인트에 IdP 토큰을 제출합니다.
SAML2Response_POST, Beta_SAML2Response_POST 사용자가 /saml2/idpresponse 엔드포인트에 IdP 어SAML설션을 제출합니다.
Login_OIDC_SAML_POST 사용자가 Login 엔드포인트에 사용자 이름을 입력하고 IdP 식별자와 일치합니다.
Token_POST, Beta_Token_POST 사용자가 Token 엔드포인트에 인증 코드를 제출합니다.
Signup_GET, Signup_POST 사용자가 /signup 엔드포인트에 가입 정보를 제출합니다.
Confirm_GET, Confirm_POST 사용자가 호스팅 UI에서 확인 코드를 제출합니다.
ResendCode_POST 사용자가 호스팅 UI에서 확인 코드를 다시 보내라는 요청을 제출합니다.
ForgotPassword_GET, ForgotPassword_POST 사용자가 /forgotPassword 엔드포인트에 암호를 재설정하라는 요청을 제출합니다.
ConfirmForgotPassword_GET, ConfirmForgotPassword_POST 사용자가 /confirmForgotPassword 엔드포인트에 ForgotPassword 요청을 확인하는 코드를 제출합니다.
ResetPassword_GET, ResetPassword_POST 사용자가 호스팅 UI에서 새 암호를 제출합니다.
Mfa_GET, Mfa_POST 사용자가 호스팅 UI에서 다중 인증(MFA) 코드를 제출합니다.
MfaOption_GET, MfaOption_POST 사용자는 호스팅 UIMFA에서 에 대해 선호하는 방법을 선택합니다.
MfaRegister_GET, MfaRegister_POST 사용자는 를 등록할 때 호스팅 UI에 다중 인증(MFA) 코드를 제출합니다MFA.
Logout 사용자가 /logout 엔드포인트에서 로그아웃합니다.
SAML2Logout_POST 사용자가 /saml2/logout 엔드포인트에서 로그아웃합니다.
Error_GET 사용자가 호스팅 UI에서 오류 페이지를 봅니다.
UserInfo_GET, UserInfo_POST 사용자 또는 IdP가 userInfo 엔드포인트와 정보를 교환합니다.
Confirm_With_Link_GET 사용자가 Amazon Cognito가 이메일 메시지로 보낸 링크를 기반으로 확인을 제출합니다.
Event_Feedback_GET 사용자가 Amazon Cognito에 고급 보안 기능 이벤트에 대한 피드백을 제출합니다.
참고

Amazon Cognito는 사용자별 요청의 CloudTrail 로그UserName에는 UserSub 기록하지만 기록하지 않습니다. 를 UserSub 호출API하고 하위 필터를 사용하여 지정된 ListUsers 의 사용자를 찾을 수 있습니다.

자격 증명 풀 이벤트

데이터 이벤트

Amazon Cognito는 다음과 같은 Amazon Cognito Identity 이벤트를 에 데이터 이벤트 CloudTrail 로 기록합니다. 데이터 이벤트는 기본적으로 로깅 CloudTrail 하지 않는 대용량 데이터 플레인 API 작업입니다. 데이터 이벤트에는 추가 요금이 적용됩니다.

이러한 API 작업에 대한 CloudTrail 로그를 생성하려면 추적에서 데이터 이벤트를 활성화하고 Cognito 자격 증명 풀 에 대한 이벤트 선택기를 선택해야 합니다. 자세한 내용은 AWS CloudTrail 사용 설명서추적을 위해 데이터 이벤트 로깅을 참조하십시오.

다음 CLI 명령을 사용하여 자격 증명 풀 이벤트 선택기를 추적에 추가할 수도 있습니다.

aws cloudtrail put-event-selectors --trail-name <trail name> --advanced-event-selectors \ "{\ \"Name\": \"Cognito Selector\",\ \"FieldSelectors\": [\ {\ \"Field\": \"eventCategory\",\ \"Equals\": [\ \"Data\"\ ]\ },\ {\ \"Field\": \"resources.type\",\ \"Equals\": [\ \"AWS::Cognito::IdentityPool\"\ ]\ }\ ]\ }"

관리 이벤트

Amazon Cognito는 Amazon Cognito 자격 증명 풀 API 작업의 나머지를 관리 이벤트 . CloudTrail logs 관리 이벤트 API 작업으로 기본적으로 기록합니다.

Amazon Cognito가 에 로그하는 Amazon Cognito 자격 증명 풀 API 작업 목록은 CloudTrail Amazon Cognito 자격 증명 풀 API 참조를 참조하세요.

Amazon Cognito Sync

Amazon Cognito는 모든 Amazon Cognito Sync API 작업을 관리 이벤트로 기록합니다. Amazon Cognito가 에 로그하는 Amazon Cognito Sync API 작업 목록은 Amazon Cognito Sync API 참조를 CloudTrail참조하세요.

Amazon Logs Insights를 사용하여 Amazon Cognito CloudTrail 이벤트 분석 CloudWatch

Amazon Logs Insights를 사용하여 Amazon Cognito CloudTrail 이벤트를 검색하고 분석할 수 있습니다. CloudWatch CloudWatch 로그로 이벤트를 보내도록 추적을 구성하면 는 추적 설정과 일치하는 이벤트만 CloudTrail 전송합니다.

Amazon Cognito CloudTrail 이벤트를 쿼리하거나 조사하려면 CloudTrail 콘솔에서 추적 설정에서 관리 이벤트 옵션을 선택하여 AWS 리소스에 대해 수행된 관리 작업을 모니터링할 수 있도록 해야 합니다. 오류, 비정상적인 활동 또는 비정상적인 사용자 행동을 식별하려는 경우 추적 설정에서 Insights 이벤트 옵션을 선택할 수도 있습니다.

Amazon Cognito 쿼리 샘플

Amazon CloudWatch 콘솔에서 다음 쿼리를 사용할 수 있습니다.

일반 쿼리

최근에 추가된 로그 이벤트 25개를 찾습니다.

fields @timestamp, @message | sort @timestamp desc | limit 25 | filter eventSource = "cognito-idp.amazonaws.com"

예외를 포함하여 최근에 추가된 로그 이벤트 25개의 목록을 표시합니다.

fields @timestamp, @message | sort @timestamp desc | limit 25 | filter eventSource = "cognito-idp.amazonaws.com" and @message like /Exception/

예외 및 오류 쿼리

Amazon Cognito 사용자 풀 sub를 사용하여 오류 코드 NotAuthorizedException과 함께 최근에 추가된 로그 이벤트 25개를 찾습니다.

fields @timestamp, additionalEventData.sub as user | sort @timestamp desc | limit 25 | filter eventSource = "cognito-idp.amazonaws.com" and errorCode= "NotAuthorizedException"

sourceIPAddress 및 해당 eventName이 있는 레코드의 수를 찾습니다.

filter eventSource = "cognito-idp.amazonaws.com" | stats count(*) by sourceIPAddress, eventName

NotAuthorizedException 오류를 트리거한 상위 25개 IP 주소를 찾습니다.

filter eventSource = "cognito-idp.amazonaws.com" and errorCode= "NotAuthorizedException" | stats count(*) as count by sourceIPAddress, eventName | sort count desc | limit 25

를 호출한 상위 25개의 IP 주소를 찾습니다ForgotPasswordAPI.

filter eventSource = "cognito-idp.amazonaws.com" and eventName = 'ForgotPassword' | stats count(*) as count by sourceIPAddress | sort count desc | limit 25