連載
» 2016年04月11日 05時00分 公開

Database Watch(2016年4月版):「SQL Server 2016」に搭載される新たなセキュリティ対策を追う (2/3)

[加山恵美,@IT]

「動的データマスキング」「行レベルセキュリティ」が追加

 続いて本題の、SQL Serverの新たなセキュリティ対策機能を確認しましょう。

 北川氏は「SQL Serverは(米国国立標準技術研究所の脆弱性情報データベースにて)6年連続で脆弱性が最少でした。このことからも最も安全性が高いデータベースだといえます」と話しています。その最新版であるSQL Server 2016には、どんなセキュリティ機能が備わるのでしょう。

 まずは「監視体制」です。業務アプリケーションにおいては、職務や職責に応じてそれぞれのユーザーに適切な権限を与え、どのユーザーがどんな操作をしたかをきちんと監視して履歴を残すことが重要です。SQL Serverでは既に操作の履歴を記録する「SQL Server Audit」機能があり、監査ログを残すことができます。

 ただし、これだけでは不十分です。監査ログでは「誰が、何をしたか」が記録されますが、「誰」の部分が「本当に本人か」を正しく把握できなくてはなりません。もし、管理者権限のあるユーザーIDとパスワードを複数の管理担当者が共有していたら、「誰」が操作したのか分かりません。マイクロソフト製品では、これを「Active Directory(AD)」と連携することで対策できます。システムへは個々のユーザーIDでログインし、そのユーザーIDで操作が記録されます。個人レベルで操作履歴を追うことが基本的な機能で実現できるようになっています。

 次に、「必要なデータだけ」をユーザーに渡すこともポイントです。SQL Server 2016では、「Dynamic Data Masking」(動的データマスキング)と「Row Level Security」(行レベルセキュリティ)という機能が新たに搭載されます。

 Dynamic Data Maskingは、テーブルと列レベルで定義されたポリシーに基づいてクエリ結果にリアルタイムでマスキングします。例えば、顧客情報の「住所の列はマスクする(読めなくする)」と設定しておけば、検索結果が出たら住所の列には自動的に「***」などでマスクが掛かります。

photo 機密データを隠すことで、内部不正を防ぐ「Dynamic Data Masking」(出典:マイクロソフト提供の資料)

 Row Level Securityは、ユーザー情報を基に行単位でアクセスを制御する機能です。例えば、「渋谷店の店員は、渋谷店の顧客情報のみ閲覧できる」と顧客情報を設定すれば、クエリ結果には該当する行データしか表示されません。これらは検索結果で実行されるので、メモリ上とネットワーク上のそれぞれでデータを保護できます。

photo 単一のデータベースにデータを格納しながら、行単位でアクセスを制御できる「Row Level Security」(出典:マイクロソフト提供の資料)

 こうしたアクセス制御は、これまでアプリケーション側で制御することが多かったと思います。しかし、根本のデータベース側でこれを実現できれば、アプリケーションの開発や保守の労力を抑えられることにつながります。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。