CloudTrail-Watcher: AWS リソース作成時に通知を受け取る
(github.com/rubysoho07)これは何ですか?
- AWS のログイン試行(成功・失敗を問わず)を検知します。
- AWS 内でリソースが作成されたときに通知を受け取れます。
- (別途設定した場合)Slack メッセージで通知を受け取れます。(Webhook を利用)
- Slack 通知を別途設定していない場合は、メールでも通知を受け取れます。(ただし Auto Scaling を積極的に利用している環境では推奨しません)
- 別途設定していれば、誰が AWS リソースを作成したのか分かるように
Userタグを自動で付与します。
設定方法
README.md ファイルを参照してください!
- Terraform で構築する
- AWS SAM で構築する
どうすれば通知を受け取れますか?
(どちらか一方だけで構いません)
- Slack の Incoming Webhook を設定し、環境変数に Webhook アドレスを設定します。
- AWS SNS Topic を設定した後、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まで使うだけということですか? 運用コストは100万コールまでは無料なんですよね?
こんにちは。お返事が遅くなりました。
基本的には、CloudTrail の設定をしていない場合を前提として、CloudTrail の有効化 + S3 への保存を想定して作成しました。
CloudTrail を有効にしている場合に Lambda 関数だけを接続する方法については、改善を検討してみます。
基本的には、CloudTrail ログを保存する S3、通知を送る Lambda 関数、メール通知を送る場合は SNS 程度のみを使用します。
この構成に応じて CloudTrail、S3、Lambda、SNS の費用が発生しますが、個人で利用しているアカウントであれば、ほとんど費用は発生しないと思います。(最近、私個人で利用しているアカウントで 1 年以上運用してみた結果、そうでした)
ただし、実際の本番環境で使用する場合は、ログイン通知や Auto Scaling 関連の通知が頻繁に発生します。この場合、多少の費用がかかる可能性があります。
(本番アカウントでは、SNS サービスによるメール通知の有効化はおすすめしません)
ご質問ありがとうございます。今後の改善に活かします。