CloudTrail-Watcher: รับการแจ้งเตือนเมื่อมีการสร้างทรัพยากร AWS
(github.com/rubysoho07)นี่คืออะไร?
- ตรวจจับความพยายามเข้าสู่ระบบของ AWS (ไม่ว่าจะสำเร็จหรือล้มเหลว)
- สามารถรับการแจ้งเตือนเมื่อมีการสร้างทรัพยากรภายใน AWS
- (หากตั้งค่าแยกไว้) สามารถรับการแจ้งเตือนผ่านข้อความ Slack ได้ (ใช้ Webhook)
- หากไม่ได้ตั้งค่า Slack notification แยกไว้ ก็สามารถรับการแจ้งเตือนทางอีเมลได้เช่นกัน (แต่หากใช้งาน Auto scaling อย่างหนัก ไม่แนะนำวิธีนี้)
- หากตั้งค่าไว้แยกต่างหาก ระบบจะติดแท็ก 'User' ให้อัตโนมัติเพื่อให้ทราบว่าใครเป็นผู้สร้างทรัพยากร AWS
วิธีตั้งค่า
README.md 파일을 참고해 주세요!
- ติดตั้งด้วย Terraform
- ติดตั้งด้วย AWS SAM
จะรับการแจ้งเตือนได้อย่างไร?
(เลือกทำเพียงอย่างใดอย่างหนึ่งก็ได้)
- ตั้งค่า Incoming Webhook ของ Slack แล้วกำหนด URL ของ webhook เป็น environment variable
- ตั้งค่า AWS SNS Topic แล้วตั้งค่า subscription สำหรับ Topic นั้น
ทรัพยากร AWS ที่รองรับ
จะมีการแจ้งเตือนเมื่อมีกิจกรรมการเข้าสู่ระบบคอนโซลและเมื่อมีการสร้างทรัพยากรต่าง ๆ
- การเข้าสู่ระบบคอนโซล
- IAM (User, Group, Role, Policy, Instance Profile)
- EC2 (Instance, Security Group)
- RDS (Cluster, Instance)
- S3 (Bucket)
- ElastiCache (Redis, Memcached)
- EMR (Cluster)
- Lambda (Function)
- Redshift (Cluster)
- ECS (Cluster)
- EKS (Cluster)
- DocumentDB (Cluster, Instance)
- MSK(Managed Streaming for Apache Kafka) (Cluster)
- MWAA(Managed Workflow for Apache Airflow) (Environment)
- DynamoDB (Table)
- ELB (CLB, ALB, NLB, GLB)
- CloudFront (Distribution)
2 ความคิดเห็น
ถ้าเปิด
cloudtrailไว้อยู่แล้ว แบบนี้ถ้าจะส่งการแจ้งเตือนด้วยlambdaและอีเมลโนติ ก็ใช้แค่snsเท่านั้นใช่ไหมครับ? แล้วค่าใช้จ่ายในการใช้งานก็ฟรีจนกว่าจะถึง 1 ล้านคอลแรกใช่ไหมครับ?สวัสดีครับ? ขอโทษที่ตอบกลับช้านะครับ
โดยพื้นฐานแล้ว ผมทำไว้โดยสมมติกรณีที่ยังไม่ได้ตั้งค่า CloudTrail จึงสมมติให้มีการเปิดใช้งาน CloudTrail + บันทึกลง S3 ครับ
หากเปิด CloudTrail ไว้อยู่แล้ว ผมจะลองปรับปรุงให้เชื่อมต่อเฉพาะฟังก์ชัน Lambda ได้ครับ
โดยพื้นฐานแล้ว จะใช้เพียง S3 สำหรับเก็บล็อก CloudTrail, ฟังก์ชัน Lambda สำหรับส่งการแจ้งเตือน และในกรณีส่งเมลแจ้งเตือนก็จะใช้ประมาณ SNS เท่านั้นครับ
ตามโครงสร้างนี้จะมีค่าใช้จ่ายของ CloudTrail, S3, Lambda และ SNS เกิดขึ้น แต่ถ้าเป็นบัญชีที่ใช้งานส่วนตัว โดยแทบจะไม่เกิดค่าใช้จ่ายเลยครับ (อย่างน้อยจากผลที่ผมลองรันในบัญชีส่วนตัวของตัวเองมานานกว่าหนึ่งปีล่าสุดก็เป็นแบบนั้น)
อย่างไรก็ตาม หากใช้งานกับโปรดักชันจริง จะมีการแจ้งเตือนการล็อกอินหรือการแจ้งเตือนเกี่ยวกับ Auto scaling เกิดขึ้นบ่อย ในกรณีนั้นอาจมีค่าใช้จ่ายเพิ่มขึ้นเล็กน้อยครับ
(สำหรับบัญชีโปรดักชัน ผมไม่แนะนำให้เปิดใช้งานการแจ้งเตือนทางอีเมลผ่านบริการ SNS)
ขอบคุณสำหรับคำถาม และผมจะนำไปใช้ในการปรับปรุงต่อไปครับ