こんにちは。にいるです。
Salesforceは奥が深いですね。
今回の上級アドミンについても試験範囲が広すぎて、道が長いです(笑)
前回は「セッションベースの権限セット」について学習しました。
※記事はこちらからご覧いただけます。
今回はトランザクションセキュリティについてご紹介したいと思います。
1.トランザクションセキュリティとは?
まず最初に、トランザクションセキュリティには従来型と拡張型のものがあります。
従来型のものは標準オブジェクトでしか使用できないです。
今回は従来型のトランザクションセキュリティについて説明します。
トランザクションセキュリティをロボットと考えてください。
そのロボットが、Salesforce内に発生したイベントをポリシー(作成した何をどうするかのルール)に従い、処理します。
つまり、何かあった時に何をするかというルールを決めて自動でその対応ができるということですね!
※トランザクションセキュリティを使用するにはSalesforce Shield か、
Salesforce Shield Event Monitoring アドオンサブスクリプションを購入する必要があります。
2.トランザクションセキュリティポリシーについて
では実際にトランザクションセキュリティポリシーで何ができるかを見ていくのと同時に、トランザクションセキュリティポリシーの中身についても見ていきたいと思います。
2-1.ポリシーの種類
ポリシーには3つの進行状態があります。
それぞれ使用可能、有効化、トリガ済みになります。
使用可能とは、作成したポリシー全てです。
有効化とは、有効化した状態です。
トリガ済みとは、全ての条件が揃い有効化されているポリシーが稼働している状態です。
2-2.イベント
イベントには4つの種類があります。
ログイン、データのエクスポート、リソースアクセス、エンティティです。
それぞれのイベントで選べるリソースは下記です。
種類 | リソース |
---|---|
ログイン | ログイン履歴 |
データのエクスポート | ケース リード 取引先 |
リソースアクセス | レポート & ダッシュボード 接続アプリケーション |
エンティティ | chatter コメント chatter メッセージ chatter 投稿 |
2-3.通知
通知種類は、メール、アプリ内通知、その両方、通知しないの4つがあります。
受信者に設定できるユーザは「すべてのデータの編集」権限と「設定の参照」権限を持つ必要があります。
個人的にはアプリ内通知でいいと思いますが、見逃す可能性もあるためできれば両方にしておくことをおすすめします。
2-4.アクション
実行できるアクションは4つあります。
「なし(通知のみ)」、「ブロック」、「2要素認証」、「ログインするためにセッションを終了」です。
「なし(通知のみ)」はテストでの使用に適しています。
「ブロック」は操作を制限します。
「2要素認証」は2要素認証を必須にします。
「ログインするためにセッションを終了」では現在のセッションを終了することが可能です。
3.トランザクションセキュリティの設定方法
サンプルとして「リードデータのエクスポートポリシー」を作成したいと思います。
3-1.[設定]メニューで有効化
トランザクションセキュリティポリシーをクリックして、[トランザクションセキュリティの使用開始] を有効化しましょう。
3-2.Apexクラスの作成
次に下記のコードをコピーしてクラス作成を行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
global class DataLoaderLeadExportCondition implements TxnSecurity.PolicyCondition { public boolean evaluate(TxnSecurity.Event e) { // The event data is a Map<String, String>. // We need to call the valueOf() method on appropriate data types to use them in our logic. Integer numberOfRecords = Integer.valueOf(e.data.get('NumberOfRecords')); Long executionTimeMillis = Long.valueOf(e.data.get('ExecutionTime')); String entityName = e.data.get('EntityName'); // Trigger the policy only for an export on leads, where we are downloading // more than 2000 records or it took more than 1 second (1000ms). if('Lead'.equals(entityName)){ if(numberOfRecords > 2000 || executionTimeMillis > 1000){ return true; } } // For everything else don't trigger the policy. return false; } } |
3-3.ポリシーの作成
続いて、ポリシーを作成していきます。
[トランザクションセキュリティ] ページに戻り下記設定を行います。
ここではApexを選びます。
イベント種別をデータのエクスポートにします。
リソースはリードにします。
Apexクラス項目でMyDataLoaderLeadExportConditionを選択します。
リアルタイムアクションはブロックにします。
※ここで行ったポリシーの各設定はいつでも変更可能です。
最後に作成したポリシーを有効化しておきましょう。
でないと、ポリシーが稼働しません(笑)
4.まとめ
いかがでしたでしょうか。
自社ユーザの不正はないとは思いますが、仮に自社ユーザのアカウントが外部から不正アクセスされた場合には、セキュリティ面を強化しておかないと貴重なデータを抜き取られてしまいます。
トランザクションセキュリティで、ユーザが実行するアクションに制限を掛けておけば、リアルタイムで何が起こっているのかを検知できるので便利ですよね。
最悪なケースを想定してできることはやっておきましょう!
他にも色々と標準機能やSalesforce機能について紹介しています。
そのまとめ一覧ページはこちらになりますので、よければ見てみてください。
・Salesforceの機能ページまとめ一覧ページ
ではでは!