當前位置:首頁 » 密碼管理 » oracle視圖加密

oracle視圖加密

發布時間: 2024-01-06 08:32:03

① Oracle如何加密視圖源碼

最簡單的,把sys收了,異用戶查詢授權。
要是涉及到代碼移交,那就用函數實現view,然後用DBMS_DDL.WRAP加密

② oracle如何加密視圖,就是只允許查詢視圖的數據,不允許打開視圖看視圖的內容

做成一個加密的function,用wrap命令加密,然後這個function的返回集是一個table of type,可以完成這個功能。

③ 如何在oracle 10g r2中實現透明數據加密

設置加密密鑰:
Oracle 透明數據加密提供了實施加密所必需的關鍵管理基礎架構。 加密的工作原理是將明文數據以及秘密(稱作密鑰)傳遞到加密程序中。 加密程序使用提供的密鑰對明文數據進行加密,然後返回加密數據。 以往,創建和維護密鑰的任務由應用程序完成。 Oracle 透明數據加密通過為整個資料庫自動生成一個萬能密鑰解決了此問題。 在啟動 Oracle 資料庫時,管理員必須使用不同於系統口令或 DBA 口令的口令打開一個 Oracle Wallet 對象。 然後,管理員對資料庫萬能密鑰進行初始化。 萬能密鑰是自動生成的。
性能:
由於索引數據未被加密,因此加密通常會影響現有的應用程序索引。 Oracle 透明數據加密對與給定應用程序表關聯的索引值進行加密。 這意味著應用程序中的相等搜索對性能的影響很小,甚至沒有任何影響。 例如,假設應用程序 card_id存在一個索引,並且此應用程序執行以下語句:
sql> Select cash from credit_card where card_id = '1025023590';
Oracle 資料庫將使用現有的應用程序索引,盡管 card_id信息已經在資料庫中加密。
准備用於加密的資料庫:
在本部分內容中,您將更新 sqlnet.ora、創建一個加密錢夾 (ewallet.p12)、打開此錢夾並為 TDE創建萬能密鑰。執行以下操作:
1. 您需要更新 sqlnet.ora 文件以包含一個 ENCRYPTED_WALLET_LOCATION 條目。打開一個終端窗口,然後輸入以下命令:
cd $ORACLE_HOME/network/admin
gedit sqlnet.ora
將以下條目添加到文件末尾:
ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/opt/oracle/admin/test97/wallet/)))
如果不加這一項的話,則會提示下面錯誤:

SQL> alter system set key identified by "hurray"
2 ;
alter system set key identified by "hurray"
*
ERROR at line 1:
ORA-28368: cannot auto-create wallet

/opt/oracle/admin/test97/wallet/ 目錄是用來存放生成的錢夾的。
可以為加密錢夾選擇任何目錄,但路徑不應指向在資料庫安裝過程中創建的標准模糊錢夾(cwallet.sso)。
2. 接下來,您需要打開錢夾並創建萬能加密密鑰。從終端窗口中,輸入以下命令:
connect / as sysdbaalter system set key identified by "welcome1";
此命令的作用為:
l 如果指定的目錄中不存在加密錢夾,則將創建加密錢夾 (ewallet.p12)、打開此錢夾並創建/重新創建 TDE 的萬能密鑰。
l 如果指定目錄中存在加密錢夾,則將打開此錢夾並創建/重新創建 TDE 的萬能密鑰。
之後,就可以測試數據了。
下面是實驗記錄:

alter system set key identified by "welcome1";
SQL> conn dodd/dodd123
create table test (id number,credit_card_number varchar2(16) ENCRYPT NO SALT);
SQL> insert into test values(1,'1231243242');
1 row created.
SQL> insert into test values(2,'33245235');
SQL> commit;
Commit complete.
SQL> select * from test;
ID CREDIT_CARD_NUMB
---------- ----------------
1 1231243242
2 33245235

可見,數據查看是明文,因為這個時候,加密錢夾已經打開,數據可以解密。
這時,停止資料庫,再打開:

SQL> shutdown immediate

Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> SQL> startup
ORACLE instance started.

Total System Global Area 524288000 bytes
Fixed Size 1979968 bytes
Variable Size 138414528 bytes
Database Buffers 377487360 bytes
Redo Buffers 6406144 bytes
Database mounted.
Database opened.

SQL> select * from dodd.test;
select * from dodd.test
*
ERROR at line 1:
ORA-28365: wallet is not open

SQL> select id from dodd.test;

ID
----------
1
2

可以看到,因為資料庫重啟後,加密錢夾處於關閉狀態,這時只要查詢到加密的列,會提示加密錢夾沒有打開。
如果用戶想打開錢夾,必須具有alter system許可權。
下面打開wallet:

SQL> conn / as sysdba
Connected.
SQL> alter system set wallet open identified by "welcome1";

