ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントに例の値を使用します。演習を完了するときは、これらの値をクラウド環境に固有の値に置き換えます。
Oracle Data SafeでのOracle SQL Firewallの使用
イントロダクション
Oracle SQL Firewallは、指定されたユーザーに対して認可されたSQL文または接続にのみデータベース・アクセスを制限することで、一般的なデータベース攻撃に対するリアルタイム保護を提供します。
Oracle Data Safe統合コンソールは、Oracle Database 23aiデータベース用のOracle SQL Firewallを管理および監視するために拡張されました。管理者は、Oracle Data Safeを使用して、データベース・アカウントのSQLアクティビティを収集し、収集の進行状況を監視し、収集されたSQLアクティビティから許可リスト・ルール(許可されたコンテキストおよび許可されたSQL文)を使用してSQLファイアウォール・ポリシーを作成し、SQLファイアウォール・ポリシーを有効にできます。
ファイアウォール・ポリシーが有効な場合、Oracle Data Safeでは、データベースからファイアウォール違反ログが自動的に収集され、Oracle Data Safeに格納されます。これらのログは、データベース・フリート全体のオンライン分析およびレポートに使用できます。
対象読者
データベース管理者およびOracle Cloud Infrastructure (OCI)セキュリティ管理者。
目標
簡単なユースケースでOracle Data SafeでOracle SQL Firewallを使用する方法を理解します。
ユースケース: SQL文"Select on View"を認可し、指定したユーザーAPP_USER
の他のSQLをブロックします。
APP_OWNER
: アプリケーションの表およびビューの所有者。APP_USER
: アプリケーションにアクセスする必要があります。
前提条件
-
OCIにプロビジョニングされたOracle Database 23ai。このチュートリアルでは、OCI Computeインスタンスで作成されたデータベースを使用しました。
-
Oracle Database 23aiプラガブル・データベース(PDB) -
FREEPDB1
をOracle Data Safeのターゲットとして追加します。このチュートリアルでは、コンピュート・インスタンス・ウィザードを使用して登録しました。Oracle Data Safe - ターゲット・データベースの登録を参照してください。 -
Oracle SQL FirewallをテストするためのOracle Databaseツール。Oracle SQL Developerを使用してSQL文を実行しています。詳細は、Oracle SQL Developerを参照してください。
ノート:すでにOracle Database 23aiインスタンスがある場合は、タスク1をスキップします。
タスク1: Oracle Database 23aiコンピュート・インスタンスの作成
-
OCIコンソールに移動し、「コンピュート」、「インスタンス」に移動して、「インスタンスの作成」をクリックします。次の詳細を入力してインスタンスを作成します。
-
Oracle Database 23aiデータベースを作成します。次のコマンドを使用して、コンピュート・インスタンスに接続します。
ssh -i <private-ssh-key> opc@<publicip-computeinstance>
-
rootユーザーに切り替えて、VMでの作業時に最新のソフトウェアでシステムを更新します。
sudo su yum update
-
Oracle Linux 8 Developerリポジトリを有効にします。
yum config-manager --set-enabled ol8_developer
-
Oracle Database 23ai Free RPMをダウンロードし、rootとしてインストールします。
yum -y install oracle-database-preinstall-23c
-
RPMベースのインストールを実行するには、
oracle-database-free-23c-1.0-1.el8.x86_64.rpm
ファイルをダウンロードします。wget https://download.oracle.com/otn-pub/otn_software/db-free/oracle-database-free-23c-1.0-1.el8.x86_64.rpm
-
次のコマンドを実行して、Oracle Databaseをインストールします。
yum -y install oracle-database-free-23c-1.0-1.el8.x86_64.rpm
-
Oracle Database 23aiを構成します。構成スクリプトは、1つのプラガブル・データベース
FREEPDB1
を含むコンテナ・データベース(FREE)を設定し、デフォルト・ポート1521
でリスナーを準備します。サービス構成スクリプトを実行します。/etc/init.d/oracle-free-23c configure
-
次の設定を使用して、環境変数を
bash_profile
に設定します。#Oracle Database environment variables export ORACLE_SID=FREE export ORACLE_HOME=/opt/oracle/product/23c/dbhomeFree export ORAENV_ASK=NO export PATH=$ORACLE_HOME/bin:$PATH
-
インスタンスの起動時にデータベースを自動起動するには、次のコマンドを実行します。
systemctl enable oracle-free-23c
-
Linuxファイアウォールが有効になっているかどうかを確認します。無効にするには、次のコマンドを使用します。
systemctl status firewalld systemctl stop firewalld systemctl disable firewalld
タスク2: Oracle Data Safeを使用したターゲット・データベースでのSQLファイアウォール・ステータスの有効化
-
ページ上部のブレッドクラムで、「Oracle Databases」、「データ・セーフ」、「セキュリティ・センター」および「SQL Firewall」をクリックします。
-
デフォルトでは、新しいターゲット23aiデータベースでSQL Firewallが無効になります。データベースをクリックして有効にします。
タスク3: サンプル・ユーザーおよびオブジェクトの作成
-
sysユーザーがsysdbaとしてOracle SQL Developerを使用して
FREEPDB1
データベースに接続します。 -
サンプル・ユーザーおよびオブジェクトを作成します。
-- APP_OWNER who is the owner of the tables and views of the application -- APP_USER who needs to access to the application Create user app_owner identified by QAZxswedc123##; Grant connect, resource, unlimited tablespace to app_owner; Create user app_user identified by QAZxswedc123##; Grant connect, resource, select any table to app_user; -- Sample table created in appuser_test schema CREATE TABLE "APP_OWNER"."DEMO_EMPLOYEES" ( "USERID" NUMBER(4,0), "FIRSTNAME" VARCHAR2(25 BYTE), "LASTNAME" VARCHAR2(35 BYTE), "EMAIL" VARCHAR2(35 BYTE) ) ; Insert into APP_OWNER.DEMO_EMPLOYEES (USERID,FIRSTNAME,LASTNAME,EMAIL) values (73,'Craig','Hunt','Craig.Hunt@oracledemo.com'); Insert into APP_OWNER.DEMO_EMPLOYEES (USERID,FIRSTNAME,LASTNAME,EMAIL) values (74,'Fred','Stewart','Fred.Stewart@oracledemo.com'); Insert into APP_OWNER.DEMO_EMPLOYEES (USERID,FIRSTNAME,LASTNAME,EMAIL) values (75,'Julie','Reed','Julie.Reed@oracledemo.com'); Insert into APP_OWNER.DEMO_EMPLOYEES (USERID,FIRSTNAME,LASTNAME,EMAIL) values (76,'Ruby','James','Ruby.James@oracledemo.com'); Insert into APP_OWNER.DEMO_EMPLOYEES (USERID,FIRSTNAME,LASTNAME,EMAIL) values (77,'Alice','Harper','Alice.Harper@oracledemo.com'); Commit; Create view APP_OWNER.DEMO_EMPLOYEES_VIEW as select * from APP_OWNER.DEMO_EMPLOYEES;
タスク4: SQL収集の作成および開始
-
ページ上部のブレッドクラムで、「データ・セーフ」、「セキュリティ・センター」、「SQLファイアウォール」、「構成の詳細」の順にクリックし、「SQL収集の作成および開始」をクリックします。
-
データベース・ユーザーに
APP_USER
と入力し、User issued SQL commands
でSQLコレクション・レベルを有効にして、「SQLコレクションの作成および開始」をクリックします。作業リクエストCREATE SQL COLLECTIONにより、SQLの収集が開始されます。
タスク5: 認可されたSQL文の実行
-
Oracle SQL Developerを使用して
APP_USER@FREEPDB1
に接続します。 -
認可されたSQL文を実行します。
select * from APP_OWNER.DEMO_EMPLOYEES_VIEW;
-
Oracle Data SafeコンソールからSQL収集インサイトを表示できます。ページ上部のブレッドクラムで、「データ・セーフ」、「セキュリティ・センター」、「SQLファイアウォール」、「構成の詳細」、「SQLコレクションの詳細」および「SQLコレクションのインサイト」をクリックします。
タスク6: SQL収集の停止
-
ページ上部のブレッドクラムで、「データ・セーフ」、「セキュリティ・センター」、「SQLファイアウォール」、「構成の詳細」、「SQLコレクションの詳細」および「STOP」をクリックします。
タスク7: ファイアウォール・ポリシーの生成
-
ページ上部のブレッドクラムで、「データ・セーフ」、「セキュリティ・センター」、「SQLファイアウォール」、「構成の詳細」、「SQLコレクションの詳細」および「ファイアウォール・ポリシーの生成」をクリックします。
一意の許可されたSQL文を表示でき、ポリシーは
INACTIVE
状態です。
タスク8: ポリシーのデプロイおよび強制
-
ページ上部のブレッドクラムで、「データ・セーフ」、「セキュリティ・センター」、「SQLファイアウォール」、「構成の詳細」、「SQLコレクションの詳細」、「ファイアウォール・ポリシーの詳細」および「デプロイおよび適用」をクリックします。
-
次の詳細を選択し、「デプロイして適用」をクリックします。
- 適用スコープ:
All
- 違反に対するアクション:
Block and log violations
- 違反の監査:
On
ポリシーのステータスは
ACTIVE
です。 - 適用スコープ:
タスク9: Oracle SQL Firewallのテスト
-
APP_USER@FREEPDB1
としてOracle SQL Developerに接続します。select * from APP_OWNER.DEMO_EMPLOYEES_VIEW; select * from APP_OWNER.DEMO_EMPLOYEES;
-
SQLコレクションにない2番目の問合せに対するOracle SQL Firewall違反を監視できます。
タスク10: Oracle SQL Firewallダッシュボードおよび違反レポートの検証
-
Oracle SQL Firewall違反およびSQL収集のフリート・ビューについては、Oracle SQL Firewallダッシュボードを参照してください。ページ上部のブレッドクラムで、「データ・セーフ」、「セキュリティ・センター」、「SQLファイアウォール」、「構成の詳細」、「SQLコレクションの詳細」および「ファイアウォール・ポリシーの生成」をクリックします。
-
違反の概要を確認できます。ページ上部のブレッドクラムで、「データ・セーフ」、「セキュリティ・センター」、「SQLファイアウォール」、「違反レポート」および「すべての違反」をクリックします。
関連リンク
承認
-
著者 - Alex Kovuru
-
貢献者 - Indira Balasundaram
その他の学習リソース
docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Use Oracle SQL Firewall with Oracle Data Safe
F91609-02
May 2024