Microsoft Dataverseでのフィルターベースのセキュリティ (プレビュー)

[この記事はプレリリース ドキュメントであり、変更されることがあります。]

所有権ベースのセキュリティは、レコードの所有権、チーム、部署、組織レベルの特権を通じてアクセス権を付与します。 フィルターベースのセキュリティは、フィルター条件を満たすレコード データを介してアクセス権を付与します。 たとえば、City 列に レドモンド、 シアトル、 ベルビューが含まれるレコードへのアクセス権を付与できます。

フィルターベースのセキュリティは、次の条件で使用できます。

  • フィルター処理されたレコード所有権テーブル。
  • ユーザーまたはチームレコードの所有権テーブル。
  • 組織レコードの所有権テーブル。

Important

  • この機能は プレビュー段階です。
  • プレビュー機能は運用環境での使用を想定しておらず、機能が制限される可能性があります。 これらの機能は正式リリース前に利用できるため、お客様は早期にアクセスしてフィードバックを提供できます。

フィルターベースのセキュリティのしくみを理解する

2 つの主要コンポーネントを使用してフィルターベースのセキュリティを構成します。

  • レコード フィルター: FetchXML を使用して、アクセスの対象となるレコードを識別します。
  • エンティティ レコード フィルター: レコード フィルターを Dataverse テーブルに関連付けます。

フィルターをテーブルに関連付けると、Dataverse によってフィルター特権が作成されます。 セキュリティ ロールを使用してこれらの特権を割り当てます。 ユーザーがデータにアクセスすると、Dataverse はユーザーのセキュリティ ロールとチーム メンバーシップからのフィルターを評価します。 一致するフィルターは、対応するデータ アクセス操作を許可します。

フィルター処理されたレコード所有権テーブルの場合、フィルター特権によってレコード アクセスが決定されます。 ユーザーまたはチーム、および組織のレコード所有権テーブルの場合、フィルター特権は、既存のセキュリティ モデルを介して付与されたアクセスに追加されます。

フィルターベースのセキュリティ コンポーネント

コンポーネント 説明
レコード フィルター FetchXML フィルター定義を格納します。
エンティティ レコード フィルター レコード フィルターを Dataverse テーブルに関連付けます。
フィルター特権 特定のデータ アクセス操作に対してフィルター処理されたアクセス権を付与します。
セキュリティ ロール ユーザーとチームにフィルター特権を割り当てます。

Dataverse は、ユーザーのセキュリティ ロールとチーム メンバーシップから承認されたすべてのフィルターを結合します。 承認されたフィルターに一致するレコードは、対応するアクセスを受け取ります。

所有権モデルの比較

フィルターベースのセキュリティでは、Dataverse のすべての所有権の種類がサポートされます。

能力 ユーザーまたはチーム所有 組織所有 フィルター処理された所有権
レコード所有者をサポートします イエス いいえ いいえ
割り当てをサポートする イエス いいえ いいえ
共有をサポート イエス いいえ いいえ
部署階層アクセスをサポートします イエス いいえ いいえ
所有権ベースの特権を使用する イエス いいえ いいえ
組織全体のアクセスをサポートします ロールの権限によって イエス [すべてのレコード] フィルター特権を使用する
フィルターベースのセキュリティをサポート イエス イエス イエス
フィルターのみを使用してアクセスを決定する いいえ いいえ イエス
レコードの再割り当てをサポート イエス いいえ いいえ
一般的なユース ケース アカウント、ケース、営業案件、業務運用データ 共有参照と構成データ 属性ベースのアクセス制御、エンタイトルメントベースのアクセス、地理的セグメント化、およびデータ分類

所有権モデルを選択する

レコードに自然な所有者があり、ビジネス プロセスで割り当て、共有、マネージャーの可視性、または部署階層へのアクセスが必要な場合は、ユーザーまたはチーム レコードの所有権テーブルを使用します。

ユーザーが組織全体でレコードを広く共有し、所有権を必要としない場合は、組織のレコード所有権テーブルを使用します。

ビジネス属性が所有権ではなくアクセスを決定する必要がある場合は、フィルター処理されたレコード所有権テーブルを使用します。 このモデルは、属性ベースのアクセス制御 (ABAC)、エンタイトルメント ベースのセキュリティ、規制の境界、秘密度ベースの承認に適しています。

Note

ユーザーまたはチーム、組織レコードの所有権、およびフィルター処理されたレコード所有権テーブルにフィルターベースのセキュリティを適用できます。 フィルター処理されたレコード所有権テーブルのみが、レコード アクセスのフィルター特権にのみ依存します。

