Microsoft Fabric の OneLake をざっくり理解する

## OneLake とは…？
Microsoft Fabric の OneLake について紹介すると、OneLake に入れたデータは誰でもアクセスできるようになってしまうのではないか？という質問を受けることが度々あります。これは OneLake のコンセプトを聞いたときに、実体が分からないために湧きおこる疑問かと思います。
この記事は **OneLake とは何なのか、アクセス制御はどうなっているのかをざっくり理解する**ことを目的としています。

## OneLake の実体はストレージ
**Fabric にデータを入れる時、レイクハウスやウェアハウス、イベントハウスなどのデータのストア先 (入れ物) が必要となります。** これらの論理的な入れ物を作成して、その中にテーブルやファイルとしてデータを入れることになります。
ファイルはそのまま、**テーブルは Delta 形式で格納されます。** Fabric では既定で V-Order により特殊な並べ替え、行グループの配布、辞書のエンコード、Parquet ファイルへの圧縮を適用した Delta 形式でデータを保存することで、Power BI エンジンと SQL エンジンでは、インメモリのようなデータ アクセス タイムを実現します。
これが **Power BI が DirectLake 形式により、Fabric でパフォーマンスとリアルタイムを両立する理由です。**
なお V-Order はオープンソースの Parquet 形式に 100% 準拠していおり、**すべての Parquet エンジンは、これを通常の Parquet ファイルとして読み込むことができます。**

https://learn.microsoft.com/ja-jp/fabric/data-warehouse/v-order

このようにストアされたデータは、物理的にはストレージに格納されます。何にどのくらい消費しているのかは、Fabric Capacity Metrics アプリで確認できます。

https://learn.microsoft.com/ja-jp/fabric/onelake/onelake-capacity-consumption

## ミラーリングとショートカット
**ミラーリングは、主にデータベースのコピーを OneLake に作成する**ことで、**ショートカットはファイルへのリンクを作成する**ことで、OneLake 上で使えるようにすることです。

ミラーリングを使用すると、データとメタデータの OneLake へのレプリケーションと **V-Order が有効な Parquet への変換**が行われます。ミラーリングされたデータは OneLake に存在しますが、**Fabric 容量が稼働している限り、一定容量まではストレージ料金は免除**されます。

https://learn.microsoft.com/ja-jp/fabric/database/mirrored-database/overview

ショートカットを作成する場合、レイクハウスまたは KQL データベースに作成します。データの実体は OneLake ではなく、リンク先にのみ存在します。
ショートカットされているアイテムは、使用する時にソース システムから読み込まれます。

https://learn.microsoft.com/ja-jp/fabric/onelake/onelake-shortcuts

::: note warn
アクセス許可と資格情報はすべて OneLake が管理するため、**データソース側で設定されているアクセス権とは別管理になります。** 
:::

## OneLake はデータのための OneDrive
と言われても、OneDrive を使っていなければ分からないのですが･･･。OneDrive はファイルを置いて適宜共有できるクラウド サービスですが、誰がそのファイルにアクセスできるかは、どのように共有の設定をしたかによります。OneLake も同様に、**OneLake に置いたデータにアクセスできるかは、アクセス権の設定次第**となります。

## アクセス制御
Microsoft Fabric は Power BI を拡張する形で誕生しました。Power BI をお使いになっている方はよくご存じの通り、**アクセス権の最初の一歩となるのがワークスペース**です。ワークスペースはデータやレポートを提供する側となるユーザーがアクセス権を持つのが基本となります。

https://learn.microsoft.com/ja-jp/fabric/onelake/security/get-started-security?source=recommendations

レイクハウスなどの**すべての Fabric アイテムは、このワークスペースの中に作成します。**
アクセス権は**ロール**で管理されており、次の4種類があります。

|ロール|主なできること|
|:-:|:-|
|管理者|ワークスペースに関するすべての操作、アイテムの追加・編集・削除が可能|
|メンバー|メンバー以下の権限でのアクセス権付与、アイテムの追加・編集・削除が可能|
|共同作成者|アイテムの追加、編集が可能|
|ビューアー|アイテムの閲覧のみ可能|

::: note warn
Power BI だけであれば、レポートを閲覧するユーザーに対して、ビューアー ロールを付与するという運用方法でも良かったのですが、**レイクハウスやウェアハウスなどは、ビューアー ロールがあると中のデータまで見えてしまう**ので、注意が必要です。
不用意な共有を避けるためにも、Power BI とそれ以外の用途とでは、ワークスペースを分けておくのがおすすめです。
:::

https://learn.microsoft.com/ja-jp/fabric/get-started/roles-workspaces

https://learn.microsoft.com/ja-jp/power-bi/collaborate-share/service-roles-new-workspaces

なお、ワークスペースの中でフォルダーを作成できるようになりましたが、**フォルダー単位でのアクセス権の設定は、現時点ではできません。**

https://learn.microsoft.com/ja-jp/fabric/get-started/workspaces-folders

:::note warn
ワークスペース内のアイテムは、それぞれ個別にアクセス権を付与することができます。**アクセス権はすべて加算的に付与されることに注意してください。** たとえば、ワークスペースのビューアー ロールをもつユーザーに対し、あるノートブックに対する編集権限を付与した場合、ユーザーはノートブックを**編集できます**。
:::

ここまで読んで「最小権限のビューアー ロールで全部見えちゃうじゃん」と思いますよね。大丈夫です、もちろん**もっと細かい制御が可能**です。
**OneLake RBAC により、ワークスペース ビューアー を使用するユーザーまたはレイクハウスへの読み取りアクセス権を持つユーザーのデータ アクセスを制限できます。**
ミラーリングとショートカットのところで「データソース側で設定されているアクセス権とは別管理になります」と書きましたが、Fabric 外部のショートカットについては、権限を委任するかどうか等の設定を行うことができ、この OnaLake RBAC を使用します。
詳しくはこちらのドキュメントをご覧ください。

https://learn.microsoft.com/ja-jp/fabric/onelake/security/data-access-control-model#shortcuts

## さいごに
こちらでより OneLake の魅力が分かる記事が書かれていますので、合わせてご覧ください。

https://qiita.com/ryoma-nagata/items/3106ff09079b71bf3af3