System altered.

SQL> conn dodd/dodd123
Connected.

SQL> select * from test;

ID CREDIT_CARD_NUMB
---------- ----------------
1 1231243242
2 33245235

可以看到,加密錢夾打開後,數據可以被解密。
還有一條:sys用戶的表不能被加密。
可見:Oracle TDE是在數據層面上對表裡的數據加密,而且不會影響資料庫現有的許可權控制策略。
salt實際上就是在加密過程中引入一個隨機性。簡單的說,就是一般來說,同樣的明文產生同樣的密文,這樣就導致容易被解密者通過分析詞頻之類的方式(加解密我不太懂)來通過密文破解明文,如果指定salt,那麼即使同樣的明文加密後的密文也是不一樣的。
no salt的話,自然就是相同的明文會產生相同的密文了。對於索引來說,要求no salt也就可以理解了
丟失ewallet加密錢夾的話,是不能再解密數據的。
Oracle 10gR2的 TDE 特性,對於防止機密信息的泄漏能起到事半功倍的作用!

④ oracle 3des加密key的位數為32怎麼辦

Des的密鑰是8個位元組,但實際上只有7個用上,也就是56位。
3des是用3個或2個des密鑰加密一串明文,最少112位最多168位。也就是14~21個字母或數字元號。

從凱檔慶安全性上來說密鑰位數不足是不能加密的,但有些軟體為了保證用戶可用,會自動使用某種策略盯握自動填充滿,一般是重復填充或採用特定字元,如果你只填了1234作為密鑰蠢拆,有可能真正用於加密的密鑰是123412341234123412341或者123400000000000000000類似的。

另外請注意,最好去做3des的密鑰位數不是7或8,因為des的加密解密是同一個過程,這樣搞在填充後實際上是只使用了一次des加密••••••還不如5位6位好••••••

⑤ Oracle資料庫中文件加密詳解

在Oracle資料庫系統中 用戶如果要以特權用戶身份登錄Oracle資料庫可以有兩種身份驗證的方法 即使用與操作系統集成的身份驗證或使用Oracle資料庫的密碼文件進行身份驗證 因此 管理好密碼文件 對於控制授權用戶從遠端或本機登錄Oracle資料庫系統 執行資料庫管理工作 具有重要的意義

Oracle資料庫的密碼文件存放有超級用戶INTERNAL/SYS的口令及其他特權用戶的用戶名/口令 它一般存放在ORACLE_HOMEDATABASE目錄下

創建密碼文件

在使用Oracle Instance Manager創建一資料庫實例的時侯 在ORACLE_HOMEDATABASE目錄下還自動創建了一個與之對應的密碼顫喊派文件 文件名為PWDSID ORA 其中SID代表相應的Oracle資料庫系統標識符 此密碼文件是進行初始資料庫管理工作的基矗在此之後 管理員也可以根據需要 使用工具ORAPWD EXE手工創建密碼文件 命令格式如下

C: >ORAPWDFILE=< FILENAME >PASSWORD =< PASSWORD > ENTRIES=< MAX_USERS >

各命令參數的含義為

FILENAME 密碼文件名;

PASSWORD 設置INTERNAL/SYS帳號的口令

MAX_USERS 密碼文件中可以存放的最大用戶數 對應於允許以SYSDBA/SYSOPER許可權登錄資料庫的最大用戶數 由於在以後的維護中 若用戶數超出了此限制 則需要重建密碼文件 所以此參數可以根據需要設置得大一些

有了密碼文件之後 需要設置初始化參數REMOTE_LOGIN_PASSWORDFILE來控制密碼文件的使用狀態

設置初始化參數

在Oracle資料庫實例的初始化參數文件中 此參數控制著密碼文件的使用及其狀態 它可以有以下幾個選項

NONE 指示Oracle系統不使用密碼文件 特權用戶的登錄通過操作系統進行身份驗證

EXCLUSIVE 指示只有一個資料庫實例可以使用此密碼文件 只有在此設置下的密碼文件可以包含有除INTERNAL/SYS以外的用戶信息 即允滲咐許將系統許可權SYSOPER/SYSDBA授予除INTERNAL/SYS以外的其他用戶

SHARED 指示可有多個資料庫實例可以使用此密碼文件 在此設置下只有INTERNAL/SYS帳號能被密碼文件識別 即使文件中存有其他用戶的信息 也不允許他們以SYSOPER/SYSDBA的許可權登錄 此設置為預設值

在REMOTE_LOGIN_PASSWORDFILE參數設置為EXCLUSIVE SHARED情況下 Oracle系統搜索密碼文件的次序為 在系統注冊庫中查找ORA_SID_PWFILE參數值(它為密碼文件的全路徑名);若未找到 則查找ORA_PWFILE參數值;若仍未找到 則使用預設值ORACLE_HOMEDATABASEPWDSID ORA;其中的SID代表相應的Oracle資料庫系統標識符

