Dataverse のセキュリティ概念を理解する

完了

Dataverse の主要機能の 1 つに、多種多様なビジネス使用シナリオに合わせて調整できる豊富なセキュリティ モデルがあります。 このセキュリティ モデルは、環境に Dataverse データベースがある場合にのみ適用されます。 管理者がセキュリティ モデル全体を自分で構築することはほぼありませんが、ユーザーの管理、ユーザーが適切な構成を保持していることの確認、セキュリティ アクセス関連の問題のトラブルシューティングのプロセスに関与することはよくあります。

ロールベースのセキュリティ

Dataverse では、ロール ベースのセキュリティを使用して、権限のコレクションをグループ化します。 これらのセキュリティ ロールは、個々のユーザーに直接関連付けることも、Dataverse のチームや事業単位に関連付けることもできます。 その後、ユーザーをチームに関連付けることができるため、チームに関連付けられているすべてのユーザーはこのロールの恩恵を受けることができます。 Dataverse セキュリティの重要な概念として、すべての特権付与は、最大量のアクセスが優先されて累積されるということを理解する必要があります。 たとえば、ユーザーが 2 つのセキュリティ ロール (削除権限はあるが書き込み権限がないロールと、書き込み権限はあるが削除権限がないロール) を持つ場合、ユーザーは環境内で削除と書き込みの両方を行うことができます。 同様に、すべての連絡先レコードに広範な組織レベルの読み取りアクセス許可を付与する場合、1 つのレコードに戻って非表示にすることはできません。

事業単位

事業単位は、ユーザーをグループ化するためのセキュリティと構造を提供します。また、多くの場合に組織の部門構造を模倣するために使用されます。 Dataverse 環境に割り当てられるすべてのユーザーは、事業単位に属します。 すべての Dataverse データベースにはルートの事業単位が 1 つ存在し、必要に応じて下位の事業単位を複数作成できます。 下位の事業単位は削除できますが、ルート事業単位は削除できません。 また、下位の事業単位は、他の下位の事業単位を持つことができます。

  • 上位の事業単位は、階層内でその下位に位置する 1 つ以上の事業単位を持つ任意の事業単位です。

  • 下位の事業単位は、組織の業務階層内の別の事業単位のすぐ下に位置する事業単位です。

事業単位は組織図に従って作成し、データ アクセスを階層型で構成することも、データをツリー状の階層構造でコンパートメント化して構成することもできます。ユーザーはどの事業単位が割り当てられているかに関係なく、事業単位のデータにアクセスし、操作することができます。 データをこのように構成する方法の詳細については、行列型のデータ アクセス構造 (最新事業単位) を参照してください。

ユーザーのセキュリティ ロールは、ユーザーの事業単位内で割り当てられます。 ユーザーが別の事業単位に移動した場合は、セキュリティ ロールを再割り当てする必要があります。 各ユーザーは 1 つのみの事業単位のメンバーになりますが、チームは複数の事業単位に属するユーザー メンバーを持つことができます。 列レベルのセキュリティの実装については、このモジュールで後ほど説明します。

テーブル/レコードの所有権

Dataverse では、2 つのタイプのレコード所有権 (組織による所有、ユーザーまたはチームによる所有) がサポートされています。 レコード所有権は、テーブルの作成時に行われる選択であり、変更はできません。 セキュリティ上の目的で、組織が所有しているレコードのアクセス レベルの選択肢は、ユーザーが操作を実行できるか、実行できないかのどちらかのみになります。 ユーザーおよびチームが所有するレコードの場合、ほとんどの特権に対するアクセス レベルの選択肢は、

  • 階層化された組織、

  • 事業単位、

  • 事業単位と下位の部署、

  • またはユーザーの独自のレコードのみになります。

最新化された事業単位のレコード所有権

最新化された事業単位では、ユーザーを複数の事業単位のレコード所有者にすることができます。 ユーザーに必要なのは、レコード テーブルへの読み取り権限を持つセキュリティ ロール (任意の事業単位) のみです。 レコードが存在する事業単位にセキュリティ ロールを割り当てる必要はありません。 この機能を使用するには、組織の設定を調整する必要があります。 この設定方法については、最新化された事業単位のレコード所有権を参照してください。

チーム (グループ チームを含む)

