リアルタイムイベントモニタリングを設定する
学習の目的
この単元を完了すると、次のことができるようになります。
- イベントマネージャーを使用してリアルタイムイベントモニタリングを設定する。
- プロファイルと権限セットを使用してリアルタイムイベントモニタリングへのユーザーアクセスを設定する。
- イベントモニタリング固有のプラットフォームイベントに登録する。
- 組織でのリアルタイムイベントの一般的な使用事例について説明する。
- Streaming Monitor アプリケーションを使用して、リアルタイムイベントを使用や表示する方法を挙げる。
このモジュールの課題では Trailhead Playground に付属するデータを使用するため、このモジュール用の新しい Trailhead Playground を作成してください。次の手順に従って、Trailhead Playground を作成します。
Trailhead Playground のユーザー名とパスワードを取得する
Trailhead Playground を開くところから始めましょう。このページの一番下までスクロールして、[起動] をクリックします。組織に [ログイン情報を取得する] というタブが表示されている場合は、以下の手順に従います。
表示されていない場合は、アプリケーションランチャー () で、[Playground Starter] をクリックして手順に従います。Playground Starter アプリケーションが表示されない場合は、Trailhead ヘルプの「Trailhead Playground のユーザー名とパスワードを確認する」を参照してください。
- [ログイン情報を取得する] タブをクリックして、ユーザー名をメモします。
- [パスワードをリセットする] をクリックします。これにより、ユーザー名に関連付けられているアドレスにメールが送信されます。
- メールに記載されたリンクをクリックします。
新しいパスワードを入力し、確認して、[パスワードを変更] をクリックします。
リアルタイムイベントモニタリングを設定する
まず [設定] に移動して、[クイック検索] ボックスにイベントマネージャー
と入力します。Enterprise 環境と Unlimited 環境ではデフォルトで LogoutEvent プラットフォームイベントオブジェクトにアクセスできますが、残りのイベントには Shield: Event Monitoring にアクセスするためのライセンスが必要です。アクセスできないが試用したい場合は、Developer Edition 組織でリアルタイムイベントを有効にできます。Developer Edition 組織に Event Monitoring アドオンサブスクリプションがある場合は、リアルタイムイベントモニタリングが搭載されています。Trailhead Playground 組織でもアクセスできます。イベントを有効にするには、使用するイベントに移動して、ストリーミングまたはストレージを有効にします。
リアルタイムイベントモニタリングへのアクセスを有効にする
リアルタイムイベントモニタリングへのユーザーアクセス権は、プロファイルと権限セットで設定できます。必要なユーザー権限は次のとおりです。
- イベントを参照する: 「リアルタイムイベントモニタリングデータの表示」
- トランザクションセキュリティポリシーを作成、編集、管理する: 「アプリケーションのカスタマイズ」
ユーザーアクセスを設定する手順は、次のとおりです。
1.[設定] から、次のいずれかの手順を実行します。
- [クイック検索] ボックスに
権限セット
と入力し、[権限セット] を選択します。 - [クイック検索] ボックスに
プロファイル
と入力し、[プロファイル] を選択します。
2.権限セットまたはプロファイルを選択します。
3.権限セットとプロファイルのどちらを使用するかに応じて、次のいずれかの手順を実行します。
- 権限セットまたは拡張プロファイルユーザーインターフェースで、権限を選択します。[設定の検索] ダイアログボックスに、
リアルタイムイベントモニタリングデータの表示
と入力します。[編集] をクリックし、オプションを選択して、[Save (保存)] をクリックします。「アプリケーションのカスタマイズ」権限についてもこの手順を繰り返します。 - 元のプロファイルユーザーインターフェースで、プロファイル名を選択し、[編集] をクリックします。トランザクションセキュリティポリシーを作成する予定の場合は、[リアルタイムイベントモニタリングを表示] と [アプリケーションのカスタマイズ] を選択します。[Save (保存)] をクリックします。
リアルタイムイベントモニタリングを有効にするほか、リアルタイムイベントオブジェクトに対するユーザー権限も設定します。リアルタイムイベントモニタリングオブジェクトに機密データが含まれていることがあります。
イベントモニタリング固有のプラットフォームイベントに登録する
リアルタイムイベントモニタリングは、通常はログに記録される一部のイベントを取得し、プラットフォームイベントを使用してストリーミングします。つまり、登録者であれば、プラットフォームイベントの場合と同じ方法でイベントを使用できます。ただし、プラットフォームイベントとは異なり、すべてのリアルタイムイベントがトリガーや宣言型ツールで登録されるわけではありません。
リアルタイムイベントモニタリングを使用する場合は、Salesforce によって公開される標準イベントに登録して組織のアクティビティを監視できます。このデータには、ストリーミング API クライアントを使用して任意の外部データシステムから登録できます。
データは、公開/登録モデルを使用してストリーミングされます。Salesforce がストリーミングデータをイベント登録チャネルに公開し、使用する側のアプリケーションがそのイベントチャネルに対する登録またはリスンによってほぼリアルタイムにデータを取得します。ストリーミングイベントは最大 3 日間保持されます。リアルタイムイベントモニタリングのストリーミングイベントは、プラットフォームイベントの配信割り当てに含まれません。システム保護制限が適用される場合があります。
EMP コネクタを使用して登録する
では、EMP コネクタを使用してプラットフォームイベントに登録する 1 つの方法を見てみましょう。
前提条件
- Git の「Downloads (ダウンロード)」から Git をインストールします。
- 「クイックスタート: Salesforce 開発のための Visual Studio Code」の手順を完了していない場合は、Visual Studio Code、コマンドラインインターフェース、Salesforce Extension Pack をインストールします。
- Java Development Kit の最新バージョンをダウンロードします (「Java Downloads (Java のダウンロード)」を参照)。
- 組織に信頼できる IP アドレス範囲を設定していない場合は、パスワードに追加するセキュリティトークンが必要です。詳細は、「セキュリティトークンのリセット」と「組織の信頼済み IP 範囲の設定」を参照してください。
ストリーミングのリアルタイムイベントを有効にする
1.ストリーミングのリアルタイムイベントである ReportEventStream を有効にします。
- Playground の [設定] で、[クイック検索] ボックスに
イベントマネージャー
と入力し、[イベントマネージャー] を選択します。 - [レポートイベント] で、ドロップダウンから [ストリーミングを有効化] と [ストレージを有効化] を選択します。
2.EMP コネクタプロジェクトファイルをダウンロードするために、ターミナルを開きます。
- Windows の場合は、ホーム画面の下部の [スタート] ボタンの横にある検索ボックスに
CMD
と入力します。 - Mac の場合は、[Command] ボタンとスペースバーを同時に押して、画面に検索バーを開きます。次に、
ターミナル
と入力してターミナルを検索します。左側のサイドバーの [ターミナル] をダブルクリックして、Mac のターミナルを開きます。
3.ターミナルで、次のコマンドを使用して GitHub のリポジトリをコピーします。
git clone https://github.com/forcedotcom/EMP-Connector
4.Visual Studio Code で、[ファイル] | [フォルダーを開く] をクリックします。
5.コピーした EMP コネクタのフォルダーを選択します。
6.ブラウザーの [Extension Pack for Java (Java 向け拡張機能パック)] ページに移動します。
7.[Install (インストール)] をクリックします。
8.[Open Visual Studio Code (Visual Studio Code を開く)] をクリックします。
9.[Install (インストール)] をクリックします。
10.[実行] | [構成を開く] をクリックします。
11.[Java] をクリックします。
12.Java 言語サーバーを標準モードで実行するように促されたら、[はい] を選択します。launch.json という新しいファイルが開きます。
13.launch.json で、"mainClass":"com.salesforce.emp.connector.example.LoginExample"
という行と、この行の下の "projectName":"emp-connector"
という行を見つけます。
14.カンマを追加して Enter キーを押し、新しい行に "args":"username password /event/ReportEventStream"
というテキストをコピーします。
15.username と password を各自の Playground ログイン情報に置き換えます。
16.ファイルを保存します。
17.main/java/com/salesforce/emp/connector/example/LoginExample.java を見つけて右クリックし、[実行] を選択します。
18.ターミナルウィンドウが開き、サブスクリプションが表示されます。
19.イベントメッセージを生成するために、イベントを起動するアクションを実行します。ReportEventStream の場合は、Playground で任意のレポートを実行します。
- Playground でレポートを作成するには、 をクリックして
レポート
と入力します。 - [レポート] をクリックします。
- [新規レポート] をクリックします。
- [ケース] を選択して、[Next (次へ)] をクリックします。
- [実行] をクリックします。
20.レポートを実行後、EMP コネクタがイベント通知を受信し、コンソールに出力します。出力は次のようになります。
{ "schema": "mn_C9tvH0ofZbpxU2XthsQ", "payload": { "EventDate": "2020-11-18T22:39:26.000Z", "Description": null, "EvaluationTime": 0.0, "NumberOfColumns": 7, "Operation": "ReportRunAndNotificationSent", "DashboardId": null, "LoginHistoryId": "0YaB000003NcnpbKAB", "Name": "Total Cases Created", "IsScheduled": false, "ColumnHeaders": "[OWNER, ACCOUNT.NAME, SUBJECT, CREATED_DATE, AGE, OPEN, CLOSED]", "Format": "Tabular", "CreatedById": "005B0000006xcmjIAA", "OwnerId": "005B00000078z7S", "SessionKey": "+Tned3rTsZ5a1hBA", "PolicyOutcome": null, "Records": "{\"totalSize\":26,\"rows\":[{\"datacells\":[\"005B00000078z7SIAQ\",\"500B00000062HLqIAM\",\"500B00000062HLqIAM\",\"001B000001KYEVsIAP\"]},{\"datacells\":[\"005B00000078z7SIAQ\",\"500B00000062HLrIAM\",\"500B00000062HLrIAM\",\"001B000001KYEVxIAP\"]},{\"datacells\":[\"005B00000078z7SIAQ\",\"500B00000062HLsIAM\",\"500B00000062HLsIAM\",\"001B000001KYEVxIAP\"]},{\"datacells\":[\"005B00000078z7SIAQ\",\"500B00000062HLtIAM\",\"500B00000062HLtIAM\",\"001B000001KYEVyIAP\"]},{\"datacells\":[\"005B00000078z7SIAQ\",\"500B00000062HLuIAM\",\"500B00000062HLuIAM\",\"001B000001KYEVyIAP\"]},{\"datacells\":[\"005B00000078z7SIAQ\",\"500B00000062HLvIAM\",\"500B00000062HLvIAM\",\"001B000001KYEVyIAP\"]}]}", "EventIdentifier": "92b7815d-acfd-465e-9b1b-54d3a2833571", "DisplayedFieldEntities": "Account,Owner,Case", "RelatedEventIdentifier": null, "ExecutionIdentifier": "cb56d782-ee73-44c5-b4b6-10a9e014b6ae", "RowsProcessed": 26.0, "RowsReturned": null, "ReportId": null, "Sequence": 1, "DashboardName": null, "EventSource": "Lightning", "SourceIp": "Salesforce.com IP", "Scope": "organization", "Username": "rburgle@force.com", "UserId": "005B00000078z7SIAQ", "CreatedDate": "2020-11-18T22:39:36.796Z", "ExportFileFormat": null, "LoginKey": "B9AyV/N2mnoXMyXc", "PolicyId": null, "GroupedColumnHeaders": null, "QueriedEntities": "Case", "SessionLevel": "STANDARD" }, "event": { "replayId": 127201 } }
この出力の行 7 (NumberOfColumns) と行 19 (totalSize) にレポートのサイズに関する情報が示されています。行 30 はログインしたクライアントの IP アドレスです。行 10 はログイン履歴で、ユーザーセッションを追跡して、ユーザーアクティビティと特定の一連のレポートイベントを関係付けることができます。行 18 はイベントに関連付けられているトランザクションポリシーの結果 (ユーザーが 2 要素認証要求を承認したか却下したか) です。
この例のイベントからわかるとおり、ユーザーのアクティビティにまつわる断片をつなぎ合わせて全容を知ることができます。LoginHistoryID が同じ他のイベントを探し、見つかったイベントをたどってユーザーの元の認証を突き止めれば、特定の一連のレポートイベントに関するアクティビティを追跡できます。また、PolicyOutcome を確認することも一案です。ポリシーをトリガーした操作の実行がブロックされた場合、無効なパスワードが何度も入力された場合、認証アプリケーションで 2 要素承認要求が却下された場合は、そのユーザーが認証されていない情報にアクセスしようとしたことを示す危険信号である場合があります。
リアルタイムイベントをストリーミングする
前述のとおり、リアルタイムイベントはプラットフォームイベントを使用してストリーミングされ、関連する任意のクライアントアプリケーションで使用できます。監視にサードパーティアプリケーションを使用している場合は、リアルタイムイベントに登録して、そこで評価できます。イベントを検証する優れた方法となるのが、Salesforce Labs の Streaming Monitor アプリケーションです! Streaming Monitor では、イベントの種別を選択し、lighting-emp-api コンポーネントを使用して多数のイベントに登録することができます。詳細は、Salesforce のストリーミング機能に関するブログ投稿を参照してください。
リソース
- Salesforce 開発者ブログ: リアルタイムイベントモニタリングの概要
- Salesforce ヘルプ: リアルタイムイベント監視へのアクセス権の有効化
- Salesforce ヘルプ: リアルタイムイベントモニタリング
- Salesforce ヘルプ: リアルタイムイベント監視のデータストリーミング
- Appexchange: Streaming Monitor
- Salesforce 開発者ブログ: 4 つのストリーミング API と監視ツールの復習
- Salesforce 開発者ドキュメント: プラットフォームイベントの登録
- Trailhead: クイックスタート: Salesforce 開発のための Visual Studio Code