今天有朋友问到1)DG环境下的秘钥管理需要注意什么,2)秘钥管理对DG的日志同步有影响吗?
对于2)的回答是明确的,没有影响。秘钥的管理和DG的redo log shipping完全是两套机制。在最新版的Oracle Key Vault常见问题提到,Key Vault对于加密的性能没有影响,对于DG就更没有影响了。
对于1),我们先来看一下文档8.2.1 About Using Transparent Data Encryption with Oracle Data Guard是如何说的:
对于软件密钥库(是指秘钥和数据库软件在一起,即Wallet方式)和外部密钥库(是指秘钥在数据库软件的外部,即Key Vault方式),Oracle Data Guard 支持透明数据加密 (TDE)。
如果主数据库使用 TDE,则 Data Guard 配置中的每个备用数据库都必须拥有主数据库的加密密钥存储的副本。 如果您在主数据库中重置 TDE 主加密密钥,则必须将包含 TDE 主加密密钥的密钥库从主数据库复制到每个备用数据库。
请注意以下事项:
- 使用基于钱包的 TDE 重新生成密钥操作将导致备用数据库上的托管恢复进程 (MRP) 失败,因为新的 TDE 主加密密钥尚不可用。 为了避免此问题,请在主数据库上使用 ADMINISTER KEY MANAGEMENT CREATE KEY 语句将新的 TDE 主加密密钥插入钱包。 将钱包复制到备用数据库,然后在主数据库上执行 ADMINISTER KEY MANAGEMENT USE KEY 语句。
- 当数据传输到备用数据库时,日志文件中的加密数据仍保持加密状态。 加密数据在传输过程中也保持加密状态。
Oracle 12c Oracle Advanced Security 透明数据加密最佳实践中文白皮书中有一节专门提到了DG和Wallet结合的注意事项。不过这里面没有包含Key Vault的内容。
此外,Oracle中国网址提供了Oracle Key Vault的中文介绍,简明扼要,列举了Key Vault的适用场景和主要优点,建议看一下。
总之,在DG环境下,秘钥管理更建议用Key Vault而非Wallet,因为运维更简单,更安全,更高可用,更易扩展。
要知道,加密密钥对于Oracle数据库是至关重要的,秘钥丢了就意味着数据丢了,这可跟家里的保险柜有备用钥匙,可以找原厂开锁不一样。