データベースの運用管理を委託する際、委託先の運用担当者にデータベース管理者(SYS、SYSTEM)アカウントを利用させるケースも多いと思いますが、そのような場合でも、委託先に業務データは見せないようにすることができます。
Oracle Database Vaultのレルム機能を利用することで、管理者であっても表にアクセスできないような、強力なアクセス制御を実施できます。レルムを管理するのは、データベース管理者(SYS、SYSTEM)とは別の、セキュリティ管理者(Database Vaultオーナー)です。管理者がDBAロールやSELECT ANY TABLE権限など、全ての表にアクセスできる特権を持っていても、レルムに含まれる表にアクセスする際には、セキュリティ管理者による認可が追加的に必要となります。
データのアクセスには、従来の権限とOracle Database Vaultの認可の2つが必要ですので、セキュリティ管理者も、従来の権限をデータベース管理者やデータの所有者から付与してもらわない限り、データにはアクセスできません。
レルムに追加可能なオブジェクトは、次の通りです。
レルムを定義する際には、ワイルドカード(%)が利用可能ですので、特定のスキーマ、例えばアプリケーションが利用するスキーマの全てのオブジェクトをレルムに追加するといった設定も簡単にできます。
Oracle Database12c R1からは、「必須レルム(Mandatory Realm)機能」が追加されました。通常のレルムでは、DBAロールやSELECT ANY TABLE権限などの特権を利用したアクセスから表を保護することはできますが、個別にオブジェクト権限を付与されているユーザーやオブジェクトの所有者からのアクセスは許可していました。必須レルムとしてレルムを作成すると、データベース管理者からの特権アクセスだけではなく、オブジェクト権限を持っているユーザーやオブジェクトの所有者であっても、セキュリティ管理者から認可を受けていないとアクセスができないという「強制アクセス制御(MAC:Mandatory Access Control)」が実現できます。
Oracle Database Vaultのコマンドルール機能を利用すると、特定コマンドの実行を制限できます。例えば、TRUNCATE文を発行するためには表をDROPする権限が必要となりますが、コマンドルールでDROP文の利用を制限することで、「表をTRUNCATEはできるがDROPできない状態」にすることができます。
コマンドルールで制御可能なSQL文には、例えば以下のようなものがあります。
レルム、コマンドルールのどちらも、特定データベースユーザーについて「表にアクセスできる/できない、コマンドを実行できる/できない」という、データベースユーザー単位よりもさらに詳細なレベルのアクセス制御を提供します。その際のアクセス制御条件を定義するのがルールセットです。ルールセットで作成するルールには、データベースで取得できる情報であれば何でも利用できます。例えば、IPアドレスやアプリケーション名などのセッション情報、月日や曜日、時刻の情報が使用できます。
ルールセットを通じてレルムとコマンドルールを組み合わせることで、例えば「アプリケーションユーザーは、特定のアプリケーションでのみアプリケーションサーバからデータベースサーバに接続できる、アプリケーションのデータが参照できる」といった、詳細なアクセス制御が実現できます。
Oracle Database Vaultで実現可能なことは、まずはデータベース管理者のアクセス制御ですが、上記のような詳細なアクセス制御を実施することで、アプリケーションが利用するデータベースのユーザー名/パスワードが何らかの理由で流出してしまっても、成りすましによる不正アクセスを防ぐことができます。
次回もOracle Database Vaultについて説明します。
日本オラクルでセキュリティ関連のプロダクトやソリューションを長年担当。出荷前製品検証からプリセールス、コンサルティングと、さまざまな部署を転々とするも、担当はだいたいいつもデータベースセキュリティかIDマネジメント。出荷前から構築、運用、トラブル対応まで製品の一生を見守るエンジニア
Copyright © ITmedia, Inc. All Rights Reserved.