Azure SQL Database に顧客テーブルを作り、メールやクレジットカード番号などの列に動的データマスク(DDM)を適用する。マスク対象外の管理者と、マスクされる一般ユーザーで同じクエリの結果がどう変わるかを実際に確かめる。
サポート担当者が顧客の問い合わせ画面を開いたとき、画面にクレジットカード番号がそのまま表示されてよいだろうか。多くの業務では「データは見えてほしいが、機密の中身までは見せたくない」という中間の要求がある。アプリ側で列を出し分ける実装はバグも漏れも生みやすい。
動的データマスク(Dynamic Data Masking, DDM)は、この出し分けをデータベース側に寄せる仕組みだ。テーブルの実データは一切変えず、クエリ結果が返る瞬間にだけ指定した列を覆い隠す。誰に見せるかは権限で制御し、UNMASK を持つ管理者には素のデータが、持たない一般ユーザーにはマスクされた値が返る。
ここでは Azure SQL Database に顧客テーブルを作り、メール・電話・クレジットカード・給与の各列に種類の違うマスク関数を当てていく。仕上げに低権限ユーザーを 1 つ用意し、同じ SELECT が権限によって別の結果を返す様子を、ポータルのクエリ エディターと Cloud Shell の sqlcmd の両方で観察する。
DDM は深層防御の一層であって暗号化の代替ではない、という距離感も最後に確認する。学習者は Contributor 相当の一時ユーザーでサインイン済みで、リージョンは japaneast、単一のリソースグループ内で作業する。