チームもまた、重要なセキュリティ構成ブロックの 1 つです。 チームは事業単位によって所有されます。 各事業単位には、事業単位の作成時に自動的に作成される 1 つの既定のチームがあります。 既定のチーム メンバーは Dataverse によって管理され、その事業単位に関連付けられているすべてのユーザーが常に含まれます。 既定のチームからメンバーを手動で追加または削除することはできません。新しいユーザーが事業単位に関連付けられるか、関連付けが解除されたときに、システムによって動的に調整されます。 チームには、所有チームとアクセス チームの 2 つのタイプがあります。

  • 所有チームはレコードを所有でき、どのチーム メンバーもそのレコードに直接アクセスできます。 ユーザーは、複数チームのメンバーに設定できます。 したがって、チームは、個々のユーザー レベルで細かいアクセス管理を行わず、広範にユーザーにアクセス許可を付与する強力な方法です。

  • アクセス チームについては、次のセクションの「レコードの共有」で説明します。

レコードの共有

個々の行は、他のユーザーと 1 対 1 で共有できます。 これは、レコードの所有権や事業単位のメンバーによるアクセス モデルを適用できない、例外的なケースを処理する場合に非常に有効です。 例外的と説明したのは、アクセスの制御を効率良く行うことができないからです。 アクセスの制御方法の一貫性を保てないため、共有による問題解決が難しくなります。 共有は、ユーザー レベルとチーム レベルの両方で行うことができますが、 チーム レベルで共有を使用する方が効率的です。 アクセス チームでより高度に共有を行う場合は、チームが自動的に作成され、適用されるアクセス チーム テンプレート (アクセス許可のテンプレート) に基づいてレコードのアクセス権がチームと共有されます。 アクセス チームのメンバーを手動で追加または削除して、アクセス チームをテンプレートなしに使用することもできます。 アクセス チームは、チームによってレコードが所有されることも、チームにセキュリティ ロールが割り当てられることもないため、より効率的です。 レコードがチームと共有され、ユーザーはそのメンバーであるため、ユーザーはアクセス権を付与されます。

Dataverse でのレコード レベルのセキュリティ

ユーザーによるレコードへのアクセスは、ユーザーのセキュリティ ロール、割り当てられた事業単位、メンバーとして所属するチーム、および共有するレコードの組み合わせで決まります。 Dataverse でのアクセスはすべて、これらの概念をすべて累積させて、Dataverse データベース環境の範囲内で行われることを覚えておいてください。 これらの権利は 1 つのデータベース内でのみ付与され、各 Dataverse データベースで個別に追跡されるため、ユーザーには Dataverse にアクセスするための正しいライセンスが必要になります。

アクセスを制御する列レベルのセキュリティ

レコード レベルの制御が業務上適切ではない場合には、Dataverse で列レベルのセキュリティ機能を使用して、セキュリティを列ごとに細かく制御することができます。 列レベルのセキュリティは、すべてのカスタム列と、ほとんどのシステム列で使用できます。 システム列で使用できるかどうかは、各列のメタデータに定義されます。

列レベルのセキュリティは、列ごとに定義します。 列へのアクセスは、データ列セキュリティ プロファイルを作成して管理します。 このプロファイルに含まれるすべての列に、列レベルのセキュリティが定義され、アクセス権がプロファイルによって付与されます。 各列は、プロファイル内で作成、更新、および読み取りアクセス許可によって制御されます。 作成されたデータ列セキュリティ プロファイルは、ユーザーまたはチームに割り当てられ、それぞれの特権をレコードへのアクセス許可を持つユーザーに付与するために使用されます。 列レベルのセキュリティは、レコード レベルのセキュリティと無関係であることを覚えておいてください。 ユーザーにレコードへのアクセス許可がなければ、データ列セキュリティ プロファイルは列へのアクセスをユーザーに許可することができません。 列レベルのセキュリティは必要な場合にのみ使用し、過度に使用しないでください。使いすぎると、判断のための処理によって負荷が高くなります。

列レベルのセキュリティ実装については、このユニットで後述する例を参照してください。

複数の環境にまたがるセキュリティ管理

セキュリティ ロールとデータ列セキュリティ プロファイルをパッケージ化し、Dataverse ソリューションを使用する環境間を移動させることができます。 事業単位とチームを作成して各環境で管理すると同時に、必要なセキュリティ コンポーネントをユーザーに割り当てる必要があります。

ユーザーの環境セキュリティを構成する

ロール、チーム、および事業単位を環境で作成し、ユーザーにセキュリティ構成を割り当てることができます。 最初にユーザーを作成し、ユーザーを事業単位に関連付けます。 既定では、組織のルートの事業単位が関連付けられます。 また、その事業単位の既定のチームにユーザーが追加されます。

