Watson Query(SaaS版)で仮想化したテーブルのメールアドレス情報をマスキングする

[Watson Query](https://cloud.ibm.com/catalog/services/watson-query)は、データの物理的なフォーマットや場所を理解する必要がなく、データを移動させることなくアクセス、操作(=[データ仮想化](https://qiita.com/nishikyon/items/ef2d60b4687b8a6c3e39#1-%E3%83%87%E3%83%BC%E3%82%BF%E4%BB%AE%E6%83%B3%E5%8C%96))、分析を可能にするIBMCloudのSaaSのサービスです。

[Watson Knowledge Catalog](https://cloud.ibm.com/catalog/services/watson-knowledge-catalog)と連携することで、仮想化の際にビジネス用語を列名に割り当てができたり、テクニカルプレビューですが、メールアドレスなどの個人情報などみせたくない情報のマスキング処理などができます。

どちらのサービスもSaaS版にはLiteプランがあり、無料でお試し可能です。

当記事はWatson Query(SaaS版)で仮想化されたデータのメールアドレスをマスキングする方法について説明します。この機能は2023年3月27日現在、テクニカル・プレビューとなっており、まだ正式機能ではありません。
参考資料: [Watson Query でのデータ保護ルールによる仮想データの管理](https://dataplatform.cloud.ibm.com/docs/content/dvaas/data-protect-rules.html?audience=wdp)

# 0. 前提
- [Watson Query](https://cloud.ibm.com/catalog/services/watson-query)のインスタンス作成済み
- [Watson Knowledge Catalog](https://cloud.ibm.com/catalog/services/watson-knowledge-catalog)のインスタンスが**WatsonQueryと同じリージョンに**作成済み
- [Watson Query SaaS版とWatson Knowledge Catalog SaaS版の連携設定](https://qiita.com/nishikyon/items/558382c58f0799a9e6bd/)が実施済み
- [Watson QueryにWKCのガバナンス・ルールを適用するための事前設定](https://qiita.com/nishikyon/items/d4f1945ba8af3324f995)が実施済み
- Cloud Pak for Data servicesにログイン済み

# 1. ガバナンス→ルール画面の表示

Cloud Pak for Data の左上のナビゲーションメニュー(≡)から「ガバナンス」→「ルール」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/99d3ca84-1a22-086f-cff3-93134b9fbc45.png)

# 2. ルールの追加
2-1. 「ルールの追加」→ 「新規ルール」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/7b437175-5312-45b7-3235-494c39b851c3.png)

2-2. 「データ保護ルール」 をクリックして選択し、「次へ」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/128d6ce9-50b5-67dd-a1ef-098fcf2af39a.png)

2-3. 左側「ルールの詳細」の名前に、わかりやすいルール名を入力
ここでは　「e-mailマスキング」　としました。
必要に応じてビジネス定義も入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/83cda803-a113-9150-b0db-bad9e1be3c5c.png)

2-4. 右側「ルール・ビルダー」の「基準」の「条件」を設定
どんなデータをマスキングしたいか条件を設定します。

条件として以下の値が設定できます。条件は　OR かANDで繋いで複数条件の組み合わせが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/4b616518-ab56-3c6d-5681-b18e0e41fb6b.png)

ここではメールアドレスをマスキングしたいので、「データクラス」を選び、「次のいずれかを含む」を選択します。
さらに「データクラスの検索」に`mail`と入力し,　表示された「Email Address」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/8b84b0a5-0cda-56de-0261-9da451d52696.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/204ad2c2-21b8-757e-a557-e185c9ba9867.png)

2-4. 右側「ルール・ビルダー」の「アクション」を設定、「作成」をクリック
ここでは「列のマスキング」を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/421b72c8-586c-a6a0-fb87-3ae5e0504a65.png)

「次を含む列」で「データ・クラス」を選択します。

すると「データのマスク方法を選択」という部分が下に表示されるので、お好みのマスキング方法をクリックして選択します。ここではXで置換する「編集」を選択します。
最後に「作成」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/d582d37b-50ea-df63-9835-6280c5146e04.png)

2-5. 作成されたルールが表示されるので、確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/578e287e-4c7d-b0b9-da70-69cce28bf24a.png)

これでメールアドレスをマスキングするルールが設定されました。

早速メールアドレスを持つデータを含むテーブル仮想化して、あるいはメールアドレスを持つデータを含む仮想化既存データを確認してみましょう。

# 3. マスキングの確認

## 3-1. Watson Queryから確認
Watson Queryから確認する場合、仮想化したユーザー以外のIDでログインし、確認する必要があります。

そのユーザーIDはWatson Queryを作成したアカウントにJOIN済みでWatson Queryへのアクセスできる権限が必要です。
- 参考：　[IBM Cloudで自分のアカウントが作成したリソースを他のIBM CloudのIDでも使えるようにする](https://qiita.com/nishikyon/items/0a9b137b087bb9ca6d8c/)

またマスキングを確認したい仮想化済テーブルへのアクセス権が必要です。
仮想化データの︙メニューから「アクセス権限の管理」を選択し、「Specific users」を選択して、IDごとに権限をつけるか、「すべてのデータ仮想化ユーザー」を選択し、アカウントのすべての仮想化ユーザーに権限をつけるか　どちらかで設定してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/570cd839-ce34-ff08-aff1-71252d90dda1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/494f920a-87f5-2b8c-b4ff-81fb0d65db60.png)

こちらが権限のある別IDでログインし、仮想化のプレビューをした結果です。
メールアドレスがXXXXでマスキングされています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/5f8c9073-8054-1d36-e8d1-f9e8f177fc40.png)

SQLを実行してもマスキングされます：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/5af1cfe5-6351-eea1-59e9-b712d6a8ccad.png)

## 3-2. 外部SQLツール DBeaverから確認
「[DBeaverからWatsonQueryにアクセスする](https://qiita.com/nishikyon/items/41ec3389b60a071c7c92)」 を参考にDB Tool [DBeaver](https://dbeaver.io/)からアクセスしてみます。

こちらもメールアドレスがXXXXでマスキングされています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/deeda8ff-9f0a-a2b7-a186-0ca6e247cfeb.png)

以上です。
尚、仮想化のマスキング機能は2023年3月27日現在、テクニカル・プレビューとなっており、まだ正式機能ではないことをご注意ください。