技术开发 频道

Oracle 10g: SQL和PL/SQL支持灵活加密

    【IT168 技术】在这里,您在列 SSN 和 FOLIO_ID 上使用了 TDE,它们现在以加密方式存储在表本身。但是,当用户从表中选择时,她看到以明文表示的数据,因为在检索过程中已经完成了解密。如果磁盘被盗,则包含在表段中的信息仍然保持加密状态。盗窃者需要表密钥才能看到加密的值,但是要获得表密钥,他需要功能较多密钥,而功能较多密钥存储在外部,因此无法获得。

  注意列 SSN 和 FOLIO_ID 后面的子句,这些子句指定 ENCRYPT 使用 128 位高级加密标准。

  数据库拥有预先配置的钱夹。要设置钱夹口令,可使用命令:

以下是代码片段:
 

alter system set encryption key authenticated BY "topSecret";

        如果还未创建钱夹,该命令将先创建钱夹,然后将口令设置为“topSecret”(区分大小写)。然后您就可以开始在表的创建和更改期间将加密用于列定义。

  为外部表加密

  在以上示例中,我使用散列表为列加密。您还可以在外部表上使用 TDE。例如,如果您希望生成一个包含 ACCOUNTS 的数据的转储文件,以便发送到不同的地点,则可以使用简单的 ENCRYPT 子句。

create table account_ext
  organization external
  (
  type oracle_datapump
  default directory dump_dir
  location (
'accounts_1_ext.dmp',
  'accounts_2_ext.dmp',
  'accounts_3_ext.dmp',
  'accounts_4_ext.dmp')
  )
  parallel
4
  
as
  
select
  ACC_NO,
  FIRST_NAME,
  LAST_NAME,
  SSN ENCRYPT IDENTIFIED BY
"topSecret",
  ACC_TYPE,
  FOLIO_ID ENCRYPT IDENTIFIED BY
"topSecret",
  SUB_ACC_TYPE,
  ACC_OPEN_DT,
  ACC_MOD_DT
  from accounts;

        在文件 accounts_*_ext.dmp 中,SSN 和 FOLIO_ID 的值不会是明文,而是加密形式。如果您希望使用这些文件作为外部表,则必须提供 topSecret 作为口令以读取这些文件。

  在这里您可以看到,TDE 是访问控制的理想补充(而不是替代)。

0
相关文章