Microsoft Fabric で OneLake ショートカットが作成できる権限付与状態の検証

## はじめに

OneLake ショートカットって、どういう権限状態なら作成できるの？ワークスペースロールあればいい？
という疑問を確認しました


### 注意事項

2024/2時点の情報です。特に権限周りは今後のアップデートで洗練された結果、今回の検証が通用しなくなる可能性があります。

### 参考

- https://learn.microsoft.com/ja-jp/fabric/get-started/share-items
- https://learn.microsoft.com/ja-jp/fabric/get-started/roles-workspaces
- https://learn.microsoft.com/ja-jp/fabric/data-warehouse/share-warehouse-manage-permissions
- https://learn.microsoft.com/ja-jp/fabric/data-engineering/lakehouse-sharing
- https://learn.microsoft.com/ja-jp/fabric/onelake/onelake-shortcuts

## 確認結果


### ショートカット作成の大前提

ワークスペースロールが View より上位、つまり、ショートカットを作成したいレイクハウスで更新操作ができる権限が必要です

### ショートカットのデータソースの権限

データソースとなるワークスペースで必ずしもワークスペースレベルの権限は不要で、Direct Access 権限でもショートカットが作成できることがわかりました。
ただし、ショートカットはレイクハウスの機能なので、テーブルの背後のファイルへのアクセス権としてReadAllを付与しないといけないということですね。


なお、ReadDataは Warehouse に関連する権限なのですが、レイクハウスについてはSQL Endpoint 上で　Read Data がない状態でもショートカット作成ができました。

| ショートカット元の種類 | データソースワークスペース権限 | データソースアイテムの読み取り | データソースアイテムのReadData                 | データソースアイテムのReadAll | 作成可否 |
|-------------|-----------------|-----------------|-------------------------------------|--------------------|------|
| Warehouse   | なし              | 〇               | ×                                   | ×                  | ×    |
| Warehouse   | なし              | 〇               | ×                                   | 〇                  | ×    |
| Warehouse   | なし              | 〇               | 〇                                   | ×                  | ×    |
| Warehouse   | なし              | 〇               | 〇                                   | 〇                  | 〇    |
| Warehouse   | なし              | 〇               | ×（ただしGRANTでテーブルアクセス許可）              | ×                  | ×    |
| Warehouse   | なし              | 〇               | ×（ただしGRANTでテーブルアクセス許可）              | 〇                  | ×    |
| Warehouse   | Viewer以上        | 〇（ロールから継承）      | 〇（ロールから継承）                          | ×                  | ×    |
| Warehouse   | Viewer以上        | 〇（ロールから継承）      | 〇（ロールから継承）                          | 〇                  | 〇    |
| Lakehouse   | なし              | 〇               | ×                                   | ×                  | ×    |
| Lakehouse   | なし              | 〇               | 設定なし(SQL Endpoint 側の設定にのみ存在するが寄与せず) | 〇                  | 〇    |
| Lakehouse   | Viewer以上        | 〇（ロールから継承）      | 〇（ロールから継承）                          | ×                  | ×    |
| Lakehouse   | Viewer以上        | 〇（ロールから継承）      | 〇（ロールから継承）                          | 〇                  | 〇    |

### 補足

#### データソースアイテムの ReadAll とは

アクセス権限を確認すると以下のように確認ができますが、この権限は Viewer には含まれないため、ショートカットを作成していい場合にのみReadAllは付与すると良いかと思います。

逆にSSMSやPower BI Desktop から接続できてもショートカット作成はしてほしくない場合は外したままにしましょう



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/b6f4ec66-d485-e830-3c94-1da04c895359.png)


## ショートカット作成の必要権限を踏まえて検討すべきこと

ショートカット作成の可否はテーブルなどのオブジェクトレベルでは制御できず、データベースレベルとなるため、再共有の可能性をふまえてウェアハウスorレイクハウスアイテムやワークスペース粒度を検討すると良いと思いました

## 予定

なお、これらのショートカットを作成した結果、ショートカットにアクセスできるけどデータソースには権限ないよ、というようなSSO適用可否的な権限の組み合わせの検証は場合分けがめちゃくちゃ細かくなってしまったので後日検証します。。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/0cd59f8b-907e-aa15-976d-3fc02037bae6.png)