フィルター処理された所有権テーブルを使用したフィルターベースのセキュリティ

フィルター処理されたレコードの所有権は、フィルター特権を通じて完全にアクセスを決定する Dataverse 所有権モデルです。

フィルター処理された所有権テーブルでは、レコード所有者は使用されません。

フィルター処理された所有権テーブルには、次の特性があります。

  • レコード所有者を含めない
  • ユーザーまたはチームに割り当てることはできません。
  • ユーザーまたはチームと共有することはできません。
  • 所有権ベースのセキュリティ特権は使用しないでください。
  • フィルター特権のみを使用してアクセスを決定します。

Note

フィルター処理されたレコード所有権テーブルを作成すると、Dataverse はグローバル All records フィルター特権を作成し、それを System Administrator セキュリティ ロールに付与します。

フィルター処理されたレコード所有権テーブルを作成する

Dataverse テーブルを作成するときに、所有権の種類として [フィルター] を選択します。 手順については、「 フィルター処理されたレコードの所有権」を参照してください。

テーブルを作成した後:

  1. 1 つ以上の レコード フィルターを作成します。
  2. エンティティ レコード フィルターを作成して、フィルターをテーブルに関連付けます。
  3. セキュリティ ロールを使用して、生成されたフィルター特権を付与します。
  4. セキュリティ ロールをユーザーまたはチームに割り当てます。

ユーザーまたはチーム レコードの所有権テーブルにフィルターベースのセキュリティを適用する

既存のユーザーまたはチーム レコードの所有権テーブルにフィルターベースのセキュリティを適用することもできます。

フィルター特権は、既存の所有権ベースのセキュリティ モデルへのアクセスを追加します。

  • ユーザーは引き続きレコードを所有します。
  • 引き続きレコードの割り当てと共有を行うことができます。
  • 部署階層へのアクセスは変更されません。
  • フィルター特権は、追加の行レベルのアクセス権を付与します。

たとえば、営業担当者は自分が所有する営業案件にアクセスできます。 フィルターを使用すると、営業担当者に特定の地域の追加の営業案件へのアクセス権を付与できます。

次のフィルターは、特定の地域のアクティブなアカウントへのアクセスを許可します。

<fetch
  version="1.0"
  output-format="xml-platform"
  mapping="logical"
  distinct="false">
  <entity name="account">
    <attribute name="entityimage_url" />
    <attribute name="statecode" />
    <attribute name="name" />
    <attribute name="address1_city" />
    <attribute name="primarycontactid" />
    <attribute name="telephone1" />
    <attribute name="accountid" />
    <attribute name="new_owningbuname" />
    <order attribute="name" descending="false" />
    <filter type="and">
      <condition
        attribute="territoryid"
        operator="eq"
        value="a440958c-f6bc-f111-aaad-000d3a84e349" />
      <condition
        attribute="statecode"
        operator="eq"
        value="0" />
    </filter>
  </entity>
</fetch>

次の例では、 link-entity を使用して、担当する同僚が所有するアクティブなアカウントへのアクセス権を営業担当者に付与します。

<fetch
  version="1.0"
  output-format="xml-platform"
  mapping="logical"
  distinct="true">
  <entity name="account">
    <attribute name="entityimage" />
    <attribute name="statecode" />
    <attribute name="name" />
    <attribute name="parentaccountid" />
    <attribute name="ownerid" />
    <attribute name="telephone1" />
    <attribute name="emailaddress1" />
    <attribute name="accountid" />
    <order attribute="name" descending="false" />
    <filter type="and">
      <condition
        attribute="statecode"
        operator="eq"
        value="0" />
    </filter>
    <link-entity
      name="crcd8_buddyrm"
      alias="buddy"
      link-type="inner"
      from="crcd8_rm"
      to="ownerid">
      <filter type="and">
        <condition
          attribute="crcd8_buddyrmname"
          operator="eq-userid" />
        <condition
          attribute="statecode"
          operator="eq"
          value="0" />
      </filter>
    </link-entity>
  </entity>
</fetch>

有効なアクセス

ユーザーまたはチーム レコードの所有権テーブルの場合、フィルター特権は所有権ベースのセキュリティに行レベルのアクセスを追加します。 所有権、共有、またはセキュリティ ロールの特権によって付与されるアクセス権は、置き換えたり減らしたりすることはありません。

