この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Newer Version Available

This content describes an older version of this product. View Latest

PolicyCondition インターフェース

トランザクションセキュリティポリシーに基づいて、特定のイベントの発生時に実行するアクションを指定するクラスを実装できるようにする Apex インターフェースです。

名前空間

TxnSecurity

使用方法

Enhanced Transaction Security のより多くの機能とサポートを使用するには、PolicyCondition インターフェースではなく、EventCondition インターフェースを使用してください。

ヒント

evaluate メソッドは、トランザクションセキュリティポリシーで監視されているイベントが発生するとコールされます。通常の実装では、最初にイベントから関心のある項目を選択します。その項目をテストして、監視されている条件を満たすどうか確認します。条件を満たす場合、メソッドは true を返します。

たとえば、同じユーザが複数回ログインしていないかチェックするトランザクションセキュリティポリシーがあるとします。ログインイベントごとに、メソッドは、ログインしているユーザにすでに進行中のログインセッションがあるかどうかをチェックし、ある場合は true を返します。

ポリシー条件インターフェースが正しく機能することを確認するために、テストクラスを用意することをお勧めします。ポリシーを Sandbox から本番組織に移動するか、変更セットと共に移動するか、または他の方法で移動するかに関係なくテストが必要です。たとえば、ポリシーを本番環境に移行する前に、開発環境でポリシーをテストします。

エラーが発生する可能性があるため、カスタムポリシーには DML ステートメントを含めないでください。トランザクションポリシーの評価中に Apex を介してカスタムメールを送信すると、レコードが別のレコードに明示的に関連付けられていなくても、エラーが表示されます。詳細は、『Apex 開発者ガイド』「Apex DML 操作」を参照してください。

PolicyCondition のメソッド

PolicyCondition のメソッドは次のとおりです。

evaluate(event)

トランザクションセキュリティポリシーに対してイベントを評価します。イベントでポリシーがトリガされる場合、true が返されます。

署名

public Boolean evaluate(TxnSecurity.Event event)

パラメータ

event
型: TxnSecurity.Event
トランザクションセキュリティポリシーに対して確認するイベント。

戻り値

型: Boolean

ポリシーがトリガされると、True が返されます。たとえば、ユーザをシングルログインセッションに限定するポリシーがあるとします。あるユーザが 2 つ目のログインをしようとすると、ポリシーのアクションによって現在のセッションを終了するよう求められます。また、Salesforce システム管理者にもメール通知が送信されます。evaluate() メソッドは、ログインイベントのみを確認し、ユーザの 2 つ目のログインである場合に True を返します。トランザクションセキュリティシステムはアクションと通知を実行しますが、evaluate() メソッドは実行しません。

トランザクションセキュリティの Apex ポリシー

すべてのトランザクションセキュリティポリシーでは、Apex TxnSecurity.PolicyCondition または TxnSecurity.EventCondition インターフェースを実装する必要があります。
使用可能なエディション: Salesforce Classic および Lightning Experience
使用可能なエディション: Enterprise Edition、Performance Edition、Unlimited Edition、および Developer Edition

Salesforce Shield または Salesforce Event Monitoring アドオンサブスクリプションが必要です。


ポリシーの Apex インターフェースを生成する前に条件値を指定していなかった場合、後で条件を追加できます。条件を変更するために、ポリシーを有効化する前に、Apex コードを編集して条件を含めることができます。条件を含めないと、ポリシーはトリガされません。

エラーが発生する可能性があるため、カスタムポリシーには DML ステートメントを含めないでください。トランザクションポリシーの評価中に Apex を介してカスタムメールを送信すると、レコードが別のレコードに明示的に関連付けられていなくても、エラーが表示されます。詳細は、『Apex 開発者ガイド』「Apex DML 操作」を参照してください。

トランザクションセキュリティポリシーを削除しても、TxnSecurity.PolicyCondition 実装や TxnSecurity.EventCondition 実装は削除されません。Apex コードを他のポリシーで再利用できます。

TxnSecurity.PolicyCondition を実装する Apex クラスの API コールアウトを使用する場合は、[設定] でトランザクションセキュリティポリシーを作成するときに、アクションを選択する必要があります。アクションとして [なし] を選択した場合は、ポリシーを実行できません。詳細は、『Apex 開発者ガイド』の「Apex を使用したコールアウトの呼び出し」を参照してください。

従来の Apex トランザクションセキュリティの実装例

ここでは、従来の Apex トランザクションセキュリティの実装例を示します。
使用可能なエディション: Salesforce Classic (一部の組織で使用可能) および Lightning Experience の両方
使用可能なエディション: Enterprise Edition、Performance Edition、Unlimited Edition、および Developer Edition

Salesforce Shield または Salesforce Event Monitoring アドオンサブスクリプションが必要です。




これらの例は、廃止されている従来のトランザクションセキュリティフレームワークの一部です。これらの例では、PolicyCondition インターフェースが使用されています。拡張トランザクションセキュリティフレームワークのより多くの機能とサポートを使用するには、代わりに EventCondition インターフェースを使用してください。

警告

複数のログイン

この例では、過去 24 時間でいずれかのユーザが異なる IP アドレスからログインしたときにトリガされるポリシーが実装されています。
特定の IP アドレス からのログイン

この例では、セッションが特定の IP アドレスから作成されたときにトリガされるポリシーが実装されています。
データのエクスポート

この例では、たとえばデータローダによって、1,000 件以上のリードがエクスポートされたときにトリガされるポリシーを実装します。EntityName は、取引先や取引先責任者などのエンティティの名前を含む、イベント内の項目です。
レポートへのアクセス