向密碼文件中增加 刪除用戶

當初始化參數REMOTE_LOGIN_PASSWORDFILE設置為EXCLUSIVE時 系統允許除INTERNAL/SYS以外的其他用戶以管理員身份從遠端或本機登錄到Oracle資料庫系統 執行資料庫管理工作;這些用戶名必須存在於密碼文件中 系統才能識別他們 由於不管是在創建資料庫實例時自動創建的密碼文件 還是使用工具ORAPWD EXE手工創建的密碼文件 都只包含INTERNAL/SYS用戶的信息;為此 在實際操作中 可能需要向密碼文件添加或刪除其他用戶帳號

由於僅被授予SYSOPER/SYSDBA系統許可權的用戶才存在於密碼文件中 所以當向某一用戶授予或收茄賀回SYSOPER/SYSDBA系統許可權時 他們的帳號也將相應地被加入到密碼文件或從密碼文件中刪除 由此 向密碼文件中增加或刪除某一用戶 實際上也就是對某一用戶授予或收回SYSOPER/SYSDBA系統許可權

要進行此項授權操作 需使用SYSDBA許可權(或INTERNAL帳號)連入資料庫 且初始化參數REMOTE_LOGIN_PASSWORDFILE的設置必須為EXCLUSIVE 具體操作步驟如下

創建相應的密碼文件;

設置初始化參數REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE;

使用SYSDBA許可權登錄 CONNECTSYS/internal_user_passswordASSYSDBA;

啟動資料庫實例並打開資料庫;

創建相應用戶帳號 對其授權(包括SYSOPER和SYSDBA) 授予許可權 GRANTSYSDBATOuser_name;

收回許可權 REVOKESYSDBAFROMuser_name 現在這些用戶可以以管理員身份登錄資料庫系統了

使用密碼文件登錄

有了密碼文件後 用戶就可以使用密碼文件以SYSOPER/SYSDBA許可權登錄Oracle資料庫實例了 注意初始化參數REMOTE_LOGIN_PASSWORDFILE應設置為EXCLUSIVE或SHARED 任何用戶以SYSOPER/SYSDBA的許可權登錄後 將位於SYS用戶的Schema之下 以下為兩個登錄的例子

以管理員身份登錄

假設用戶scott已被授予SYSDBA許可權 則他可以使用以下命令登錄

CONNECTscott/tigerASSYSDBA

以INTERNAL身份登錄

CONNECTINTERNAL/INTERNAL_PASSWORD

保護密碼文件

查看密碼文件中的成員

可以通過查詢視圖V$PWFILE_USERS來獲取擁有SYSOPER/SYSDBA系統許可權的用戶的信息 表中SYSOPER/SYSDBA列的取值TRUE/FALSE表示此用戶是否擁有相應的許可權 這些用戶也就是相應地存在於密碼文件中的成員

修改密碼文件的狀態

密碼文件的狀態信息存放於此文件中 當它被創建時 它的預設狀態為SHARED 可以通過改變初始化參數REMOTE_LOGIN_PASSWORDFILE的設置改變密碼文件的狀態 當啟動資料庫事例時 Oracle系統從初始化參數文件中讀取REMOTE_LOGIN_PASSWORDFILE參數的設置;當載入資料庫時 系統將此參數與口令文件的狀態進行比較 如果不同 則更新密碼文件的狀態 若計劃允許從多台客戶機上啟動資料庫實例 由於各客戶機上必須有初始化參數文件 所以應確保各客戶機上的初始化參數文件的一致性 以避免意外地改變了密碼文件的狀態 造成資料庫登陸的失敗

修改密碼文件的存儲位置

密碼文件的存放位置可以根據需要進行移動 但作此修改後 應相應修改系統注冊庫有關指向密碼文件存放位置的參數或環境變數的設置

刪除密碼文件

lishixin/Article/program/Oracle/201311/16762

熱點內容
零起點學通c語言視頻 發布:2024-11-28 14:29:42 瀏覽:290
python獲取串口數據 發布:2024-11-28 14:22:39 瀏覽:666
台灣ip代理伺服器雲主機 發布:2024-11-28 14:18:24 瀏覽:465
php寫後端 發布:2024-11-28 14:09:36 瀏覽:234
拍環衛工人的腳本 發布:2024-11-28 14:03:35 瀏覽:990
java課程實戰培訓 發布:2024-11-28 13:57:11 瀏覽:303
linux硬碟空間 發布:2024-11-28 13:55:55 瀏覽:531
寫簡單編譯器 發布:2024-11-28 13:55:42 瀏覽:512
編譯net時 發布:2024-11-28 13:52:38 瀏覽:405
sqlserver2008分區表 發布:2024-11-28 13:41:58 瀏覽:481