我らが Azure 界の No.1 が Azure Update (2015.02.19) で書いてくださっていたので少し試してみました。
公式の情報としては、
Public preview: Dynamic Data Masking for Azure SQL Database
Get started with SQL Database Dynamic Data Masking
を参照していただければと思います。
また、動的データマスキングを使用するためには、
- SQL Database v12
- セキュリティが有効なアクセスを使用する必要がある
の 2 点が前提となるようです。
現行のポータル / プレビューポータルのどちらからも設定をすることが可能です。
今回はプレビューポータルで設定してみたいと思います。
動的データマスクの機能によるマスキングをするためには、「セキュリティが設定されたアクセス」経由で SQL Database に接続をする必要があります。
これは、「~.database.windows.net」ではなく、「~.database.secure.windows.net」で接続をする必要があるということを示しています。
動的データマスクの設定を有効にしても、「~.database.windows.net」で接続をしてしまうと、マスキングは行われませんので注意が必要です。
secure 経由でのアクセスを強制させるために「セキュリティが設定されたアクセス」のオプションがありますので、これを「必須」にすると、secure 経由でないとアクセスができなくなりますので、強制させたい場合にはこのオプションを有効にしておくとよいかと。
シンプルなデータでテストをしてみたいと思います。今回は以下のようなテーブルを作成しています。
CREATE TABLE TEST ( CardNo varchar(19) ) INSERT INTO TEST VALUES('0000-0000-0000-0000') , ('0000-0000-0000-0000'), ('0000-2222-2222-2222') , ('0000-3333-3333-3333'), ('0000-4444-4444-4444')
単純なカード番号形式のデータが格納されたテーブルとなります。
これに対して動的データマスキングを使用してみます。
動的データマスキングには、マスキングをかけない「特権のあるログイン」を設定することができます。
このログインで対象のデータにアクセスをした場合はマスキングが行われませんので、実データの確認をするためのログインを特権のあるログインとして設定するとよいかと。
# 実際には監査系の仕組みと組み合わせて、特権のあるログインの操作を監査する必要が出てくると思いますが。
「マスクルール」でデータマスクの設定を行います。
今回はカード番号を使用していますので以下のようなマスクを設定します。
「拡張制限の使用」は以下のような説明となっているのですが、今回は無効の状態にしています。
Consider selecting USE EXTENDED RESTRICTIONS which limits the exposure of sensitive data through ad hoc queries.
設定が終わったら保存をして、データのマスキングの状態を確認したいと思います。
クエリの実行時には「~.database.secure.windows.net」に接続を行い、クエリを実行します。
特権のあるログインでは、以下のようにマスクされない状態でデータを取得することができます。
特権のあるログイン以外では、自動的にマスクされた状態でデータが取得されます。
動的データマスキングはエイリアスでの設定も可能です。
以下のようなエイリアスの設定を行ってみます。
この場合、CardNo ではデータはマスキングされませんが、列の別名でアクセスが行われた場合には一括で変更をするということができるようです。
テーブル単位で設定をするのが大変な場合は、エイリアスを活用して特定の列名を一括で変更ということができそうですね。
上記のような設定をした場合、「プレフィックス」(接頭辞) 2 文字と「サフィックス」(接尾辞) 4 文字は元のデータを使用し、その間については「ABC」という文字でマスキングをするというような設定となり、以下の情報を取得することが可能です。
2 バイト文字については、nvarchar であれば以下のようにマスキングされますが、
varchar の場合には、? となってしまっているので、日本語を利用する際には Unicode 文字列を基本としたほうがよさそうですね。
動的データマスキングについては、実行プランにマスキングの処理は入っていないようですので、データを返す際の制御なのかもしれないですね。
GrayRecord Spaces Edition でリブログしてコメントを追加:
項目に関し権限のあるアカウント以外からではデータがマスクされる機能か
相当ご~ん
19 2月 15 at 11:08
[…] 動的データマスキング […]
Azure SQL Database の新機能履歴 - 蒼の王座
9 10月 15 at 02:22