附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱開始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 憑證、租用戶及區間的範例值。完成實驗室時,請以雲端環境特有的值取代這些值。
將 Oracle SQL Firewall 與 Oracle Data Safe 搭配使用
簡介
Oracle SQL Firewall 透過將對授權 SQL 敘述句或指定使用者的連線的資料庫存取限制,提供對常見資料庫攻擊的即時保護。
Oracle Data Safe 統一主控台已擴充為管理和監督 Oracle SQL Firewall for Oracle Database 23ai 資料庫。管理員可以使用 Oracle Data Safe 收集資料庫帳戶的 SQL 活動、監督收集進度、使用收集的 SQL 活動的清單規則 (允許的相關資訊環境和允許的 SQL 敘述句) 建立 SQL 防火牆原則,以及啟用 SQL 防火牆原則。
啟用防火牆原則時,Oracle Data Safe 會自動從資料庫收集防火牆違規日誌,並將它們儲存在 Oracle Data Safe 中。然後,這些日誌就可用於資料庫機組的線上分析和報告。
適用對象
資料庫管理員和 Oracle Cloud Infrastructure (OCI) 安全性管理員。
目標
瞭解如何使用 Oracle SQL Firewall 與 Oracle Data Safe 搭配簡單的使用案例。
使用案例:授權 SQL 敘述句 "Select on View" 並封鎖指定使用者 APP_USER
的其他 SQL。
APP_OWNER
:表格的擁有者和應用程式的檢視。APP_USER
:需要存取應用程式。
必要條件
-
Oracle Database 23ai 已在 OCI 中佈建。在本教學課程中,我們使用在 OCI Compute 執行處理中建立的資料庫。
-
在 Oracle Data Safe 中新增 Oracle Database 23ai 可插拔資料庫 (PDB) -
FREEPDB1
作為目標。在本教學課程中,我們使用運算執行處理精靈來註冊,請參閱 Oracle Data Safe - 目標資料庫註冊。 -
用於測試 Oracle SQL Firewall 的任何 Oracle Database 工具。我們使用 Oracle SQL Developer 來執行 SQL 敘述句。如需詳細資訊,請參閱 Oracle SQL Developer 。
注意:如果您已經有 Oracle Database 23ai 執行處理,請略過「工作 1」。
作業 1:建立 Oracle Database 23ai Compute 執行處理
-
前往 OCI 主控台,瀏覽至運算、執行處理,然後按一下建立執行處理。輸入以下詳細資訊來建立執行處理。
-
建立 Oracle Database 23ai 資料庫。使用下列命令連線至您的運算執行處理。
ssh -i <private-ssh-key> opc@<publicip-computeinstance>
-
在 VM 上使用時,切換至 root 使用者並使用最新的軟體更新系統。
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。組態命令檔會設定一個容器資料庫 (FREE),其中包含一個可插拔資料庫
FREEPDB1
,並在預設連接埠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 資料庫、資料安全、安全中心以及 SQL 防火牆。
-
預設會停用新目標 23ai 資料庫中的 SQL 防火牆。按一下資料庫並加以啟用。
作業 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
-
使用 Oracle SQL Developer 以
APP_USER@FREEPDB1
身分連線。select * from APP_OWNER.DEMO_EMPLOYEES_VIEW; select * from APP_OWNER.DEMO_EMPLOYEES;
-
對於 SQL 集合中沒有的第二個查詢,我們可以觀察到 Oracle SQL Firewall 違規。
作業 10:檢查 Oracle SQL Firewall 儀表板和違規報表
-
我們可以查看 Oracle SQL Firewall Dashboard,瞭解 Oracle SQL Firewall 違規和 SQL 集合的機組檢視。在頁面頂端的導覽路徑中,按一下資料安全、安全中心、 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
F91613-02
May 2024