アクセス制御およびデータの保護
学習の目的
権限とアクセスの比較
前の単元で、パスポートのたとえを用いて、権限セットライセンスと権限セットの違いを確認しました。ここでは、権限とアクセスを区別する方法を紹介します。権限はあなたが実行できることで、アクセスはあなたが参照できるものと考えます。CRM Analytics のセキュリティの説明において、この概念は実に的を射たものです。
DTC の Salesforce システム管理者として、誰が何にアクセスできるか、つまり、誰がどのデータを参照できるかを検討します。以前の単元では、アプリケーションや機能を使用する権限をユーザーに付与する方法を学習しました。この単元では、各ユーザーのデータへのアクセスをきめ細かく制御する方法を見ていきます。
CRM Analytics での Salesforce データへのアクセス
csv ファイルをアップロードした場合を除き、CRM Analytics で使用するデータはおそらく Salesforce から取り込まれたものです。CRM Analytics があなたに代わってこのデータにアクセスする方法について説明します。なぜでしょうか? CRM Analytics では事前定義された内部アカウントを使用して、その処理を行うためです。Salesforce システム管理者はプロファイルや権限の管理を行うため、これらのアカウントがどのようなもので、どのように設定されているかを知っておく必要があります。では、この内部的な仕組みを見ていきましょう。
CRM Analytics は、インテグレーションユーザーとセキュリティユーザーという 2 つの CRM Analytics 内部ユーザーの権限に基づいて、Salesforce データにアクセスします。
- CRM Analytics は、データフロージョブが実行されたときに、インテグレーションユーザーの権限を使用して Salesforce オブジェクトおよび項目からデータを抽出します。
- ユーザーオブジェクトに基づいて行レベルセキュリティが設定されているデータセットを照会すると、CRM Analytics はセキュリティユーザーの権限を使用してユーザーオブジェクトとその項目にアクセスします。
インテグレーションユーザーとセキュリティユーザーのプロファイルおよびユーザーレコードを見てみましょう。
- [設定] から、[クイック検索] ボックスに
「ユーザー」
と入力します。 - [ユーザー] で、[ユーザー] を選択します。
リストに、「ユーザー、インテグレーション」というユーザーと「ユーザー、セキュリティ」というユーザーが表示されます。いずれかをクリックすると、これらのユーザーの詳細情報が表示されます。
この 2 つのユーザーにはプロファイルが関連付けられています。
- [設定] から、[クイック検索] ボックスに
「プロファイル」
と入力します。 - [ユーザー] の下の [プロファイル] を選択します。
Analytics Cloud インテグレーションユーザーおよび Analytics Cloud セキュリティユーザーというプロファイルが表示されます。いずれかをクリックすると、割り当てられているさまざまな権限が表示されます。たとえば、[項目レベルセキュリティ] というヘッダーの列を見ると、照会するオブジェクトの中に項目レベルセキュリティが適用されているものがないかを確認できます。
行レベルセキュリティ
CRM Analytics ユーザーにデータセットへのアクセス権があれば、デフォルトではデータセット内のすべてのレコードにアクセスできます。それはそうですよね? けれども、データセットに行レベルセキュリティを実装して、一定のレコードへのアクセスを制限したいと思うことがあります。一部のレコードに機密データが含まれている場合、全員がアクセスできるようにすべきではないためです。
セキュリティ述語
行レベルセキュリティを実装するには、レコードへのアクセスを制限するデータセットごとに述語を設定します。複雑なことのように聞こえますが、述語とは、データセット内のレコードへの行レベルのアクセスを定義する検索条件の気取った名称です。述語が設定されているデータセットに対してユーザーがクエリを送信すると、CRM Analytics が述語をチェックして、ユーザーがどのレコードにアクセスできるかを判断します。ユーザーにレコードへのアクセス権がなければ、CRM Analytics はそのレコードを返しません。
では、セキュリティ述語がどのように表示されるか見てみましょう。心配はいりません。ここでは設定を一切変更しないため、何かが壊れるようなことはありません!
セキュリティ述語を確認するには、データフローの JSON ファイルまたはデータセットの編集ページを確認します。
データセットの編集ページで述語を確認するほうが簡単です。
- アプリケーションランチャーで、[Analytics Studio] を見つけて選択します。
- [Analytics Studio] タブで、[参照] をクリックし、[すべての項目] をクリックします。
- [Datasets (データセット)] をクリックします。
- データセットにマウスポインターを置き、アクション矢印 をクリックして、[編集] をクリックします。
- ページ下部の [セキュリティ述語] セクションまでスクロールします。
データセットにセキュリティ述語が定義されている場合は、ここに表示されます。
特定のレコードへのユーザーアクセスを制限する上記のユースケースは極めて一般的です。以下は、この検索条件を実行する述語の例を示しています。
"rowLevelSecurityFilter":"'AccountOwner' == \"$User.Name\""
AccountOwner は、各販売目標の取引先所有者の氏名を格納するデータセット項目のことです。$User.Name は、各ユーザーの氏名を格納するユーザーオブジェクトの Name 列です。CRM Analytics はルックアップを実行して、現在ログインしているユーザーを表示します。
AccountOwner の名前と $User.Name の名前が同じであれば、この述語によって一致結果が返されます。ユーザーには、自身が取引先所有者であるデータのみが表示されます。さほど難しいことではないですよね? セキュリティ述語およびその追加方法についての詳細は、『Analytics セキュリティ実装ガイド』を参照してください。
上出来です。これで、CRM Analytics のセキュリティ述語については何でも知っていると自慢できます!
項目レベルセキュリティの場合
Salesforce では、項目レベルセキュリティを実装して、レコードの個々の項目へのアクセスを制限できます。CRM Analytics で項目レベルセキュリティを設定していなくても、前述のとおり、Analytics インテグレーションユーザーの権限を使用して CRM Analytics データフローが実行されます。そのため、Salesforce オブジェクトに項目レベルセキュリティを適用する場合は、Analytics インテグレーションユーザーに参照アクセス権を割り当てる必要があります。割り当てなければ、データフローの実行時に CRM Analytics でデータを参照できないため、エラーが表示されることがあります。
詳細は、『Analytics セキュリティ実装ガイド』を参照してください。