トランザクションセキュリティ通知の Apex ポリシー
| 使用可能なエディション: Salesforce Classic および Lightning Experience の両方 |
| 使用可能なエディション: Enterprise Edition、Performance Edition、Unlimited Edition、および Developer Edition Salesforce Shield または Salesforce Shield Event Monitoring アドオンサブスクリプションを購入する必要があります。 |
ポリシーの Apex インターフェースを生成する前に条件値を指定していなかった場合、後で条件を追加できます。条件を変更する場合は編集できます。ポリシーを有効化する前に、Apex コードを編集して条件を含めます。条件を含めないと、ポリシーはトリガされません。次に、条件の作成方法の例を示します。
カスタムポリシーに DML (Data Manipulation Language) ステートメントを追加しないでください。true または false のどちらに評価されるかに関係なく、トランザクションセキュリティポリシーが評価されると、DML 操作はロールバックされます。
トランザクションセキュリティポリシーを削除しても、TxnSecurity.PolicyCondition 実装は削除されません。Apex コードを他のポリシーで再利用できます。
この Apex ポリシーの例では、過去 24 時間でいずれかのユーザが複数の IP アドレスからログインしたときにトリガされるポリシーが実装されています。
例
1global class LoginPolicyCondition implements TxnSecurity.PolicyCondition {
2 public boolean evaluate(TxnSecurity.Event e) {
3 AggregateResult[] results = [SELECT SourceIp
4 FROM LoginHistory
5 WHERE UserId = :e.userId
6 AND LoginTime = LAST_N_DAYS:1
7 GROUP BY SourceIp];
8 if(!results.isEmpty() && results.size() > 1) {
9 return true;
10 }
11 return false;
12 }
13}この Apex ポリシーの例では、セッションが特定の IP アドレスから作成されたときにトリガされるポリシーが実装されています。
例
1global class SessionPolicyCondition implements TxnSecurity.PolicyCondition {
2 public boolean evaluate(TxnSecurity.Event e) {
3 AuthSession eObj = [SELECT SourceIp FROM AuthSession WHERE Id = :e.entityId];
4 if(eObj.SourceIp == '1.1.1.1' ){
5 return true;
6 }
7 return false;
8 }
9}この DataExport ポリシーでは、いずれかのユーザがデータローダ経由でデータをエクスポートしたときにトリガされるポリシーが実装されています。
例
1global class DataExportPolicyCondition implements TxnSecurity.PolicyCondition {
2 public boolean evaluate(TxnSecurity.Event e) {
3 if(e.data.get('SourceIp') == '1.1.1.1' ){
4 return true;
5 }
6 return false;
7 }
8}この Apex ポリシーは、いずれかのユーザがレポートにアクセスしたときにトリガされます。
例
1global class ReportsPolicyCondition implements TxnSecurity.PolicyCondition {
2 public boolean evaluate(TxnSecurity.Event e) {
3 if(e.data.get('SessionLevel') == 'STANDARD' ){
4 return true;
5 }
6 return false;
7 }
8}この Apex ポリシーは、いずれかのユーザが接続アプリケーションにアクセスしたときにトリガされます。
例
1global class ConnectedAppsPolicyCondition implements TxnSecurity.PolicyCondition {
2 public boolean evaluate(TxnSecurity.Event e) {
3 if(e.data.get('SessionLevel') == 'STANDARD' && (e.entityId == '0CiD00000004Cce')){
4 return true;
5 }
6 return false;
7 }
8}