博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

DBA2 第十五章:数据库安全性

Posted on 2011-09-25 14:37  little健健  阅读(439)  评论(0编辑  收藏  举报

Oracle 透明数据加密 (TDE)

  • 概览
    • 安全信息的需要
    • 敏感信息的自动加密
      • 内嵌于 Oracle 数据库中
      • 无需更改应用程序逻辑
      • 加密数据和索引值
    • 使用加密密钥
      • 整个数据库的主密钥
      • 存储在 Oracle Wallet 中
      • 加密的原理如下:将明文数据及密码(称为密钥)传递给加密程序,加密程序使用提供的密钥加密明文数据,然后返回加密数据。
  • 过程
    • TDE 使用外部安全模块 (ESM) 执行以下操作:生成加密密钥、提供加密和解密函数及在数据库内外安全地存储加密密钥
    • 主密钥存储在数据库外部的 Wallet 中。该 Wallet 是使用 Oracle Wallet Manager 创建的,而主密钥则是由ESM 生成的。
  • 实施透明数据加密
    • 创建 Wallet:自动创建或使用 Oracle Wallet Manager 创建
      • sqlnet.ora 条目示例
      • ENCRYPTION_WALLET_LOCATION = 
        (SOURCE=(METHOD=FILE)(METHOD_DATA=
        (DIRECTORY=/opt/oracle/product/10.2.0/db_1/)))
    • 在实例中设置主密钥
      • ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY <password>;
    • 在实例(将来)中打开 Wallet
      • ALTER SYSTEM SET ENCRYPTION WALLET OPEN
        IDENTIFIED BY <password>;
    • 创建包含加密列的表
      • CREATE TABLE emp (
        first_name VARCHAR2(128),
        last_name VARCHAR2(128),
        empID NUMBER ENCRYPT NO SALT,
        salary NUMBER(6) ENCRYPT USING '3DES168',
        comm NUMBER(6) ENCRYPT
        );
  • 现有表和 TDE 
    • ALTER TABLE emp ADD (ssn VARCHAR2(11) ENCRYPT);--添加加密列

      ALTER TABLE emp MODIFY (first_name ENCRYPT); --加密未加密列


      ALTER TABLE emp MODIFY (first_name DECRYPT); --禁用列加密


      ALTER TABLE emp MODIFY (first_name ENCRYPT [NO] SALT);--添加或删除 salt

      ALTER TABLE emp REKEY USING '3DES168'; --更改密钥和加密算法


  • 注意事项
    • 不能加密 SYS 所拥有的表。
    • 不支持 LONG 和 LOB 数据类型
    • 支持的加密算法
      • 3DES168 
      • AES128 
      • AES192 
      • AES256
    • 必须使用 NO SALT 加密索引列
    • TDE 使用索引执行等式搜索
    • 必须先解密加密数据,然后再执行表达式求值
  • Wallet 对用户名和口令的支持
    • Wallet 现在可以持有多个证书:
      • 用户名和口令可以存储在 Wallet 中,而不必通过命令行提供。
    • 批处理作业处理:操作系统上列出进程时防止公开用户名和口令
    • 使用以下方法设置:
      • – sqlnet.ora 中的 WALLET_LOCATION
      • – mkstore 实用程序

数据泵加密(DP)

  • 在导出和导入期间,使用您自己提供的列密钥
    • ENCRYPTION_PASSWORD = <password>
  • 外部表
  • CREATE TABLE emp_ext (
    first_name, last_name, empID,
    salary ENCRYPT IDENTIFIED BY "xIcf3T9u" )
    ORGANIZATION EXTERNAL
    ( TYPE ORACLE_DATAPUMP
    DEFAULT DIRECTORY "D_DIR"
    LOCATION('emp_ext.dat') )
    REJECT LIMIT UNLIMITED
    as select * from employees;

RMAN 加密备份

  • 概览
    • 透明模式
      • 需要 Oracle Wallet 
      • 最适合在同一位置执行的日常备份和还原操作
      • 是默认加密模式
    • 口令模式
      • 需要提供口令
      • 最适合在远程位置还原的备份
    • 双重模式
      • 可以使用 Oracle Wallet 或口令
      • 最适合在本地和远程还原的备份
  • 透明模式设置
    • 创建 Wallet
    • 在实例中打开 Wallet
      • ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY <password>;
    • 在实例中设置主密钥
      • ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY <password>;
    • 将 RMAN 配置为使用透明加密
      • CONFIGURE ENCRYPTION FOR DATABASE ON
    • 备份或恢复命令不会发生更改
    • 可以暂时覆盖永久配置
      • SET ENCRYPTION OFF
  • 口令模式设置
    • 将 RMAN 会话设置为使用口令加密
      • SET ENCRYPTION ON IDENTIFIED BY password ONLY
    • 备份命令不会发生更改
    • 将 RMAN 会话设置为解密用口令加密的备份
      • SET DECRYPTION IDENTIFIED BY password1
      • {, password2,…, passwordn}
    • 恢复命令不会发生更改
  • 双重模式设置
    • 创建 Wallet
    • 在实例中打开 Wallet
      • ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY <password>;
    • 将 RMAN 会话设置为使用双模式加密
      • SET ENCRYPTION ON IDENTIFIED BY password
    • 备份命令不会发生更改
    • 如果需要,请将 RMAN 会话设置为使用口令解密备份
      • SET DECRYPTION IDENTIFIED BY password1 {, password2,…, passwordn}
    • 恢复命令不会发生更改
  • 注意事项
    • 不能加密映像副本备份
    • COMPATIBLE 必须至少设置为 10.2.0
    • V$RMAN_ENCRYPTION_ALGORITHMS 包含可能的加密算法列表
    • 备份加密只适用于 Oracle Database 企业版
    • 每个新的加密备份使用一个新加密密钥
    • 可以通过使用多个通道提高磁盘性能
    • 可以随时更改主密钥,而不会影响以透明方式加密的备份。

虚拟专用数据库 (VPD)

  • 概览
    • 详细访问控制 (FGAC) +安全应用程序上下文
    • VPD 使用策略向 SQL 语句添加保护敏感数据的条件
    • VPD 提供行级访问控制
    • 应用程序属性在应用程序上下文中定义,由详细访问策略使用。
  • 功能
    • 列级 VPD 根据所访问的安全列实施行级访问控制。
    • 通过定制,可以定义静态和非静态策略。
    • 使用共享策略,可以将一个策略与多个对象相关联。
    • 策略类型可以为 INDEX。
    • 策略谓词文本字符串的大小可以为 32 KB。
  • 创建列级策略
    • 授予权限
      • GRANT EXECUTE ON dbms_rls to admin1;
    • 创建函数
    • 使用 DBMS_RLS 程序包将该策略应用于表、视图或同义词。