Microsoft Fabric での SQL の詳細なアクセス許可

適用対象:✅ Microsoft Fabric の SQL エンドポイントおよびウェアハウス

ワークスペース ロールの割り当てまたは項目のアクセス許可からの既定のアクセス許可で必要な制御レベルが得られない場合は、Fabric ウェアハウスまたは SQL 分析エンドポイントの標準 SQL コンストラクトを使用して、よりきめ細かなアクセス制御を行います。

Microsoft Fabricの SQL 分析エンドポイントと Warehouse の場合:

  • GRANTREVOKE、DENY T-SQL ステートメントを使用してオブジェクト レベルのセキュリティを管理します。
  • ユーザーを SQL ロール (カスタム データベース ロールと組み込みデータベース ロールの両方) に割り当てます。

Fabric ウェアハウスでユーザーの詳細なアクセス許可を構成する

  • ユーザーがFabric ウェアハウスまたは SQL 分析エンドポイントに接続するには、ユーザーをワークスペース ロールに割り当てるか、アイテムの読み取りアクセス許可を付与する必要があります。 少なくとも読み取りアクセス許可がない場合は、接続が失敗します。
  • ユーザーがウェアハウスに接続する前に詳細なアクセス許可を設定するには、まず SQL でアクセス許可を定義します。 次に、ワークスペース ロールを割り当てるか、アイテムのアクセス許可を付与することで、アクセス権を付与します。

CREATE USER の制限事項

  • Fabric ウェアハウスまたは SQL 分析エンドポイントでCREATE USERを明示的に実行することはできません。 GRANTまたはDENYを実行すると、Fabric によってデータベース ユーザーが自動的に作成されます。 ユーザーは、十分なワークスペース レベルの権限を持つまで接続できません。

自分のアクセス許可を表示する

ユーザーは、SQL 接続文字列を介して Fabric ウェアハウスまたは SQL 分析エンドポイントに接続した後、sys.fn_my_permissions関数を使用して使用可能なアクセス許可を表示できます。

現在のユーザーのデータベース レベルのアクセス許可:

SELECT *
FROM sys.fn_my_permissions(NULL, 'Database');

現在のユーザーに対するスキーマ スコープのアクセス許可:

SELECT *
FROM sys.fn_my_permissions('<schema-name>', 'Schema');

現在のユーザーのオブジェクト単位のアクセス許可:

SELECT *
FROM sys.fn_my_permissions('<schema-name>.<object-name>', 'Object');

Fabric ウェアハウス内のユーザーに明示的に付与されたアクセス許可を表示する

SQL 接続文字列を介してFabric ウェアハウスまたは SQL 分析エンドポイントに接続すると、管理者特権のアクセス許可を持つユーザーは、システム ビューを使用して付与されたアクセス許可に対してクエリを実行できます。 このクエリでは、ユーザーがFabricワークスペースのロールまたはアイテムを通じて受け取るアクセス許可は返されません。

SELECT DISTINCT pr.principal_id, pr.name, pr.type_desc,
    pr.authentication_type_desc, pe.state_desc, pe.permission_name
FROM sys.database_principals AS pr
INNER JOIN sys.database_permissions AS pe
    ON pe.grantee_principal_id = pr.principal_id;

Fabric ウェアハウスのデータ保護機能

Warehouse および SQL 分析エンドポイントでは、特定の列とテーブル内の特定の行へのアクセスを制限し、管理者以外のユーザーから機密データをマスクできます。