Amazon Web Services ブログ
Splunkを使用したAmazon FSxのユーザーアクセスイベントの監視とレポート
このブログは2021年8月11日にPromise Owolabi (Storage Solution Architect)によって執筆された内容を日本語化した物です。原文はこちらを参照して下さい。
エンドユーザの行動やデータへのアクセスを監視することは、最新のデータセキュリティ戦略の中核をなすものです。お客様がワークロードをクラウドに移行する際、顧客データへのエンドユーザーのアクセスをログに記録することは、内部セキュリティポリシーの重要な要素であり、コンプライアンス目標を満たすために必要です。Amazon FSx for Windows File Server (Amazon FSx)のファイルアクセス監査により、AWSは、誰がファイル、フォルダ、またはファイル共有にアクセスしたか、修正したか、またはアクセス権限を変更したかをログに記録する簡単な方法を提供します。これにより、違反や異常な動作を検出することができ、監査のために結果を提示することもできます。
ファイルアクセス監査では、アクセス監査ログをAmazon CloudWatch Logsに送信したり、Amazon Kinesis Data Firehoseにストリーミングしたりすることで、ログのアーカイブ、ログ分析、イベントベースのアクションが可能になります。これにより、お客様は、AWS LambdaなどのAWSサービスやSplunkなどのAWSパートナーソリューションを利用して、ユーザーアクティビティの監視や対応をほぼリアルタイムで自動化することができます。コンプライアンス目標を達成するために、組織は、誰がファイル、フォルダ、ファイル共有にアクセスし、どのようなアクションを実行しているかを知り、実証する必要があります。ファイルアクセス監査は、保護されたデータへのアクセスのために定義されたアクセス制御ルールを検証するために使用できます。
このブログ記事では、Amazon Kinesis Data Firehoseを使ってAmazon FSx for Windows File Serverからエンドユーザーのアクセス監査イベントをSplunk Enterpriseに配信する方法を以下の手順で紹介します。
- Kinesis Data Firehose にストリームされる Amazon FSx for Windows File Server 監査イベントの配信先として Splunk を設定する。
- Amazon FSx for Windows File Serverのファイルアクセス監査を有効にし、Kinesis Data Firehoseを使用してSplunkに監査イベントをストリームするように設定する。
- ユーザーのアクセスについてSplunkでログデータを照会し、Splunkのダッシュボードで結果を表示する。
ファイルアクセス監査の概要
Amazon FSx for Windows File Serverは、業界標準のSMB(Server Message Block)プロトコルでアクセス可能な、Windows Server上に構築された、フルマネージドで信頼性の高い、スケーラブルなファイルストレージを提供します。
Amazon FSx for Windows File Serverのファイルアクセス監査は、AWSマネジメントコンソール、AWS CLI、またはAPIを介して、ファイルシステムの作成中または作成後にオンにすることができます。Amazon FSxのファイルアクセス監査は、個々のファイル、フォルダ、およびファイル共有のエンドユーザーのアクセスを記録することができます。ファイル、フォルダ、および共有のアクセスについては、どの試行タイプ(成功のみ、失敗のみ、または両方)をログに記録するかを定義できます。ファイルアクセス監査の詳細については、ドキュメントを参照してください。
監査制御は、SACLs(System Access Control Lists)とも呼ばれ、どのようなアクセスタイプ、どのようなユーザーやグループに対して監査イベントを発行するかを定義します。SACLsは、ファイルやフォルダーなどのファイルシステムオブジェクトにアクセス制御エントリ(ACEs)を適用するために使用されます。ACEsは、ファイルシステムオブジェクトに適用されている権限に応じて、そのオブジェクトへのユーザーのアクセス試行が成功したか失敗したかを記録するかどうかを決定するために使用されます。監査制御(SACLs)は、Windowsのファイルエクスプローラを使用して、またはPowerShellを使用してプログラム的に設定されます。
ファイルアクセス監査イベントに使用するCloudWatch LogsとKinesis Data Firehose
Amazon FSx for Windows File Serverのファイルアクセス監査では、ログに記録されたイベントをAmazon CloudWatch LogsまたはAmazon Kinesis Data Firehoseに配信することができます。どちらのサービスも、複数のファイルシステムからのログを一ヶ所にまとめて高速配信・集約するメリットがあります。
CloudWatch Logsは、イベントを簡単に収集・分析する方法を提供しており、管理者はイベントコードを検索し、検索パターンに基づいてセキュリティ通知をトリガーする機能を備えています。一方、Kinesis Data Firehoseは、イベントをキャプチャし、変換し、Amazon S3、Amazon Redshift、Amazon Elasticsearch Serviceなどの複数の永続的なストレージの宛先に配信する信頼性の高いサービスを提供します。また、Kinesis Data Firehoseでは、Datadog、New Relic、MongoDB、Splunkなどのサービスプロバイダーにイベントを配信することもできます。
Splunk Enterprise での HTTP イベントコレクター(HEC)の設定
ステップ 1 – Splunk HECのグローバル設定
Splunk にデータをストリーミングするには、HEC を設定する必要があります。HEC は、HTTP または HTTPS を介してデータを Splunk Enterprise または Splunk Cloud に直接送信する、高速で効率的な方法を提供します。Splunk Enterprise で HEC を使用するには、グローバル設定ダイアログボックスで HEC を有効にする必要があります。Splunk Cloud では、HECはデフォルトで有効になっていますが、Amazon Kinesis Data Firehose で使用する HEC を有効にするには、Splunk サポートにチケットを提出する必要があります。
デプロイしたSplunkの URL を使用して Splunk にログインします。デフォルトのポートは 8000 です。 (http://<hostname>:port
).
- 右上のメニューから設定→データ入力を選択します。
- HTTP イベントコレクターを選択します。
- グローバル設定を選択します。
- All Tokensのトグルボタンで、Enabledを選択します。
- HECがHTTPではなくHTTPSで待ち受けて通信するには、SSLを有効にするチェックボックスを選択します。Kinesis Data FirehoseにはHTTPSが必要です。
- (オプション) HTTP ポート番号 フィールドに、HEC が待ち受ける番号を入力します。
クライアントまたは HEC をホストする Splunk インスタンスのいずれかで、HTTP ポート番号フィールドで指定したポート番号をブロックするファイアウォールがないことを確認します。 - Saveをクリックします。
ステップ 2 – Amazon FSx for Windows File Serverのイベントに対するSplunkインデックスの作成
新しいインデックス (fsx-faa
) を作成することで、Amazon FSx イベントのファイルアクセス監査を、Splunk デプロイメントに配信される他のイベントから分離することができます。Splunk Enterprise は、処理するデータをインデックスに格納します。
- 設定を選択し、インデックスを選択します。
- 右上の新しいインデックスをクリックします。
- インデックス名を入力します。
- デフォルト設定のままSaveをクリックするとインデックスが作成されます。
ステップ 3 – Splunk Enterpriseでのイベントコレクタートークンの作成
HEC を使用するには、少なくとも 1 つのトークンを設定する必要があります。Splunk Web にログインし、以下の手順でイベントコレクタートークンを作成します。
- 設定を選択し、データの追加を選択します。
- モニターを選択し、HTTPイベントコレクターを選択します。
- 名前フィールドにトークンの名前を入力します。
- Enable indexer acknowledgment チェックボックスをクリックします。
- 次へを選択し、レビューを選択します。
- エンドポイントの設定がすべて希望通りになっていることを確認します。
- すべての設定が正しければ、Submitを選択します。そうでない場合は、戻って変更します。Splunk Web が表示するトークンの値をコピーして、後で参照できるように別の文書に貼り付けます。
Splunk HECを有効にして新しいトークンを作成した後、Kinesis Data Firehoseの配信ストリームを作成してSplunk HECにデータを送信することができます。
Splunkを使用するKinesis Data Firehose配信ストリームの設定
Splunk HEC を使用するように設定されたデリバリーストリームには、SSL が有効なエンドポイントが必要です。このエンドポイントは、HEC の DNS ホスト名と一致する有効な CA 署名付き証明書で終端する必要が有ります。AWSマネジメントコンソールにログインし、メインの検索ボックスでKinesisを検索し、Kinesisを選択します。
- Get started セクションでKinesis Data Firehoseを選択してCreate delivery streamをクリックするか、KinesisダッシュボードのKinesis Data FirehoseセクションでCreate delivery streamをクリックします。
aws-fsx-xxxxxx
(例:aws-fsx-splunk
)の形式で、Delivery stream nameを指定します。- Direct PUT or other sources のSourceのチェックボックスを選択し、Nextをクリックします。
- 宛先の選択のためNextをクリックします。DDestinationでThird-party service providerを選択し、Third-party service providerのドロップダウンリストからSplunk.を選択します。
- Splunk cluster endpoint指定します。Raw endpoint を選択し、Splunk HECのグローバル設定のステップ1、タスク10で指定したport番号を使用します。
- Splunk HECのグローバル設定のステップ3で取得したAuthentication tokenを入力します。
- 失敗したイベントを配信するためのS3 backup用のS3バケットを選択し、配信されたオブジェクトに付加するプレフィックスを入力して、Nextを選択します。
- CloudWatch LogsへのError loggingを有効にします。
- Choose and existing IAM roleを選択するか、Create or update IAM roleでロールの自動作成を許可して、Nextを選択します。
- 設定内容を確認し、Create Delivery Stream.をクリックします。
Amazon FSx for Windows File Serverのアクセス監査の設定
アクセス監査は、新しいファイルシステムを作成するとき、またはファイルシステムを更新するときに有効にすることができます。Amazon FSxのファイルアクセス監査のリリース前に作成された既存のファイルシステムについては、ファイルアクセス監査を有効にするために、ファイルシステムのバックアップを作成し、新しいファイルシステムにリストアします。新しいファイルシステムを作成するには、Amazon FSxのドキュメントで説明されている手順に従い、以下の手順で示すように監査設定セクションを変更します。監査を有効にするには、ファイルシステムのスループット容量を32MB/s以上に設定する必要があります。
ステップ 1: ファイルアクセス監査の有効化
- ファイルシステムの作成時に、Auditing – optionalセクションを展開します。既存のファイルシステムを更新するには、ファイルシステム名をクリックし、管理タブを開き、管理をクリックします。
- ファイルとフォルダーへのアクセスをログ記録の選択で、成功した試行を記録、失敗した試行をログ記録のチェックボックスを必要に応じてクリックします。
- ファイル共有のアクセスをログ記録の選択で、成功した試行を記録、失敗した試行をログ記録のチェックボックスを必要に応じてクリックします。
- 監査イベントログの送信先としてKinesis Data Firehoseをクリックします。ドロップダウンリストから、配信ストリームの送信先を選択します。サポートされている配信ストリーム名は、Kinesisの
aws-fsx-*
のような名前である事が必要です。 - 次へを選択してファイルシステムの詳細を確認し、ファイルシステムの作成を選択します(既存のファイルシステムを更新する場合は保存を選択)。
ステップ 2: ファイルやフォルダに監査制御をかける
ファイルシステムの監査が有効になったら、次はユーザーのアクセス試行を監査したいファイルやフォルダーの監査制御を有効にします。
- WindowsのファイルエクスプローラーのGUIで、監査制御を設定したいファイルやフォルダーを右クリックします。
- プロパティ、セキュリティ、詳細設定の順に選択し、最後に監査に進みます。
- 追加を選択します。:
- 監査したい特定のユーザーやグループなど、プリンシパルを選択します。すべてのユーザーの場合はEveryoneを選択します。
- タイプを選択します(成功、失敗、全てから選択出来ます)。
- エントリが適用される対象を選択します(このフォルダ、サブフォルダ、ファイルから選択出来ます)。
- 基本的なパーミッション(つまり、フルコントロール、読み取りと実行など)を選択します。 パーミッションをカスタマイズするには、高度なパーミッションを表示を選択します。
- 選択をクリックします。
- 適用を選択し、OKをクリックします。
Amazon FSx for Windows File Serverの監査ログをSplunkで検索・レポート化
検索クエリを簡素化するために、Microsoft Windows 用の Splunk アドオンをインストールすることができます。このアドオンは、フィールドの選択やタグ付けを自動的に行い、検索を効率化します。
- Splunk コンソールにアクセスし、+Find More Appsを選択し、“Add-on for Microsoft Windows” を検索します。インストールを選択し、Splunk.com のユーザー名とパスワードを入力し、EULA 条件に同意した後、ログインしてインストールします。
- Microsoft Windows用のアドオンから、HECのソースタイプをWindowsイベントログのソースタイプに変更します。設定からデータ入力を選択し、HTTPイベントコレクターを選択します。Splunk EnterpriseでHTTPイベントコレクター(HEC)を設定する – ステップ 3で作成したHEC名を選択します。
- ソースタイプのドロップダウンリストから、XmlWinEventLog:Securityを探して選択します。
- Select Allowed Indexesから、Splunk EnterpriseでHTTP Event Collector(HEC)を構成する – ステップ 2で作成したインデックスを選択します。
- 変更内容を保存します。
次に、各監査イベントがユニークなイベントとして Splunk で解析されるようにします。カスタム設定(props.conf
)を提供しないと、Splunk は 1 つのファイルアクセス監査イベントを別々のイベントに分割しません。なお、Splunk Cloud デプロイメントには Terminal/SSH アクセスがないため、このカスタム設定は Splunk Enterprise デプロイメントでのみ行うことができます。
- SSH またはリモートデスクトップで、Splunk サーバーに接続します。
- 以下の行を
/$SPLUNK_HOME/etc/system/local/props.conf
ファイルに追加します。ファイルが存在しない場合は作成してください。
[XmlWinEventLog:Security] CHARSET=UTF-8 LINE_BREAKER=([\r\n]+)\<Event\sxmlns SHOULD_LINEMERGE=false category=Custom description=tested for xml test file disabled=false pulldown_type=true
- Splunk コンソール (Setting > Server Controls > Restart Splunk) またはサーバー CLI (
sudo /$SPLUNK_HOME/bin/splunk restart
) を通じて Splunk サーバーを再起動します。
検索を開始する前に、まずイベントがSplunk HECに配信されていることを確認します。Splunk コンソールにアクセスします。コンソールで、Search and Reportingに進み、Splunk EnterpriseでHTTPイベントコレクターを設定する – ステップ 2で作成したファイルアクセス監査インデックスに配信されたイベントを検索します。
index="fsx-faa"
イベントが正常に配信されていることを確認した上で、次のような詳細を表示するサンプルダッシュボードを作成してみましょう。
- ファイルアクセスイベントの成功と失敗の時間推移
- 一括削除を行ったユーザー(直近1時間で50件以上の削除)
- 監査イベントを発生させたユーザー上位10名
- 削除したアクセスの数
- 失敗したアクセスの数
- 成功したアクセスの数
- 識別可能なユーザー数のカウント
- ファイルアクセスの概要を示す表(ユーザー名、ファイルまたはフォルダー、成功または失敗、アクセスおよびイベントコード、共有名など)
関連するフィールドは、Splunk add-on for Microsoft Windows によって自動的に抽出され、検索コンソールの左側に表示されます。これらのフィールド(AccessMask、Keywords、EventCode、SubjectUserName、ObjectName)は、ダッシュボードの作成に使用する検索クエリに活用できます。
下のリストの最初の2つの検索クエリでは、EventIDコード4659と4660が使用されています。4659イベントIDコードは、削除を意図してオブジェクトへのハンドルが要求されたときに生成され、4660コードはオブジェクトが削除されたときに生成されます。ファイルシステムイベントおよびファイル共有イベントの詳細については、Microsoft社のドキュメントを参照してください。
Splunk Enterprise コンソールにアクセスし、左側の Apps リストからSearch & Reportingをクリックします。検索フィールドに以下の検索クエリを入力します。
- 削除の回数
index="fsx-faa" EventCode="4659" OR EventCode="4660" | stats count
- 50以上の一括削除を行うユーザー
index="fsx-faa" EventCode="4659" OR EventCode="4660" | stats count by SubjectUserName | where count > 50
- ファイル共有のデータにアクセスする識別可能なユーザー:
index=="fsx-faa" | stats dc(SubjectUserName)
- 成功したアクセスイベントの数
index="fsx-faa" Keywords=0x8020000000000000 | stats count
- 失敗したアクセスイベントの数
index="fsx-faa" Keywords=0x8010000000000000 | stats count
- 時系列の監査イベント
index="fsx-faa" | replace "0x8010000000000000" with "Failure", "0x8020000000000000" with Success | timechart count by Keywords
- イベントを発生させているユーザートップ10
index="fsx-faa" | table SubjectUserName | top limit=10 SubjectUserName
- イベントサマリー
index="fsx-faa" | table SubjectUserName,ObjectName,Keywords,AccessMask,EventCode,ShareName | replace "0x1" with "ReadData (or ListDirectory)", "0x2" with "WriteData (or AddFile)", "0x4" with "AppendData", "0x8" with "ReadEA", "0x10" with "WriteEA", "0x20" with "Execute/Traverse", "0x40" with "DeleteChild", "0x80" with "ReadAttributes", "0x100" with "WriteAttributes", "0x10000" with "DELETE", "0x20000" with "READ_CONTROL", "0x40000" with "WRITE_DAC", "0x80000" with "WRITE_OWNER", "0x100000" with "SYNCHRONIZE", "0x1000000" with "ACCESS_SYS_SEC", "0x8010000000000000" with "Failure", "0x8020000000000000" with Success
各検索結果が表示されたら、Visualizationタブに移動し、Deletes、Distinct Accounts、Access Failures、Access SuccessのSelect visualization optionsからSingle Valueを選択します。一括削除を行ったユーザーについては円グラフ、50以上の一括削除を行ったユーザーについては棒グラフ、時間経過による監査イベントについては折れ線グラフを選択します。
ビジュアライゼーションをダッシュボードに追加するには、名前を付けて保存ドロップダウンメニューで新規ダッシュボードを選択し、ダッシュボードのタイトルと検索結果のパネルタイトルを入力してダッシュボードに保存します。最初のビジュアライゼーション用にダッシュボードを作成した後、同じダッシュボードに後続のビジュアライゼーションを追加します。まず名前を付けて保存を選択し、次に既存のダッシュボードを選択し、既存のダッシュボード名を選択してパネルタイトルを入力し、最後にダッシュボードに保存を選択します。
ダッシュボードをクリックしてダッシュボードにアクセスし、リストから作成したダッシュボードを選択します。緑色の編集ボタンでダッシュボードを編集し、チャートを希望のレイアウトに移動、サイズ変更します。以下は、アクセスアクティビティを表示するダッシュボードのサンプルです。
クリーンアップ
オプションのステップとして、このセットアップに使用されたリソースをクリーンアップすることを忘れないでください。Kinesis Data Firehose配信ストリームを削除し、Amazon FSx for Windows File Serverファイルシステムのファイルアクセス監査を無効にします。
まとめ
このブログ記事では、Amazon FSx for Windows File Server のファイルアクセス監査を使用して実現可能な、幅広い分析ワークフローの一部を紹介しました。Kinesis Data Firehose の送信先として Splunk を設定し、Amazon FSxのファイルアクセス監査を有効にして、Kinesis Data Firehoseにログを送信するように設定しました。最後に、Splunk を使って監査ログを検索し、ダッシュボードで結果を表示しました。
Amazon FSx for Windows File Serverのファイルアクセス監査は、クラウドネイティブなエンドユーザーのアクセス監査ソリューションを提供します。ファイルアクセス監査では、様々なAWSサービスやサードパーティのセキュリティインシデント&イベント管理(SIEM)ツールを使用して監査イベントを処理することができます。これにより、組織は監査およびセキュリティ機能を改善・維持し、脅威や状況の変化に自信とスピードを持って対応することができます。
このブログ記事をお読みいただきありがとうございます。