Splunk Cloud の APP を使って Amazon S3 のログを収集してみた
APP について
Splunk Cloud には、AWS のサービス・リソースごとに Push / Pull ベースでログ収集するためのアドオンとして "APP" が用意されています。
今回ご紹介する AWS 用のアドオンでは、Amazon S3 に集約されるログを Splunk Cloud に送信することが出来できます。
参考元:Configure Generic S3 inputs for the Splunk Add-on for AWS | Splunk Docs
他にも AWS アドオンで収集できるログについて以下の通りです。
- CloudTrail
- CloudWatch
- CloudWatch Logs
- Config
- Config Rules
- EventBridge
- Inspector
- Kinesis
- S3
- VPC Flow Log
- Billing services
- Amazon Security Lake
- SQS
- SNS
- IAM
- Security Hub
詳細は Introduction to the Splunk Add-on for Amazon Web Services | Splunk Docs でご確認いただけます。
Amazon S3 のログ収集設定フロー
Amazon S3 のログ収集を始めるには次の STEP1~3 を実施する必要があります。
- STEP1:App のインストール
- STEP2:App に IAM ロール・AWS アカウントを登録する
- STEP3:Splunk Cloud に Amazon S3 の情報入力してログ収集を開始する
※ IAM ユーザは作成済みという想定で進めます。
App のインストール
Splunk Cloud で Amazon S3 のログを収集するために App をインストールします。"APP" > "他の App のサーチ" で "Splunk Add-on for Amazon Web Services (AWS)" を探します。
続けてインストールと進みます。※もしアカウント・パスワードを要求されたら、Splunk.com の認証情報を入力してください。
完了というポップが表示されたら "App を開く" を選択して次の章に進んでください。
※もし、ポップを消してしまった場合は "App" > "App の管理" > "Splunk Add-on for AWS" > "App の起動" を選択します。
App に IAM ロール・IAM ユーザを登録する
次にタブバーで "設定" を選択して "Account" のタブが選択されていることを確認して "追加" で Splunk Cloud にユーザ環境の IAM ユーザを追加していきます。
ユーザ側 AWS 環境の認証情報を入力していきます。
- Name:ユーザ環境の IAM ユーザ名
- Key ID:ユーザ環境の IAM ユーザで作成した公開キー
- Secret Key:ユーザ環境の IAM ユーザで作成した秘密キー
- Region Category:中国リージョンは China。政府共通のクラウドサービスの利用環境なら GovCloud。それ以外は Global を選択します。
入力できたら保存して次はユーザ側 AWS 環境で IAM ロールを作成します。
Amazon S3 にアクセスするロールの作成
AWS 用の Splunk アドオンを使用する場合、ユーザ側の AWS 環境内に Splunk 用の IAM ロールと、ロールがアタッチされた IAM ユーザが必要になります。
S3 アクセス用に以下のロールを作成します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject", "s3:ListAllMyBuckets", "s3:GetBucketLocation", "kms:Decrypt" ], "Resource": "*" } ] }
ロールの名前は任意なので、お好きなように設定してください。
Resuource セクションは、必要に応じて特定の S3 Bucket ARN にするとスコープを厳格にできます。
AssumeRole の設定
アドオンが AWS STS の AssumeRole API アクションをサポートしているため、IAM ロールが IAM ユーザにアクセス許可を委任できます。
委任には "信頼関係" を構築する必要がありますので、先ほど作成したロールに信頼関係を設定します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AWSアカウントID:user/ユーザ名" }, "Action": "sts:AssumeRole" } ] }
AWSアカウントID と ユーザ名 はご自身の環境情報をご入力ください。
引き受けるロールの権限の設定
そうしたら、対象となる IAM ユーザがアクションを実行できるように先ほど作成したロールを追加します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::AWSアカウントID:role/ロール名" } ] }
次に Splunk Cloud に戻って、"設定" を選択して "IAM Role" のタブが選択されていることを確認して "追加" で Splunk Cloud に先ほど作成した IAM Role の ARN を追加していきます。
ARN を入力して保存します。(Name にハイフンなどは使えない様です。)
次章、いよいよ最後の手順です。
Splunk Cloud に Amazon S3 の情報入力してログ収集を開始する
APP(Splunk Add-on for Amazon Web Services)で入力タブを選択して、Create New Input で新しく収集するログ設定を作成します。
今回は Generic S3 を選択して汎用的なログを収集するようにします。
設定画面ではアスタリスクの必須項目を入力します。先ほどまで設定していた IAM ユーザやロールはすでに Splunk Cloud に認識されているので候補が出ているはずです。
ソースタイプは、どのようなログを Splunk Cloud に取り込んでいるかのを識別子になります。データソースとしてすぐに理解できる名前にしてください。
あとは設定を保存すればログ収集が開始されます。あらかじめ用意していた Sample メッセージを対象の S3 Bucket にアップロードしてみました。
Sreach & Report で検索してみると、以下のように収集されていることが確認できました。
まとめ
今回は、APP を使って Amazon S3 のログを収集してみました。このアドオンでは同じような形で CloudTrail などのログも収集できます。 リソースによっては、SQS を使用する必要もありますが、認証情報などの設定でいうと、大まかな流れとしては本ブログのフローでログ収集を開始できます。
みなさまの一助になれば幸いです。