Splunk Cloud の APP を使って Amazon S3 のログを収集してみた

Splunk Cloud には、アドオンという形でログ収集・可視化・アラート作成を支援してくれる "APP" という機能が備わっています。今回は、APP を使って Amazon S3 のログ収集を行ってみます。
2024.02.26

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 を使用する必要もありますが、認証情報などの設定でいうと、大まかな流れとしては本ブログのフローでログ収集を開始できます。

みなさまの一助になれば幸いです。