単純なポリシー移行の例
以下の単純な例を使用してポリシー移行の基本を説明します。
| 使用可能なインターフェース: Salesforce Classic および Lightning Experience |
| 使用可能なエディション: Enterprise Edition、Unlimited Edition、および Developer Edition Salesforce Shield または Salesforce Event Monitoring アドオンサブスクリプションが必要です。 |
ユーザが特定の IP アドレスでログインしたときにトリガされる従来のトランザクションセキュリティポリシーの Apex コードから始めましょう。
1global class SourceIpPolicyCondition implements TxnSecurity.PolicyCondition {
2 public boolean evaluate(TxnSecurity.Event e) {
3 String loginHistoryId = e.data.get('LoginHistoryId');
4 LoginHistory loginHistory = [SELECT SourceIp FROM LoginHistory WHERE Id = :loginHistoryId];
5 if (loginHistory.SourceIp.equals('1.1.1.1')) {
6 return true;
7 }
8 return false;
9 }
10}新しい拡張ポリシーで従来の動作を模倣するには、まず、ログインを監視するイベントオブジェクトの LoginEvent を選択します。従来のポリシーは、LoginHistory オブジェクトから SourceIP 項目を選択する SOQL クエリを実行することで、ユーザのソース IP を取得します。拡張ポリシーに類似のクエリをコーディングできますが、LoginEvent の SourceIP を直接使用するという、もっと良い方法にしましょう。この方法なら、条件ビルダーを使用できます。
条件ビルダーの条件を指定するページの [イベント] で [ログインイベント] を選択します。次に、条件「ソース IP 次の値と等しい 1.1.1.1」を追加します。アクションを指定してポリシーを有効化するための条件ビルダーページは、従来の UI と同じです。

Apex を使用する場合、拡張ポリシー用のコードは以下のようになります。
1global class SourceIpEventCondition implements TxnSecurity.EventCondition {
2 public boolean evaluate(SObject event) {
3 LoginEvent loginEvent = (LoginEvent) event;
4 if (loginEvent.SourceIp.equals('1.1.1.1')) {
5 return true;
6 }
7 return false;
8 }
9}Apex クラスで、TxnSecurity.EventCondition インターフェースを実装します。evaluate() メソッドは、汎用的な sObject パラメータを取り込みますが、それは常にリアルタイムイベントモニタリングイベントオブジェクトのいずれかになることが保証されています。sObject を適切なイベントオブジェクト (この場合は LoginEvent) にキャストします。その後で、その SourceIp 項目を使用してユーザがログインしている IP アドレスを判断します。その他のコードは従来のポリシーコードと同様です。