セキュリティイベントのログ記録
Pegaには、データやルールの変更監査、作業履歴の記録に加えて、セキュリティ関連のイベントをPegaRULES-SecurityEvent.logという名前のファイルに記録する機能があります。 このログファイルは、Dev StudioでConfigure > System > Operations > Logs > Log filesをクリックしてアクセスできます。
以下のアイテムは、セキュリティイベントログのエントリーの例です。 各エントリーがJSON形式を使用して記録されていることに注意してください。
{"id":"6e11a563-fd93-46d8-9de0-3963fb43a70f","eventCategory":"Security administration event","eventType":"security event configuration changed","appName":"Booking","tenantID":"shared","ipAddress":"192.168.118.1","timeStamp":"Fri 2019 Jul 12, 17:30:54:274","operatorID":"Admin@Booking","nodeID":"ff9ef7835fd4906aea82694c981938d0","message":"security event configuration has been modified.","requestorIdentity":"20190710T213105"}
{"id":"ed76e8a7-ea28-4e9a-8830-01e8e90301ae","eventCategory":"Authentication event","eventType":"Operator record change","appName":"Booking","tenantID":"shared","ipAddress":"192.168.118.1","timeStamp":"Fri 2019 Jul 12, 17:41:24:976","operatorID":"Admin@Booking","nodeID":"ff9ef7835fd4906aea82694c981938d0","requestorIdentity":"20190710T213105","operatorRecID":"DATA-ADMIN-OPERATOR-ID ADMIN@BOOKING","operatorRecName":"Admin","operation":"update"}
{"id":"ed76e8a7-ea28-4e9a-8830-01e8e90301ae","eventCategory":"Authentication event","eventType":"Operator record change","appName":"Booking","tenantID":"shared","ipAddress":"192.168.118.1","timeStamp":"Fri 2019 Jul 12, 17:41:24:976","operatorID":"Admin@Booking","nodeID":"ff9ef7835fd4906aea82694c981938d0","requestorIdentity":"20190710T213105","operatorRecID":"DATA-ADMIN-OPERATOR-ID ADMIN@BOOKING","operatorRecName":"Admin","operation":"update"}
Configure > Org & Security > Tools > Security > Security Event Configurationをクリックすると、記録するイベントの種類が表示されます。 その後、カスタムイベントのログ記録を有効または無効にすることができます。
補足: Security Event Configurationでは、カスタムイベントのみをオンまたはオフにすることができます。
セキュリティイベントの設定では、個々のカスタムイベントがログに記録されるタイミングを制御できません。 たとえば、データトランスフォームのステップまたはアクティビティステップでカスタムセキュリティイベントを記録するかどうかを制御するために、パラメーター化されたWhen Ruleを定義できます。 When Ruleパラメーターは、カスタムイベントのログ記録が有効になっているかどうかを確認するために、データページを介した参照を実行するために使用できます。
カスタムイベントのログ記録は、クライアントベースのアクセス制御(CBAC)の監査要件を満たすために使用できます。
以下のスクリプトを使用して、アクティビティJavaステップ内でカスタムイベントをログに記録できます。
tools.getSecEventLogger().logCustomEvent(PublicAPI tools, String eventType, String outcome, String message, Map<String, String> customFlds)
次のいずれかのパラメーター値を使用します。
- eventType:カスタムイベントを追跡するためのイベントタイプの名前
- outcome:イベントの成果
- message:ユーザーがイベントの一部としてログに記録する必要がある任意のメッセージ。
- customFlds:イベントの追加情報をログに記録するキーと値のペアのマップ。
しかし、Pega Platform™の将来のバージョンでアクティビティでのJavaステップの使用が制限される可能性があるため、長期的なアプローチとしてはRule-Utility-Functionを使用してこのAPIを実行するのが良いでしょう。
Pega Communityのトピック「Adding a custom security event」では、アクティビティ内にJavaステップを作成してカスタムセキュリティーイベントを記録する方法が説明されています。
関数を呼び出すコードにStringMap(Map<String, String>)customFlds
パラメーターの指定を要求するのは、複雑すぎます。 この関数は、代わりにテキストベースのValueGroupプロパティを承認できます。 そのValueGroupプロパティは、関数内でStringMapに変換できます。 以下の手順で、この関数を設定する方法を説明します。
- ライブラリと機能を作成します。
- 関数が4つのパラメーター(String、String、String、ClipboardProperty)を承認するようにします。
- 指定されたClipboardPropertyをValueGroupにします。
関数は、ValueGroup ClipboardPropertyを、ローカルに宣言されたMap customFlds変数に変換します。
PublicAPI tools = null;
PRThread thisThread = (PRThread)ThreadContainer.get();
if (thisThread != null) tools = thisThread.getPublicAPI();
else throw new PRAppRuntimeException("Pega-RULES", 0, "Unable to obtain current thread");
Map<String, String> customFldsMap = new HashMap<String, String>();
java.util.Iterator iter = customFlds.iterator();
while (iter.hasNext())
{ ClipboardProperty prop = (ClipboardProperty)iter.next();
customFldsMap.put(prop.getName(), prop.getStringValue());
}
tools.getSecEventLogger().logCustomEvent(tools, eventType, outcome, message, customFldsMap);
PRThread thisThread = (PRThread)ThreadContainer.get();
if (thisThread != null) tools = thisThread.getPublicAPI();
else throw new PRAppRuntimeException("Pega-RULES", 0, "Unable to obtain current thread");
Map<String, String> customFldsMap = new HashMap<String, String>();
java.util.Iterator iter = customFlds.iterator();
while (iter.hasNext())
{ ClipboardProperty prop = (ClipboardProperty)iter.next();
customFldsMap.put(prop.getName(), prop.getStringValue());
}
tools.getSecEventLogger().logCustomEvent(tools, eventType, outcome, message, customFldsMap);
以下のコードは、カスタムセキュリティイベントの例です。
{"id":"c86a4299-9355-418b-b95d-519f842693d1","eventCategory":"Custom event","eventType":"FooBla","appName":"Booking","tenantID":"shared","ipAddress":"192.168.118.1", "timeStamp":"Fri 2019 Jul 12, 17:46:05:284","operatorID":"Admin@Booking", "nodeID":"ff9ef7835fd4906aea82694c981938d0","outcome":"Fail","message":"FooBla failed","requestorIdentity":"20190710T213105"}
補足: すべてのカスタムセキュリティイベントのイベントカテゴリーは「Custom Event」です。 特定のカスタムセキュリティイベントタイプのログ記録を有効または無効にするには、(カスタム)eventTypeの値をWhen Ruleパラメーターとして使用する必要があります。 When Ruleでは、パラメーターを使用してノードレベルのデータページの参照を実行します。 参照により、カスタムeventTypeのログ記録が有効であることが示されると、When Ruleはtrueを返します。 その結果、カスタムセキュリティイベントログ関数(RUF)が呼び出されます。
このトピックは、下記のモジュールにも含まれています。
- セキュリティリスクの低減 v3
If you are having problems with your training, please review the Pega Academy Support FAQs.