Azure SQL Databaseで動的データマスキング機能を使う
いわさです。
先日、Azure SQL Databaseで遊んでいたら、「動的データマスキング」という機能を発見しました。
SQL Server 2016 から登場した機能ですが、Azureポータル上からも設定が可能になっていまして、本日は少し触ってみました。
まずはデータベース作成
まずはAzure SQL Databaseを作成します。
みんな大好きAdventureWorksLT
のサンプルデータを指定して構築します。
データベースが作成出来たら、動的データマスキングメニューからマスタの追加を行います。 マスクから除外されたSQLユーザーのところに以下の記載がありますので、管理者でアクセスした場合はマスクされなさそうですね。
管理者は常に除外されています
SQLサーバー作成時に指定した管理者認証情報を使い、クエリエディターからログインしてデータの取得を行ってみましょう。
マスクされていないですね。
それにしても、Azure SQL Databaseのクエリエディター良いですよね。Azureポータルでのお気に入りの機能のひとつです。
除外対象外ユーザーを作成しデータマスキングの確認
さて、管理者だから除外されていた、ことを確認するためにユーザーを作成します。
CREATE LOGIN iwasa2 WITH PASSWORD = 'xxxxxxxx' CREATE USER iwasa2 FOR LOGIN iwasa2 WITH DEFAULT_SCHEMA = dbo ALTER ROLE db_datareader ADD MEMBER iwasa2
ユーザーを作成し権限を付与できたら、クエリしてみましょう。
今後はマスクされていますね!
データのエクスポートでもマスクされる
データエクスポートをした際はマスクされて出力されるのでしょうか?
エクスポートされたデータ上もマスクされていますね。
外部のSQLクライアントでもマスクされる
Azureポータルのクエリエディター以外だとどうでしょうか。
Azure Data Studioからクエリしてみます。
マスクされていますね。
除外ユーザーへ追加するとマスクされない
除外ユーザーに追加したときの挙動も確認しました。
マスクされなくなりました。
まとめ
抽出後の置換処理など行わずともこの機能を使うと特定ユーザーに対してマスクして公開することが可能です。
データの移行や、抽出を行う際で個人情報関連のフィールドをマスクしたいシーンは多いと思います。
既存のテーブルをコピーしてマスクしたデータで更新するなども不要です。
機能のON/OFFも簡単です。
データマスクしたい時って意外に多いですよね。
活用シーン多そうです。こんな便利な機能を知らなかったとは。