トランザクションセキュリティポリシーの活用例
公開日: 2023.02.08
目次
この記事で学べること
イベントモニタリングに含まれるトランザクションセキュリティ機能により、お客様はご自身で定義されたルールに沿って、組織内の特定のアクセスを検知・遮断することができるようになります。
本記事では、このトランザクションセキュリティ機能を使い始めるにあたってどのような用途で活用できるのか、実際の条件例を交えながら具体的なポリシー例をご紹介します。
(おさらい) イベントモニタリングに含まれる2種類のログの違い
イベントモニタリングライセンスには、以下2種類のログが含まれます。
- リアルタイムイベントモニタリング:セキュリティインシデントの発生ログとレコードへのアクセスログ
- イベントモニタリング:イベント発生 / エラー / パフォーマンス分析用のイベントログ
この2種類のログの違いの詳細については、以下の記事をご参照ください。
このうち、今回ご説明するトランザクションセキュリティポリシーはリアルタイムイベントモニタリングログを利用します。
トランザクションセキュリティ機能の概要については、以下の記事をご参照ください。
条件ビルダーによるポリシー作成例
ApiEvent ポリシー例
[特定のオブジェクトにて照会に○○ミリ秒以上かかったAPIクエリを検出]
ポリシー設定 (“リード”オブジェクトの例)
- イベント: ApiEvent
- 条件ロジック: すべての条件に一致 (AND)
- 条件: 条件 / 演算子 / 値
- 照会されるエンティティ / [次の文字列と一致する] / “Lead” (任意のオブジェクト名)
- Elapsed Time / [>=] / “1,000” (任意の経過ミリ秒)

[2つ以上の特定のオブジェクトのデータローダによるエクスポートの検出]
ポリシー設定 (“取引先責任者”もしくは“リード”オブジェクトの例)
- イベント: ApiEvent
- 条件ロジック: カスタム条件ロジックに一致 → (1 OR 2) AND 3 AND 4
- 条件: 条件 / 演算子 / 値
- 1. 照会されるエンティティ / [次の文字列と一致する] / “Contact” (任意のオブジェクト名)
- 2. 照会されるエンティティ / [次の文字列と一致する] / “Lead” (任意のオブジェクト名)
- 3. クエリ / [次の文字列と一致する] / “Select”
- 4. Client / [次の文字列で始まる] / “DataLoader”

ListViewEvent ポリシー例
[APIを使用して照会されたリストビューの検出]
ポリシー設定
- イベント: ListViewEvent
- 条件ロジック: すべての条件に一致 (AND)
- 条件: 条件 / 演算子 / 値
- イベントソース / [次の文字列と一致する] / “API”
- メモ: API の代わりに Classic または Lightning を指定することで、UIを利用したリストビューの照会についても追跡することができます。

[2つ以上の特定のオブジェクトのリストビュー実行の検出]
ポリシー設定 (“取引先責任者”もしくは“リード”オブジェクトの例)
- イベント: ListViewEvent
- 条件ロジック: いずれかの条件に一致 (OR)
- 条件: 条件 / 演算子 / 値
- 照会されるエンティティ / [次の文字列と一致する] / “Contact” (任意のオブジェクト名)
- 照会されるエンティティ / [次の文字列と一致する] / “Lead” (任意のオブジェクト名)

[特定ドメインのユーザによるすべてのレコードもしくは特定のリストビュー実行の検出]
ポリシー設定
- イベント: ListViewEvent
- 条件ロジック: カスタム条件ロジックに一致 → (1 OR 2) AND 3
- 条件: 条件 / 演算子 / 値
- 1. 範囲 / [次の文字列と一致する] / “Everything”
- 2. 名前 / [次の文字列と一致する] / “SuperSecureListView” (任意のリストビュー名)
- 3. ユーザ名 / [次の文字列で終わる] / “@spy.mycompany.com” (任意のドメイン名)

LoginEvent ポリシー例
[特定のIPアドレスからのログインを検出]
ポリシー設定
- イベント: LoginEvent
- 条件ロジック: すべての条件に一致 (AND)
- 条件: 条件 / 演算子 / 値
- アクセス元 IP / [次の文字列と一致する] / “12.34.56.78” (任意のIPアドレス)
- メモ: [次の文字列で始まる] や [次の文字列を含む] 演算子を使用することで、特定のIPアドレス以外にも、社内ネットワークなど特定のサブネットに所属するIPアドレスからのログインを追跡することができます。

