翱谤补肠濒别数据库高级安全选件础厂翱介绍2. Oracle 数据库安全性 Data Masking
历经30多年的创新 TDE Tablespace Encryption
Oracle Total Recall
Oracle Audit Vault
Oracle 10g Oracle Database Vault
透明数据加密
EM 配置扫描
细粒度审计 (9i)
Oracle 9i 安全应用程序角色
客户端标识符 / 身份传播
Oracle Label Security (2000)
代理验证
Oracle 8i 公司用户安全性
全局角色
虚拟专用数据库 (8i)
数据库加密 API
Oracle 7 强身份验证 (PKI, Kerberos, RADIUS)
原生网络加密 (Oracle7)
数据库审计
1977 政府客户 2010
3. Oracle 数据库安全性
为实现安全性与合规性的“纵深防御”
加密与屏蔽
? Oracle Advanced Security
? Oracle Secure Backup
? Oracle Data Masking
访问控制
? Oracle Database Vault
? Oracle Label Security
监控
? Oracle Audit Vault
Encryption & Masking ? Oracle Configuration Management
Access Control ? Oracle Total Recall
Monitoring
4. Oracle 高级安全性
动态和静态数据
Oracle 高级安全
强认证 应用服务器/客户端
Oracle高级安全
网络加密
数据读取 数据存盘 备份数据库
自动解密 自动加密
Oracle高级安全
透明数据加密
Redo apply
redo logs 包含加密数据
备份文件数据加密
5. Oracle Advanced Security
概览
? 透明数据加密(TDE)
– 无需应用修改
Strong
– 表空间加密与列级加密 Authentication
– 内置密钥管理
– 加密RMAB备份集和数据泵导出集 Network
– 加密Oracle Securefiles (LOBS) Encryption
? 网络加密
– SSL/TLS
– 本地 – 无证书要求
75000 ( ) ^#^*>*
Encrypted Disks, Backups,
? 强验证 Exports
– Kerberos, PKI , RADIUS
6. Oracle Advanced Security
TDE 列加密
? Database 10g Release 2版本开始可用
– 推荐在版本10.2.0.4 及后续版本使用
– 新?nomac? 选项 (每个加密值可节省20个字节)
? 加密应用表中的敏感数据
– 信用卡号, SSN, 各类密码, …
? 密钥管理
– 每张表一个密钥
– 表密钥再用TDE主密钥进行加密– 2 级密钥架构
7. 职责分离
Wallet 密码与
System 或 DBA 密码分开
无权访问wallet
DBA 启动
Database
安全DBA 打开含有master key 的 wallet
8. 主密钥和列密钥
主密钥加密列密钥
Master key存储于
PKCS#12 wallet
安全DBA 打开含有主密钥 的 wallet
列密钥 加密列中的数据
10. Oracle Advanced Security
加密列
? 在现存的表中加密列:
alter table credit_rating modify (person_id encrypt)
? 创建带有加密列的新表:
create table orders (
order_id number (12),
customer_id number(12),
credit_card varchar2(16) encrypt);
注 – 缺省算法是 AES 192
11. Oracle Advanced Security
列级加密性能
? 使用索引同样查询以达到最优性能
Alter table credit_rating modify
(PERSON_ID encrypt no salt)
Create index person_id_idx on credit_rating
(PERSON_ID)
Select score from credit_rating where
PERSON_ID='235901';
? 在加密列上的范围扫描不能使用索引
? 在数百万行的表上成功运行大量卡类处理业务
12. Transparent Data Encryption 透明数据加密
列级加密部署步骤
确认具有敏感信息的字段
1 Credit Card numbers, SSN …
TDE是否支持该数据类型?
2 TDE supports datatypes most commonly used for PII data
3 字段是否正好是外键或范围扫描索引的一部分?
Simple Data Dictionary Query
4 加密现存和新数据
EM, SQL*Developer GUI or Command line DDL, Alter Table…..
访问OTN可获得完整数据类型的列表和更多信息
14. Oracle Advanced Security
表空间加密
? 加密所有类型应用数据 SQL Layer
– 加密整个表空间
– 无需确认特定字段 Buffer Cache
– 在数据类型,索引查询或外键上无限制 “SSN = 987-65-..”
? 高性能
– 无额外存储开销
– 高性能 (平均~ 5%)
– 与Oracle高级压缩配合使用 – 数据块在被
压缩前被压缩 data blocks
“*M$b@^s%&d7”
? 应用无须修改
– 支持所有数据类型 undo temp
blocks blocks
– 支持索引范围扫描
redo flashback
logs logs
15. Oracle Advanced Security
不同版本的不同特性
Oracle Oracle Oracle Oracle
Database 9i Database 10g Database 11g Database 11g
Release 2 Release 2 Release 1 Release 2
TDE with Exadata
TDE 使用HSM表空间加密
TDE 表空间加密
TDE 针对SecureFiles列级加密
TDE 使用HSM列级加密
TDE 列级加密
网络加密
强验证
16. Oracle Advanced Security
TDE可用于数据泵和RMAN
? Oracle Data Pump 数据泵
– 批量导出/导入到操作系统文件中
– 使用ENCRYPTION参数来加密dump文件
– 数据泵expdp命令可使用一个密码或ASO中更安全的主密钥来加密
数据
? Oracle RMAN
– 用于数据备份和恢复
? 使用自身主密钥或密码来加密导出集或备份集
? RMAN和数据泵可同时压缩和加密
17. Oracle Advanced Security
透明数据加密的密钥管理
? 内置密钥的生命周期管理
– 产生, 存储, 转换和销毁主密钥
– 软件wallet钱包 或 HSM存储密钥
? 硬件安全模块 (HSM):
– 特殊目的的硬件
– 开放的PKCS#11接口使得Oracle用户可广泛选择各类HSM提供商
Open Master Key
Master Key
Security
DBA
18. Oracle Advanced Security
加密非结构性数据
? Oracle SecureFiles数据类型
– Oracle数据库11g中新的非结构性数据类型
– 与LOB数据类型类似,但更快且功能更多
– 与本地文件系统相比,非结构性数据可以更快且更安全维护
? 使用透明数据加密来保护
– 对存储在数据库中的非结构性数据,提供额外保护
– 加密整个表空间或单独的SecureFile字段
– 可用于DICOM影像和财务合同扫描件
20. Oracle Advanced Security
对表空间加密
? 使用关键字“Encrypt”,创建新表空间
CREATE TABLESPACE securespace2
DATAFILE
'/home/user/oradata/secure01.dbf'
SIZE 150M ENCRYPTION
DEFAULT STORAGE(ENCRYPT);
注 – 缺省算法是 AES 128
22. 表空间加密
架构
SQL Layer
? 数据库级别加密
– 在I/O期间加密/解密数据块 Buffer Cache
– 数据块在缓冲区被解密以应对频繁访问 “SSN = 834-63-..”
? 磁盘上不保存明文数据
– 回滚块
– 排序/连接的临时块
– 重做日志
data blocks
– 闪回日志 “*M$b@^s%&d7”
? 与TDE密钥管理集成
undo temp
blocks blocks
redo logs
flashback logs
23. 表空间数据加密深入
? 11g中新的基于块级别静态数据加密技术,
写时加密,读时解密
? 数据在I/O(块)级别进行加密解密,而不是在内存中
(与列级TDE不同,它是在服务进程的PGA中进行加密)
? 加密仅对I/O不利, 因此加密性能上开销比列级TDE好
? SQL访问路径不会改变
(然而会被CBO识别为需要一些开销)
? 加密算法
– AES128, AES192, AES256, 3DES168 (缺省AES128)
– 使用CFB (cipher feedback) 模式来保持空间
? 每个表空间/日志文件有唯一密钥
? 表空间和日志文件的密钥,由Wallet钱包里的主密钥保护
(使用AES256)
24. 表空间数据加密
密钥管理
? 与列级TDE使用方式一样,主密钥由外部Wallet钱包维护
? 每个表空间有一个加密密钥,物理存放在数据文件的头部
数据块里
? 对跨越多个数据文件的加密表空间来说,表空间密钥冗余
存放在每个数据文件的头部
? 主密钥用来解密表空间的密钥
? 主密钥也可像列级TDE一样进行转换
(如 ALTER SYSTEM SET ENCRYPTION KEY 命令)
? 目前不能重置表空间加密密钥
– 可选方式是创建新的加密表空间,再将数据从原有表空间移动过来
? 11gR2中主密钥得到统一(创建 保存 转换)
26. 分区表与加密表空间
? 一个分区表可以是:
– 所有分区在同一个加密表空间里
– 部分分区在不同的加密表空间里
– 部分分区在未加密的表空间,部分表空间在加密的表空间里
? 检查DBA_TAB_PARTITIONS 视图查看详情
TABLE_NAME PARTITION_NAME TABLESPACE_NAME ENC
-------------------- -------------------- -------------------- ---
SALES_LIST SALES_WEST DATA02 NO
SALES_LIST SALES_CENTRAL DATA03_ENC YES
27. 索引使用 – 揭示事实
? 每一个索引叶子键和rowid相关
– File#, Block#, Row Offset
? 索引键进入SGA时被解密
? Rowid提供给服务器进程表中数据的位置, 然后表数据
块进入SGA时被解密
? 因此索引仍旧会被CBO使用,而不论索引是否和表在同
一个加密表空间里,或不同加密表空间里,亦或是未加密
的表空间里
29. Oracle Advanced Security
网络加密和强验证
? 加密和数据库的所有通信
– AES (128, 192, 256 bit keys)
– RSA RC4 (128, 256-bit keys)
– 3DES (2 and 3 key)
– Diffie-Hellman key exchange
? 基于校验实现数据完整性
– SHA-1
– 自动侦测修改,重放和丢包
? 强验证
– Kerberos, PKI
– RADIUS
31. Oracle Advanced Security
总结主要的功能点
TDE TDE
Tablespace Column
Encryption Encryption Hardware
Security Module
Strong Network
Authentication Encryption
Master Key
Oracle Wallet
Encrypted
Exports
RMAN / TDE Fully
Encrypted Database
Backups to Disk