Skip to content
This repository has been archived by the owner on Feb 21, 2022. It is now read-only.

Lambda function which notify cloudtrail event log to slack.

License

Notifications You must be signed in to change notification settings

hidekuro/cloudtrail-to-slack

Repository files navigation

cloudtrail to slack

CloudTrail のログストリームを Slack に通知する Lambda 関数

開発環境

ローカル環境のセットアップ

git clone git@github.com:hidekuro/cloudtrail-to-slack.git
cd cloudtrail-to-slack

sam build --use-container

# .env.example をコピーしてSlackのOauthトークン、宛先チャンネル名 or チャンネルIDを記入し、環境変数にexport
cp .env.example .env
source .env && export SLACK_TOKEN SLACK_CHANNEL

# テスト実行
sam local invoke CloudTrailToSlackFunction --event test-stream-event.json

環境変数

変数名 説明 サンプル
SLACK_TOKEN Slack Oauth トークン xoxp-XXXXXXXXXX-XXXXXXXXXXXX-XXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
SLACK_CHANNEL Slack チャンネルID or チャンネル名 #general C1234567890

パッケージングとデプロイ

パッケージングしてS3にアップロード

sam package \
    --output-template-file packaged.yaml \
    --s3-bucket $YOUR_S3_BUCKET_NAME

ログに表示されるObject Keyか packaged.yaml 内のS3 URLを確認してLambdaのソースに指定する。

CloudWatch Logs ストリーミングフィルタの例

{
    ($.eventName != "Get*") && ($.eventName != "List*") && ($.eventName != "Describe*")
        && (
            ($.eventName = "SecurityGroup*")
            || ($.eventName = "ApplySecurityGroupsToLoadBalancer")
            || ($.eventName = "*Policy*")
            || ($.eventName = "*Gateway")
            || ($.eventName = "*User")
            || ($.eventName = "*Vpc*")
            || ($.eventName = "*NetworkAcl*")
            || ($.eventName = "CreateRoute")
            || ($.eventName = "StopLogging")
            || (($.eventName = "ConsoleLogin") && ($.errorMessage = "Failed authentication"))
        )
}
  • Get, List, Describe は無視
  • 下記を検知
    • セキュリティグループの変更
    • IAMの変更
    • ゲートウェイ、VPCの変更
    • CloudTrailのログ停止
    • コンソールログインの失敗

設定用にスペースを省いたもの

{($.eventName!="Get*")&&($.eventName!="List*")&&($.eventName!="Describe*")&&(($.eventName="SecurityGroup*")||($.eventName="ApplySecurityGroupsToLoadBalancer")||($.eventName="*Policy*")||($.eventName="*Gateway")||($.eventName="*User")||($.eventName="*Vpc*")||($.eventName="*NetworkAcl*")||($.eventName="CreateRoute")||($.eventName="StopLogging")||(($.eventName="ConsoleLogin")&&($.errorMessage="Failedauthentication")))}

参考リンク

LICENSE

The MIT License

About

Lambda function which notify cloudtrail event log to slack.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published