※ 本記事は2016年11月21日に公開されたものです。
データベースのセキュリティを担保するうえでは、以下の5つのポイントが重要だと考えています。
- 共有ユーザー利用などの匿名性を排除する
- 重要なデータは集中管理し、アクセス経路を限定する
- 最小権限の原則に則ったアクセス制御を強制する
- 暗号化したほうがよいか迷うものは、すべて暗号化する
- 監査するだけでなく、監視する
1. 共有ユーザー利用などの匿名性を排除する
ほとんどのセキュリティ対策のひとつめの基本となるのはIDの管理、個人の識別(Identification)と本人性の確認(Authentication)です。アクセス制御は「誰が(Subject)」「何に(Object)」「どうする(Operation)」ことを許可/拒否するものです。「誰が」の部分が管理できていないと、不要な人まで本来必要のないデータにアクセスできてしまう事になります。同様に監査も「誰が」の部分が個人と紐づけられていないと、監査をしていても監査証跡から個人を特定できません。システム利用時には個人IDをすること、かつその個人IDを他の人に利用できないようにきちんと認証することが重要です。
2. 重要なデータは集中管理し、アクセス経路を限定する
ふたつめの基本は「何に」です。まずは守るべきデータは何か、そのデータはどこにあるのかの把握が重要です。重要なデータがいろいろな場所に点在しているとそれぞれを守らなくてはならないため、管理コストは増大してしまいます。せっかく重要なデータをデータベースで安全に管理しているのに、連携やバックアップのためにCSVなどファイルに書き出して、外部にも保存している場合、守るべき個所はデータベースとファイルが保存されているサーバーや端末といったように増えてしまい、漏洩のリスクが高まるため重要なデータは集中管理することが望ましいです。
そして、そのデータにどこからどのようにアクセスされるのかのアクセス経路を把握することも重要です。想定されたアクセス経路以外からのアクセスは不正アクセスの可能性があるため、そもそもネットワーク制御や製品の機能を利用して想定経路以外からのアクセスを拒否したり、想定経路以外からのアクセスを監査・監視することで不正アクセスに気付き未然に防ぐことができるようになります。
3. 最小権限の原則に則ったアクセス制御を強制する
アクセスする人とアクセスされる重要なデータが整理できてはじめて、きちんとしたアクセス制御を実施することが可能となります。アクセス制御のポイントは、業務上必要な最小限の権限のみを与える最小権限の原則の徹底です。たとえば、インフラ管理者(OSや場合によってはDBの運用担当者)は業務データにアクセスする必要性は必ずしもないはずですので、これらのユーザーが業務データにアクセスできないような権限設定が必要です。つまり、最小権限の原則を厳密に適用すると、データベースの運用担当者であっても、DBAロールやSELECT ANY TABLEというデータベース上の全ての表にアクセス可能なシステム権限など強力な権限を付与してはいけない事になります。
4. 暗号化したほうがよいか迷うものは、すべて暗号化する
データベースに格納されたデータはデータベースへの認証とアクセス制御によって保護されています。しかし、データベースの仕組みをバイパスしたアクセス(データベース構成ファイルの覗き見、通信の盗聴)からは認証とアクセス制御ではデータを保護できません。そのために格納されたデータや通信データは必要に応じて保護する必要があります。
まず、通信の暗号化ですがデータベースに接続できるネットワークセグメントにどれだけ簡単にアクセスできるかを考慮し必要に応じて暗号化をおこないます。ネットワークセグメントの分割などの対策で代用することも可能です。
次に格納データの暗号化ですが、具体的にどのデータを暗号化するかを決める必要があります。個人情報保護法やそれに伴うガイドライン、PCI-DSSなどの法令、ガイドライン、社内セキュリティ規定などで暗号の要件が定められているものの暗号化は必須ですが、それ以外にも暗号化しておいた方がよいものもあります。たとえば、営業機密。営業機密が持ち出された場合、不正競争防止法で民事・刑事上の措置をとることができますが、そのためにはその情報が営業機密としてきちんと管理されていたいることが重要になります。他にも顧客情報などは万が一漏洩事件が発生した時に、暗号化していなかったとなると、説明責任が取れていなかったとして、その後の企業活動に影響を与えることも考えられます。このデータは暗号化したほうがよいか迷うということは、そのデータは重要なものとして何らかの価値を見出しているのですから、バックアップを含めファイルとして保存されるケースでは、全て暗号化するべきです。
5. 監査するだけでなく、監視する
適切に監査をとることも重要ですが、監査証跡の役割は被害が出た後に原因究明のために利用するだけではありません。監査証跡を定期的もしくはリアルタイムに分析・アラート・レポートすることで不正アクセスにいち早く気付き、被害を未然に防ぐ事ができます。監査しかしておらず監視をしていない場合は、攻撃者は無限に時間があり、いろいろな攻撃手法を管理者に気付かれることなく試すことができるため、攻撃が成功する確率が非常に高くなってしまいます。
改めて書いてみると、どれも特にデータベースに限った事ではありません。つまり、データベースにもネットワークなど他のレイヤーでおこなっている対策と同じことを考えなければならないという事です。他のレイヤー、とくにネットワークのレイヤーではセキュリティ対策をされていると思います。ぜひデータベースでも同じようにセキュリティ対策を考えてください。
