AWSにおけるDataSunriseの導入及び初期設定

# はじめに
こんにちは。
現在私は社内のデータ分析基盤の刷新に取り組んでいます。

この記事は以下の要件を満たしてくれそうな製品である***DataSunrise***を検証すべく、
まずは導入してみようという内容です。なお環境はAWSでEC2を用います。
マスキングを試したみた記事は[こちら][1]

 - 要件
    - DB内のセンシティブなデータはマスキングしたい
    - リアルタイムに更新されるDBにアクセスしたい(※)

※現状マスキングは日次バッチ処理であり、データ分析担当はマスキング後のDBにしか触れられない状況にある

[1]:https://qiita.com/t_odash/items/77243320f6978629d16b
# DataSunriseとは
 - コーポレートサイト
    - https://www.datasunrise.com/
 - 公式ドキュメント
    - https://www.datasunrise.com/documents/DataSunrise_Database_Security_Suite_User_Guide.pdf
     
 - DataSunriseはDBに接続するユーザー/アプリの間のプロキシとして動作し、様々な機能を提供してくれるソフトウェアです(以下要約です)
     - データ監査
        - ユーザ/アプリのアクションやQuery、およびその結果を保存する機能（Export可）
     - データ保護
        - トラフィックを分析し、SQLインジェクション等の不正なQueryや認可されてQueryを防止する機能
     - データマスキング
        - 動的/静的なマスキングを提供し、センシティブなデータを保護する機能
     - データ検出
        - DB内のセンシティブなデータを検出する機能

        (公式ドキュメント1.1 ProductDescriptionより)

### ちなみに
これまでそれとなくマスキングを扱っていましたが、動的/静的なる分類があることを今回初めて知りました。

- 静的なデータマスキング(Static Data Masking)
    - オリジナルのDBからコピーを作成し、コピーしたDB内のデータ自体を書き換え、機密データを永続的に置き換えること
- 動的なデータマスキング(Dynamic Data Masking)
    - 元データには手を加えず、送信中の機密データを一時的に非表示乃至は置換すること
   
当社の分析担当者が現状アクセス可能なのは静的マスキングされたDB(に近いもの)と言え、希望するのは動的マスキングされたDBと言えるでしょうか。


# DataSunrise導入
この記事ではAWS環境を想定していますが、DataSunrise社はAzure等でもイメージを提供しているようです。
## 1.事前準備
 - 接続先のDB
    - DataSunrise初期設定時、hostやID/PW等の接続情報を入力することになります
        - あとから別のDBを追加することも可能です
 - 任意のVPC環境
     - 対象DBへ接続できる環境を用意しておきましょう
     
## 2.EC2インスタンスの作成
 - AMIが提供されているのでこれを活用します(有料です)
    - AMI選択にてDataSunriseのAMIを検索する
     ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570763/6d105b3c-e807-a2c6-2b4d-4ec4a3447f35.png)

    - ```DataSunrise Database and Data Security w/ Hourly Billing```がライセンス込みのAMIです

     - ```DataSunrise Database & Data Security (Linux)```はBYOL制のAMIなので別途ライセンス購入する場合はこちらを選択
     - https://aws.amazon.com/marketplace/seller-profile?id=880a5857-74c1-44ea-a978-094093c08788

 - 諸々設定しインスタンスを作成
    - DataSunriseのMinimum hardware requirementsは次の通り
        - CPU: 2core
        - RAM: 4 GB
        - Disk: インストールで1GB、ローカルのSQLiteをAuditストレージとして使う場合はもう1GB使用
            - (公式ドキュメント1.4 System Requirementsより)
            
    - EC2インスタンスの他の設定は環境に応じてよしなに
    - DataSunriseのWebコンソールにアクセスする為パブリックなIPは付与(EIP等)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570763/77e55ebb-c2ee-8846-be71-a5959f09ea86.png)


## 3.DataSunrise初期設定
 - DataSunrise管理画面にアクセス
    - https://[インスタンスのパブリックIP]:11000でアクセス
         - インスタンス起動直後だとDataSunriseが立ち上がっていないためかアクセスできませんでした
         - 初期設定のIDはadmin、PWはインスタンスIDです
         ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570763/114a34e3-8a58-437a-122f-acb1c1cc0f61.png)
 - Step3: Static Masking Key
    - ライセンス適用済みAMIの為Step3から開始されました
    - Step3はグレーゾーンの中でマウスを任意に動かしていれば完了します
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570763/fcc22be3-c884-c6f1-61f5-7d24b57a90e8.png)
 - Step4: Database Parameters
    - DBの接続情報入力です
    - 接続情報を入力し、TESTを押下。接続できた場合は画面上部に結果が表示されます
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570763/184e4d2c-3b24-df5b-a6e7-57985bb0a079.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570763/9db8e129-394c-564b-1d52-ceb945f11094.png)
    - mode設定はproxyとしました
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570763/e7be6c55-9b88-f661-5567-05a2d5fd60cc.png)
        - ```port```の3306はデフォルトで入力されていたのですが、proxyのポート設定を接続したいDBのポートと一致させてはいけないとのこと
        - ```Proxy's port number should differ from the database's port number ```(公式ドキュメント14.1.4より)
            - DBに接続するのとは異なる任意の番号にしましょう
            
 - 設定が完了するとダッシュボード画面が表示されます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570763/f687fddc-98db-04ab-db63-eab0cc07bfce.png)

## 4.SSL対応
 - 今回は動作の検証がメインの為割愛します
     - 実施する際はドキュメントの```3.3 SSL Certificates```に記載があります

## 5.ハマったポイント
 - 上述した、proxyのポート設定を接続したいDBのポートと一致させてはいけないルールでハマりました
     - 当初3306としており接続できなくて焦った(一先ず33066とした)
     - プロキシ経由でアクセスするには以下のようにする
        - ```mysql -h [DataSunriseインスタンスのhost名] -u [ユーザ名] -p -P [proxyのポート番号]```
        - 例```mysql -h 127.0.0.1 -u root -p -P 33066```
 - 設定変更手順は次の通り
    - 1. ConfigrationからDatabasesを選択する
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570763/71aa00f4-9c9a-a9e3-2ee0-9df90b29cc97.png)
    - 2.　対象のDB接続を選択する
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570763/cef88792-7c68-2e0e-c50d-433565e5085c.png)

    - 3.　設定変更したいProxyの鉛筆マークを押す
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570763/9eacc802-65af-0632-12f2-66be80d2d100.png)

    - 4.　Port番号を入力しSaveを押して完了
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570763/2a3933d1-fd31-914b-5e06-62c47858975b.png)
※33066はあくまで一例ですので環境に合わせて設定して下さい。

# まとめ
admin以外のユーザ設定やSSL等、その他必要な設定は山積みですが、
DataSunriseを噛ませてのDBアクセスが可能になりました。

また、今回はGUIベースでの設定を行いましたが、
CLIも準備されているうえにCloudFormation等での環境構築も可能なようなので、
中々幅広いニーズに対応してくれそうな印象です。


# Reference
https://www.datasunrise.com/