기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Cognito는 Amazon Cognito에서 사용자 AWS CloudTrail, 역할 또는 서비스가 수행한 작업에 대한 레코드를 제공하는 AWS 서비스와 통합됩니다. CloudTrail은 Amazon Cognito 콘솔의 호출 및 Amazon Cognito API 작업에 대한 코드 호출을 포함하여 Amazon Cognito에 대한 API 호출의 하위 집합을 이벤트로 캡처합니다. 추적을 생성하면 Amazon Cognito에 대한 이벤트를 포함하는 CloudTrail 이벤트를 Amazon S3 버킷에 전송하도록 선택할 수 있습니다. 트레일을 구성하지 않은 경우에도 CloudTrail 콘솔의 이벤트 기록에서 최신 이벤트를 볼 수 있습니다. CloudTrail에서 수집한 정보를 사용하여 Amazon Cognito에 수행된 요청, 요청이 수행된 IP 주소, 요청을 수행한 사람, 요청이 수행된 시간 및 추가 세부 정보를 확인할 수 있습니다.
구성 및 활성화 방법을 비롯한 CloudTrail에 대한 자세한 내용은 AWS CloudTrail 사용 설명서를 참조하세요.
특정 CloudTrail 이벤트에 대해 Amazon CloudWatch 경보를 만들 수도 있습니다. 예를 들어 자격 증명 풀 구성이 변경되면 경보를 트리거하도록 CloudWatch를 설정할 수 있습니다. 자세한 내용은 CloudTrail 이벤트에 대한 CloudWatch 경보 생성: 예제를 참조하세요.
주제
Amazon Cognito가 CloudTrail로 전송하는 정보
를 생성할 때 CloudTrail이 켜집니다 AWS 계정. Amazon Cognito에서 지원되는 이벤트 활동이 발생하면 해당 활동이 이벤트 기록의 다른 AWS 서비스 이벤트와 함께 CloudTrail 이벤트에 기록됩니다. AWS 계정에서 최근 이벤트를 보고 검색하고 다운로드할 수 있습니다. 자세한 내용은 CloudTrail 이벤트 기록을 사용하여 이벤트 보기를 참조하십시오.
Amazon Cognito에 대한 이벤트를 포함하여 AWS 계정에 이벤트를 지속적으로 기록하려면 추적을 생성합니다. CloudTrail 추적은 Amazon S3 버킷으로 로그 파일을 전송합니다. 콘솔에서 추적을 생성하면 기본적으로 모든 지역에 추적이 적용됩니다. 추적은 AWS 파티션의 모든 리전에서 이벤트를 로깅하고 지정한 Amazon S3 버킷으로 로그 파일을 전송합니다. 또한 CloudTrail 로그에서 수집된 이벤트 데이터를 추가로 분석하고 조치를 취하도록 다른 AWS 서비스를 구성할 수 있습니다. 자세한 내용은 다음을 참조하세요.
모든 이벤트 또는 로그 항목에는 요청을 생성했던 사용자에 대한 정보가 포함됩니다. ID 정보를 이용하면 다음을 쉽게 판단할 수 있습니다.
-
요청을 루트로 했는지 아니면 IAM 사용자 보안 인증 정보로 했는지 여부.
-
역할 또는 페더레이션 사용자의 임시 보안 인증을 사용하여 요청이 생성되었는지 여부.
-
요청이 다른 AWS 서비스에 의해 이루어졌는지 여부입니다.
자세한 내용은 CloudTrail userIdentity 요소를 참조하세요.
의 기밀 데이터 AWS CloudTrail
사용자 풀과 자격 증명 풀은 사용자 데이터를 처리하기 때문에 Amazon Cognito는 HIDDEN_FOR_SECURITY_REASONS
값을 사용하여 CloudTrail 이벤트의 일부 비공개 필드를 가립니다. Amazon Cognito가 이벤트에 채우지 않는 필드의 예는 Amazon Cognito 이벤트 예시 섹션을 참조하세요. Amazon Cognito는 암호 및 토큰과 같이 일반적으로 사용자 정보를 포함하는 일부 필드만 가립니다. Amazon Cognito는 API 요청의 비공개 필드가 아닌 필드에 입력하는 개인 식별 정보를 자동으로 탐지하거나 마스킹하지 않습니다.
사용자 풀 이벤트
Amazon Cognito는 사용자 풀 작업(User pool actions) 페이지에 나열된 모든 작업을 CloudTrail 로그 파일에 이벤트로 로그하도록 지원합니다. Amazon Cognito는 사용자 풀 이벤트를 관리 이벤트로 CloudTrail에 로깅합니다.
Amazon Cognito 사용자 풀 CloudTrail 항목의 eventType
필드는 앱이 Amazon Cognito 사용자 풀 API 또는 OpenID Connect, SAML 2.0 또는 관리형 로그인 페이지의 리소스를 제공하는 엔드포인트에 요청했는지 여부를 알려줍니다. API 요청의 eventType
은 AwsApiCall
이고 엔드포인트 요청의 eventType
은 AwsServiceEvent
입니다.
Amazon Cognito는 관리형 로그인 서비스에 다음 요청을 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 |
사용자가 호스팅 UI에서 MFA에 대해 선호하는 방법을 선택합니다. |
MfaRegister_GET , MfaRegister_POST |
MFA 등록 시 사용자가 호스팅된 UI에서 다중 인증(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 로그에 UserSub
는 기록하지만 UserName
은 기록하지 않습니다. ListUsers
API를 호출하고 하위 집합을 표시하는 필터를 사용하여 특정 UserSub
의 사용자를 찾을 수 있습니다.
ID 풀 이벤트
데이터 이벤트
Amazon Cognito는 다음과 같은 Amazon Cognito 자격 증명 이벤트를 데이터 이벤트로 로깅합니다. 데이터 이벤트는 CloudTrail이 기본적으로 로깅하지 않는 대용량 데이터 영역 API 작업입니다. 데이터 이벤트에는 추가 요금이 적용됩니다.
이러한 API 작업에 대해 CloudTrail 로그를 생성하려면 추적에서 데이터 이벤트를 활성화하고 Cognito identity pools(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은 기본적으로 관리 이벤트 API 작업을 로깅합니다.
Amazon Cognito가 CloudTrail에 로깅하는 Amazon Cognito 자격 증명 풀 API 작업 목록은 Amazon Cognito 자격 증명 풀 API 참조에서 확인하세요.
Amazon Cognito Sync
Amazon Cognito는 모든 Amazon Cognito Sync API 작업을 관리 이벤트로 로깅합니다. Amazon Cognito가 CloudTrail에 로깅하는 Amazon Cognito Sync API 작업 목록은 Amazon Cognito Sync API Reference(Amazon Cognito Sync API 참조)를 참조하세요.
Amazon CloudWatch Logs Insights를 사용하여 Amazon Cognito CloudTrail 이벤트 분석
Amazon CloudWatch Logs Insights를 사용하여 Amazon Cognito CloudTrail 이벤트를 검색 및 분석할 수 있습니다. CloudWatch Logs에 이벤트를 전송하도록 추적을 구성하면 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
ForgotPassword
API를 호출한 상위 25개 IP 주소를 찾습니다.
filter eventSource = "cognito-idp.amazonaws.com" and eventName = 'ForgotPassword'
| stats count(*) as count by sourceIPAddress
| sort count desc | limit 25