Microsoft SharePoint(Office 365)ログを収集する
このドキュメントでは、Bindplane を使用して Microsoft SharePoint(Office 365)のログを Google Security Operations に収集する方法について説明します。
Microsoft SharePoint は、Microsoft 361 と統合されたウェブベースのコラボレーション プラットフォームです。SharePoint 監査ログには、ファイル操作、フォルダ アクティビティ、共有操作、リスト操作、サイト管理アクションなどのユーザー アクティビティが記録されます。これらのログには、Microsoft Defender for Cloud Apps SIEM エージェントを介してアクセスします。このエージェントは、SharePoint Online と OneDrive for Business から監査データを取得し、syslog としてローカル レシーバーにストリーミングします。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- Windows Server 2016 以降、または
systemdを使用する Linux ホスト - プロキシの背後で実行している場合は、ファイアウォール ポートが開いていることを確認する
- SharePoint Online を含む Microsoft 365 テナント
- Microsoft Defender for Cloud Apps ライセンス(Microsoft 365 E5 に含まれているか、アドオンとして提供)
- Microsoft Defender ポータルのグローバル管理者またはセキュリティ管理者のロール
- SIEM エージェントを実行するための Java 8 以降を搭載した Windows または Linux サーバー(Bindplane と同じホストでも可)
- Microsoft 365 で統合監査ロギングが有効になっている
統合監査ロギングを有効にする
Microsoft Defender for Cloud Apps が SharePoint 監査データをキャプチャできるようにするには、Microsoft 365 テナントで統合監査ロギングを有効にする必要があります。
- Microsoft Purview コンプライアンス ポータルにログインします。
- [監査] に移動します。
- プロンプトが表示されたら、[ユーザーと管理者のアクティビティの記録を開始] をクリックします。 注: 統合監査ロギングを有効にしてからコンテンツが利用可能になるまでに、最大で 12 時間かかることがあります。
または、PowerShell を使用して統合監査ロギングを有効にすることもできます。
Connect-ExchangeOnline Set-AdminAuditLogConfig -UnifiedAuditLogIngestionEnabled $true
Bindplane エージェントの Google SecOps 認証情報を取得する
Bindplane エージェントを Google SecOps に対して認証するには、次のいずれかの方法を選択します。
- 新規デプロイ: Chronicle API を使用します(オプション 1)。
- 以前のデプロイ: 2027 年 7 月 20 日に Ingestion API が廃止されるまで、取り込み認証ファイル(オプション 2)を引き続き使用します。
オプション 1: Chronicle API のサービス アカウントを作成する(推奨)
- Google Cloud コンソールにログインし、Google SecOps インスタンスにリンクされている Google Cloud プロジェクトを選択します。
- [IAM と管理> サービス アカウント] に移動します。
- [サービス アカウントを作成] をクリックします。
- 次の構成情報を指定します。
- サービス アカウント名: アカウントの名前を入力します(例:
bindplane-ingest)。 - サービス アカウントの説明: 説明を入力します(例:
Bindplane agent log ingestion)。
- サービス アカウント名: アカウントの名前を入力します(例:
- [作成して続行] をクリックします。
- [このサービス アカウントにプロジェクトへのアクセスを許可する] セクションで、[ロールを選択] をクリックし、[Chronicle 編集者] を選択します。
- [続行] をクリックして [完了] をクリックします。
- 作成したサービス アカウントをクリックし、[キー] タブに移動します。
- [鍵を追加] > [新しい鍵を作成] の順にクリックします。
- [JSON] を選択し、[作成] をクリックします。キーファイルがパソコンにダウンロードされます。
- 鍵ファイルを Bindplane コレクタ ディレクトリ(Linux の場合は
/opt/observiq-otel-collector/ingestion-auth.json、Windows の場合はC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json)にingestion-auth.jsonとして保存するか、config.yamlのcreds_file_pathを保存先のパスと一致するように更新します。 - [IAM と管理] > [設定] に移動し、[プロジェクト番号] をコピーします。エクスポーターの構成に必要になります。
オプション 2: 取り込み認証ファイルをダウンロードする(以前のバージョン)
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [収集エージェント] に移動します。
- 取り込み認証ファイルをダウンロードします。
- Bindplane エージェントがインストールされるシステムにファイルを安全に保存します。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
[組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
Bindplane エージェントをインストールする
次の手順に沿って、Windows または Linux オペレーティング システムに Bindplane エージェントをインストールします。
Windows のインストール
- 管理者としてコマンド プロンプトまたは PowerShell を開きます。
次のコマンドを実行します。
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietインストールが完了するまで待ちます。
次のコマンドを実行して、インストールの内容を確認します。
sc query observiq-otel-collectorサービスが RUNNING と表示されます。
Linux のインストール
- root 権限または sudo 権限でターミナルを開きます。
次のコマンドを実行します。
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shインストールが完了するまで待ちます。
次のコマンドを実行して、インストールの内容を確認します。
sudo systemctl status observiq-otel-collectorサービスは active (running) と表示されます。
その他のインストール リソース
その他のインストール オプションとトラブルシューティングについては、Bindplane エージェントのインストール ガイドをご覧ください。
Syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する
構成ファイルを探す
Linux:
sudo nano /opt/observiq-otel-collector/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
構成ファイルを編集します。
config.yamlの内容全体を次の構成に置き換えます。receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/sharepoint: protocol: https # Region of your instance, for example us, europe, asia-southeast1 location: <LOCATION> # Project number of the Google Cloud project linked to the instance project: '<PROJECT_NUMBER>' compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<CUSTOMER_ID>' endpoint: chronicle.googleapis.com log_type: SHAREPOINT raw_log_field: body service: pipelines: logs/sharepoint_to_chronicle: receivers: - udplog exporters: - chronicle/sharepoint
構成パラメータ
各プレースホルダを次のように置き換えます。
エクスポータの構成:
<CUSTOMER_ID>: 前の手順でコピーした Google SecOps のお客様 ID- creds_file_path: サービス アカウントの JSON キーファイルのフルパス(オプション 1):
- Linux:
/opt/observiq-otel-collector/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
location:<LOCATION>は、Google SecOps インスタンスのリージョン(us、europe、asia-southeast1など)に置き換えます。エクスポーターは、chronicle.googleapis.comの先頭にこの値を付加します。完全なリストについては、リージョン エンドポイントをご覧ください。project:<PROJECT_NUMBER>を [IAM と管理] > [設定] のプロジェクト番号に置き換えます。endpoint:chronicle.googleapis.comに設定したままにします。
以前の取り込み API エクスポータ
オプション 2 の取り込み認証ファイルを使用する場合は、
exportersブロックを次のように置き換えます。creds_file_pathを取り込み認証ファイルのパスに設定します。インスタンスが米国以外にある場合は、malachiteingestion-pa.googleapis.comをリージョン エンドポイント(例:europe-malachiteingestion-pa.googleapis.com)に置き換えます。exporters: chronicle/sharepoint: compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<CUSTOMER_ID>' endpoint: malachiteingestion-pa.googleapis.com log_type: SHAREPOINT raw_log_field: body
構成ファイルを保存する
- 編集後、ファイルを保存します。
- Linux:
Ctrl+O、Enter、Ctrl+Xの順に押します。 - Windows の場合: [ファイル] > [保存] をクリックします。
- Linux:
Bindplane エージェントを再起動して変更を適用する
Linux で Bindplane エージェントを再起動するには:
次のコマンドを実行します。
sudo systemctl restart observiq-otel-collectorサービスが実行されていることを確認します。
sudo systemctl status observiq-otel-collectorログでエラーを確認します。
sudo journalctl -u observiq-otel-collector -f
Windows で Bindplane エージェントを再起動するには:
次のいずれかのオプションを選択します。
- 管理者としてコマンド プロンプトまたは PowerShell を開きます。
net stop observiq-otel-collector && net start observiq-otel-collector- サービス コンソール:
Win+Rを押し、「services.msc」と入力して Enter キーを押します。- observIQ OpenTelemetry Collector を見つけます。
- 右クリックして [再起動] を選択します。
サービスが実行されていることを確認します。
sc query observiq-otel-collectorログでエラーを確認します。
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
SharePoint ログを転送するように Microsoft Defender for Cloud Apps SIEM エージェントを構成する
Microsoft SharePoint Online はクラウド サービスであり、syslog 転送機能が組み込まれていません。syslog 経由で SharePoint 監査ログを転送するには、Microsoft Defender for Cloud Apps SIEM エージェントを使用します。このエージェントは、Defender for Cloud Apps からアラートとアクティビティを取得し、syslog メッセージ(CEF 形式)として Bindplane エージェントにストリーミングします。
SIEM エージェントの前提条件
次の条件を満たす Windows または Linux サーバー(仮想マシンでも可)。
- Java 8 以降がインストールされている
- Transport Layer Security(TLS)1.2 以降
- CPU: 2 コア
- ディスク容量: 20 GB
- RAM: 2 GB
ステップ 1: Microsoft Defender ポータルで SIEM エージェントを構成する
- Microsoft Defender ポータルにログインします。
- [設定] を選択します。
- [クラウドアプリ] を選択します。
- [システム] で [SIEM エージェント] を選択します。
- [SIEM エージェントを追加] をクリックし、[汎用 SIEM] を選択します。
- [Start Wizard] をクリックします。
- 次の構成情報を指定します。
- [名前]: わかりやすい名前を入力します(例:
Chronicle-Bindplane-SharePoint)。 - SIEM 形式を選択する: [CEF] を選択します。
- [名前]: わかりやすい名前を入力します(例:
- [次へ] をクリックします。
- 次の syslog 接続の詳細を指定します。
- リモート syslog ホスト: Bindplane エージェント ホストの IP アドレスまたはホスト名を入力します(例:
192.168.1.100)。 - Syslog ポート番号: 「
514」(または Bindplane エージェントconfig.yamlで構成されたポート)を入力します。 - リモート Syslog プロトコル: [UDP] を選択します(Bindplane エージェント構成のレシーバー タイプと一致する必要があります)。
- リモート syslog ホスト: Bindplane エージェント ホストの IP アドレスまたはホスト名を入力します(例:
- [次へ] をクリックします。
- エクスポートするデータタイプを構成します。
- [アクティビティ] のスライダーを有効にします。
- [アクティビティ] の [適用先] プルダウンで、SharePoint アクティビティを含めるようにフィルタを設定します。
- [アプリが次の値と等しい] を選択し、[Microsoft SharePoint Online] と [Microsoft OneDrive for Business] を選択します。
- SharePoint に関連するポリシー アラートも受け取る場合は、[アラート] のスライダーを有効にします。
- [結果を編集してプレビュー] をクリックして、フィルタが想定されるアクティビティと一致することを確認します。
- [次へ] をクリックします。
- 概要ページに表示されたトークンをコピーして、安全な場所に保存します。
[完了] をクリックします。
ステップ 2: SIEM エージェント JAR ファイルをダウンロードして実行する
- Microsoft ダウンロード センターから SIEM エージェントをダウンロードします。
- SIEM エージェントが実行されるサーバーで、ダウンロードした ZIP ファイルを解凍します。
次のコマンドを使用して SIEM エージェントを実行します。
java -jar mcas-siemagent-0.87.20-signed.jar --token <TOKEN>
<TOKEN> は、Microsoft Defender ポータルからコピーしたトークンに置き換えます。
ステップ 3: サービスとして実行するように SIEM エージェントを構成する
ログ転送を継続的に行うには、自動的に開始するように SIEM エージェントを構成します。
Linux:
/etc/rc.localに run コマンドを追加するか、systemd サービスを作成します。java -jar /opt/mcas-siemagent/mcas-siemagent-0.87.20-signed.jar --token <TOKEN> &
Windows:
- スケジュール設定されたタスクを構成します。
- [タスク スケジューラ] を開きます。
- [ユーザーがログオンしているかどうかにかかわらず実行する] を指定して新しいタスクを作成します。
- トークン パラメータを使用して JAR ファイルを実行するようにアクションを設定します。
- [実行時間が次の時間を超えたらタスクを停止する] のチェックを外します。
ステップ 4: SIEM エージェントの接続を確認する
- Microsoft Defender ポータルで、[設定] > [クラウドアプリ] > [SIEM エージェント] に移動します。
- SIEM エージェントのステータスが [接続済み](緑色)になっていることを確認します。
Bindplane エージェント ホストで、syslog メッセージが受信されていることを確認します。
sudo journalctl -u observiq-otel-collector -fGoogle SecOps で
metadata.log_type = "SHAREPOINT"を使用してログを検索し、ログの取り込みを確認します。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック |
|---|---|---|
| 発生 | metadata.event_timestamp | 「MM/dd/yyyy HH:mm:ss A」、「MM/dd/yyyy HH:mm:ss a」、「M/d/yyyy HH:mm:ss A」の形式で日付フィルタを使用して解析されます。 |
| has_principal | metadata.event_type | has_principal と(has_target_resource または has_target)の場合は「USER_RESOURCE_ACCESS」、has_principal の場合は「STATUS_UPDATE」、それ以外の場合は「GENERIC_EVENT」に設定します。 |
| has_target_resource | metadata.event_type | |
| has_target | metadata.event_type | |
| metadata.product_name | metadata.product_name | 「SHAREPOINT」に設定します。 |
| EventData | metadata.product_version | 値が直接コピーされる |
| metadata.vendor_name | metadata.vendor_name | 「SHAREPOINT」に設定します。 |
| 作成済み | principal.asset.attribute.labels | Created のキー「Created」と LastModified のキー「Last Modified」を持つラベルを統合しました |
| LastModified | principal.asset.attribute.labels | |
| SamAccountName | principal.asset.hostname | 値を直接コピーする |
| SamAccountName | principal.hostname | 値を直接コピーする |
| データベース | principal.process.file.names | データベースから統合 |
| UserEmail | principal.user.email_addresses | メールアドレスの正規表現に一致する場合は UserEmail から統合 |
| ユーザー名 | principal.user.user_display_name | 値が直接コピーされる |
| EventType | security_result.description | 値が直接コピーされる |
| ディレクトリ | target.file.full_path | 値が直接コピーされる |
| 葉 | target.file.names | Leaf から統合 |
| ItemType | target.resource.type | 値を直接コピーする |
| SecUserURL | target.url | 値が直接コピーされる |
| SecUserRole | target.user.attribute.roles | SecUserRole の名前を持つロールを統合しました |
| SecUserEmail | target.user.email_addresses | メールアドレスの正規表現に一致する場合、SecUserEmail から統合 |
| SecGroupName | target.user.group_identifiers | SecGroupName から統合 |
| SecUserName | target.user.user_display_name | 値が直接コピーされる |
| SecSamAccountName | target.user.userid | 値が直接コピーされる |
変更ログ
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。