Dataverseは、多層的なセキュリティモデルを採用しており、組織のニーズに応じて柔軟かつ強固なアクセス制御を実装することができます。
本記事ではDataverseでのセキュリティ設定について深堀しつつ、組織の要件に応じた細やかなアクセス制御の方法を解説します。
Dataverseセキュリティの基本概念
前提として、Microsoftが定義しているセキュリティの概念としては、以下のようになっております。
- 組織レベル:環境全体のセキュリティ設定
- テーブル(エンティティ)レベル:特定のテーブルに対するアクセス制御
- レコードレベル:個々のデータレコードへのアクセス管理
- フィールドレベル:テーブル内の特定のフィールドへのアクセス制御
- ユーザーレベル:個々のユーザーやグループに対する権限設定

このようにDataverseでは多層的なセキュリティを組むことができるため、多様なビジネスのシナリオに対応できるのが特徴となっております。
組織レベルのセキュリティ
組織レベルのセキュリティは、環境全体に適用される基本的なセキュリティ設定です。
歯車アイコンを押下します。

管理センターを押下します。
もしない場合は、以下からアクセスできます。

環境を開き、新規を押下します。

表示される項目にて設定することができます。
特に種類からそれぞれに応じた環境を設定できます。
開発者:
- 個々の開発者が使用する個人用の環境です。
- アプリケーションやフローの初期開発、概念実証(PoC)の作成に適しています。
- 通常、リソース制限があり、コストが抑えられています。
- チーム開発よりも個人的な開発作業に向いています。
実稼働:
- 新しいソリューションや機能の実証(デモンストレーション)用の環境です。
- クライアントやステークホルダーに対して、開発中の製品やサービスを示すのに適しています。
- 本番データの一部を含む可能性がありますが、完全なデータセットではありません。
試用版:
- 製品やサービスの評価目的で使用される限定的な機能を持つ環境です。
- 潜在的な顧客や新規ユーザーが製品の機能を試すのに適しています。
- 通常、時間制限があり、一部の高度な機能が制限されている場合があります。
サンドボックス:
- 開発やテスト用の環境です。
- 本番データのコピーを使用して安全にテストができます。
- 新機能の開発、構成変更のテスト、トレーニングなどに適しています。
- 本番環境に影響を与えることなく自由に実験できます。

テーブル(エンティティ)レベルのセキュリティ
テーブルレベルのセキュリティでは、特定のテーブルに対するアクセス権を制御します。
はじめにロールの作成方法について説明します。
歯車アイコンを押下します。

管理センターを押下します。
もしない場合は、以下からアクセスできます。

対象の環境から設定を押下します。

ユーザーとアクセス許可を押下し、セキュリティ ロールを押下します。

新しいロールをクリックします。

ロール名、部署を選択し、保存ボタンを押下し、エラーがなければロールの作成が完了です。

次に作成されたロールに指定したテーブルごとに、作成、読み取り、書き込み、削除、追加などの権限を設定する方法を説明します。
前述のロールを作成後、以下のような画面に遷移されます。

テーブルが複数がありますが、右上の検索ボックスから指定のテーブルを絞り込みが行えます。

ここで各操作の権限を指定することができます。

レコードレベルのセキュリティ
レコードレベルのセキュリティは、個々のデータレコードへのアクセスを管理します。
Powerappsメーカーの画面を開き、テーブルを押下します。
指定のテーブルを開きます。

編集を押下します。
表示されているレコードを選択し、フォームを使用して行を編集するを押下します。

フォーム上の共有ボタンを押下します。

アクセス管理を押下すると、ここでユーザー/チームそれぞれのユーザーを招待することができます。

フィールドレベルのセキュリティ
フィールドレベルのセキュリティでは、テーブル内の特定のフィールドへのアクセスを制御します。
※ただし注意点として、テーブルに既に追加してしまった列についてはセキュリティを有効することができないことはご留意ください。
ソリューションを開きます。
対象の行を選択します。

開かれる画面で以下のように設定を行い、保存を行います。

Name
- システム内で参照される際に使用される名前です。
Display Name
- ユーザーインターフェイス上で表示される、名前です。
Description
- ルールの詳細な説明や用途を記述します。
Regular Expressoion
- マスキングするデータパターンを定義する正規表現です。
- 例えば、クレジットカード番号や社会保障番号などの特定のパターンを指定できます。
Masked Character
- 実際のデータを置き換えるために使用される文字です。
- 通常、アスタリスク(*)やX等の文字が使用されます。
新規 > セキュリティ > セキュア マスキング ルールを選択します。

対象のテーブルを開きます。
新規を押し、列を押下します。
列セキュリティにチェックをつけて、マスキングルールを作成し、前述で作成した項目を選択します。
※マスキングルールで具体的な設定を行えるため、後述で説明します。

ユーザーレベルのセキュリティ
ユーザーレベルのセキュリティでは、個々のユーザーやグループに対して特定の権限を付与します。
歯車アイコンを押下します。

管理センターを押下します。
※もしない場合は、以下からアクセスできます。

対象の環境から設定を押下します。

ユーザーとアクセス許可 > ユーザーを選択します。

新規からでも設定はできますが、既存ユーザーを選択し、表示される3点リーダーのセキュリティ ロールの管理を押下します。

ここで上記で作成したロールを選択できます。


まとめ
Dataverseの多層的なセキュリティモデルを活用することで、組織の要件に応じた細やかなアクセス制御を実装できます。
セキュリティ設定を行う際は、組織のポリシーや法令遵守の要件を十分に考慮し、定期的に見直しを行うことが重要です。
また、ユーザーの役割や権限の変更に応じて、柔軟にセキュリティ設定を調整できるよう、Dataverseのセキュリティ設定について理解を深めたり、管理プロセスを確立することをお勧めします。