Microsoft Fabric での SQL の詳細なアクセス許可
適用対象:✅ Microsoft Fabric の SQL エンドポイントおよびウェアハウス
ワークスペース ロールへの割り当てによって提供される、または項目のアクセス許可を通じて付与された既定のアクセス許可が不十分な場合は、より詳細な制御のために標準の SQL 構造体を使用できます。
SQL 分析エンドポイントとウェアハウスの場合:
- オブジェクトレベル セキュリティは、GRANT、REVOKE、DENY の T-SQL 構文を使用して管理できます。
- ユーザーには、カスタム データベース ロールと組み込みデータベース ロールの両方の SQL ロールを割り当てることができます。
ユーザーの詳細なアクセス許可
- ユーザーがデータベースに接続するには、ユーザーがワークスペース ロールに割り当てられているか、アイテムの読み取りアクセス許可が割り当てられている必要があります。 少なくとも読み取りアクセス許可がない場合は、接続が失敗します。
- ユーザーがウェアハウスに接続できるようにする前に、ユーザーの詳細なアクセス許可を設定する場合は、まず SQL 内でアクセス許可を設定できます。 その後、ワークスペース ロールに割り当てるか、アイテムのアクセス許可を付与することで、アクセス権を付与できます。
制限事項
- 現在、
CREATE USER
を明示的に実行することはできません。GRANT
またはDENY
が実行されると、ユーザーが自動的に作成されます。 十分なワークスペース レベルの権限が付与されるまで、ユーザーは接続できません。
自分のアクセス許可を表示する
ユーザーが 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');
ユーザーに明示的に付与されたアクセス許可を表示する
SQL 接続文字列を介して接続すると、昇格した特権のアクセス許可を持つユーザーは、システム ビューを使用して付与されたアクセス許可に対してクエリを実行できます。 ワークスペースのロールに割り当てられているユーザーやユーザーに与えられているユーザー権限、または割り当てられたアイテム権限は表示されません。
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;
データ保護機能
ウェアハウスまたは SQL 分析エンドポイントのテーブルの列フィルターと述語ベースの行フィルターを、Microsoft Fabric のロールとユーザーに固定することができます。 動的データ マスクを使用して、管理者以外の機密データをマスクすることもできます。