Microsoft Fabric で秘密度ラベルを適用する②保護ポリシーによりシステム管理者からのデータアクセスをブロックする

## はじめに

[Microsoft Fabric で秘密度ラベルを適用する①環境設定](https://qiita.com/ryoma-nagata/items/6a4e921119a8740f1b24)　の続きとして、[Microsoft Fabric の MIP保護ポリシー](https://learn.microsoft.com/ja-jp/fabric/governance/protection-policies-overview?context=%2Fpurview%2Fcontext%2Ffabric-context)を使用して秘密度ラベルによるアクセス制御レイヤーを構築してみます。


### 参考

- [How can I decide which protection method to use to protect my sensitive data in Fabric?](https://blog.fabric.microsoft.com/en-US/blog/how-can-i-decide-which-protection-method-to-use-to-protect-my-sensitive-data-in-fabric/)

:::note info

セマンティックモデルとレイクハウスから継承され、出力されたデータファイルを暗号化して外部漏洩をブロックする [DLPポリシー](https://blog.fabric.microsoft.com/ja-JP/blog/announcement-microsoft-purview-data-loss-prevention-policies-now-support-the-restrict-access-action-for-semantic-models/) についてはまた別の機会に検証します。

:::

## 手順

[Fabric の保護ポリシーを作成および管理する (プレビュー)](https://learn.microsoft.com/ja-jp/fabric/governance/protection-policies-create)　に従って構成します。

### 1. 秘密度ラベルの作成と発行

#### （初回のみ）Information Protection の有効化

はじめて秘密度ラベルでアクセス制御を構成する場合には以下のようなエラーが発生します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/f9ff7359-39b2-4323-a901-fe1510f3db99.png)

その場合には[保護サービスの状態をアクティブ化または確認する方法](https://learn.microsoft.com/ja-jp/azure/information-protection/activate-service#how-to-activate-or-confirm-the-status-of-the-protection-service)を参考に、Information Protection の有効化を実施します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/983669a6-b944-4cf1-8f72-3977a8417d6f.png)

#### 秘密度ラベルの作成と発行

アクセス制御に対応した秘密度ラベルを構成します。

:::note info

保護ポリシーの前提条件は以下です。

> Fabric の保護ポリシーのコンテキストで "適切に構成された" とは、ラベルが構成されたときに、そのスコープが[ファイルとその他のデータ資産] に設定され、その保護設定が、[アクセスの制御] を含むように設定されていることを意味します

引用：https://learn.microsoft.com/ja-jp/fabric/governance/protection-policies-create#prerequisites

:::


基本設定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/0f1450ce-160e-48d2-84df-b7c8a5f5958a.png)


スコープ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/c83850c1-3bf9-49cd-8eb7-809932947357.png)

保護設定の種類

ここでアクセスの制御を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/1877147d-a2fd-4a21-a2f3-1728f4090d3b.png)

アクセス制御設定

**アクセス許可を今すぐ割り当てる** の状態にして、対象のユーザーまたはグループ（今回はデータエンジニア用アカウント）を指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/82dd8381-c8f8-4c5f-9944-393f86e49272.png)

残りの設定は既定です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/77517612-9b31-40d9-b105-f98289c6653a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/46778acf-1f3c-42e1-ba26-a3a68336d9d0.png)

ラベルが作成できたら発行して、アイテムに割り当てができるようになってればOK。

### 2. 保護ポリシーの構成

Purview Information Protection の画面で保護ポリシーを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/44cc06e3-4f20-4dd1-b133-867e8345fa76.png)

基本設定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/54378b59-abef-4b4f-bf2d-f951a70b6f62.png)

保護ポリシーを適用する対象のラベルを選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/f41650c2-0a82-4977-b0b5-2d23c17c6f7e.png)

対象データソースとして Fabric を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/c6358bfa-8e09-48f7-bd45-13b3cbf90690.png)

保護ポリシーが動作した際に維持するアクセスを定義します。ここでは データエンジニアの権限は維持されるようにしました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/ded92790-847f-4f83-839d-381b62b19c78.png)

ポリシーを有効化したら完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/dd184cb7-f4f4-401a-b7d4-2d7bd1d37cdb.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/6496afae-98cc-42bb-9e6a-af7a85322437.png)

### 3. Fabric アイテムへのラベル適用

作業を行うワークスペースでは以下のように権限を割り当てました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/99a888c9-4789-4297-8040-c74523a3bf3a.png)


管理者に開発用アカウントがいるためデータエンジニアが作成したデータは全て開発用アカウントからも参照および書き込みできます。

データエンジニアが作成したレイクハウス
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/bde9533f-288b-4944-910e-6f2f862c83d1.png)

ラベル適用前なので開発用アカウントから参照できています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/09eea396-5feb-44ef-bca4-20ed4a739447.png)

アクセス権の管理画面でも権限がワークスぺースロールにより設定されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/c33e07a4-a28c-48c9-a705-970202135077.png)


データエンジニアのアカウントにてラベルを適用します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/bb229d4f-05ff-4086-bd86-3182fc443ab4.png)


:::note warn

ラベルを割り当てたユーザーは保護ポリシーの対象外となります。

>保護ポリシーは、ラベル発行者には適用されません。 つまり、保護ポリシーに関連付けられたラベルを項目に最後に適用したユーザーは、ポリシーで指定されていない場合でも、項目へのアクセスを拒否されません。 たとえば、保護ポリシーがラベル A に関連付けられており、あるユーザーがラベル A を項目に適用した場合、そのユーザーは、ポリシーで指定されていない場合でも、項目にアクセスできます。

引用：https://learn.microsoft.com/ja-jp/fabric/governance/protection-policies-overview    


:::

### 4. ポリシーの動作チェック

ラベルを割り当てると開発用アカウントからはラベルが割り当てられたアイテムが表示されなくなります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/8fa8c922-28b4-41ee-ae86-22c36317ecfa.png)

アクセス権の設定画面では、元の状態のままなのですが、保護ポリシーにより、読取アクセス権がブロックされていることがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/7f361226-b966-4062-af19-58e9144c06cf.png)

データエンジニア側で対象のレイクハウスからレポートを作成してみます。

レイクハウスのラベルが継承されていることがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/3259b6f3-6575-4069-974a-42fbe0a23129.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/a84d65b0-199c-4680-887f-31314e6282de.png)

レポートは保護ポリシー適用下では以下のように開発用アカウントからは表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/eeb9b1b9-d9ac-4536-a83e-d0825d5b9307.png)

開いてみると以下のようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/c17dff01-ef83-4983-8a00-7e0338b4a993.png)

このように、保護ポリシーを使用すると、ワークスペース管理者のようにシステム管理者相当の権限を持っているユーザーが存在していても、秘密度ラベルに応じた機密性の高いデータへのアクセスを適切に制御することが可能です。


## その他紹介

### ドメインとの連携

ドメイン設定によりドメイン内のワークスペースに自動的に秘密度ラベルを付与することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/586611c9-43e2-4275-8e68-354a471ec458.png)


### 監査ログ

Purview 監査ログからは、Operation name="Validate" で関連ログを検出可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/f3a3cb4b-e09b-4a81-bdd6-7f1f9a976c5e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/070ea727-dc1b-41b9-886e-b9eaa4c13e7c.png)



:::note info

プレビュー機能のため、docsでの記載はなく、変更の可能性があります。

:::