また、ユーザーに必要なセキュリティ ロールを割り当てたり、 チームのメンバーとして追加したりもします。 セキュリティ ロールはチームにも設定される場合があるため、ユーザーの有効な権限は、ユーザーに直接割り当てたセキュリティ ロールと、そのユーザーが所属するチームのセキュリティ ロールを組み合わせたものになります。 セキュリティは常に、ユーザーの権利が最小限に制限されたアクセス許可を追加しながら構成します。

また、列レベルのセキュリティを使用する場合は、データ列セキュリティ プロファイルを作成し、ユーザーやユーザーのチームを関連付ける必要があります。

セキュリティ プランの作成は複雑な作業であるため、アプリケーションの作成者とユーザーのアクセス許可を管理するチームとで協力して行うことをお勧めします。 環境に対して大規模な変更を行う場合は、あらかじめ十分に調整する必要があります。

列のセキュリティの構成例

例を紹介する前に、列レベルのセキュリティの実装方法について説明します。 システム管理者が、次のタスクを実行する必要があります。

  1. 列のセキュリティは、特定のテーブルの 1 つ以上の列で有効にします。

  2. 既存のセキュリティ プロファイルを 1 つ以上関連付けるか、1 つ以上の新しいセキュリティ プロファイルを作成して、特定のユーザーまたはチームへの適切なアクセス権を付与します。

    セキュリティ プロファイルによって、以下が決定されます。

    • セキュアな列へのアクセス許可

    • ユーザーとチーム

    セキュリティ プロファイルは、列レベルで次のアクセス許可をユーザーまたはチーム メンバーに付与するように構成できます。

    • 読み取り。 列のデータへの読み取り専用アクセス。

    • 作成。 このプロファイルのユーザーまたはチームは、レコードの作成時にこの列にデータを追加できます。

    • 更新。 このプロファイルのユーザーまたはチームは、列のデータの作成後にデータを更新できます。

    これら 3 つのアクセス許可の組み合わせを構成することで、特定のデータ列のユーザー権限を決定できます。

    重要

    1 つ以上のセキュリティ プロファイルがセキュリティの有効なフィールドに割り当てられていない限り、システム管理者セキュリティ ロールを持つユーザーのみがこのフィールドにアクセスできます。

今回の例では、アカウント マネージャーとシステム管理者だけが顧客の与信限度額を表示できるように、会社のポリシーを構成します。

アクセスを制限するために、次の手順を実行して列レベルのセキュリティを実装します。

列セキュリティの有効化

  1. Power Apps に管理者としてサインインします。

  2. 環境を選択します。

  3. 左ウィンドウで、Dataverse を選択します。

  4. テーブルを選択してから、すべてのビューを選択します。

  5. 取引先企業テーブルを選択します。

  6. スキーマ ペインで、を選択します。 与信限度額の列を検索して選択します (列ビューの上部にある検索エントリ フィールドを使用するか、一覧を下にスクロールします)。

  7. 右ウィンドウで、詳細オプションを選択します。

  8. 列セキュリティを有効にするを選択します。

  9. 保存を選択します。 保存が完了すると、列のセキュリティが有効になります。

セキュリティ プロファイルの構成

  1. Power Apps に管理者としてサインインします。

  2. 右上で歯車 (設定) アイコンを選択し、管理センターを選択します。 ブラウザーが新しく開いて Power Platform 管理センターが表示されます。

  3. 左側のナビゲーション メニューから環境を選択した後、セキュリティ プロファイルを設定する環境を選択します。

  4. ヘッダーのリボンから設定を選択します。

  5. ユーザーとアクセス許可の隣にあるドロップダウンを選択し、データ列セキュリティ プロファイルを選択します (または、設定画面のヘッダーにある検索フィールドでこの設定を検索することもできます)。

  6. 上部のリボンで + 新規プロファイルを選択すると、新しい列のセキュリティ プロファイルを作成するというタイトルの画面の右側にペインが表示されます。 アカウント マネージャーなどの名前を入力します。必要に応じて説明を追加することもできます。

  7. 保存を選択すると、ペインが閉じて、新しいプロファイルがデータ列セキュリティ プロファイルの一覧に表示されます。

  8. アカウント マネージャー プロファイルを選択します。 次に、このプロファイルにユーザーを追加します。 画面ヘッダーに、列のアクセス許可 (既定で表示)、チームユーザーの 3 つのタブが表示されます。 ユーザー タブを選択します。

    アカウント マネージャー セキュリティ プロファイル画面のスクリーンショット。[ユーザー] タブが強調表示されている。

  9. ユーザーを追加するにはここをクリックを選択すると、ユーザーの追加ペインが画面の右側に開きます。 追加するユーザーのユーザー名またはメール アドレスを入力し、表示されたドロップダウンから名前を選択すると、名前が一覧に追加されます。 不要な名前を追加した場合は、ユーザー名の右にある X を選択すると一覧から削除されます。

  10. ユーザーの一覧が完成したら、ユーザーの追加ペインの下で追加を選択します。 他のユーザーを追加する場合は、画面上部にある + ユーザーの追加ボタンを使用します。

  11. ここで列のアクセス許可タブを選択します。

  12. 与信限度額列を選択し、上部の編集を選択します。

  13. 画面右の列のセキュリティを編集するペインで、読み取りの下の許可を選択します。

  14. 保存を選択するとペインが閉じて、[列のアクセス許可] タブに与信限度額列のアカウント マネージャーの新しい設定が表示されます。

