ノート:

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 Data Safeに格納されます。これらのログは、データベース・フリート全体のオンライン分析およびレポートに使用できます。

対象読者

データベース管理者およびOracle Cloud Infrastructure (OCI)セキュリティ管理者。

目標

簡単なユースケースでOracle Data SafeでOracle SQL Firewallを使用する方法を理解します。

ユースケース: SQL文"Select on View"を認可し、指定したユーザーAPP_USERの他のSQLをブロックします。

前提条件

ノート:すでにOracle Database 23aiインスタンスがある場合は、タスク1をスキップします。

タスク1: Oracle Database 23aiコンピュート・インスタンスの作成

  1. OCIコンソールに移動し、「コンピュート」「インスタンス」に移動して、「インスタンスの作成」をクリックします。次の詳細を入力してインスタンスを作成します。

    データベース

  2. Oracle Database 23aiデータベースを作成します。次のコマンドを使用して、コンピュート・インスタンスに接続します。

    ssh -i <private-ssh-key> opc@<publicip-computeinstance>
    
  3. rootユーザーに切り替えて、VMでの作業時に最新のソフトウェアでシステムを更新します。

    sudo su
    yum update
    
  4. Oracle Linux 8 Developerリポジトリを有効にします。

    yum config-manager --set-enabled ol8_developer
    
  5. Oracle Database 23ai Free RPMをダウンロードし、rootとしてインストールします。

    yum -y install oracle-database-preinstall-23c
    
  6. 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
    
  7. 次のコマンドを実行して、Oracle Databaseをインストールします。

    yum -y install oracle-database-free-23c-1.0-1.el8.x86_64.rpm
    
  8. Oracle Database 23aiを構成します。構成スクリプトは、1つのプラガブル・データベースFREEPDB1を含むコンテナ・データベース(FREE)を設定し、デフォルト・ポート1521でリスナーを準備します。サービス構成スクリプトを実行します。

    /etc/init.d/oracle-free-23c configure
    
  9. 次の設定を使用して、環境変数を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
    
  10. インスタンスの起動時にデータベースを自動起動するには、次のコマンドを実行します。

    systemctl enable oracle-free-23c
    
  11. Linuxファイアウォールが有効になっているかどうかを確認します。無効にするには、次のコマンドを使用します。

    systemctl status firewalld
    systemctl stop firewalld
    systemctl disable firewalld
    

タスク2: Oracle Data Safeを使用したターゲット・データベースでのSQLファイアウォール・ステータスの有効化

  1. ページ上部のブレッドクラムで、「Oracle Databases」「データ・セーフ」「セキュリティ・センター」および「SQL Firewall」をクリックします。

    Oracle Data Safeのナビゲート

  2. デフォルトでは、新しいターゲット23aiデータベースでSQL Firewallが無効になります。データベースをクリックして有効にします。

    Oracle SQL Firewallの有効化

タスク3: サンプル・ユーザーおよびオブジェクトの作成

  1. sysユーザーがsysdbaとしてOracle SQL Developerを使用してFREEPDB1データベースに接続します。

    データベースに接続

  2. サンプル・ユーザーおよびオブジェクトを作成します。

    -- 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収集の作成および開始

  1. ページ上部のブレッドクラムで、「データ・セーフ」「セキュリティ・センター」「SQLファイアウォール」「構成の詳細」の順にクリックし、「SQL収集の作成および開始」をクリックします。

    SQL収集の開始

  2. データベース・ユーザーAPP_USERと入力し、User issued SQL commandsSQLコレクション・レベルを有効にして、「SQLコレクションの作成および開始」をクリックします。

    データベース・ユーザーの選択

    作業リクエストCREATE SQL COLLECTIONにより、SQLの収集が開始されます。

    作業リクエスト

タスク5: 認可されたSQL文の実行

  1. Oracle SQL Developerを使用してAPP_USER@FREEPDB1に接続します。

    データベースに接続

  2. 認可されたSQL文を実行します。

    select * from APP_OWNER.DEMO_EMPLOYEES_VIEW;
    

    SQL文の実行

  3. Oracle Data SafeコンソールからSQL収集インサイトを表示できます。ページ上部のブレッドクラムで、「データ・セーフ」「セキュリティ・センター」「SQLファイアウォール」「構成の詳細」「SQLコレクションの詳細」および「SQLコレクションのインサイト」をクリックします。

    インサイトの表示

タスク6: SQL収集の停止

  1. ページ上部のブレッドクラムで、「データ・セーフ」「セキュリティ・センター」「SQLファイアウォール」「構成の詳細」「SQLコレクションの詳細」および「STOP」をクリックします。

    SQL収集の停止

タスク7: ファイアウォール・ポリシーの生成

  1. ページ上部のブレッドクラムで、「データ・セーフ」「セキュリティ・センター」「SQLファイアウォール」「構成の詳細」「SQLコレクションの詳細」および「ファイアウォール・ポリシーの生成」をクリックします。

    ファイアウォール・ポリシーの生成

    一意の許可されたSQL文を表示でき、ポリシーはINACTIVE状態です。

    ポリシー非アクティブ

タスク8: ポリシーのデプロイおよび強制

  1. ページ上部のブレッドクラムで、「データ・セーフ」「セキュリティ・センター」「SQLファイアウォール」「構成の詳細」「SQLコレクションの詳細」「ファイアウォール・ポリシーの詳細」および「デプロイおよび適用」をクリックします。

    ポリシーの施行

  2. 次の詳細を選択し、「デプロイして適用」をクリックします。

    • 適用スコープ: All
    • 違反に対するアクション: Block and log violations
    • 違反の監査: On

    「強制」ポリシーの選択

    ポリシーのステータスはACTIVEです。

    アクティブ・ポリシー

タスク9: Oracle SQL Firewallのテスト

  1. APP_USER@FREEPDB1としてOracle SQL Developerに接続します。

    select * from APP_OWNER.DEMO_EMPLOYEES_VIEW;
    select * from APP_OWNER.DEMO_EMPLOYEES;
    

    DBの接続

  2. SQLコレクションにない2番目の問合せに対するOracle SQL Firewall違反を監視できます。

    問合せの検証

タスク10: Oracle SQL Firewallダッシュボードおよび違反レポートの検証

  1. Oracle SQL Firewall違反およびSQL収集のフリート・ビューについては、Oracle SQL Firewallダッシュボードを参照してください。ページ上部のブレッドクラムで、「データ・セーフ」「セキュリティ・センター」「SQLファイアウォール」「構成の詳細」「SQLコレクションの詳細」および「ファイアウォール・ポリシーの生成」をクリックします。

    レポートの確認

  2. 違反の概要を確認できます。ページ上部のブレッドクラムで、「データ・セーフ」「セキュリティ・センター」「SQLファイアウォール」「違反レポート」および「すべての違反」をクリックします。

    概要を確認

承認

その他の学習リソース

docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品ドキュメントは、Oracle Help Centerを参照してください。