LoginSignup
7
4

More than 3 years have passed since last update.

Spring'20新機能:拡張トランザクションセキュリティポリシーを試してみよう!

Last updated at Posted at 2020-03-02

はじめに

 今回は、『Salesforce 開発者によるブログ投稿キャンペーン』に参加するブログとして、Spring'20の新機能の拡張トランザクションセキュリティポリシーについて書こうと思います。拡張トランザクションセキュリティポリシーはリアルタイムモニタリングの機能の一つでWinter'20に提供された機能です。
 興味を持った理由は、私の関わったプロジェクトで、会社提供のPCやモバイル端末を利用して社内ネットワークも含めた複数の場所からSalesforceにアクセスした際に、お客様のセキュリティ要望として、ユーザの操作を監視して、ブロックや二要素認証、追跡ができる仕組みがないのかと問合せを頂くことがいくつかありました。
 ログインフローとセッションベースの権限で動的に権限を変更すること以外に、各ユーザの操作をリアルタイムに監視し制御する機能としてこの機能を注目しました。

トランザクションセキュリティポリシーとは

目的やロジックについては以下のッ通りです。
image.png

ポリシーの設定流れ

ポリシーの設定の流れは以下の通りです。
image.png

活用のユースケース

 条件ビルダーの使用例を読んで、ユースケースを考えました。

条件ビルダー

固定文字列で条件を設定する場合のユースケースです。
image.png

Apex

高度な実装例非同期通信(AsyncConditionインターフェース)から、ユースケースを作成しました。

image.png

トリガーされるイベント情報

トリガーするイベントオブジェクトを確認するために、Salesforceのヘルプでトランザクションポリシーが動かない場合のトラブルシューティングのやり方として紹介されていた『イベントマネージャ』を利用して、レコードが作成されるタイミングを”〇”、”×”、”-”で表しています。”〇”はレコードが作成されます。”×”は個人的に確認対象としてましたがレコードが作成されませんでした。”-”は対象外です。
image.png

トリガーされるイベント情報

各アプリケーション毎に登録されるイベント情報を一覧にしました。

ログインイベント
image.png

APIイベント
image.png

レポートイベント情報
image.png

リストビューイベント情報
image.png

確認用のSOQLを記載します。開発者コンソールで確認することができます。

# APIEvent
SELECT Username, UserId, ApiType, ElapsedTime, Operation, Platform, QueriedEntities, Query, SourceIp, UserAgent, RowsProcessed, SessionLevel,  ApiVersion, Application, Client FROM ApiEvent
# ListViewEvent
SELECT EventDate, Username, AppName, ColumnHeaders, DeveloperName, EventSource, ListViewId, Name,  OrderBy, OwnerId, QueriedEntities, RowsProcessed, Scope, NumberOfColumns, SessionLevel, SourceIp, UserId FROM ListViewEvent
# LogingEvent
SELECT EventDate, Username, UserType, Application, Browser, Country, LoginUrl, Platform, SourceIp, SessionLevel,  TlsProtocol, UserId,  ApiType, ApiVersion FROM LoginEvent
# ReportEvent
SELECT EventDate, Username, Name, DashboardId,  ReportId, EventSource, ColumnHeaders, Format, IsScheduled, NumberOfColumns, Operation, OwnerId, QueriedEntities, RowsProcessed, Scope, SessionLevel, SourceIp, UserId, DashboardName, Description FROM ReportEvent

アクションの実行結果

 条件ビルダーのアクションで指定できる『ブロック』と『2要素認証』について、ログイン時と操作中の2つの操作で動作を確認しました。
 
アプリケーションアクション一覧

×となっている結果について
Salesforceモバイルアプリケーションのログイン時に、 Salesforce Authenticatorを利用した二要素認証後、トランザクションセキュリティーポリシーによりブロックされ、ログイン画面が再表示する事象が発生したため、×としております。(エビデンスは最後に記載。)

実行結果確認(ログインイベント)

 ログイン時にログインイベントでブロックすると下記の画面が表示されます。
image.png

実行結果確認(レポートイベント)

 レポート実行時にレポートイベントでブロックすると下記の画面が表示されます。また、2要素認証要求アクション選択時に、2要素認証を利用せずにログインした場合、レポートを実行すると下記の画面が表示されます。
image.png

ログインイベントの二要素認証

 ログイン時に2要素認証でログインしてもホーム画面が表示されずに、ログイン画面が表示されます。
ログインイベント二要素認証

ログインイベントの確認:ログイン履歴
 『Salesforce Authenticator』で認証後、リモートサクセスする際にトランザクションセキュリティでブロックされていることを確認しました。 
image.png
 MacOSのPCログインとIPhoneのSalesforceモバイルアプリケーションのログインイベントのレコード検索結果です。Salesforceモバイルアプリケーションの場合、一連のログインの流れの中で1回リクエストの回数が多いのが確認できます。
 別のアプリケーションで最後にアクセスしているものがトランザクションポリシーに抵触していると考えています。
image.png

まとめ

 これまで機能概要や活用方法について説明しました。
 この機能はUIで簡単に設定することができ、ユーザの操作をリアルタイムに監視し制御することができます。
 Winter’20、そしてSpring’20と連続してアップデートがあったのは、こうしたユーザの監視や制御についてセキュリティーの要望が高まっているからではないでしょうか?
 これをきっかけに、このようなお客様からの要件が出てきた際には、選択肢の一つとして検討して頂けたらと考えております。
 では!

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4