DBセキュリティの第2弾、アクセス・コントロールと権限管理
データベースのアクセス・コントロール
セキュリティ対策の基本は、アクセス・コントロール(アクセス制御)と、ユーザーの権限管理です。データベースには、一般によく知られている公開情報に加えて、個人情報や機密情報も格納されています。情報資産を保護するために、「どの情報に誰がアクセスできるのか」をコントロールすることが、当たり前のこととして認知されています。
データベースに対するアクセス制御の形態には、適用する範囲に応じて、いくつかあります。以下のように分類できます。
- アプリケーション側で実装する、データベースに対するアクセス制御
- データベース側で実装する、データベースに対するアクセス制御
- データベースに格納されている、表へのアクセス制御
- 表の中の、特定の行や列に対するアクセス制御
図1: データベースのアクセス・コントロールの範囲 |
データベース自身に対するアクセス制御は、アプリケーション側で機能を実装したり、データベース管理者がポリシー設定を行います。データを格納している表に対するアクセス制御は、データを所有しているオーナーがアクセス権を設定できます。このように、ユーザー自身がアクセス権を定義できる仕組みを、一般に「任意アクセス制御(DAC: Discretionary Access Control)」と呼びます。
データベースのプロテクション・プロファイル
データベースのアクセス制御や権限管理は、どのような方針に沿って決めればよいのでしょうか。データベースの利用方法や企業の規則などに応じて、要求される項目が異なるので、一概には言えません。一般的なデータベースに実装されているセキュリティ機能の指針として提供されている、プロテクション・プロファイルが参考になります。
プロテクション・プロファイルとは、Common Criteria(ISO/IEC15408)の認証を取得する際に参照される、セキュリティ機能要求仕様書のことです*1。OSの場合、多くの著名なOSが、以下のプロテクション・プロファイル*2を利用して認証を取得しています。これらは、よく知られたプロテクション・プロファイルです。
- Labeled Security Protection Profile
- http://www.commoncriteriaportal.org/files/ppfiles/lspp.pdf
- ラベル・ベースのアクセス制御を定義したプロテクション・プロファイル
- Controlled Access Protection Profile
- http://www.commoncriteriaportal.org/files/ppfiles/capp.pdf
- 任意アクセス制御と監査の機能を定義したプロテクション・プロファイル
- [*1] Common Criteria(ISO/IEC15408)の概要やProtection Profileの詳細については、IPAのWebサイトから確認することができます。
- [*2] 注意: これらのプロテクション・プロファイルは、すでに使用が終了しています。次世代のプロテクション・プロファイルが、提供されています。
OSの場合と同様に、データベース用のプロテクション・プロファイルも提供されています。現時点で承認されているデータベース用のプロテクション・プロファイルには、以下のものがあります。
- U.S. Government Protection Profile Database Management Systems for Basic Robustness Environments, Version 1.2
- http://www.niap-ccevs.org/pp/pp_dbms_br_v1.2.pdf
図2: データベース用のプロテクション・プロファイルの表紙 |
データベースの管理者は、すべてのデータにアクセスできる強大なアクセス権を持つ
アクセス制御ポリシーを適用する対象となるユーザーには、大きく2種類あります。データの操作を行う「一般ユーザー」と、データベースの管理を行う「データベース管理者」です。
ここで、懸念点として考慮しておくべきポイントがあります。データベースが実装しているアクセス制御機能のほとんどは、一般ユーザーにしか適用されないという点です。
データを所有しているユーザーが、特定のユーザーだけにアクセス権を許可したとしても、データベース管理者であれば、参照できてしまいます。データベース管理者はシステム全体にアクセスできる「管理者権限」を持つため、アクセス制御機能が適用されないからです。
データベース管理者の視点で見ると、すべてのデータにアクセスできることは、当たり前のことです。しかし、この強大なアクセス権限は、少しでも悪用されてしまうと、データベースに対して大きな被害を与える脅威となります。また、正規に利用していたとしても、オペレーション・ミスによって被害を与える可能性があります。
このため、アクセス制御の設定は、一般ユーザーに対して適用する仕組みと、データベース管理者に対して適用する仕組みの両面で考える必要があります。
データベース管理者のアクセス動作を制御する仕組み
管理者権限による事故を予防する一般的な対策は、OSの管理作業と同様です。通常の作業は一般ユーザーで行い、管理者権限が必要な作業の場合に限ってデータベース管理者に切り替わるように運用します。しかし、この方法でも、データベース全体へのアクセス権を持つ管理者が存在することには変わりません。
では、どのようにすれば、データベース管理者の操作を制御できるのでしょうか。例えば、一般ユーザーに対して有効なアクセス制御方式であるDACは、管理者権限を持つユーザーには効果がありません。
管理者の操作を制御する有効な手段は、強制アクセス制御(MAC: Mandatory Access Control)の仕組みをデータベースにも適用することです。すでに、OSの場合は実現できていることです。Linuxでは、システム管理者(root)の操作を強制的に制御できるセキュリティ機能が標準で提供されています。データベースも同様に、管理者権限を強制的に制御できる仕組みを実装する必要があります。
図3: データベース管理者であっても特定のデータにはアクセスできない仕組み |
DACとMACの違いはこうです。DACは、データの所有者が、任意にアクセス権を設定できます。一方、MACは、データベースのセキュリティ管理者が、アクセス権のセキュリティ・ポリシーを設定します。
また、DACは管理者に対して効果がありませんが、MACは効果があります。管理者が相手でもアクセス制御機能が回避されないようにアクセス権の状況をチェックできる仕組み(リファレンス・モニターと呼ぶ)が備わっています(図4)。
図4 リファレンス・モニターの動作イメージ |
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- 強制アクセス制御(SELinux)の基礎
- Red Hat Enterprise Linuxセキュリティの概要と特徴
- Oracle Cloud Hangout Cafe Season5 #3「Kubernetes のセキュリティ」(2022年3月9日開催)
- DBセキュリティの第1歩、アカウント管理と認証
- コンテナを使いこなすための心強い味方! 「Kubernetes」(後編)
- Oracle Cloud Hangout Cafe Season4 #4「マイクロサービスの認証・認可とJWT」(2021年7月7日開催)
- セキュアOS紹介(1) 〜 MIRACLE HiZARDとLIDS
- GitHub、ベルリンで発表した新機能などを解説するメディア説明会を開催
- 特別編 WindowsからSambaへの移行FAQ
- 特別編: WindowsからSambaへの移行FAQ