Oracle安全解决方案

  • 格式:pdf
  • 大小:948.88 KB
  • 文档页数:16

下载文档原格式

  / 16
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.1.1. 透明数据加密(TDE)
简介
透明数据加密(TDE )自动对 Oracle 数据库写入到存储的数据进行加密,并在请求用户 通过了 Oracle 数据库的身份验证,并通过了由 Oracle Database Vault、Oracle Label Security 和 其他虚拟专用数据库执行的所有访问控制检查后再自动解密这些数据。数据库备份的数据仍 然是加密数据,这就为备份介质提供了保护。对于逻辑备用数据库和物理备用数据库均可以 配置 TDE,从而为高可用性体系结构中的敏感数据提供全面保护。TDE 作为 Oracle Advanced Security 选件的一部分进行打包,该选件包含在 Oracle 企业版中。
11gR1 数据库上重新生成万能密钥,以自动将用于表空间加密的万能密钥添加到您的软件钱
夹上,然后将列万能密钥移植到 HSM 设备上。
5、不可以加密现有表空间
变通方法是,创建一个新的加密表空间,备份当前表空间,将所有表和其他内容从旧的 表空间转移到新表空间中,然后删除旧的加密表空间。
6、压缩可以与表空间加密协同工作,内容在压缩后进行加密 7、加密密钥不能更改,解决方案: 表空间加密的万能密钥不能重新生成。变通方法是,创建一个新的加密表空间,备份当 前表空间,将所有表和其他内容从旧的表空间转移到新表空间中,然后删除旧的加密表空间。 列级 TDE 使用一个两层密钥机制。当列级 TDE 应用到现有的应用程序表列上时, Oracle 数据字典中会创建并存储一个新的表钥(用于该表中所有列)。该表钥使用万能密钥 加密。万能密钥在 TDE 进行初始化时生成,并存储在数据库外部的 Oracle 钱夹或符合 PKCS#11 的 HSM 设备中。万能密钥和列密钥均可基于公司的安全策略进行独立修改。 Oracle 建议在修改万能密钥前后均对钱夹进行备份。 8、加密列中的现有数据后再查看数据库文件,有时仍能看到某些明文值: 这种情况与即使已删除表或文件、但仍然会在磁盘上看到数据的情况相同。在一个表的 生命周期内,数据可能会在表空间内分段、重新整理、排序、复制和移动。这会在数据库文 件中留下数据的“虚副本”。在加密现有列时,仅最新的“有效”副本被加密,这就将旧的明文 版本留在了“虚副本”中。如果直接访问包含表空间的数据文件,从而绕过数据库的访问控制 (例如,带有十六进制编辑器的数据库),那么在那些块被数据库覆盖之前,有时就会看到 旧的明文值。为使风险最小化,请遵循下面的建议: 1)在新的数据文件中创建一个新的表空间 (CREATE TABLESPACE ... ) 2)对原始表空间和数据文件中的明文值进行加密 (ALTER TABLE ...ENCRYPT) 3)对包含加密列的所有表执行步骤 2 4)将原始表空间中的所有表移到新的数据文件中 (ALTER TABLE ....MOVE... ) 5)删除原始表空间 (DROP TABLESPACE)不要使用“and datafiles”参数,Oracle 推荐使用更强 大的方法进行 OS 级操作,参见步骤 6 6)针对您的平台使用“shred”、“eraser”、“SDelete”或其他命令,以便在 OS 级别上删除旧数 据文件
销毁 — 使用命令行实用程序“mkstore”可对万能密钥进行销毁。使用“mkstore”前要对钱 夹进行备份,同时要谨慎使用该程序,因为很容易删除当前的万能密钥(该密钥不能替换或 重新生成)。 保护钱夹和 TDE 万能密钥
Oracle 数据库 11g 允许在符合 PKCS#11 标准的 HSM 设备上存储列级 TDE 万能密 钥,万能密钥永远不会在未加密的情况下离开设备。
总结
对于 OLTP 型应用,使用 TDE 需慎重,由于大部分是随机读写,对于并发量大的性能影 响较大,并且存储成本也会增加,但对于安全性要求高的列,可采用 TDE 加密,一般情况 建议不使用。OLAP 型应用,数据备份(例如 RMAN)时可以采用 TDE 加密,防止数据泄漏。
3.1.2. 网络加密
Oracle Advanced Security 通过加密保护整个网络中数据的私密性和机密性。对传输中 的数据进行加密可以防止数据嗅探、数据丢失、重放和转接攻击。与 Oracle 数据库的所 有通信都可以使用 Advanced Security 进行加密。Oracle Advanced Security 提供了本地加 密/数据完整性算法以及对安全套接字层 (SSL) 的支持,以保护整个网络中的数据。
如果您需要对外键列中的数据进行加密,或者您需要除 B 树外的索引,又或者您需要
对列级 TDE 不支持的数据类型进行加密,可选择表空间加密。
如果列级 TDE 能够满足您的安全和安规性要求,您可以根据性能测试结果进行选择 4、不可以在 HSM 设备中存储用于表空间加密的万能密钥 如果您从 10gR2 中的列加密移植到 11gR1 中的列和表空间加密,则 必须首先在
对软件钱夹(对于表空间加密和加密的转储文件以及使用基于软件的万能密钥所创建的 备份而言,它是必需的)的访问应当通过文件级别的许可进行限制。加密该钱夹(基于 PKCS#5) 的口令应当包含超过 10 个字母和数字字符。软件钱夹口令可通过 Oracle Wallet Manager 修改。改变钱夹口令不会影响 TDE 万能密钥(它们彼此无关)。钱夹口令甚至可以阻止拥 有“root”权限并可访问钱夹文件的用户获取 TDE 万能密钥。
Oracle 提供两种类型钱夹:加密钱夹和自动打开的钱夹。我们为 TDE 推荐加密钱夹(文 件名为 ewallet.p12)。数据库启动后和访问 TDE 加密数据前,需手动打开该钱夹。如果未 打开该钱夹,查询受 TDE 保护的数据时数据库将返回错误。自动打开的钱夹(文件名是 cwallet.sso)在数据库启动时会自动打开。因此它适用于无人值守的 Data Guard 环境,在 该环境中加密后的列会传送到二级站点。 密钥管理 TDE 中的密钥管理包括下面的功能:
Oracle 安全解决方案
Oracle 为安全提供了一整套解决方案,总结内容如下:
1. Oracle 安全工具
2. Oracle 解决方案
3. 安全手段详解 3.1. Oracle Advanced Security
Oracle Advanced Security 提供了透明的、基于标准的安全性,它通过静止数据加密、网 络加密和强身份验证服务对数据提供保护。Oracle Advanced Security 选件包含在 Oracle 企 业版中。
加密状态
TDE 支持 3DES168、AES128(表空间加密默认算法)、AES192(列级 TDE 默认算法) 和 AES256,但不允许插入其他加密算法。
使用 TDE 加密后的数据在离开数据库前会首先进行解密,在网络传输时数据为明文, 可采用两种方案:1)可以通过 Oracle 的网络加密解决方案在网络上进行加密,该方案和 TDE 一同包含在 Oracle Advanced Security 选件中。Oracle 的网络加密解决方案可以对 Oracle SQL*Net 上 传 送 的 所 有 数 据 进 行 加 密 。 2 ) Oracle 通 过 Oracle8i 引 入 了 DBMS_OBFUSCATION_TOOLKIT。Oracle 10g 版本 1 引入了新的 DBMS_CRYPTO 程序包。这
透明加密问题
存储空间和性能
与未加密的表空间相比,加密的表空间不会要求更高的存储空间。 与列级 TDE 相关的开销分为两方面:存储和性能。在性能方面,与加密或解密常用属 性(如信用卡号码)相关的开销估计为 5%。当索引基于加密列构建时,索引的创建将使用 密文。如果经 TDE 加密的列已建立索引并为 SQL 语句引用,Oracle 将对 SQL 语句中用到 的值进行透明加密并使用密文进行索引查询。TDE 相关的存储开销可能会很大,这是因为 每个加密值都有额外 20 个字节的完整性检查。此外,TDE 会将加密值填充到 16 个字节, 所以如果信用卡号码要求 9 个字节的存储空间,加密该号码将要求额外 7 个字节的存储空 间。最后,如果为加密值指定了 salt(密码加盐),该 salt 将要求额外 16 个字节的存储空 间。总之,加密表中的一列将要求每行有 33 到 48 个字节的额外存储空间。
TDE 的优势是,加密不会产生传统数据库加密解决方案所产生的开销,传统的方案要 求有触发器和视图。
TDE 适用性
1、由于表空间加密对整个表空间进行加密,在支持的数据类型上没有限制。 2、下面的数据类型可使用列级 TDE 进行加密:
varchar2
nvarchar2
number
date
binary_float
生成 存储 替换 销毁 生成 — 在 TDE 中生成万能密钥可以通过数据库中的随机数生成器 (RNG) 来完成,或 者管理员可以自行提供最多 70 个字符的字符串。 存储 — 一种选择是将万能密钥存储在 Oracle 软件钱夹中。该文件应当受到适当 OS 许可的保护。根据 PKCS#5 标准,钱夹使用钱夹口令进行加密。钱夹口令不存储在任何地方, 在 Oracle Enterprise Manager 11g 中,该口令可以在任意数量的用户或管理员间进行分割, 他们必须以正确的顺序输入各自口令片断,而与此同时他们当中无人知道整个口令。该口令 甚至可以保护万能密钥不被拥有“root”权限的用户使用。 另一种选择是将用于列级 TDE 的 TDE 万能密钥存储在硬件安全模块 (HSM) 上。Oracle 数 据库 11g 和 HSM 设备之间的通信基于标准的 PKCS#11 接口,它使得众多 HSM 厂商都可 与 Oracle 进行互操作。一旦设备上生成了万能密钥,它将永远不会在未加密的情况下离开 设备。 替换 — 通过简单的命令就可以创建新的 TDE 万能密钥。倾刻间,数据库中的所有列 密钥都会用旧的万能密钥解密然后用新的列密钥进行加密。应用程序数据不会发生任何变化, 因此该过程不会影响您数据库的可用性。对于备份和恢复操作,过期的万能密钥存储在钱夹 中。
些程序包中的各种 API 可用于对数源自文库库内的数据进行手动加密。不过,此应用程序必须管 理加密密钥,并且要通过调用 API 进行要求的加密和解密操作。
使用表空间加密时,即使某个表在加密的表空间外部,外键的加密方式也和加密表空间 中存储的所有其他元素相同。列级 TDE 不支持对外键约束中使用的列进行加密。这是因为 单个表有它们自己的特殊加密密钥。
钱夹及密钥
钱夹
钱夹是一个容器,用于存储认证和签名证书,包括 TDE 万能密钥、PKI 私钥、许可证 和 SSL 需要的信托证书。借助 TDE,可以在服务器上使用钱夹来保护 TDE 万能密钥。此外, Oracle 要求在 SSL 上通信的实体包含一个钱夹。除 Diffie-Hellman 外,该钱夹应当含有 X.509 版本 3 许可证、私钥、信托证书列表。
Oracle Advanced Security TDE 既可以对表列进行加密(最小粒度:列),也可以加密整个
表空间。TDE 表空间加密无需识别和加密个别列,升级到 Oracle Database 11g 的用户都可以 使用新的 TDE 表空间加密功能来保护整个应用程序。存储在被加密表空间中的所有数据都将 自动加密。备份数据库时,加密的文件在目标介质上仍保持其加密状态 ,这样,即使备份介 质丢失或被盗,仍然能保护其上的信息不会外泄。TDE 表空间加密可以无缝地与 Oracle Streams、Oracle Compression 和 Oracle Exadata Smart Scans 协同工作。由于压缩而实现的存 储节省将维持不变,因为压缩过程完成后才对数据进行加密。
binary_double
timestamp
raw
char
nchar
SecureFile LOBs
3、根据下面的指导原则,确定使用列级 TDE /表空间加密具体方法的选择
仅对因合规性原因需要加密的数据进行加密(PCI-DSS 的信用卡和帐户号码;用于类似 于 CA SB 1386 这样的漏洞通知法律的地址、姓名和个人身份号码(驾驶证,身份证)),或 者对其他您认为的关键数据进行加密,如薪水、研究结果、客户信息。