リアルタイムイベントモニタリングを設定する
学習の目的
この単元を完了すると、次のことができるようになります。
- イベントマネージャーを使用してリアルタイムイベントモニタリングを設定する。
- プロファイルと権限セットを使用してリアルタイムイベントモニタリングへのユーザーアクセスを設定する。
- イベントモニタリング固有のプラットフォームイベントに登録する。
- 組織でのリアルタイムイベントの一般的な使用事例について説明する。
- Streaming Monitor アプリケーションを使用して、リアルタイムイベントを使用や表示する方法を挙げる。
このモジュールの課題では Trailhead Playground に付属するデータを使用するため、このモジュール用の新しい Trailhead Playground を作成してください。次の手順に従って、Trailhead Playground を作成します。
Trailhead Playground のユーザー名とパスワードを取得する
Trailhead Playground を開くところから始めましょう。このページの一番下までスクロールして、[起動] をクリックします。組織に [Get Your Login Credentials (ログイン情報を取得する)] というタブが表示されている場合は、以下の手順に従います。
表示されていない場合は、アプリケーションランチャー で、[Playground Starter] をクリックして手順に従います。Playground Starter アプリケーションが表示されない場合は、Salesforce ヘルプの「Trailhead Playground のユーザー名とパスワードの調べ方」を参照してください。
-
[Get Your Login Credentials (ログイン情報を取得する)] タブをクリックし、ユーザー名をメモします。
-
[Reset My Password (パスワードのリセット)] をクリックします。ユーザー名に関連付けられているアドレスにメールが送信されます。
- メールに記載されたリンクをクリックします。
- 新しいパスワードを入力し、確認して、[Change Password (パスワードの変更)] をクリックします。
リアルタイムイベントモニタリングを設定する
まず [設定] に移動して、[クイック検索] ボックスにイベントマネージャー
と入力します。Enterprise 環境と Unlimited 環境ではデフォルトで LogoutEvent プラットフォームイベントオブジェクトにアクセスできますが、残りのイベントには Shield: Event Monitoring にアクセスするためのライセンスが必要です。アクセスできないが試用したい場合は、Developer Edition 組織でリアルタイムイベントを有効にできます。Developer Edition 組織に Event Monitoring アドオンサブスクリプションがある場合は、リアルタイムイベントモニタリングが搭載されています。Trailhead Playground 組織でもアクセスできます。イベントを有効にするには、使用するイベントに移動して、ストリーミングまたはストレージを有効にします。
リアルタイムイベントモニタリングへのアクセスを有効にする
リアルタイムイベントモニタリングへのユーザーアクセス権は、プロファイルと権限セットで設定できます。必要なユーザー権限は次のとおりです。
- イベントを参照する: 「リアルタイムイベントモニタリングデータの表示」
- トランザクションセキュリティポリシーを作成、編集、管理する: 「アプリケーションのカスタマイズ」
ユーザーアクセスを設定する手順は、次のとおりです。
1.[設定] から、次のいずれかの手順を実行します。
- [Quick Find (クイック検索)] ボックスに
Permission Sets
(権限セット) と入力し、[Permission Sets (権限セット)] を選択します。
- [Quick Find (クイック検索)] ボックスに
Profiles
(プロファイル) と入力し、[Profiles (プロファイル)] を選択します。
2.権限セットまたはプロファイルを選択します。
3.権限セットとプロファイルのどちらを使用するかに応じて、次のいずれかの手順を実行します。
- 権限セットまたは拡張プロファイルユーザーインターフェースで、権限を選択します。[Find Settings (設定の検索)] ダイアログボックスに、
View Real-Time Event Monitoring Data
(リアルタイムイベントモニタリングデータの表示) と入力します。[編集] をクリックし、オプションを選択して、[Save (保存)] をクリックします。「アプリケーションのカスタマイズ」権限についてもこの手順を繰り返します。
- 元のプロファイルユーザーインターフェースで、プロファイル名を選択し、[編集] をクリックします。トランザクションセキュリティポリシーを作成する予定の場合は、[リアルタイムイベントモニタリングを表示] と [アプリケーションのカスタマイズ] を選択します。[Save (保存)] をクリックします。
リアルタイムイベントモニタリングを有効にするほか、リアルタイムイベントオブジェクトに対するユーザー権限も設定します。リアルタイムイベントモニタリングオブジェクトに機密データが含まれていることがあります。
イベントモニタリング固有のプラットフォームイベントに登録する
リアルタイムイベントモニタリングは、通常はログに記録される一部のイベントを取得し、プラットフォームイベントを使用してストリーミングします。つまり、登録者であれば、プラットフォームイベントの場合と同じ方法でイベントを使用できます。ただし、プラットフォームイベントとは異なり、すべてのリアルタイムイベントがトリガーや宣言型ツールで登録されるわけではありません。
リアルタイムイベントモニタリングを使用する場合は、Salesforce によって公開される標準イベントに登録して組織のアクティビティを監視できます。このデータには、Pub/Sub API クライアントを使用して任意の外部データシステムから登録できます。
データは、公開/登録モデルを使用してストリーミングされます。Salesforce がストリーミングデータをイベント登録チャネルに公開し、使用する側のアプリケーションがそのイベントチャネルに対する登録またはリスンによってほぼリアルタイムにデータを取得します。ストリーミングイベントは最大 3 日間保持されます。リアルタイムイベントモニタリングのストリーミングイベントは、プラットフォームイベントの配信割り当てに含まれません。システム保護制限が適用される場合があります。
ストリーミングのリアルタイムイベント ReportEventStream を有効にする
ストリーミングのリアルタイムイベントである ReportEventStream を有効にする手順は、次のとおりです。
- Playground の [Setup (設定)] で、[Quick Find (クイック検索)] ボックスに Event Manager (イベントマネージャー) と入力し、[Event Manager (イベントマネージャー)] を選択します。
- [Report Event (レポートイベント)] で、ドロップダウンから [Enable Streaming (ストリーミングを有効化)] と [Enable Storage (ストレージを有効化)] を選択します。
Pub/Sub API を使用したプラットフォームイベントへの登録
では、Pub/Sub API を使用してプラットフォームイベントに登録する 1 つの方法を見てみましょう。
前提条件
- Java 11 (Java SE 11 Archive Downloads (Java SE 11 アーカイブのダウンロード) 参照)
- Apache Maven (Installing Apache Maven (Apache Maven のインストール) 参照)
- 組織に信頼できる IP アドレス範囲を設定していない場合は、パスワードに追加するセキュリティトークンが必要です。詳細は、「セキュリティトークンのリセット」と「組織の信頼済み IP 範囲の設定」を参照してください。
手順
-
pub-sub-api
GitHub リポジトリ: https://github.com/forcedotcom/pub-sub-api をフォークしてからコピーします。詳細は、GitHub Docs の Fork a repository (リポジトリのフォーク) を参照してください。リポジトリをフォークすることで、変更内容をフォーク済みリポジトリに保存できるようになります。リポジトリをフォークせずにコピーすることもできますが、その場合は、変更内容をpub-sub-api
リポジトリに保存することはできません。
- ターミナルウィンドウで、コピーした
pub-sub-api
フォルダー内のjava
フォルダーに移動します。
- Java クライアントパッケージを作成して、proto ファイルから必要なソースを生成します。
java
フォルダーでmvn clean install
と入力します。 - 次に、クライアントパラメーターを設定してから、設定パラメーターを
arguments.yaml
に書き込みます。
-
PUBSUB_HOST
とPUBSUB_PORT
のデフォルト値は維持します。
- [LOGIN_URL] に、Salesforce にログインする際に使用する URL を入力します。[My Domain (私のドメイン)] の URL (https://mycompany.my.salesforce.com など) または https://login.salesforce.com を使用してください。
- Playground Starter アプリケーションで Trailhead Playground 組織のユーザー名とパスワードを取得します。詳細は、「Trailhead Playground の管理」モジュールの「Trailhead Playground のユーザー名とパスワードの取得」単元を参照してください。
-
USERNAME
(ユーザー名) に Trailhead Playground ユーザー名を入力します。
-
PASSWORD
(パスワード) に Trailhead Playground パスワードを入力し、パスワードにセキュリティトークンを追加します。セキュリティトークンを取得するには、Salesforce ヘルプの「セキュリティトークンのリセット」を参照してください。
-
[TOPIC]
に/event/ReportEventStream
と入力します。
- 変更内容を保存します。
- ターミナルウィンドウで、最上位の
java
フォルダーに移動します。
- ReportEventStream イベントに登録するために、
./run.sh genericpubsub.Subscribe
と入力します。
- イベントメッセージを生成するために、イベントを起動するアクションを実行します。ReportEventStream の場合は、Playground で任意のレポートを実行します。
- Playground でレポートを作成するには、アプリケーションランチャーアイコンをクリックして Reports (レポート) と入力します。
-
[Reports (レポート)] をクリックします。
-
[New Report (新規レポート)] をクリックします。
- [Cases (ケース)] を選択して [Start Report (レポートを開始)] をクリックします。
-
[Run (実行)] をクリックします。
- Playground でレポートを作成するには、アプリケーションランチャーアイコンをクリックして Reports (レポート) と入力します。
- 出力は次のようになります。
{ "CreatedDate": 1717793026359, "CreatedById": "0058b00000I1GW8AAN", "EventIdentifier": "707db074-db25-4c72-b6f8-890ca7fa5b13", "UserId": "0058b00000HpWcRAAV", "Username": "k.n.hage@empathetic-shark-4d78ty.com", "EventDate": 1717793022000, "RelatedEventIdentifier": null, "LoginHistoryId": "0Ya8b0000GiFqkFCQS", "RowsProcessed": 26, "RowsReturned": null, "Operation": "ReportPreviewed", "QueriedEntities": "Case", "PolicyId": null, "PolicyOutcome": null, "EvaluationTime": 0, "SessionKey": "xAfEud9YsCJ6tMmi", "LoginKey": "mGeQ0eDvCsv5RkKl", "SessionLevel": "STANDARD", "SourceIp": "Salesforce.com IP", "DashboardId": null, "DashboardName": null, "EventSource": "Lightning", "ExecutionIdentifier": "7121db11-2082-44cc-a716-688266be7c5d", "ExportFileFormat": null, "IsScheduled": false, "NumberOfColumns": 7, "ColumnHeaders": "[Case.Owner.Name, Case.Account.Name, Case.Subject, Case.CreatedDate, AGE, OPEN, Case.IsClosed]", "GroupedColumnHeaders": null, "Description": null, "Format": "Tabular", "ReportId": null, "Records": "{\"totalSize\":26,\"rows\":[ {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMluzAAD\",\"5008b00002OMluzAAD\",\"0018b00002UroeBAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlv0AAD\",\"5008b00002OMlv0AAD\",\"0018b00002UroeGAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlv1AAD\",\"5008b00002OMlv1AAD\",\"0018b00002UroeGAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlv2AAD\",\"5008b00002OMlv2AAD\",\"0018b00002UroeHAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlv3AAD\",\"5008b00002OMlv3AAD\",\"0018b00002UroeHAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlv4AAD\",\"5008b00002OMlv4AAD\",\"0018b00002UroeHAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlv5AAD\",\"5008b00002OMlv5AAD\",\"0018b00002UroeLAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlv6AAD\",\"5008b00002OMlv6AAD\",\"0018b00002UroeFAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlv7AAD\",\"5008b00002OMlv7AAD\",\"0018b00002UroeFAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlv8AAD\",\"5008b00002OMlv8AAD\",\"0018b00002UroeJAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlv9AAD\",\"5008b00002OMlv9AAD\",\"0018b00002UroeKAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlvAAAT\",\"5008b00002OMlvAAAT\",\"0018b00002UroeKAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlvBAAT\",\"5008b00002OMlvBAAT\",\"0018b00002UroeIAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlvCAAT\",\"5008b00002OMlvCAAT\",\"0018b00002UroeFAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlvDAAT\",\"5008b00002OMlvDAAT\",\"0018b00002UroeFAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlvEAAT\",\"5008b00002OMlvEAAT\",\"0018b00002UroeKAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlvFAAT\",\"5008b00002OMlvFAAT\",\"0018b00002UroeLAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlvGAAT\",\"5008b00002OMlvGAAT\",\"0018b00002UroeBAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlvHAAT\",\"5008b00002OMlvHAAT\",\"0018b00002UroeBAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlvIAAT\",\"5008b00002OMlvIAAT\",\"0018b00002UroeCAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlvJAAT\",\"5008b00002OMlvJAAT\",\"0018b00002UroeCAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlvKAAT\",\"5008b00002OMlvKAAT\",\"0018b00002UroeGAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlvLAAT\",\"5008b00002OMlvLAAT\",\"0018b00002UroeGAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlvMAAT\",\"5008b00002OMlvMAAT\",\"0018b00002UroeGAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlvNAAT\",\"5008b00002OMlvNAAT\",\"0018b00002UroeGAAR\"]}, {\"datacells\":[\"0058b00000HpWcRAAV\",\"5008b00002OMlvOAAT\",\"5008b00002OMlvOAAT\",\"0018b00002UroeGAAR\"]}]}", "Name": "Total Cases Created", "OwnerId": "0058b00000HpWcR", "Scope": "organization", "Sequence": 1, "DisplayedFieldEntities": "Account,Owner,Case" }
出力の [NumberOfColumns]
項目にはレポートのサイズ、[RowsProcessed]
項目には返されたレコードの合計数が格納されます。[SourceIp]
項目には、ログインしたクライアントの IP アドレスが格納されます。[LoginHistoryId]
項目には、ログイン履歴が格納されます。これにより、ユーザーセッションを追跡して、ユーザーの活動を 10 行目の特定の一連のレポートイベントに関連付けることができます。[PolicyOutcome]
項目には、ユーザーが二要素認証要求を承認したか拒否したかなど、イベントに関連付けられたトランザクションポリシーのポリシー結果が格納されます。[Records]
項目には、レポートのデータが返され、レコード ID も含まれます。ReportEventStream も項目の説明は、『Platform Events Developer Guide (プラットフォームイベント開発者ガイド)』の ReportEventStream を参照してください。
この例のイベントからわかるとおり、ユーザーのアクティビティにまつわる断片をつなぎ合わせて全容を知ることができます。LoginHistoryID
が同じ他のイベントを探し、見つかったイベントをたどってユーザーの元の認証を突き止めれば、特定の一連のレポートイベントに関するアクティビティを追跡できます。また、PolicyOutcome
を確認することも一案です。ポリシーをトリガーした操作の実行がブロックされた場合、無効なパスワードが何度も入力された場合、認証アプリケーションで 2 要素承認要求が却下された場合は、そのユーザーが認証されていない情報にアクセスしようとしたことを示す危険信号である場合があります。
リアルタイムイベントをストリーミングする
前述のとおり、リアルタイムイベントはプラットフォームイベントを使用してストリーミングされ、関連する任意のクライアントアプリケーションで使用できます。監視にサードパーティアプリケーションを使用している場合は、リアルタイムイベントに登録して、そこで評価できます。
リソース
- Salesforce 開発者ブログ: リアルタイムイベントモニタリングの概要
- Salesforce ヘルプ: リアルタイムイベントモニタリングへのアクセス権の有効化
- Salesforce ヘルプ: リアルタイムイベントモニタリング
- Salesforce ヘルプ: リアルタイムイベントモニタリングのデータストリーミング
- Salesforce 開発者ドキュメント: プラットフォームイベントの登録