このポリシーは、いずれかのユーザがレポートにアクセスしたときにトリガされます。
Localhost ログイン

この例では、ログインポリシーで IP アドレスを使用します。このポリシーは、localhost からログインがあるとトリガされます。

[トランザクションセキュリティポリシー] ページで、localhost ログインをブロックするポリシーを作成します。次に生成された Apex ポリシーを示します。

大量データの移行

このポリシーは、API を使用して 2,000 件以上のレコードがダウンロードされたときにトリガされます。

システム管理者または API 権限のある他の顧客は、SOAP API、REST API、または Bulk API を使用して、すべての顧客データを一括ダウンロードできます。このセキュリティポリシーは、API ベースのデータのダウンロードを 2,000 レコードに制限し、ポリシーがトリガされた場合にシステム管理者にリアルタイムで通知します。

機密データへのアクセス

このポリシーは、特定のレポートにアクセスする全員に 2 要素認証の使用を義務付けます。

Salesforce の四半期レポートには非公開の機密データを記載できます。さらに、これらのレポートにアクセスするチームに、このデータを参照する前に必ず高保証の 2 要素認証 (2FA) を使用させることができます。このポリシーは 2FA を義務付けますが、チームに 2FA の要件を満たす手段がなければ高保証セッションを提供できません。前提条件として、まず Salesforce 環境に 2FA を設定します。

この例では、特定のレポートに 2FA を適用するポリシーの機能が強調表示されています。ここで定義されるレポートは、「Quarterly Report」(四半期レポート) という名前のレポートです。レポートにアクセスするユーザは、2FA を使用して高保証セッションを設定する必要があります。

ブラウザチェック

このポリシーは、オペレーティングシステムとブラウザの組み合わせが分かっているユーザが、異なるオペレーティングシステム上で別のブラウザを使用してログインしようとするとトリガされます。

多くの組織では、標準ハードウェアを設定し、さまざまなブラウザの特定のバージョンをサポートしています。この標準を使用して、通常と異なるデバイスからログインが発生したときにアクションを行うことにより、影響が大きいユーザのセキュリティリスクを軽減できます。たとえば、自社の CEO が通常はサンフランシスコから MacBook を使用するか、iPhone で Salesforce モバイルアプリケーションを使用して Salesforce にログインするとします。別の場所から Chromebook を使用したログインが発生した場合、それは非常に疑わしいと言えます。企業役員が使用するプラットフォームをハッカーが知っているとは限らないため、このポリシーによりセキュリティ侵害の可能性が低減されます。

この例では、顧客の組織は、CEO が OS X と Safari ブラウザを実行する MacBook を使用していることを知っているとします。その他のものを使用して CEO のログイン情報でログインしようとすると、自動的にブロックされます。

国ごとのログインのブロック

このポリシーは、国ごとにアクセスをブロックします。

組織でリモートオフィスを設置したりグローバルプレゼンスを高めたりすることができますが、国際法に従って Salesforce 組織へのアクセスを制限する必要のある場合があります。

この例では、北朝鮮からログインしているユーザをブロックするポリシーを作成します。ユーザが北朝鮮にいながら企業 VPN を使用している場合は、VPN ゲートウェイがシンガポールか米国にあるものと考えられます。この VPN ゲートウェイから Salesforce が米国内に所在する会社の IP アドレスを確認するため、ログインに成功することがあります。

郵便番号や市区郡など、他の値へのアクセスを制限することもできます。

オペレーティングシステムのブロック

このポリシーは、Android OS の旧バージョンを使用しているユーザのアクセスをブロックします。

特定のモバイルプラットフォームの脆弱性や、Salesforce にアクセス中にスクリーンショットをキャプチャしてデータを読み取る機能に懸念のある場合があります。デバイスがセキュリティクライアントを実行していない場合、明確に特定された既知の脆弱性があるオペレーティングシステムを使用しているデバイスプラットフォームからのアクセスを制限することができます。このポリシーは、Android 5.0 以前を使用するデバイスをブロックします。

特定のコンテンツのブロック

このポリシーは、投稿された Chatter テキストを検索して指定された語をブロックします。

投稿内の特定の語をスキャンまたは検索できます。この例では、「Salesforce」という語が含まれる投稿を検索し、それらの投稿をブロックします。語のリストをループ処理したり、語の出現数の累計値を継続的に取得したりする条件を記述することもできます。

投稿全体のコンテンツを比較する場合は、equals 文字列メソッドを使用し���いでください。代わりに、例で示したように、contains または containsIgnoreCase を使用します。Chatter 設定で、絵文字やリッチテキストが許可されている場合、それらの項目は Chatter 投稿の本文に含まれます。たとえば、リッチテキストで投稿「This is text.」「<p>This is text.</p>」として保存される可能性があります。equals メソッドを使用している場合、埋め込まれたタグにより、本来同一の比較テキストが投稿の本文と一致しなくなります。

メモ

接続アプリケーションのブロック

このポリシーは、API アクセスが設定された接続アプリケーションによる大量データへのアクセスをブロックします。

時として、共有または取引先のアクセス権設定の定義により、接続アプリケーションに組織全体のデータにアクセスする API 権限が設定されていることがあります。他方、接続アプリケーションのエンドユーザはアクセスが特定のデータセットに制限されています。この矛盾により、API キーを特定し、データベースに直接コマンドライン検索を実行してリードを探し出すことでセキュリティリスクが増大することがあります。次のポリシーは、こうした状況を回避して、会社のリード情報に関するデータの損失を阻止します。