4
1
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

Microsoft Fabric レイクハウスでのデータアクセス制御の方法メモ

Last updated at Posted at 2024-07-03

はじめに

レイクハウスにどのようにアクセス制御設定をする方法があるのかメモ

2024/07/03 時点の情報です。

エンジンごとのアクセスポリシー

Fabric はすべてのテーブルデータを OneLake に共通フォーマットである Delta Parquetとして保存する一方で、現時点ではそれぞれのアイテムで処理を実行するエンジン個々のアクセスポリシーでアクセス可否を評価します。

image.png

本記事では、レイクハウスおよび SQL 分析エンドポイントでのアクセス制御の実例を記載します

キーワードの使い分けについて

以下のように用語を使い分けて説明します

データ:テーブルにおけるレコード、ファイルにおける内容を指します
オブジェクト:テーブル、スキーマなどのデータベースオブジェクトを指します
フォルダ または ファイル:テーブルを提供するDelta Lake フォーマットのファイルまたはそのファイルが格納されたフォルダ、レイクハウスで表示可能なフォルダ、ファイルを指します

1. 最小権限の付与状態と方法

セマンティックモデルを除き、アイテムとオブジェクトを表示する権限として、読取 アクセスがあります。(セマンティックモデルではデータの表示権限も含まれます)

レイクハウスではアイテムレベルで読み取りアクセスを付与することが可能であり、この状態が最小権限として 「データベースとしてはオブジェクトの表示・接続が可能だが、データの表示ができない状態」 となります。

共有ボタンにて設定します。

image.png

追加のアクセス制御については後述しますが、これらを追加しない状態が読取アクセス状態です。

image.png

アクセス許可の管理から状態を確認できます。

image.png

image.png

なお、レイクハウスにはSQL分析エンドポイントと、既定のセマンティックモデルが付随するため、それらについても読取アクセスが付与されます。

SQL分析エンドポイント(アイコンに注目)
image.png

既定のセマンティックモデル
image.png

この時点で、付与を受けたユーザーの OneLake データハブの検索にそれぞれのアイテムが表示されます。

image.png

ただし、データの内容は確認できません。

フォルダへのアクセス権がないので、テーブル、ファイル自体の表示不可
image.png

ウェアハウスではオブジェクトが表示されていますがデータの表示はできません。
image.png

既定のセマンティックモデルも同様で、オブジェクトは表示されていますが、データを表示するためのボタンは無効化されています。

image.png

既定のセマンティックモデルを使用したレポートにも読取アクセスを付与して確認。

image.png

注意
この挙動については、現時点ではdocsと差異があります。既定で読み取り可能とされていますが、実際には既定のセマンティックモデルは SQL 分析エンドポイントでのデータ読取権限がないと動作しませんでした。(おそらく既定でない、OAuth認証方式でのセマンティックモデルの仕様が記載されています。)

image.png

https://learn.microsoft.com/en-us/fabric/onelake/security/data-access-control-model#onelake-rbac-and-default-lakehouse-semantic-model-permissions

2. Spark によるデータ読み取りアクセスの付与

はじめに Spark または OneLake APIによるアクセスを許可します。
データアクセスロールにて制御します。

4つのフォルダ(テーブル2, ファイル2 )で確認します。

image.png

2-1. フォルダレベルの制御

はじめに、参照可能なテーブルフォルダを指定したロールを作成して、ユーザーをそのロールに割り当てます。

image.png

image.png

ユーザーからの表示は以下のようになります。

レイクハウス上での表示では、該当のテーブルフォルダのみがデータ表示されます。
image.png

基になっているDelta Parquetファイルも確認可能です。

image.png

ウェアハウス上での表示は変化なし
image.png

既定のセマンティックモデル上での表示は変化なし
image.png

image.png

ファイルフォルダへの権限も付与してみます。

image.png

該当フォルダのみがデータ表示可能となります
image.png

このようにファイル、フォルダにアクセス可能な状態だと、ユーザーが管理しているレイクハウスへのショートカットの作成も可能です。
image.png

2-2. レイクハウス全体の制御

レイクハウス全体の制御は ReadAll アクセスを付与します。

image.png

ReadAll 権限を持つユーザーはそのレイクハウスのすべてのファイル、フォルダにアクセスでき、Spark エンジンを介してのデータ表示も可能です。

image.png

※データアクセスロールが有効な場合は、ReadAll権限を持つユーザーは既定でDefault Reader (すべてのフォルダを閲覧可能なロール)ロールに自動追加されるようになっています。 この自動設定は無効化することも可能です
image.png

ただし、T-SQL , Analysis Service エンジン上でのアクセスポリシーとは関連しないため、引き続き両者のエンジンによるアクセスではデータ表示はできません。

image.png

image.png

3. T-SQL によるSQL 分析エンドポイント上でのテーブルへの読み取りアクセスの付与

3-1. オブジェクトアクセス制御 - テーブル

GRANT文で付与します。

image.png

クエリによりデータ表示可能となりました。

image.png

この時点で Direct Lake で動作する既定のセマンティックモデルを使用したレポートが表示可能となります。他のエンジンと異なり、セマンティックモデルはポリシー設定がない場合は既定で表示となります。

image.png

3-2 オブジェクトアクセス制御 - スキーマ

スキーマを作成し、Viewを介してアクセスさせるようにします。

image.png

クエリによりデータ表示可能となりました。

image.png

Viewを使用する場合、 Direct Lake の対象として動作しない点にご注意ください(常にDirect Query にフォールバックされます)

3-3 SQL 分析エンドポイント全体での制御

一度双方のアクセス権を外しておきます。

image.png

クエリ不可となりました。

image.png

SQL 分析エンドポイント上で ReadData アクセスを追加します。
image.png

クエリによりデータ表示可能となりました。
image.png

注意。ビューアーロールを割当られたユーザーは自動的にこのReadDataが付与されます

参考

ベストプラクティスや、データエンジニアなどのロールを想定したシナリオ例など

問題の共有 オブジェクトアクセス制御 - スキーマ移動

スキーマを移動するこの方式では、Spark エンジンでの CRUD 操作が同期されない問題を確認しているので、注意ください。

まずレイクハウスのテーブルはdboスキーマで作成されるため、これを移動し、qiita schema にアクセス権を付与します。

image.png

クエリによりデータ表示可能となりました。
image.png

ただし、この状態だと Spark での操作が同期されないため現時点では採用が難しい方式となります

image.png

image.png

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1