2.2.1 SQLファイアウォールの概要
Oracle Data SafeのSQLファイアウォール機能を使用すると、Oracle Database 23aiターゲットのフリート全体でSQLファイアウォールを管理およびモニタリングできます。
2.2.1.1 SQLファイアウォールについて
Oracle Data SafeのSQLファイアウォール機能を使用すると、Oracle Databaseターゲットのフリート全体でSQLファイアウォールを管理およびモニタリングできます。SQLファイアウォールは、Oracle Database 23aiカーネルに組み込まれた新しいセキュリティ機能であり、SQLインジェクション攻撃や侵害されたアカウントなどのリスクから保護します。SQLファイアウォールは、ローカルかネットワーク経由か、暗号化テキストかクリア・テキストかに関係なく、PL/SQLユニットからのものを含めすべての着信データベース接続およびSQL文を検査します。明示的に認可されたSQLのみを許可し、SQLファイアウォール許可リストに含まれないSQL文および接続をログに記録したり、ブロックできます。
SQLファイアウォールは、認可されたSQL文および信頼できるデータベース接続パスの許可リストを使用して、どのSQL文および接続パスが認可され、どれがログに記録されるか、またはブロックされるかを判別します。SQLファイアウォール許可リスト・ポリシーは、データベース・アカウント・レベルで機能します。データベース・アカウントのSQLファイアウォール許可リストを作成するには、想定されるデータベース接続から想定されるアプリケーションSQLワークロードをキャプチャまたは収集します。その後、ファイアウォールは、認可されていないSQLおよび潜在的なSQLインジェクション攻撃を検出して防止します。
Oracle DatabaseのSQLファイアウォールについてさらに学習するには、『Oracle Database Oracle SQL Firewallユーザーズ・ガイド』を参照してください
SQLファイアウォールは様々な方法で管理できます。SYS.DBMS_SQL_FIREWALL
パッケージのPL/SQLプロシージャを使用すると、Oracle Database (23ai以降)でSQLファイアウォールを直接管理できます。Oracle Cloud Infrastructure (OCI)エコシステムの利便性を活用し、Oracle DatabaseターゲットのフリートについてSQLファイアウォールを管理およびモニタリングする場合は、Oracle Data Safeを検討してください。
管理者は、Data Safeを使用して、データベース・アカウントのSQLアクティビティを収集し、収集の進捗状況をモニタリングし、収集したSQLアクティビティから許可リスト・ルール(許可されたコンテキストおよび許可されたSQL文)を含むSQLファイアウォール・ポリシーを作成し、SQLファイアウォール・ポリシーを有効にすることができます。SQLファイアウォール・ポリシーが有効になると、Data Safeはデータベースからファイアウォール違反ログを自動的に収集し、Data Safeに格納します。このようなログは、図2-2に示すように、データベース・フリート全体でのオンライン分析およびレポートに使用できます。Data Safe REST API、SDK、CLIおよびTerraformを利用して、さらに自動化と統合を進めることができます。また、より規模の大きいOCIエコシステムを利用して、SQLファイアウォール違反をアラートおよび通知と統合することもできます。
図2-2 データ・セーフのSQLファイアウォール・ダッシュボード

2.2.1.2 SQLファイアウォールの用語
次の用語は、Oracle Data SafeのSQLファイアウォール機能全体で使用されます。
- データベース・セキュリティ構成 - このリソースは、ターゲット・データベース構成を表します。データベース・セキュリティ構成には、ファイアウォールのステータス、ファイアウォールのステータスが最後に更新された時間、違反ログの自動パージ設定などのSQLファイアウォール構成が含まれます。
- セッション・コンテキスト - SQLトラフィックを開始するクライアント情報(クライアントIPアドレス、OSプログラム名およびOSユーザー名)を表します。
- SQL収集 - このリソースは、ターゲット・データベース内の特定のデータベース・ユーザーのSQL収集を表します。SQL収集は、ユーザーのデータベース・セッションおよびそのセッション・コンテキストで発行されたSQLコマンドをカプセル化します。
- SQLファイアウォール・ポリシー - データベース・ユーザーに固有の許可リスト・ポリシー。これを介して、着信SQL文は評価され、ターゲット・データベースでアクションを実行できるかどうか判断されます。SQL文は許可されるか、または許可リストに含まれていない場合は、許可されてログに記録されるか、ブロックされてログに記録されます。ポリシーは、セッション・コンテキスト情報のみ、特定のSQL文のみ、またはその両方で構成できます。
- SQL違反 - SQLファイアウォール・ポリシーの許可リストに含まれていない、ターゲット・データベースで開始されたSQL文を表します。
- コンテキスト違反 - SQLファイアウォール・ポリシーの許可リストに含まれていない、ターゲット・データベースでSQL文が開始された元となるセッション・コンテキストを表します。
- 違反の検出およびログ記録 - SQL違反またはコンテキスト違反のいずれかである開始されたSQL文がターゲット・データベースで実行でき、文およびコンテキストが後で参照できるようにログに記録されるSQLファイアウォール・ポリシー実施オプション。
- 違反のブロックとログ記録 - SQL違反またはコンテキスト違反のいずれかである開始されたSQL文がブロックされ、ターゲット・データベースで実行できないSQLファイアウォール・ポリシー実施オプション。文およびコンテキストは、後で参照できるようにログに記録されます。
2.2.1.3 SQLファイアウォールの前提条件
SQLファイアウォールでは、Oracle Database 23aiターゲット・データベースをデータ・セーフに登録する必要があります。ユーザーには、IAMで特定の権限が付与されている必要があります。
データ・セーフでSQLファイアウォール機能を使用するための前提条件は次のとおりです:
- Oracle Database 23ai以降を登録します。詳細は、『Oracle Data Safeの管理』のターゲットの登録を参照してください。
- SQLファイアウォール・ロールをターゲット・データベースのData Safeサービス・アカウントに付与します。詳細は、『Oracle Data Safeの管理』の「Oracle Data Safeサービス・アカウントのロール」を参照してください。
- テナンシ管理者が付与できる必要なIAM権限を取得します:
SQLファイアウォールの全機能を使用するには、関連するコンパートメントの
data-safe-sql-firewall-family
に対するmanage
権限を付与することをお薦めします。Allow group <group-name> to manage data-safe-sql-firewall-family in compartment <compartment-name>
あるいは、管理者は、
data-safe-sql-firewall-family
内の特定のリソースに権限を付与することで、より選択的な権限を付与できます。data-safe-sql-firewall-family
に含まれるリソースの詳細は、「data-safe-sql-firewall-family
リソース」を参照してください。