概要
- SalesforceのEinstein Analytics(現Tableau CRM)のセキュリティ述語の使い方について解説します。
参考
Analyticsセキュリティ実装ガイド
セキュリティ述語とは
- データセットへのアクセス権を持つAnalyticsユーザには、デフォルトでデータセット内のすべてのレコードへのアクセス権があります。
- レコードへのアクセスを制限するには、共有継承とセキュリティ述語を使用してデータセットに行レベルセキュリティを実装できます。
- セキュリティ述語は、データセット行のアクセスを定義する検索条件で、手動で割り当てることができます。
- 基本的には共有継承を使用し、バックアップとしてセキュリティ述語を利用するのが良い(らしい)
実装方法
作成済みのデータセットにセキュリティ述語を設定する方法
- [Analytics Studio] > [すべての項目] > [データセット]
- セキュリティ述語を設定したいデータセット右の「▼」 > [編集]
- セキュリティ述語の「✎」をクリック
その他
- レシピ等で、データセット生成時にセキュリティ述語を設定することも可能です。
セキュリティ述語の記述方法
基本構文
<dataset column> <operator> <value>
例
'UserId' == "$User.Id"
dataset column
- データセットに含まれるカラム名を指定します
- 単一引用符で囲む必要があります
- カラム名に単一引用符が含まれている場合はバックスラッシュでエスケープします
operator
- 以下の比較演算子、論理演算子が指定可能です
- ==
- !=
- <, <=, >, >=(数値のみ)
- in(選択リストのみ)
- &&
- ||
value
- 文字列リテラル、数値リテラル、項目値(Salesforceオブジェクト)を指定できます
- 文字列リテラルは二重引用符で囲む必要があります
- 数値リテラルは引用符で囲む必要はありません
- 項目値は二重引用符で囲み、$から始める必要があります
- 項目値はセキュリティユーザがアクセス可能なオブジェクトのみ指定できます
- 必要があればプロファイルで項目レベルセキュリティを設定してください
- String,Number,選択リスト項目のみアクセス可能です
考慮事項
- 大文字と小文字は区別されます
- セキュリティ述語は最大5000文字まで記述できます
- 論理演算子の前後には空白スペースが必要です
実装例
要件
- ログインしたユーザは自分の取引先に属するデータのみが見える
- システム管理者プロファイルのユーザはすべてのデータが見える
事前準備
- 対象データセット(SampleDataset)に取引先とシステム管理者のSFIDをもたせる
- レシピで結合とかしてうまく作ってください
セキュリティ述語例
'SampleDataset.Account__c' == "$User.AccountId" || 'SampleDataset.SysAdminSFID' == "$User.ProfileId"
- $Userを利用すれば、ログインユーザーの情報を取得できます。