これで、この列のアカウント マネージャーのプロファイルに定義されていないユーザーが、取引先企業テーブルまたはビューの与信限度額列にアクセスできなくなります。 このフィールドの値には、フィールドがセキュリティ保護されていることを示す ******** 付きのロック アイコンが表示されます。

アクセスを制御する階層セキュリティ

階層セキュリティ モデルは、マネージャーが自分の部下のレコードにアクセスしたり、部下の代わりに作業を行うことを許可することで、Dataverse セキュリティを拡張します。 これは、他のすべての既存のセキュリティ モデルで使用できます。

階層には、マネージャー階層と職位階層の 2 つのセキュリティ モデルを使用できます。 マネージャー階層では、マネージャーは部下と同じ事業単位内にいるか、または部下の事業単位の上位の事業単位にいなければ、部下のデータにアクセスできません。 職位階層では、事業単位間でデータにアクセスできます。

マネージャー階層

マネージャー階層セキュリティ モデルは、管理チェーンまたは直接的なレポート構造に基づいています。 マネージャーと部下のリレーションシップは、ユーザー テーブルの "マネージャー" フィールドを使用して確立されます。 このセキュリティ モデルを使用すると、マネージャーは部下がアクセスできるデータにアクセスできます。 マネージャーは、直属の部下の代わりに作業を実行したり、承認が必要な情報にアクセスすることができます。 マネージャーは、直属の部下のデータに完全にアクセスできます。 直属以外の部下に対しては、マネージャーはその部下のデータへの読み取り専用アクセス権のみを持つことができます。

職位階層

職位階層セキュリティでは、組織内のさまざまな職位を定義して、職位テーブルを使用して階層内に配置できます。 その後、ユーザー レコードの [Position lookup] 列を使用して、任意の職位にユーザーを追加できます。 階層の上位に位置するユーザーは、直系祖先パスにある下位の職位のユーザーのデータにアクセスできます。 マネージャー階層と同様に、親の職位は子の職位のデータに完全にアクセスできますが、直系の親より上にある職位には読み取り専用アクセス権のみを持つことができます。

どちらの階層モデルでも、階層内の上位のユーザーは、部下のデータを表示するにあたって、テーブルに対するユーザー レベルの読み取り権限が少なくとも必要です。 たとえば、マネージャーが Case エンティティへの読み取りアクセス権を持っていない場合、部下がアクセスできるケースは表示できません。

階層セキュリティの構成例

ここでは、組織の環境に階層セキュリティを設定する方法を説明します。 最初に設定を行ってから、マネージャーと職位の階層を設定します。

階層セキュリティ システム設定の構成

設定を更新するには、システム管理者のアクセス許可が必要です。 正しいアクセス許可がない場合は、システム管理者に問い合わせてください。

階層セキュリティは既定では無効になっています。 有効にするには、次の手順を実行します。

  1. Power Apps に管理者としてサインインします。

  2. 右上で歯車 の設定アイコンを選択し、管理センターを選択します。

  3. 左側のサイド メニューから環境を選択し、構成する環境を選択します。

  4. 上部のリボンから設定を選択します。

    「システム」で「セキュリティ」が選択されている「設定」のスクリーンショット。

  5. ユーザーとアクセス許可ドロップ ダウンを選択し、階層セキュリティを選択します。

    「階層セキュリティ」が選択されている「セキュリティ」のスクリーンショット。

  6. 少し待つと、階層セキュリティというタイトルの新しいブラウザー タブが開きます。 階層モデルの有効化の隣のチェック ボックスをオンにすると、階層モデル オプションが選択可能になります。 ここでは、マネージャー階層を選択し、階層の深さ3 (既定値) に設定します。 階層の深さは、マネージャーがレポートのデータに読み取り専用でアクセスできる深さのレベル数を表します。

    重要

    階層セキュリティを変更するには、階層セキュリティ設定の変更の権限が必要です。

    階層モデルが有効化され、モデルが選択されており、深さが設定されているスクリーンショット。

