執筆者:Salesforce アーキテクト
背景と応用シナリオ
エンタープライズレベルで Salesforce を活用する組織が増えるにつれ、プラットフォームの透明性と可監査性の確保は、我々アーキテクトにとって最重要課題の一つとなります。数百、数千のユーザーが日々操作を行う中で、「誰が、いつ、どこで、何をしたのか」を正確に把握することは、セキュリティインシデントの防止、コンプライアンス要件への準拠、そしてシステム全体のパフォーマンス維持に不可欠です。しかし、標準的な監査証跡だけでは、ユーザー行動の深層にある文脈や、パフォーマンスのボトルネックとなっている根本原因を特定するには不十分な場合があります。
ここで強力なソリューションとなるのが Event Monitoring (イベントモニタリング) です。Event Monitoring は、Salesforce 組織内で発生する詳細なイベントデータをログファイルとして提供する機能です。これにより、我々アーキテクトは、プラットフォームの利用状況を微視的なレベルで分析し、プロアクティブなガバナンス体制を構築するための貴重なインサイトを得ることができます。
具体的な応用シナリオは多岐にわたります。
セキュリティとコンプライアンス強化
- データ漏洩の検知: 例えば、あるユーザーが深夜に大量のレポートをエクスポートした場合、それは機密情報持ち出しの兆候かもしれません。
ReportExport
イベントを監視することで、このような異常なアクティビティを即座に検知し、調査を開始できます。 - 権限昇格の監視: システム管理者のような特権ユーザーの操作は、組織に与える影響が大きいため、厳格な監視が必要です。
Login
イベントや設定変更の監査ログと組み合わせることで、不審なログイン試行や権限の不正利用を追跡できます。 - コンプライアンス監査対応: GDPR や SOX 法などの規制要件では、特定のデータへのアクセス記録が求められます。Event Monitoring は、誰がどのレコードにアクセスしたかの詳細な証跡を提供し、監査レポートの作成を容易にします。
パフォーマンスの最適化
- 低速なページの特定: ユーザーエクスペリエンスを損なうパフォーマンスの低下は、ビジネスの生産性に直結します。
VisualforceRequest
やLightningPageView
イベントのログを分析すれば、読み込み時間が長いページを特定し、その原因(複雑なクエリ、コンポーネントの設計など)を深掘りできます。 - 非効率な Apex/API コールの特定:
ApexExecution
イベントやAPI
イベントのログには、実行時間、CPU 時間、DB 時間といった詳細なパフォーマンスメトリクスが含まれています。これにより、ガバナ制限に抵触しやすい、あるいはシステムリソースを過剰に消費しているコードを特定し、リファクタリングの対象とすることができます。
ユーザーアダプション(利用定着)の分析
- 機能利用状況の把握: どのオブジェクトが頻繁に利用され、どの機能が全く使われていないのかをデータに基づいて把握できます。これにより、トレーニングの必要性を判断したり、ユーザーインターフェースの改善点を特定したりするのに役立ちます。
- ユーザー行動パターンの理解: ユーザーがどのような順序で画面を遷移し、どのような操作を行っているかを分析することで、ビジネスプロセスの非効率な点を発見し、改善のヒントを得ることができます。
原理の説明
Event Monitoring の中核をなすのは、EventLogFile という Salesforce オブジェクトです。これは、組織内で発生した特定の種類のイベントを記録した、読み取り専用の CSV 形式のログファイルを含むオブジェクトです。アーキテクトとして、このオブジェクトの仕組みを理解することは極めて重要です。
各 EventLogFile
レコードには、特定の EventType (イベント種別) に関連するデータが含まれています。EventType は、追跡されるユーザーアクティビティやシステムイベントの種類を定義します。例えば、以下のような主要な EventType があります。
- Login: ユーザーのログイン試行(成功・失敗)に関する情報。
- Logout: ユーザーのログアウトに関する情報。
- API: 受信 SOAP および REST API コールに関する情報。
- ReportExport: ユーザーがレポートをエクスポートした際の情報。
- ApexExecution: Apex クラスおよびトリガーの実行に関するパフォーマンスデータ。
- VisualforceRequest: Visualforce ページの読み込みパフォーマンスに関するデータ。
- LightningInteraction: Lightning Experience でのユーザーインタラクション(ボタンクリックなど)に関する情報。
これらのイベントは Salesforce によって継続的に収集され、通常は 24 時間ごとに日次のログファイルとして集約されます。生成されたログファイルは EventLogFile
オブジェクトのレコードとして保存され、API を介してアクセス可能になります。データへのアクセス方法は主に2つあります。
- API を介した直接アクセス: SOQL を使用して
EventLogFile
オブジェクトをクエリし、目的のログファイルを取得します。取得したファイルは CSV 形式であるため、外部の分析ツール(SIEM システム、データウェアハウスなど)に取り込んで詳細な分析を行うアーキテクチャに適しています。 - Event Monitoring Analytics アプリケーション: Salesforce が提供する CRM Analytics (旧 Tableau CRM) ベースの標準アプリケーションです。これにより、ログデータを自動的に抽出し、事前に構築されたダッシュボードで視覚化できます。複雑な設定なしに、すぐにデータの傾向を把握したい場合に非常に有効な選択肢です。
データの保持期間についても理解しておく必要があります。日次で生成されるログファイルは、通常、作成後 30 日間保持されます。これ以上の期間データを保持する必要がある場合は、定期的にデータを抽出し、外部のストレージにアーカイブするアーキテクチャを設計する必要があります。
サンプルコード
Event Monitoring データをプログラムで扱う場合、最初のステップは EventLogFile
オブジェクトをクエリすることです。以下に示す例は、Salesforce の公式ドキュメントで解説されている標準的なアプローチに基づいています。
SOQL を用いたイベントログファイルのクエリ
まず、SOQL を使用して目的のログファイルを見つけます。例えば、昨日生成された「Login」イベントのログファイルを取得したい場合、次のようなクエリを実行します。
// SOQLクエリを使用して、昨日のログインイベントに関するEventLogFileレコードを取得します。 // EventType: 監視したいイベントの種類('Login', 'API', 'ReportExport' など)を指定します。 // LogDate: イベントログが生成された日付。ここでは 'YESTERDAY' を使用して昨日を指定しています。 SELECT Id, EventType, LogDate, LogFileLength, ApiVersion FROM EventLogFile WHERE EventType = 'Login' AND LogDate = YESTERDAY
このクエリは、指定された条件に一致する EventLogFile
レコードのリストを返します。返されたレコードの Id
は、次のステップでログファイルの中身を取得するために使用します。
REST API を用いたログファイルコンテンツの取得
SOQL クエリで取得した EventLogFile
の Id
を使用して、REST API 経由で実際のログファイル(CSV データ)を取得します。これは、SObject Blob Retrieve エンドポイントを利用して行います。
ステップ 1: 上記の SOQL クエリを実行して、対象となるレコードの Id
を取得します。ここでは例として 0AT3i000000Axxxxxxxxx
とします。
ステップ 2: 次の形式の URI に対して、認証済みの GET リクエストを送信します。
// REST API GETリクエストのエンドポイント // {Your_Salesforce_Domain}: Salesforce組織のMy DomainまたはインスタンスURL // {API_Version}: 使用するAPIのバージョン(例: v58.0) // {EventLogFile_Record_Id}: ステップ1で取得したレコードのID // LogFile: EventLogFileオブジェクトのコンテンツ(CSVデータ)を保持するフィールド名 GET /services/data/{API_Version}/sobjects/EventLogFile/{EventLogFile_Record_Id}/LogFile
具体例:
GET https://{Your_Salesforce_Domain}.my.salesforce.com/services/data/v58.0/sobjects/EventLogFile/0AT3i000000Axxxxxxxxx/LogFile
このリクエストに対するレスポンスボディには、CSV 形式の生ログデータが含まれています。このデータをパースすることで、個々のイベントの詳細(ユーザーID、タイムスタンプ、IPアドレスなど)を分析することができます。
アーキテクトとして、この一連のプロセスを自動化するETL(Extract, Transform, Load)パイプラインを設計することが、Event Monitoring の価値を最大化する鍵となります。
注意事項
Event Monitoring を導入・設計する際には、以下の点に留意する必要があります。
- ライセンスとコスト: Event Monitoring は標準機能ではなく、Salesforce Shield アドオンの一部として、または単体のアドオンとして提供される有償ライセンスです。ソリューションを設計する際には、このライセンスコストを必ず考慮に入れる必要があります。
- 権限設定: ログファイルにアクセスするには、ユーザーに「イベントログファイルを参照 (View Event Log Files)」および「API 有効 (API Enabled)」の権限が付与された権限セットが必要です。このデータには機密情報が含まれる可能性があるため、アクセス権限は最小限の原則に従い、慎重に管理する必要があります。
- API 制限とデータ量:
EventLogFile
のクエリやデータのダウンロードは、組織の API コール制限を消費します。大規模な組織では、ログファイルのサイズが非常に大きくなる可能性があります。そのため、API コールの効率的な利用(一括処理など)や、データダウンロードのタイミングを考慮した設計が求められます。 - データの遅延 (Latency): 標準の Event Monitoring は、日次でログファイルを生成するため、ほぼリアルタイムの監視には適していません。リアルタイムに近いイベント検知が必要な場合は、Real-Time Event Monitoring (リアルタイムイベントモニタリング) という別の機能(ストリーミング API を利用)を検討する必要があります。両者の特性を理解し、要件に応じて使い分けることが重要です。
- データの解釈: ログファイルは生の CSV データであり、そのままでは分析が困難です。各 EventType のフィールド定義を公式ドキュメントで正確に理解し、Event Monitoring Analytics アプリや、Splunk、Datadog、Einstein Analytics などの外部 BI/SIEM ツールと連携させて可視化・分析するアーキテクチャを推奨します。
まとめとベストプラクティス
Event Monitoring は、単なる監査ツールではありません。それは、Salesforce プラットフォームのセキュリティ、パフォーマンス、ガバナンスをデータドリブンで強化するための、アーキテクトにとっての戦略的な武器です。インシデントが発生した後に事後対応するリアクティブなアプローチから、異常の兆候を早期に検知して対処するプロアクティブな体制へと移行することを可能にします。
我々アーキテクトが Event Monitoring の価値を最大限に引き出すためのベストプラクティスは以下の通りです。
- 明確な目標設定から始める: 全てのイベントを闇雲に監視するのではなく、「特権ユーザーの操作監視」「特定オブジェクトへのアクセス追跡」「API パフォーマンスのベースライン測定」など、具体的で優先度の高いユースケースから着手します。
- 分析プロセスの自動化: 手動でのログダウンロードと分析は非現実的です。CRM Analytics や外部の SIEM ツールと連携させ、データの収集、分析、アラート通知を自動化するパイプラインを構築します。これにより、継続的な監視が実現します。
- ベースラインを確立する: 通常時のアクティビティやパフォーマンスのベースラインを確立することが、異常を検知する上で不可欠です。最初の数週間から数ヶ月はデータを蓄積し、「何が正常か」を定義します。
- 他のツールと組み合わせる: Event Monitoring は万能ではありません。Salesforce Optimizer の推奨事項、Apex のデバッグログ、ガバナ制限の使用状況など、他の診断ツールからの情報と組み合わせることで、より包括的なインサイトが得られます。
- ガバナンスプロセスへの組み込み: 監視によって得られたインサイトを、実際の改善アクションに繋げるための運用プロセスを定義します。例えば、定期的にセキュリティレビュー会議を開催し、Event Monitoring のダッシュボードを確認するなどのルールを設けることが重要です。
適切に設計・実装された Event Monitoring は、Salesforce プラットフォームの信頼性、安全性、そしてパフォーマンスを次のレベルへと引き上げます。それは、ビジネスの成長を支える、堅牢でスケーラブルなアーキテクチャの根幹をなす要素なのです。
コメント
コメントを投稿