[特定のブラウザからのログインを検出]
ポリシー設定
- イベント: LoginEvent
- 条件ロジック: すべての条件に一致 (AND)
- 条件: 条件 / 演算子 / 値
- ブラウザ / [次の文字列を含む] / “Chrome” (任意のブラウザ名)
- メモ: 文字列を変えることで、Safari や Firefox ブラウザからのログインについても追跡することもできます。

ReportEvent ポリシー例
[特定のオブジェクトで○○件以上のレコードを表示したレポート実行の検出]
ポリシー設定 (“リード”オブジェクトの例)
- イベント: ReportEvent
- 条件ロジック: すべての条件に一致 (AND)
- 条件: 条件 / 演算子 / 値
- 処理行 / [>=] / “2,000”
- 照会されるエンティティ / [次の文字列と一致する] / “Lead” (任意のオブジェクト名)

[出力にメールアドレスが含まれる列を持つレポート実行の検出]
ポリシー設定
- イベント: ReportEvent
- 条件ロジック: すべての条件に一致 (AND)
- 条件: 条件 / 演算子 / 値
- 列名 / [次の文字列を含む] / “Email” (任意の列名)
- メモ: [次の文字列を含む] 演算子を使用することで、Email、Customer Email、 Email of Customer など、列名に“Email”を含む項目を全て当てはめることができます。

[2つ以上の特定のオブジェクトを元にしたレポートのエクスポートの検出]
ポリシー設定 (“取引先責任者”もしくは“リード”オブジェクトの例)
- イベント: ReportEvent
- 条件ロジック: カスタム条件ロジックに一致 → (1 OR 2) AND 3
- 条件: 条件 / 演算子 / 値
- 1. 照会されるエンティティ / [次の文字列と一致する] / “Contact” (任意のオブジェクト名)
- 2. 照会されるエンティティ / [次の文字列と一致する] / “Lead” (任意のオブジェクト名)
- 3. 演算子 / [次の文字列と一致する] / “ReportExported”

[高保証セッションレベルセキュリティがないセッションからの機密レポート参照を検出]
ポリシー設定
- イベント: ReportEvent
- 条件ロジック: カスタム条件ロジックに一致 → (1 OR 2) AND 3
- 条件: 条件 / 演算子 / 値
- セッションレベル / [次の文字列と一致する] / “LOW”
- セッションレベル / [次の文字列と一致する] / “STANDARD”
- 名前 / [次の文字列を含む] / “AccountList” (任意のレポート名)

PermissionSetEvent ポリシー例
[“パスワード無期限”権限のユーザへの割り当てを検出]
ポリシー設定
- イベント: PermissionSetEvent
- 条件ロジック: すべての条件に一致 (AND)
- 条件: 条件 / 演算子 / 値
- 権限リスト / [次の文字列を含む] / “PasswordNeverExpires”
- 演算子 / [次の文字列と一致する] / “AssignedToUsers”

Apexによるポリシー作成例
ReportEvent ポリシー例
[特定のプロファイルに属するユーザによるレポートのエクスポートを検出]
ポリシー設定
- イベント: ReportExport
- Apexコード例
global class BlockSpecificProfileReportExport implements TxnSecurity.EventCondition {
public boolean evaluate(SObject event) {
switch on event{
when ReportEvent reportEvent {
return evaluate(reportEvent);
}
when null {
return false;
}
when else{
return false;
}
}
}
private boolean evaluate(ReportEvent reportEvent) {
// Retrieve User's profile id.
User results = [SELECT Id, ProfileId
FROM User
WHERE Id = :reportEvent.UserId];
// Check ProfileId and report export operation.
if (results.ProfileId.equals('00eXXXXXXXXXXXXXX') && reportEvent.Operation.contains('ReportExport')) {
return true;
}
return false;
}
}
学習ツール
まとめ
トランザクションセキュリティを活用することにより、プロファイルや権限セットでは表現できないような細かなユーザアクセスの検出や制御を実現し、リアルタイムで検知・遮断することが可能となります。
条件ビルダーでは画面操作により誰でも簡単にポリシーを作成することができる一方で、より複雑な要件に対してはApexコードによるコーディングを用いたポリシーの作成にも対応しており、用途やシステム管理者の習熟度に応じて使い分けることが出来るようになっています。
公開日: 2023.02.08
この情報は役に立ちましたか?
ご意見お待ちしております。
フィードバックありがとうございます。
より役に立つために
役に立たなかった一番の理由を教えてください。