1.1 Oracle SQL Firewallについて

Oracle SQL Firewallは、指定されたユーザーに対して認可されたSQL文または接続にのみデータベース・アクセスを制限することで、一般的なデータベース攻撃からリアルタイムに保護します。

SQLインジェクション攻撃、異常なアクセスおよび資格証明の盗用や不正使用によるリスクを軽減し、潜在的なSQLインジェクション攻撃を防止または検出します。

SQLファイアウォールを使用して、データベースで処理できるSQL文を制御できます。また、SQLファイアウォールでは、IPアドレスなどのセッション・コンテキスト・データを使用してデータベース接続を制限できます。認可されていないSQLおよびデータベース接続をログに記録してブロックできます。

SQLファイアウォールは、次の3つのユースケースへの対処に役立ちます:

  • 認可されたSQL文およびデータベース接続にのみデータベース・アクセスを制限することで、リアルタイムに保護します。
  • SQLインジェクション攻撃、異常なアクセスおよび資格証明の盗用/不正使用のリスクを軽減します。
  • 信頼できるデータベース接続パスを強制します。

SQLファイアウォールには、次の利点があります:

  • SQLファイアウォールは、ローカルかネットワーク経由か、暗号化テキストかクリア・テキストかに関係なく、PL/SQLからのものを含めすべての着信データベース接続およびSQL文を検査します。これはバイパスできません。明示的に認可されたSQLのみが許可されます。他のすべてのSQLについては、問題のある文はログに記録され、違反は報告されます。この文は、SQLインジェクション攻撃または認可されたユーザーが実行したことのない新しいSQL文である可能性があります。
  • 認可されていないSQLをブロックするか、ログに記録するのみにするかを決定できます。これにより、攻撃の処理方法に対する柔軟性が得られます。
  • SQLファイアウォールは、完全なSQLおよび処理コンテキストを評価します。ファイアウォールは、Oracleデータベース・サーバー内で実行することで、SQL文、シノニム、動的に生成されたオブジェクト名、およびPL/SQLユニットで動的に生成されるSQL文のエンコーディングを簡単に処理します。
  • SQLファイアウォールは、認可されたSQL文および関連付けられた信頼できるデータベース接続パスの(許可された一連のアクションをまとめた)許可リストに依存し、残りをブロックします。SQLファイアウォールをトレーニングするには、データベース・アカウントの認可されたSQL文をキャプチャします。その後、ファイアウォールは、認可されていないSQLおよび潜在的なSQLインジェクション攻撃を検出して防止します。許可リストに登録されたSQL文の一般的なユースケースは、アプリケーション・サービス・アカウントによって発行されたアプリケーションSQLワークロードに関するものです。
  • SQLファイアウォールは、信頼できるIPアドレス、オペレーティング・システムのユーザー名またはプログラム名を利用していない接続をブロックすることもできます。この機能は、アプリケーションのSQL文の許可リストを作成しながら、すぐになんらかの保護を導入する場合に便利です。この機能により、データベースへの直接アクセスは、信頼できるエンドポイントからのみ行われるようになります。これにより、アプリケーション・サービス・アカウント資格証明の窃取または悪用のリスクも軽減できます。

SQLファイアウォールを使用すると、一般的なデータベース・ユーザーが実行するSQL文の許可リスト・ポリシーをデータベース・ユーザーごとに作成し、予期しないSQLを検出してブロックし、ログに記録できます。

SQLファイアウォール・ポリシーは、アプリケーション・サービス・アカウントであっても、レポート・ユーザーやデータベース管理者などの直接のデータベース・ユーザーであっても、データベース・アカウント・レベルで機能します。つまり、データベース・ユーザーHR用にSQLファイアウォール・ポリシーが1つ、データベース・ユーザーpfitch用にSQLファイアウォール・ポリシーがもう1つ存在することが可能です。この柔軟性により、データベース管理者またはアプリケーション・サービス・アカウントのいずれかから、データベースの保護レベルを段階的に構築できます。

SQLファイアウォールは、ルートとプラガブル・データベース(PDB)の両方で使用できます。SQLファイアウォールは、オンプレミス、クラウド、マルチテナント、Oracle Data Guard、Oracle Real Application Clustersなど、すべてのOracle Databaseデプロイメントに対してシンプルで使いやすいファイアウォール・ソリューションです。SQLファイアウォールは、透過的データ暗号化(TDE)、データベース監査、Oracle Database Vaultなどの他のOracle Databaseセキュリティ機能と連携して動作します。

SQLファイアウォールでは、トランザクション制御コマンド(SAVEPOINTCOMMITおよびROLLBACK)を除くすべてのSQLコマンドがサポート(つまり、キャプチャおよび強制)されています。また、SQLファイアウォールでは、SQL*PlusコマンドPASSWORDおよびDESCRIBEと、データベース・リンクを介したリモート・プロシージャ・コール(RPC)がサポートされています。

次の図は、SQLファイアウォールがOracle Databaseカーネル内でどのようにインラインで動作するかを示しています。

図1-1 SQLファイアウォール・プロセス

図1-1の説明が続きます。
「図1-1 SQLファイアウォール・プロセス」の説明
  1. ユーザーがWebアプリケーションを介してOracleデータベースにログインします。
  2. ユーザーはSQL文を実行し、Oracleデータベースへのインバウンド・トラフィックを作成します。
  3. SQLファイアウォールは、着信データベース接続およびSQL文を検査し、それをユーザーの許可リスト・ポリシーの許可されたSQL文および信頼できる接続パスに照らして強制します。SQLファイアウォールの処理結果は、次のいずれかのオプションです:
    • その後の実行でSQLを許可します。
    • SQLを許可し、ログに記録します。
    • 認可されないSQLをログに記録し、必要に応じてブロックします。