フィールド セキュリティ テーブル
フィールドレベルのセキュリティを適用するには、フィールド セキュリティ テーブルを使用します。これにより、フィールド アクセスを指定のユーザーとチームに限定できます。 フィールドレベルのセキュリティの適用範囲はグローバルです。つまり、レコードやユーザーが属している部署階層レベルに関係なく、組織内のすべてのレコードに適用されます。 フィールド セキュリティは Microsoft Dataverse のすべてのクライアントで機能します。これには、Web クライアント、 Dynamics 365 for Outlook、 Dynamics が含まれます。 フィールド セキュリティは、Dataverse Web サービス、レポート、検索、オフライン、フィルター ビュー、監査、重複データ検出など、すべてのコンポーネントに適用されます。 このリリースでは、フィールドのセキュリティはカスタム フィールドと多くの標準 (OOB) フィールドの両方に適用できます。
重要
フィールド レベルのセキュリティ プロファイルは、意図しないユーザーがプロファイル定義に基づいて Dataverse データにアクセスできないようにします。 SQL Server ACL が不適切に構成されている場合、または、SQL インジェクションに問題がある場合、無効なユーザーがフィールド レベル セキュリティ制限を回避して SQL Server のデータに直接アクセスできることがあります。 詳細については、「Web アプリケーションのセキュリティ上の脅威の概要」を参照してください。
フィールド セキュリティの設定と使用
フィールド セキュリティを使用するには、次のことを行います。
フィールド セキュリティ プロファイル レコードを作成します。
ユーザーまたはチームをプロファイルに追加します。
フィールド レベルでセキュリティ保護できる列を検索します。
列の作成時または列定義の更新時に、列をセキュリティで保護します。
カスタマイズを公開します。
カスタム列に対してプロファイルが持つアクセス権 (作成、更新、読み取り) を定義するフィールドのアクセス許可レコードを作成します。
これらの手順の実行方法に関するサンプル コードについては、「サンプル: エンティティでのフィールド セキュリティの有効化」を参照してください。
指定したフィールド セキュリティ プロファイルで列の作成、読み取り、または更新ができるかどうかを設定するには、次のフィールドのアクセス許可列を使用します。 これらの列の値を設定または比較するには、
field_security_permission_type
グローバル選択肢を使用します:
FieldPermission
.CanCreate
FieldPermission
.CanRead
FieldPermission
.CanUpdate
重要
特権の低いユーザーは、フィールド セキュリティ プロファイルのエンティティへの読み取りアクセス権が与えられている場合、他のユーザーのプロファイルの内容を確認して、関心のあるセキュリティで保護された属性へのアクセス許可を持つ他のユーザーを見つけることができます。 次に、彼らは、ソーシャル エンジニアリング技術を使用して、これらのセキュリティで保護された属性へのアクセス権のあるプロファイルを割り当てることができます。
どの属性を保護できますか。
保護できる列を確認するには、次のプロパティのテーブル定義を照会できます:
-
特定の属性のデータの種類に適用するそのほかのいくつかのルールがあります。
ブール型属性は、作成、更新操作に保護されていますが、読み取りには保護されていません。
オプション セット属性は、既定値が指定されていない場合、作成、更新、および読み取りに保護されています。
保護できる列は数千とあり、この情報を検索する 2 つの簡単な方法があります。 組織のテーブル定義を表示するには、ご使用の環境でテーブル定義を参照する で説明されているテーブル定義ブラウザー ソリューションをインストールします。 テーブル/エンティティ参照 でエンティティの参照ドキュメントを参照することもできます。
セキュリティで保護されたフィールドの共有
セキュリティで保護されたフィールドは、レコードを共有するのと同様に共有できます。 それには、PrincipalObjectAttributeAccess
(フィールド共有) レコードを作成、更新、または削除します。このとき、ユーザーまたはチーム、エンティティ、およびアクセス許可を指定します。
次の表は、レコードのセキュリティを保護するためのメソッドとフィールドのセキュリティを保護するためのメソッドの一覧です。
レコードの共有 | フィールド アクセスの共有 |
---|---|
ユーザーまたはチームによるレコードへのアクセスを許可するには、GrantAccessRequest メッセージを使用します。 | CreateRequest メッセージまたは IOrganizationService.Create メソッドを使用してユーザーまたはチームに対してセキュリティ保護されたフィールド アクセス権を付与します。 |
ユーザーまたはチームによるレコードへのアクセスを更新するには、ModifyAccessRequest メッセージを使用します。 | UpdateRequest メッセージまたは IOrganizationService.Update メソッドを使用してユーザーまたはチームに対してセキュリティ保護されたフィールド アクセス権を更新します。 |
ユーザーまたはチームによるレコードへのアクセスを削除するには、RevokeAccessRequest メッセージを使用します。 | DeleteRequest メッセージまたは IOrganizationService.Delete メソッドを使用してユーザーまたはチームに対するセキュリティ保護されたフィールド アクセス権を削除します。 |
関連項目
セキュリティとデータ アクセス
FieldSecurityProfile エンティティ
フィールドのアクセス許可 (FieldPermission) エンティティ
PrincipalObjectAttributeAccess エンティティ
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。