マネージャーと職位の階層の設定

システム ユーザー レコードに対するマネージャー リレーションシップを使用して、マネージャー階層を作成できます。 マネージャー (ParentsystemuserID) 検索フィールドを使用して、ユーザーのマネージャを指定します。 職位の階層が作成されている場合は、職位の階層内の職位をユーザーにタグ付けすることもできます。

階層モデルの有効化マネージャー階層がオンに設定された階層セキュリティ ブラウザー タブで、次の操作を行います。

  1. [マネージャー階層] で、構成を選択します。

  2. 各ユーザーにマネージャーと職位を割り当てます (オプション)。 右上のフィルタ フィールドを使用してユーザーを検索します。 有効なユーザーでユーザーを選択すると、ユーザー ポップアップ ウィンドウが開きます。

有効なユーザー ウィンドウのスクリーンショット。

次の例では、ユーザーに Adele Vance が選択されています。 Adele Vance の上司は、マネージャー階層内の Nestor Wilke であり、職位階層に営業担当者の職位を持っています。

Adele Vance のユーザー ウィンドウのスクリーンショット。

職位階層の特定の職位にユーザーを追加するには、次に示すように、ユーザー レコードのフォームの [職位] というルックアップ フィールドを選択します。 組織の階層に現在の職位が表示されます。検索フィールドを使用して職位を検索できます。

「営業担当者」が選択されている「職位」フィールドのスクリーンショット。

+ 新しい職位を選択すると、新しい職位 アップ ウィンドウが表示されるので、必要に応じて職位を追加します。 ここで、名前親の職位 (オプション) を入力します。 職位を保存すると、職位の階層で使用できるようになります。

新しい職位ウィンドウのスクリーンショット。

職位階層を作成するには以下を行います。

  1. Power Platform 管理センターにサインインします。

  2. 環境 を選択し、自分の環境を選択して変更します。

  3. リボンから 設定を選択します。

    「システム」で「セキュリティ」が選択されている「設定」画面のスクリーンショット。

  4. ユーザーとアクセス許可を展開し、階層のセキュリティを選択します (または、最上部にある設定の検索フィールドで階層を入力することもできます)。

    セキュリティ ウィンドウで階層セキュリティが強調表示されているスクリーンショット。

  5. マネージャー階層モデルを有効にするの横のラジオ ボタンをオンにし、奥行が 3 (既定値) に設定されていることを確認します。

    階層モデルが有効化されており、職位階層がカスタムに設定されており、深さが 3 に設定されているスクリーンショット。

  6. 構成を選択します。

  7. 職位ごとに、職位の名前、職位の親、説明を指定します。 この職位に [ユーザー] というルックアップ フィールドを使用して、この職位にユーザーを追加します。 以下は、有効な職位を持つ職位階層の例です。 任意の職位を選択し、階層内で他の職位を割り当てたり追加したりできます。

    有効な職位のスクリーンショット。

  8. 職位を選択すると、この職位に含まれるユーザーの一覧が表示されます。 ユーザーを個別に選択できます。 ユーザーを選択すると、そのユーザーの管理画面に移動します。必要に応じてユーザーの詳細を変更します。 ウィンドウの左上にある [戻る] 矢印をクリックすると、前の画面に戻ります。

    販売担当者の画面のスクリーンショット。この職位のユーザーである Adele Vance が表示されている。

  9. 有効な職位の画面を使用すると、各ユーザーが階層内で適切な職位に設定されていることを確認できます。

パフォーマンスに関する考慮事項

パフォーマンスを高めるために、次をお勧めします。

  • 1 つのマネージャーや職位に対する階層のセキュリティのユーザー数を 50 以下に保ってください。 マネージャーや職位に対する階層に、50 よりも多くのユーザーを設定できますが、階層の深さを使用して読み取りアクセスのレベル数を減らし、マネージャーや職位に対する階層の有効なユーザー数を 50 以下に制限してください。

  • 階層のセキュリティ モデルを既存のセキュリティ モデルと組み合わせて、複雑な設定を行うことができます。 事業単位を多数作成するのではなく、事業単位の数は減らして階層のセキュリティを追加してください。