続いて本題の、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は、テーブルと列レベルで定義されたポリシーに基づいてクエリ結果にリアルタイムでマスキングします。例えば、顧客情報の「住所の列はマスクする(読めなくする)」と設定しておけば、検索結果が出たら住所の列には自動的に「***」などでマスクが掛かります。
Row Level Securityは、ユーザー情報を基に行単位でアクセスを制御する機能です。例えば、「渋谷店の店員は、渋谷店の顧客情報のみ閲覧できる」と顧客情報を設定すれば、クエリ結果には該当する行データしか表示されません。これらは検索結果で実行されるので、メモリ上とネットワーク上のそれぞれでデータを保護できます。
こうしたアクセス制御は、これまでアプリケーション側で制御することが多かったと思います。しかし、根本のデータベース側でこれを実現できれば、アプリケーションの開発や保守の労力を抑えられることにつながります。
Copyright © ITmedia, Inc. All Rights Reserved.