在Oracle中建议加密的方法是什么?

时间:2011-10-11 07:38:06

标签: database oracle security cryptography utl-file

我需要Oracle /安全专家的帮助。

我将在Oracle DB中创建加密/解密函数。我打算将dbms_cryptoAES256一起使用。我知道我应该将密钥文件存储在操作系统中并使用utl_file读取它。

这是个好主意吗?这种方法有什么问题吗?例如。如果该函数的10个调用者同时读取密钥文件,utl_file是否会出现问题?是否还有其他建议呢?

我确信这是很常见的事情。有谁知道我在哪里可以找到这样做的好样品?

由于这与安全相关,我更愿意遵循其他人遵循的标准。

1 个答案:

答案 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;

我希望这对你有所帮助。