我需要Oracle /安全专家的帮助。
我将在Oracle DB中创建加密/解密函数。我打算将dbms_crypto
与AES256
一起使用。我知道我应该将密钥文件存储在操作系统中并使用utl_file
读取它。
这是个好主意吗?这种方法有什么问题吗?例如。如果该函数的10个调用者同时读取密钥文件,utl_file是否会出现问题?是否还有其他建议呢?
我确信这是很常见的事情。有谁知道我在哪里可以找到这样做的好样品?
由于这与安全相关,我更愿意遵循其他人遵循的标准。
答案 0 :(得分:4)
如果您的Oracle数据库企业版中有Oracle Advanced Security,那么您已经拥有存储在数据库中的数据的透明数据加密(TDE)。请看一下:
http://download.oracle.com/docs/cd/B19306_01/network.102/b14268/asotrans.htm
您也可以查看此链接:
http://www.oracle-base.com/articles/10g/TransparentDataEncryption_10gR2.php
总结最后一页:
设置:创建数据库文件和用户。
CONN sys / password AS SYSDBA
创建TABLESPACE tde_test DATAFILE'/u01/oradata/DB10G/tde_test.dbf'SIZE 128K AUTOEXTEND ON NEXT 64K;
CREATE USER test IDENTIFIED BY test DEFAULT TABLESPACE tde_test; ALTER USER测试QUOTA UNLIMITED on tde_test; GRANT CONNECT TO test; GRANT CREATE TABLE TO test;
加密数据:如何创建加密列。您必须创建一个钱包来保存加密密钥。将以下条目添加到服务器上的sqlnet.ora文件中,并确保已创建指定的目录。
ENCRYPTION_WALLET_LOCATION = (SOURCE =(METHOD = FILE)(METHOD_DATA = (DIRECTORY = / U01 /应用/ ORACLE /管理/ DB10G / encryption_wallet /)))
您必须创建和操作钱包:
CONN sys/password AS SYSDBA
ALTER SYSTEM SET ENCRYPTION KEY AUTHENTICATED BY "myPassword";
然后,您可以创建具有加密或不加密的所需列的表:
CREATE TABLE tde_test (
id NUMBER(10),
data VARCHAR2(50) ENCRYPT
)
TABLESPACE tde_test;
我希望这对你有所帮助。