AWS

AWS Elasticsearch(Opensearch) 와 AWS Cognito 연동 3편 (감사 로그, Audit)

Always-Try 2021. 12. 8. 23:03

이전 포스팅들을 통해 AWS Elasticsearch에 Cognito 인증 기능, MFA를 추가하는 기능을 소개했다. 여기서 끝일까? 아니다. 만약 Elasticsearch에 개인정보나 중요 정보가 포함된다면 계정 인증 외에 누가 해당 서버에 언제 어디서 접근했는지에 대한 감사로그에 대한 부분도 분명히 필요할 것이다. 일반적인 보안 솔루션에서는 당연히 제공하는 기능이지만 Cognito는 해당 기능을 우리가 원하는대로 편하게 제공하지 않는다. 이에 대한 로그를 확인할 수 있는 부분에 대해 소개한다. 다양한 방법이 있겠지만, Cloudtrail을 통한 감사 방안을 소개한다. 

 

 

1. 기본 사항 

기본적으로 Cognito는 보안상 이유로 인증한 사용자에 대한 계정을 Cloudtrail에 남기지 않는다. 아래 캡처의 username을 보면 알 수 있다.

대신 위 캡처의 주황색 음영 부분과 같이 사용자 계정에 부여되어 있는 sub 값을 남긴다. sub 값은 cognito의 사용자 풀에서 확인이 가능하다.

즉, sub 값으로 사용자의 행위를 파악할 수 있을 것으로 생각된다.

그리고 주로 아래 이벤트 소스 'cognito-idp.amazonaws.com'로 cloudtrail 로그가 생성된다.

 

 

2. 감사를 위한 CloudTrail 로그 (테스트하며 정리중이며, 점점 채워갈 예정이다.)

기본적으로 이벤트 소스는 cognito-idp.amazonaws.com 이다.

 

이벤트 이름 기준

 

- AdminListUserAuthEvents

 

- AdminUserGlobalSignOut

 

- DeleteUserPool


- AdminResetUserPassword

 

- CreateUserPool

 

- GetSigningCertificate

 

- UpdateUserPool

 

- AdminGetUser

 

- AdminCreateUser

 

- AdminDeleteUser

 

 

 

** 구글 로그인 연동을 했을때, 어떤 아이디(구글계정)의 사용자가 로그인했는지 cloudtrail에서 확인할 수 없다.

왜냐면 sts.amazonaws.com(이벤트 소스)의 AssumeRoleWithWebIdentity(이벤트 이름)로 cloudtrail 로그가 남는데, 이는 특정 계정을 로그인 허용 정책을 연결하는 것이 아닌 es에 임시 자격 증명을 발급해주는 형태이기 때문에 실제 로그인한 계정에 대한 정보는 확인할 수 없다. 아마 구글 G-suite를 이용하면 확인이 가능하지 않을까? 

가능하다.

https://support.google.com/a/answer/6124308?hl=ko 

 

OAuth 토큰 감사 로그 - Google Workspace 관리자 고객센터

도움이 되었나요? 어떻게 하면 개선할 수 있을까요? 예아니요

support.google.com