[AWS] CloudTrail Conosle Login Event Detection

Console 로그인 이벤트를 감지

AWS 에서 콘솔 로그인 시 메일을 보내는 기능을 구현중이다.
분명 이론상으로는 CloudTrail 설정, CloudWatch Rule을 통해 ConsoleSignin 이벤트를 람다 함수와 연결시켜 SNS 토픽을 발행하면 구현 가능하다고 생각해서 진행했는데, 막상 설정을 마쳤음에도 로그인 이벤트를 감지하지 못하였다.

퇴근하고 해당 부분이 너무 궁금해서 찾아봤는데, 스택오버 플로우에서 해당 ConsolSignin 이벤트는 us-east-1 리전에서만 동작한다는 답변을 보고 그대로 적용했더니 바로 정상적으로 동작했다.

결국 문제는 설정이 아니라 리전이었다. 몇일의 삽질끝에 알아내었다.
CloudTrail의 ConsoleSignin Event를 수신하려면 CloudTrail과 CloudWatch Rule이 us-east-1 리전에 설정되어야 하고, 이에따라 Lambda 함수 또한 us-east-1 리전에 설정해주어야 했다.

해당 건과 관련해서 서포트 케이스도 오픈해서 엔지니어와 계속 이야기를 했는데, 결국 리전때문에 발생한 구성문제였다.

특정 시간에만 Lambda가 동작하도록…

이후 메일발송하는 프로세스를 구현한 후에, 해당 기능을 특정 시간에만 활성화 시키는 방법에 대해서 고민했다.
CloudWatch 룰에 보면 Prefix 나 Numeric 값을 가지고 이벤트를 필터할 수 있는데, 이 방법을 eventTime에도 적용할 수 있는지에 대해서 문의 했다.

결과는 NO였다. 아직까지 제공되지 않는 기능이고 해결책으로는 1. Lambda 함수 내에서 자체적으로 시간을 체크하는 로직 설정 2. Lambda를 트리거하는 CloudWatch Rule을 주기적으로 Enable-Disable 하는 방법이 있었다.

해당 방법에 대해서 엔지니어와 계속해서 장단점, 비용적 측면에 대해 이야기를 나누었는데 결국은 2번 방법 CloudWatch Schedule Rule을 사용하여 스위치방식으로 Rule을 Enable-Disable하는 방식을 선택하게 되었다.