5

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

我将在我们的 Oracle DB 中创建加密/解密函数。我打算使用dbms_cryptowith AES256。我知道我应该将密钥文件存储在操作系统中并使用utl_file.

这是一个好主意吗?这种方法有什么问题吗?例如,如果函数的 10 个调用者同时读取密钥文件,utl_file 会不会有问题?有没有其他推荐的?

我敢肯定,这是一件非常普遍的事情。有谁知道我在哪里可以找到这样做的好样品?

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

4

1 回答 1

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 系统/密码 AS SYSDBA

    CREATE 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 test QUOTA UNLIMITED ON tde_test; 授予连接以测试;授予创建表进行测试;

  • 加密数据:如何创建加密列。您必须创建一个钱包来保存加密密钥。将以下条目添加到服务器上的 sqlnet.ora 文件中,并确保已创建指定目录。

    ENCRYPTION_WALLET_LOCATION= (SOURCE=(METHOD=FILE)(METHOD_DATA= (DIRECTORY=/u01/app/oracle/admin/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;

我希望这对你有帮助。

于 2011-10-11T09:19:39.207 回答