5分鐘,輕鬆搞定Oracle資料庫等保測評
沒錯,就是標題黨,5分鐘?50分鐘也搞不定,原理加實驗內容較多,不要總想著速成,太容易得到的知識也不會去珍惜。
本次內容主要講解如下五部分:
1.密碼策略 2.審計 3.許可權 4.連線超時 5.加密
一:密碼策略
查詢語句:
set line 300 col profile for a10 col resource_name for a25 col limit for a20 select * from dba_profiles where profile='DEFAULT' and resource_type='PASSWORD';
示例如下:
說明:
1. 最大錯誤登入次數
(使用者密碼連續輸入錯誤10次,使用者自動鎖定)
FAILED_LOGIN_ATTEMPTS LIMIT 10
2. 密碼過期時間
(使用者密碼,180內沒有修改,使用者自動鎖定)
PASSWORD_LIFE_TIME 180
3. 口令重用時間間隔
單位 天 (表示口令不能重用之前多少天之內使用的密碼)
PASSWORD_REUSE_TIME UNLIMITED
4. 口令被重用之前密碼改變的次數
(在達到PASSWORD_REUSE_TIME指定時間後,要再次使用同一口令的次數)
PASSWORD_REUSE_MAX UNLIMITED
5. 口令複雜度審計函式
PASSWORD_VERIFY_FUNCTION NULL
6. 登入超過有效次數鎖定時間
單位天
PASSWORD_LOCK_TIME 1
7. 口令延續使用時間
使用者口令使用時間超過生命週期 (PASSWORD_LIFE_TIME)後,可以延續使用的天數,並且延續期間,登入會有相應口令即將過期的提示,單位天。
PASSWORD_GRACE_TIME 7
8. PROFILE管理
建立 profile
create_profile ::=
::=
::=
建立新的 PROFILE
限制如下:
1.FAILED_LOGIN_ATTEMPTS 5,密碼連續輸入錯誤5次,使用者自動鎖定;
2.PASSWORD_LIFE_TIME 60,密碼過期時間60天;
3.PASSWORD_REUSE_TIME 60,口令重用時間間隔60天;
4.PASSWORD_REUSE_MAX 5,口令被重用之前密碼改變的次數;
5.PASSWORD_VERIFY_FUNCTION 口令複雜度審計函式verify_function,要求密碼必須包含至少一個數字,一個字元和一個標點符號,長度至少為4;;
6.PASSWORD_LOCK_TIME 1/24,登入超過有效次數鎖定時間,1小時;
7.PASSWORD_GRACE_TIME 10,使用者口令使用時間超過生命週期(PASSWORD_LIFE_TIME)後,可以延續使用的天數,1小時;
建立:
CREATE PROFILE CJC_PROFILE LIMIT FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LIFE_TIME 60 PASSWORD_REUSE_TIME 60 PASSWORD_REUSE_MAX 5 PASSWORD_VERIFY_FUNCTION verify_function PASSWORD_LOCK_TIME 1/24 PASSWORD_GRACE_TIME 10;
其中,配置 PASSWORD_VERIFY_FUNCTION前需要執行utlpwdmg.sql,否則報錯如下:
ORA-07443: function VERIFY_FUNCTION not found
執行:
SQL> @?/rdbms/admin/utlpwdmg.sql
建立使用者,指定新建的 profile。
create_user ::=
建立:
CREATE USER CJC IDENTIFIED BY "C2a!" DEFAULT TABLESPACE CJC TEMPORARY TABLESPACE temp PROFILE CJC_PROFILE;
檢視使用者 PROFILE
SQL> select USERNAME,DEFAULT_TABLESPACE,PROFILE from dba_users where username='CJC'; USERNAME DEFAULT_TABLESPACE PROFILE ------------------------------ ------------------------------ ----------------------------------- CJC CJC CJC_PROFILE
測試,連續輸錯 5次,密碼使用者被鎖定
SQL> conn cjc/a ERROR: ORA-01017: invalid username/password; logon denied SQL> conn cjc/a ERROR: ORA-01017: invalid username/password; logon denied SQL> conn cjc/a ERROR: ORA-01017: invalid username/password; logon denied SQL> conn cjc/a ERROR: ORA-01017: invalid username/password; logon denied SQL> conn cjc/a ERROR: ORA-01017: invalid username/password; logon denied SQL> conn cjc/a ERROR: ORA-28000: the account is locked
修改 PROFILE
SQL> alter profile CJC_PROFILE limit FAILED_LOGIN_ATTEMPTS 2;
測試:
SQL> alter user cjc account unlock; SQL> conn cjc/a ERROR: ORA-01017: invalid username/password; logon denied Warning: You are no longer connected to ORACLE. SQL> conn cjc/a ERROR: ORA-01017: invalid username/password; logon denied SQL> conn cjc/a ERROR: ORA-28000: the account is locked
預設密碼
查詢使用預設密碼的使用者
SET PAGESIZE 100; SELECT * FROM DBA_USERS_WITH_DEFPWD;
示例如下:
密碼認證方式
SELECT NAME,VALUE,DESCRIPTION FROM V$PARAMETER2 WHERE NAME in ('remote_os_authent','os_authent_prefix');
限制作業系統認證方式
vi sqlnet.ora 新增:
SQLNET.AUTHENTICATION_SERVICES=(NONE)
測試
sqlplus / as sysdba
報錯: ORA-01017: invalid username/password: logon denied
限制訪問來源
$ORACLE_HOME/network/admin
sqlnet.ora
#開啟IP限制功能
tcp.validnode_checking=yes
#允許訪問資料庫IP地址列表
tcp.invited_nodes
=
(
IP1,IP2,IP3
)
重啟監聽
lsnrctl stop
lsnrctl start
lsnrctl reload
登入測試
sqlplus username/pass@IP1:port/dbname
不在白名單的
IP無法登入資料庫
報錯:
ORA-12547: TNS:lost contact
檢視 監聽日誌 listener.log
二:審計
強制審計
強制性審計包括以下操作:
1.資料庫啟動。
將生成一條審計記錄,其中列出了啟動例項的作業系統使用者、使用者終端識別符號以及日期和時間戳。
此資料儲存在作業系統審計跟蹤中,因為資料庫審計跟蹤在成功完成啟動後才可用。
2.SYSDBA和SYSOPER登入。
Oracle資料庫記錄所有SYSDBA和SYSOPER連線。
3.資料庫關閉。
將生成一個審計記錄,其中列出了關閉例項的作業系統使用者、使用者終端識別符號以及日期和時間戳。
也就是說,即使 AUDIT_SYS_OPERATIONS引數設定為FALSE,也會將管理員許可權連線、啟動、關閉資料庫操作記錄到audit_file_dest指定的資料夾中。
審計檔案目錄
$ORACLE_BASE /admin/$ORACLE_SID/adump
資料庫關閉的審計日誌
啟動的審計記錄
標準審計
檢查審計引數,確認已開啟審計
SHOW PARAMETER AUDIT_TRAIL ;
AUDIT_TRAIL引數說明 :
1.DB
將審計記錄到資料庫審計跟蹤 表 ( SYS.AUD$),但強制和SYS審計記錄除外,這些記錄始終寫入作業系統審計跟蹤 檔案 。 DB是AUDIT_TRAIL引數的預設設定。
2.DB,EXTENDED
行為與 AUDIT_TRAIL=DB相同,但也填充SYS.AUD$表的SQL繫結和SQL文字CLOB型別列(如果可用)。
DB,EXTEND使您能夠捕獲在已審計的操作中使用的SQL語句。
您可以捕獲導致審計的 SQL語句和任何關聯的繫結變數。
但是,請注意,您只能從以下列資料型別捕獲資料: CHAR、NCHAR、VARCHAR、VAR CHAR2、NVARCHAR2、NUMBER、FLOAT、BINARY_FLOAT、BINARY_DOUBLE、LONG、ROWID、DATE、TIMESTAMP和TIMESTAMP WITH TIMEZONE。
還要注意, DB,EXTEND可以捕獲敏感資料,如信用卡資訊。
3.OS
將所有審計記錄定向到作業系統檔案。
4.XML
以 XML格式寫入作業系統審計記錄檔案。
記錄中 XML模式給定的AuditRecord節點的所有元素除了Sql_Text和Sql_Bind到作業系統XML審計檔案之外。
5.XML, EXTENDED
行為與 AUDIT_TRAIL=XML相同,但也在作業系統XML審計檔案中包含SQL文字和SQL繫結資訊。
6.NONE
禁用標準審計。
1. 語句審計
Statement
審計影響特定型別資料庫物件的特定 SQL語句或語句組。
例如, AUDIT TABLE審計CREATE TABLE、TRUNCATE TABLE、COMMENT ON TABLE和DELETE[FROM]TABLE語句。
示例如下:
審計 CJC使用者,DELETE,UPDATE操作
AUDIT DELETE TABLE,UPDATE TABLE BY CJC BY ACCESS;
查詢語句審計配置資訊
SET LINE 300 SET PAGESIZE 100 SELECT USER_NAME,AUDIT_OPTION,SUCCESS,FAILURE FROM DBA_STMT_AUDIT_OPTS;
生成測試資料
CONN CJC/*** CREATE TABLE T0124(ID INT); INSERT INTO T0124 VALUES(1); COMMIT; UPDATE T0124 SET ID=100 WHERE ID=1; DELETE FROM T0124 WHERE ID=0; COMMIT;
檢視審計記錄
SET LINE 300 COL USERNAME FOR A15; COL OBJ_NAME FOR A15; COL AUDIT_OPTION FOR A15; COL TERMINAL FOR A15 SELECT USERNAME,TO_CHAR(TIMESTAMP,'YYYYMMDD HH24:MI:SS') TIMESTAMP,OBJ_NAME,ACTION_NAME FROM DBA_AUDIT_TRAIL;
刪除審計策略
#NOAUDIT ALL STATEMENTS; 不生效 #NOAUDIT ALL STATEMENTS BY CJC BY ACCESS; 不生效 NOAUDIT DELETE TABLE,UPDATE TABLE BY CJC;
檢查
SET LINE 300 SET PAGESIZE 100 SELECT USER_NAME,AUDIT_OPTION,SUCCESS,FAILURE FROM DBA_STMT_AUDIT_OPTS;
檢視是否有新增審計記錄
SET LINE 300 SET PAGESIZE 100 SELECT USER_NAME,AUDIT_OPTION,SUCCESS,FAILURE FROM DBA_STMT_AUDIT_OPTS;
注意:如果是在當前 session執行操作,還會記錄審計,需要退出重新連線。
2. 許可權審計
Privilege
審計由指定系統許可權授權的 SQL語句。
例如, AUDIT CREATE ANY TRIGGER審計使用CREATE ANY TRIPGER系統許可權發出的語句。
SELECT USER_NAME,FAILURE FROM DBA_STMT_AUDIT_OPTS WHERE AUDIT_OPTION='CREATE SESSION';
未開啟 FAILURE = BY ACCESS 表示對連線失敗的進行審計,BY ACCESS表示每條記錄一次 而不是 BY SESSION沒有會話記錄一次
示例如下:
審計授予 DELETE ANY TABLE 許可權的操作
AUDIT DELETE ANY TABLE BY ACCESS;
查詢語句審計配置資訊
SET LINE 300 SET PAGESIZE 100 SELECT USER_NAME,PRIVILEGE,SUCCESS,FAILURE FROM DBA_PRIV_AUDIT_OPTS;
生成測試資料
GRANT DELETE ANY TABLE TO CJC; GRANT DELETE ANY TABLE TO CHEN; GRANT SELECT ON CJC.T0124 TO TESTUSER;
檢視審計資料
SET LINE 300 COL USERNAME FOR A15; COL OBJ_NAME FOR A15; COL AUDIT_OPTION FOR A15; COL TERMINAL FOR A15 SELECT USERNAME,TO_CHAR(TIMESTAMP,'YYYYMMDD HH24:MI:SS') TIMESTAMP,OBJ_NAME,ACTION_NAME FROM DBA_AUDIT_TRAIL;
3. 物件審計
Object
審計特定物件上的特定語句,例如 HR.EMPLOYEES表上的ALTER TABLE。
AUDIT SELECT,INSERT,DELETE ON CJC.T0124 BY ACCESS WHENEVER SUCCESSFUL;
SET LINE 300 SET PAGESIZE 100 COL OWNER FOR A15 COL OBJECT_NAME FOR A15 COL OBJECT_TYPE FOR A15 SELECT OWNER,OBJECT_NAME,OBJECT_TYPE,SEL,DEL,INS,FBK FROM DBA_OBJ_AUDIT_OPTS;
CONN CJC/****** SELECT * FROM CJC.T0124;
檢視審計資料
SET LINE 300 COL USERNAME FOR A15; COL OBJ_NAME FOR A15; COL AUDIT_OPTION FOR A15; COL TERMINAL FOR A15 SELECT USERNAME,TO_CHAR(TIMESTAMP,'YYYYMMDD HH24:MI:SS') TIMESTAMP,OBJ_NAME,ACTION_NAME FROM DBA_AUDIT_TRAIL;
4. 網路審計
Network
審計網路協議中的意外錯誤或網路層中的內部錯誤。
審計語句執行:成功、失敗或兩者都有
可審計網路錯誤條件
Table 9-4 Auditable Network Error Conditions TNS-02507 Encryption algorithm not installed TNS-12648 Encryption or data integrity algorithm list empty TNS-12649 Unknown encryption or data integrity algorithm TNS-12650 No common encryption or data integrity algorithm
新增審計
AUDIT NETWORK BY ACCESS;
檢視審計資料
SET LINE 300 COL USERNAME FOR A15; COL OBJ_NAME FOR A15; COL AUDIT_OPTION FOR A15; COL TERMINAL FOR A15 SELECT USERNAME,TO_CHAR(TIMESTAMP,'YYYYMMDD HH24:MI:SS') TIMESTAMP,OBJ_NAME,ACTION_NAME FROM DBA_AUDIT_TRAIL;
三:許可權
查詢具有 SYSDBA 許可權的使用者
SELECT * FROM V$PWFILE_USERS;
示例如下:
測試: GRANT SYSDBA TO CJC;
SELECT * FROM V$PWFILE_USERS;
使用者角色
查詢具有 DBA 角色的使用者
檢查資料庫內是否有自定義的許可權過大的角色
SELECT GRANTEE,GRANTED_ROLE,ADMIN_OPTION,DEFAULT_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE='DBA';
示例:
查詢角色對應的許可權
SELECT ROLE,PRIVILEGE FROM ROLE_SYS_PRIVS WHERE ROLE IN ('CONNECT','RESOURCE') ORDER BY ROLE;
查詢系統許可權
SELECT GRANTEE,PRIVILEGE FROM DBA_SYS_PRIVS WHERE GRANTEE IN ('CJC') ORDER BY 1;
查詢物件許可權
SELECT GRANTEE,PRIVILEGE FROM DBA_TAB_PRIVS WHERE GRANTEE IN ('CJC') ORDER BY 1; GRANT SELECT ON SYS.T1 TO CJC; SELECT GRANTEE,PRIVILEGE FROM DBA_TAB_PRIVS WHERE GRANTEE IN ('CJC') ORDER BY 1;
查詢表許可權查詢
測試:
GRANT DELETE ON CJC.T0124 TO SYSTEM; SELECT UNIQUE GRANTEE, TABLE_NAME FROM DBA_TAB_PRIVS WHERE (PRIVILEGE='INSERT' OR PRIVILEGE='UPDATE' OR PRIVILEGE='ALTER' OR PRIVILEGE='DELETE' OR PRIVILEGE='EXECUTE') AND OWNER='CJC';
五:連線超時
CONNECT_TIME
指定會話的總執行時間限制,以分鐘為單位。
IDLE_TIME
指定會話期間允許的連續非活動時間段,以分鐘為單位。長時間執行的查詢和其他操作不受此限制。
檢視資源限制
SQL> select * from dba_profiles where resource_name in ('IDLE_TIME','CONNECT_TIME');
SQL> show parameter resource_limit NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ resource_limit boolean FALSE
啟動資源限制
ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;
IDLE_TIME
SQL> alter profile CJC_PROFILE limit IDLE_TIME 1; SQL> conn cjc/"C2a!" Connected. SQL> show user USER is "CJC" ---等1分鐘以後 SQL> select distinct sid from v$mystat; select distinct sid from v$mystat * ERROR at line 1: ORA-02396: exceeded maximum idle time, please connect again
如果有長時間未提交的事物,會被自動回退。
CONNECT_TIME
執行 1分鐘後,報錯:
SQL> begin dbms_lock.sleep(65); dbms_output.put_line('cjc'); end; / ERROR at line 1: ORA-02399: exceeded maximum connect time, you are being logged off ORA-06512: at "SYS.DBMS_LOCK", line 205 ORA-06512: at line 2
會話自動關閉
set line 300 col event for a35 select sid,SERIAL#,status,LAST_CALL_ET,event from v$session where sid=1;
未提交的事物會自動回退
SQL> insert into t1 values(2); 1 row created. ----1分鐘以後提交 SQL> commit; commit * ERROR at line 1: ORA-02399: exceeded maximum connect time, you are being logged off
六:加密
傳輸加密
檢視加密元件
[oracle@cjc-db-01 admin]$ adapters Installed Oracle Net transport protocols are: IPC BEQ TCP/IP SSL RAW SDP/IB Installed Oracle Net naming methods are: Local Naming (tnsnames.ora) Oracle Directory Naming Oracle Host Naming Oracle Names Server Naming Installed Oracle Advanced Security options are: RC4 40-bit encryption RC4 56-bit encryption RC4 128-bit encryption RC4 256-bit encryption DES40 40-bit encryption DES 56-bit encryption 3DES 112-bit encryption 3DES 168-bit encryption AES 128-bit encryption AES 192-bit encryption AES 256-bit encryption MD5 crypto-checksumming SHA-1 crypto-checksumming Kerberos v5 authentication RADIUS authentication
語法如下:
服務端 :
SQLNET.ENCRYPTION_SERVER = [accepted | rejected | requested | required] SQLNET.ENCRYPTION_TYPES_SERVER = (valid_encryption_algorithm [,valid_encryption_algorithm])
客戶端 :
SQLNET.ENCRYPTION_CLIENT = [accepted | rejected | requested | required] SQLNET.ENCRYPTION_TYPES_CLIENT = (valid_encryption_algorithm [,valid_encryption_algorithm])
示例如下:
臨時開啟 trace sqlnet,用於檢視傳輸加密資訊:
vi $ORACLE_HOME/network/admin/sqlnet.ora #Trace file setup trace_level_server=16 trace_level_client=16 trace_directory_server=/home/oracle/trace trace_directory_client=/home/oracle/trace trace_file_client=cli trace_file_server=srv trace_unique_client=true diag_adr_enabled = off
重新 reload
lsnrctl reload
連線資料庫
[oracle@cjc-db-01 ~]$ sqlplus 'cjc/"C2a!"@192.168.1.5:1521/cjc'
查詢
SQL> select * from t1; ID NAME ---------- ---------- 1 aaacjcaaa
檢視跟蹤檔案
[oracle@cjc-db-01 ~]$ cd /home/oracle/trace/ [oracle@cjc-db-01 trace]$ ls -lrth total 640K -rw-r----- 1 oracle oinstall 159K Jan 27 13:59 srv_19599.trc -rw-r----- 1 oracle oinstall 197K Jan 27 13:59 cli_19597.trc
SQL語句是明文的,預設沒有加密
[oracle@cjc-db-01 trace]$ vi cli_19597.trc ..... (4158699328) [27-JAN-2024 14:08:16:596] nsbasic_bsd: packet dump (4158699328) [27-JAN-2024 14:08:16:596] nsbasic_bsd: 01 12 00 00 06 00 00 00 |........| (4158699328) [27-JAN-2024 14:08:16:596] nsbasic_bsd: 00 00 03 5E 15 61 80 00 |...^.a..| (4158699328) [27-JAN-2024 14:08:16:596] nsbasic_bsd: 00 00 00 00 00 FE FF FF |........| (4158699328) [27-JAN-2024 14:08:16:596] nsbasic_bsd: 00 00 00 00 00 00 00 00 |........| (4158699328) [27-JAN-2024 14:08:16:596] nsbasic_bsd: 00 00 00 00 00 10 73 65 |......se| (4158699328) [27-JAN-2024 14:08:16:596] nsbasic_bsd: 6C 65 63 74 20 2A 20 66 |lect.*.f| (4158699328) [27-JAN-2024 14:08:16:596] nsbasic_bsd: 72 6F 6D 20 74 31 01 00 |rom.t1..| (4158699328) [27-JAN-2024 14:08:16:596] nsbasic_bsd: 00 00 00 00 00 00 00 00 |........| ...... (4158699328) [27-JAN-2024 14:08:16:596] nsbasic_bsd: 00 00 |.. | (4158699328) [27-JAN-2024 14:08:16:596] nsbasic_bsd: exit (0) (4158699328) [27-JAN-2024 14:08:16:596] nsbasic_brc: entry: oln/tot=0 ......
啟用傳輸加密
對服務端進行設定
vi $ORACLE_HOME/network/admin/sqlnet.ora SQLNET.ENCRYPTION_SERVER = REQUESTED SQLNET.ENCRYPTION_TYPES_SERVER= (RC4_256)
重新 reload
lsnrctl reload
刪除跟蹤日誌
[oracle@cjc-db-01 trace]$ rm -rf *.trc
連線資料庫
[oracle@cjc-db-01 ~]$ sqlplus 'cjc/"C2a!"@192.168.1.5:1521/cjc'
查詢
SQL> select * from t1; ID NAME ---------- ---------- 1 aaacjcaaa
檢視跟蹤日誌
[oracle@cjc-db-01 trace]$ ls -lrth total 644K -rw-r----- 1 oracle oinstall 3.0K Jan 27 14:05 srv_20034.trc -rw-r----- 1 oracle oinstall 187K Jan 27 14:05 srv_20039.trc -rw-r----- 1 oracle oinstall 262K Jan 27 14:05 cli_20037.trc
檢視:
SQL語句已被加密
[oracle@cjc-db-01 trace]$ vi cli_20037.trc ...... (4158699328) [27-JAN-2024 14:05:20:555] nspsend: packet dump (4158699328) [27-JAN-2024 14:05:20:555] nspsend: 00 53 00 00 06 00 00 00 |.S......| (4158699328) [27-JAN-2024 14:05:20:555] nspsend: 00 00 8F 2D 1B 3F 9C 78 |...-.?.x| (4158699328) [27-JAN-2024 14:05:20:555] nspsend: 8C 85 B9 DD 2E 33 14 42 |.....3.B| (4158699328) [27-JAN-2024 14:05:20:555] nspsend: 2F 0C 3D 78 BA 7F F6 22 |/.=x..."| (4158699328) [27-JAN-2024 14:05:20:555] nspsend: 08 94 97 F4 21 DE 1B C3 |....!...| (4158699328) [27-JAN-2024 14:05:20:555] nspsend: D2 2B EF 21 F8 43 DA B3 |.+.!.C..| (4158699328) [27-JAN-2024 14:05:20:555] nspsend: 52 08 EC F0 0D F2 63 84 |R.....c.| (4158699328) [27-JAN-2024 14:05:20:555] nspsend: 90 15 39 70 D5 6C D8 19 |..9p.l..| (4158699328) [27-JAN-2024 14:05:20:555] nspsend: A2 F3 A1 BB A7 66 69 50 |.....fiP| (4158699328) [27-JAN-2024 14:05:20:555] nspsend: 27 92 9C 0B 92 74 31 43 |'....t1C| (4158699328) [27-JAN-2024 14:05:20:555] nspsend: A5 00 00 |... | (4158699328) [27-JAN-2024 14:05:20:555] nspsend: 83 bytes to transport (4158699328) [27-JAN-2024 14:05:20:555] nspsend: normal exit ....
資料加密
Transparent Data Encryption
透明資料加密的型別 :
TDE列 : 加密儲存在選定表列中的敏感資料。
TDE表空間 : 加密儲存在表空間中的所有資料。
TDE 列
TDE列加密用於保護儲存在表列中的機密資料,如信用卡和社會安全號碼。
TDE列加密使用兩層基於金鑰的體系結構來透明地加密和解密敏感表列。
TDE主加密金鑰儲存在外部安全模組中,該模組可以是Oracle錢包或硬體安全模組(HSM)。
該主加密金鑰用於加密表金鑰,表金鑰又用於加密和解密表列中的資料。
主加密金鑰儲存在資料庫外部的一個外部安全模組中,該模組只能由安全管理員訪問。
對於此外部安全模組, Oracle使用Oracle錢包或硬體安全模組(HSM),如本章所述。
以這種方式儲存主加密金鑰可以防止其未經授權的使用。
使用外部安全模組( wallet/HSM)將普通程式功能與加密操作分離,從而可以在資料庫管理員和安全管理員之間劃分職責。
由於資料庫管理員可能不知道錢包密碼,需要安全管理員提供密碼,因此增強了安全性。
當表包含加密列時,無論加密列的數量如何,都會使用單個表金鑰。
所有表的表金鑰都用資料庫伺服器主加密金鑰加密,並儲存在資料庫中的字典表中。
TDE列加密是在Oracle Database 10g release 2(10.2)中首 次引入的。
若要使用此功能,您必須執行 Oracle Database 10g release 2(10.2)或更高版本。
測試:
[oracle@cjc-db-01 admin]$ vi sqlnet.ora ###新增 ENCRYPTION_WALLET_LOCATION= (SOURCE= (METHOD=FILE)(METHOD_DATA= (DIRECTORY=/home/oracle/wallets))) ###執行reload [oracle@cjc-db-01 admin]$ lsnrctl reload
配置 Master Encryption Key
SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "cjc";
檢視 wallets生成的檔案
[oracle@cjc-db-01 wallets]$ ls -lrth total 4.0K -rw-r--r-- 1 oracle oinstall 2.8K Jan 27 14:34 ewallet.p12
開啟錢包
ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "cjc"; ORA-28354: Encryption wallet, auto login wallet, or HSM is already open
建立表,設定加密列
SQL> conn cjc/"C2a!" SQL> create table t1(id int,xxx int ENCRYPT);
插入資料
insert into t1 values(100,5); insert into t1 values(20000,6); commit;
TDE 表空間
TDE表空間加密使您能夠加密整個表空間。
在加密的表空間中建立的所有物件都會自動加密。
如果您想保護表中的敏感資料, TDE表空間加密非常有用。
您不需要對每個表列執行細粒度分析來確定需要加密的列。
此外, TDE表空間加密利用大容量加密和快取來提供增強的效能。
雖然對應用程式的實際效能影響可能各不相同,但效能開銷大致估計在 5%到8%之間。
如果您的表在多列中包含敏感資料,或者您希望保護整個表而不僅僅是單個列,那麼 TDE表空間加密是TDE列加密的一個很好的替代方案。
TDE表空間加密對儲存在加密表空間中的所有資料及其相應的重做資料進行加密。
這包括內部大型物件( LOB),如BLOB和CLOB。
TDE表空間加密不會加密儲存在表空間之外的資料。
例如, BFILE資料不加密,因為它儲存在資料庫之外。
如果您在加密的表空間中建立了一個具有 BFILE列的表,那麼該特定列將不會被加密。
但是, Oracle Database 11g Release 1(11.1)支援SecureFile LOB。
加密表空間中的所有資料都以加密格式儲存在磁碟上。
對於具有檢視或修改資料所需許可權的授權使用者來說,資料是透明解密的。
資料庫使用者或應用程式不需要知道特定表中的資料是否在磁碟上加密。
如果磁碟或備份介質上的資料檔案被盜,則資料不會洩露。
TDE表空間加密使用兩層基於金鑰的體系結構來透明地加密(和解密)表空間。
TDE主金鑰儲存在外部安全模組(Oracle錢包或HSM)中。
該 TDE主金鑰用於加密TDE表空間加密金鑰,該金鑰又用於加密和解密表空間中的資料。
下 圖顯示了 TDE表空間加密過程的概述。
TDE表空間加密是在Oracle Database 11g release 1(11.1)中引入的。
要使用此功能,您必須執行 Oracle Database 11gRelease 1(11.11)或更高版本。
測試:
建立加密表空間:
CREATE TABLESPACE chen DATAFILE '/oradata/chentbs.dbf' SIZE 1M ENCRYPTION USING '3DES168' DEFAULT STORAGE(ENCRYPT);
檢視
SQL> select tablespace_name from dba_tablespaces where ENCRYPTED='YES'; TABLESPACE_NAME ------------------------------ CHEN
注意:
啟用 TDE,對效能會有影響,也會對日常備份、恢復、匯出、匯入等操作有影響,啟用前需要充分評估影響範圍。
###chenjuchao 20240127###
參考連結:
https://blog.csdn.net/qq_50885384/article/details/134147845 https://www.cnblogs.com/omsql/p/10845235.html
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/29785807/viewspace-3005395/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 什麼是等保測評?等保測評資質有哪些?
- 【等保測評】等保測評師怎麼考,前景怎麼樣?
- 上億條資料,OurwayBI也能輕鬆搞定
- 【等保知識】等保測評機構申請條件,所需資料以及流程
- 軟體測試之30分鐘輕鬆搞定正規表示式基礎
- 填報指令碼之輕鬆搞定複雜表的資料入庫指令碼
- 等保測評是什麼意思?APP有必要進行等保測評嗎?APP
- 輕鬆接觸Oracle資料庫中的Kill sessionOracle資料庫Session
- 辦公室革命,教你輕鬆搞定輕鬆玩轉ExcelExcel
- 【等保小知識】等保一級需要測評嗎?
- 新霸哥帶你輕鬆玩轉Oracle資料庫Oracle資料庫
- Vue資料驅動表單渲染,輕鬆搞定form表單VueORM
- 非常規方法,輕鬆應對Oracle資料庫危急異常Oracle資料庫
- CnosDB 狂歡!全面支援 Helm 部署,輕鬆搞定你的分散式時序資料庫!分散式資料庫
- 【等保小知識】等級保護工作是指等保測評嗎?意思一樣嗎?
- 【等保小知識】等級保護單項測評包括哪些專案?
- 只需一分鐘輕鬆搞定Win7桌面假死問題Win7
- 等保測評主要評測的內容有哪些?主要包含什麼?
- 【等保】等保工作中常見導致等保測評結論為差的高風險項彙總
- 輕鬆搞定專案流程自動化
- 輕鬆檢測Golang併發的資料競爭Golang
- 如何輕鬆搞定資料科學麵試:Python&R語言篇資料科學PythonR語言
- 藉助ETLCloud工具,輕鬆同步Doris資料至Inceptor資料庫Cloud資料庫
- 保護Oracle資料庫的安全Oracle資料庫
- 10個教程教你輕鬆備份MySQL資料庫MySql資料庫
- 輕鬆篡改WebSocket資料包Web
- 什麼是等保測評?解決方案有哪些?
- 二、三級等保申請流程,二、三級等保怎麼申請?二、三級等保是什麼?等保測評需要多少錢?
- 3D 穿梭效果?使用 CSS 輕鬆搞定3DCSS
- Android輕鬆搞定Dialog提示動畫效果Android動畫
- 12步輕鬆搞定python裝飾器Python
- 【等保小知識】內網或專網需要做等保測評嗎?為什麼?內網
- 【網路安全基礎】如何區分等保備案和等保測評?
- 輕鬆地將PHP會話儲存在MySQL資料庫PHP會話MySql資料庫
- 使用ADO.NET輕鬆操縱資料庫(一)資料庫
- 使用ADO.NET輕鬆操縱資料庫(二)資料庫
- 快速上手 KSQL:輕鬆與資料庫互動的利器SQL資料庫
- 十分鐘教條與經驗,輕鬆搞定系統分析師的案例分析