Azure SQL Database の動的データマスクを使ってみたよ

Azure

Azure SQL Database の 動的データマスクを使ってみたので、自分の忘備録としてはまったところをまとめてみようと思います。

動的データマスクとは

 

動的データマスクとは、「特権のないユーザーに対してデリケートなデータをマスクし、データの公開を制限します。」とドキュメントに記載されている通り、権限のないユーザで DB を参照したときに、データをマスクかけた状態での参照とする機能です。

まぁー、いまいちピント来ない方もいると思うので、作ったサンプル画面を乗せちゃいましょう~。

クレジットカード番号の項目が最初の12桁が「xxxx-xxxx-xxxx-」とマスクされているのがわかると思います。

 

DB の中身はどうなってるの??

DB の中身がどうなってるか気になりますよね?
もちろん、DB の中身は、マスクされてません。マスクされてたら、生で使いたいときにどうにもできないですもんね。

DB管理者でクエリをたたくとこんな感じで、マスクされてないことが確認できます。

 

非管理者で、クエリをたたくとこんな感じです。

 

つまり、今回のようにマスクして表示したい場合、PG で実装しなくても DB の機能でマスクがかけられるのです。
とても、便利ですよね。

ちなみに、今回のサンプルアプリは、普通の ASP.Net MVC + Entity Framework を使っていて、クレジットカード番号という項目を含むモデルを作って、 スキャフォールディングでコントロールと画面を作ってままから何も変えていないプログラムです。

どうやって設定するの?

Azure の設定

今回のはとても簡単で、動的データマスクの画面を開くと、マスクをかける候補がレコメンドされます。
その中から、今回の項目を「Add MASK」で追加しただけです。

 

接続ユーザの作成

ちょこっとだけミソなのは、非管理者で接続しなければいけないってことです。

つまり、新しく接続ユーザの作成が必要です。

ここが自分にとっては一番ハードルが高かったです。
だって、SQL Server をいじったことってあまりないんだもんw

T-SQL で簡単に作成できます。
今回はこんな感じで作成しました。
(これで本当にいいのかは、ちょっと自信ないです。。。。。)

[MASTER]に対して

CREATE LOGIN webappuser WITH PASSWORD = 'P@ssw0rd1234'

[DB]に対して

CREATE USER webappuser FROM LOGIN webappuser;
GRANT ALTER TO webappuser WITH GRANT OPTION as dbo;
GRANT SELECT TO webappuser WITH GRANT OPTION as dbo;
GRANT INSERT TO webappuser WITH GRANT OPTION as dbo;
GRANT DELETE TO webappuser WITH GRANT OPTION as dbo;
GRANT UPDATE TO webappuser WITH GRANT OPTION as dbo;

 

まとめ

コードを書かないで機能が有効になるのは、使う方からみるととってもいい感じですよねー。

ちなみに、Azure SQL Database は、他にも色んなセキュリティ機能がありますので、色々と試していただくといいかもしれないです。
意外と、自分でどうにかしようと思うとコストのかかることがあっさりできちゃうっていう機能が盛り沢山なサービスです。

ネスケラボに「Azure SQL Database の便利機能!!使わないと損ですよ!!」という記事で、SQL Database の各種機能について紹介していますので、もしよければそちらの記事もご参照ください。

 

 

コメント

タイトルとURLをコピーしました