フィルター処理された所有権テーブルの場合、フィルター特権によってレコード アクセスが決定されます。 組織所有のレコード テーブルでは、フィルター特権によって、セキュリティ ロールの特権で付与されるアクセス権に加えて、さらにアクセス権が付与されます。

この追加モデルを使用すると、既存のアクセス規則を維持しながら、属性ベースのアクセスを導入できます。

所有権のセキュリティの詳細については、「 所有権とレコードへのアクセス」を参照してください。

組織レコードの所有権テーブルにフィルターベースのセキュリティを適用する

また、組織レコードの所有権テーブルにフィルターベースのセキュリティを適用することもできます。

組織レコード所有権テーブルの標準特権は、テーブル内のすべてのレコードへのアクセス権を付与します。 フィルター特権は、一致するレコードへのアクセスを許可する別の方法を提供します。 セキュリティ ロールによって既に付与されている広範なアクセスを減らすことはできません。

一般的なシナリオは次のとおりです。

  • 地域に基づくアクセス。
  • 部門ベースのアクセス。
  • データ分類コントロール。
  • 範囲指定された可視性を持つ共有参照データ。

たとえば、Territory 列が特定のリージョンと一致するレコードへのアクセス権をユーザーに付与します。 他のセキュリティ ロール特権で、同じテーブルへのより広範なアクセス権が付与されないようにします。

フィルター特権では、組織レコードの所有権データ モデルを保持しながら、きめ細かい承認が追加されます。

組織レコード所有権テーブルの詳細については、「 レコードの所有権とアクセス」を参照してください。

フィルター特権

エンティティ レコード フィルターを使用してレコード フィルターをテーブルに関連付けると、Dataverse によってフィルター特権が作成されます。 セキュリティ ロールを使用してこれらの特権を割り当てます。

フィルター特権では、次のデータ アクセス操作がサポートされます。

  • Create.
  • 読み取り。
  • 書き込む。
  • 削除します。
  • 追加します。
  • [追加] を選択します。

各特権は、特定のフィルターと特定のテーブルに関連付けられます。

次の例は、複数の都市フィルターの特権を示しています。

フィルター 権限
市区町村 = レドモンド Read
市区町村 = レドモンド Write
市区町村 = レドモンド Delete
市区町村 = シアトル Read
市 = ベルビュー Read

必要に応じて、複数のフィルターを作成し、各セキュリティ ロールに異なる特権を割り当てます。

セキュリティ ロールでフィルター特権を付与する

Dataverse セキュリティ ロールを使用してフィルター特権を管理します。

フィルター処理されたアクセス権を付与するには:

  1. セキュリティ ロールを開きます。
  2. ターゲット テーブルを選択します。
  3. フィルター特権を選択します。
  4. ロールに特権を付与します。
  5. ユーザーまたはチームにロールを割り当てます。

ユーザーは、割り当てられたセキュリティ ロールとチーム メンバーシップからすべてのフィルター特権を受け取ります。

詳細については、「 セキュリティ ロールと特権」を参照してください。

例

Customer テーブルに City 列が含まれているとします。

3 つのレコード フィルターを作成します。

  • 市区町村 = レドモンド。
  • 市区町村 = シアトル。
  • City = Bellevue。

エンティティ レコード フィルターを使用して、各レコード フィルターを Customer テーブルに関連付けます。

3 つのセキュリティ ロールを作成します。

役割 フィルター特権
レドモンド営業 City = Redmond の顧客を読み込む
シアトルの売上 市区町村 = シアトルの顧客を読み取る
Bellevue Sales City = Bellevue の Customer を読み込む

各ロールは、そのフィルターに一致する顧客レコードへのアクセスを許可します。 ユーザーは、他のロール、チーム メンバーシップ、所有権、または共有を通じて、より広範なアクセス権を持つことができます。

まとめ

フィルターベースのセキュリティは、データ値に基づいて行レベルのアクセスを許可します。 レコード フィルター、エンティティ レコード フィルター、フィルター特権、セキュリティ ロールを使用して、Dataverse に属性ベースのアクセス制御を実装します。

ユーザーまたはチーム、および組織レコードの所有権テーブルを使用してフィルターベースのセキュリティを追加し、フィルター条件を使用してより多くのデータ アクセスを提供します。 ビジネス要件に合った所有権モデルを選択します。 フィルター処理された所有権テーブルのみが、レコード アクセスの排他ソースとしてフィルターを使用することを忘れないでください。

次のステップ