如何在Oracle SecureFiles中加密数据

Oracle SecureFiles是在Oracle 11g引入的,它有传统的大对象(已经更名为BasicFile LOB)所不具备的一些优势。Oracle SecureFile LOB支持智能数据压缩,它是一种消除多次存储相同数据副本的去重方法,还支持其他一些使用大对象提升性能的特性。这些新特性中最有用的一个是Oracle的透明数据加密功能,目前已经扩展并加入了Oracle SecureFiles。

当我们在一个或多个LOB字段上启用透明数据加密(TDE)时,Oracle会在数据文件、备份文件和重做日志文件的块层次上自动对字段执行加密和解密操作。在启用之后,LOB只能按照逐个字段的方式执行加密,这个字段的所有LOB(跨越所有可用分区)都会加密。应用程序和访问数据表的用户完全不知道所发生的透明数据加密操作。然而,由于传统的导入导出工具和基于可转移表空间的导出操作不支持TDE,所以在移动这些包含加密字段的数据时必须使用Data Pump导入和导出工具。

TDE支持下面的加密算法:

3DES16——使用168位密钥的三重数据加密标准。

AES128——使用128位密钥的高级加密标准。

AES192——使用192位密钥的高级加密标准。这是默认算法。

AES256——使用256位密钥的高级加密标准。

在开始使用透明数据加密之前,安全管理员必须先创建一个wallet和设定一个主密钥。我们可以使用与其他Oracle数据库组件共享的默认数据库wallet。此外,我们可以创建一个TDE专用的独立wallet。Oracle强烈建议使用一个独立wallet来存储主加密密钥。如果sqlnet.ora文件中没有设置ENCRYPTION_WALLET_LOCATION参数,那么它就会使用WALLET_LOCATION值。如果sqlnet.ora文件没有设置WALLET_LOCATION,那么它就会使用默认数据库wallet。默认数据库wallet的位置是ORACLE_BASE/admin/DB_UNIQUE_NAME/wallet。

如果使用TDE专用的wallet,那么必须使用ENCRYPTION_WALLET_LOCATION参数在sqlnet.ora文件中指定wallet位置。主密码将用于保护数据表密码和表空间加密密钥,并且存储在外部安全模块中。默认情况下,TDE会生成一个随机密钥。此外,它也可能是来自于专门用于加密的PKI证书的现有密钥对。

使用下面的命令,就可以设置主加密密钥:

ALTER SYSTEM SET ENCRYPTION KEY [“certificate_ID”] IDENTIFIED BY “password”;

certificate_ID ——这是一个可选字符串,它包含了Oracle wallet所存储证书的唯一标识符。如果想要使用PKI私有密钥作为主加密密钥,则可以使用这个参数。

password ——这是安全模块一定要使用的wallet密码。它区分大小写。

这个数据库必须将主加密密钥加载到内存中,然后它才能加密或解密字符/表空间。下面的ALTER SYSTEM命令将显式打开wallet:

ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY “password”

其中的“password”值是指创建加密密钥时所使用的密码。这个密码串必须添加到双号中。在wallet打开之后,它会一直保持打开,直到数据库实例关闭或显式关闭wallet。下面的命令将显式关闭wallet:

ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTIFIED BY “password”

关闭wallet将禁用所有加密和解密操作。每当我们重新启动一个数据库实例,我们都必须打开wallet,重新启用加密和解密操作。一旦创建和打开了wallet,我们就可以在ENCRYPT子句中使用CREATE TABLE和ALTER TABLE命令。

用于加密非LOB字段的透明数据加密语法与在Oracle SecureFiles中启用加密的语法完全相同。它们有一个重要的区别,非LOB字段可以使用NO SALT参数阻止TDE在加密数据之前先给数据添加一个随机字符串。Oracle SecureFile LOB字段不支持NO SALT选项。我们可以使用数据字典视图USER_ENCRYPTED_COLUMNS确定应该加密哪一些字段,以及这些字段的状态。下面是一些ENCRYPT子句的例子:

CREATE TABLE tab_3DES (col1 CLOB ENCRYPT USING ‘3DES168’)

LOB(col1) STORE AS SECUREFILE(

CACHE

NOLOGGING

);

使用默认加密算法(AES192)和一个密码创建一个Oracle SecureFile LOB字段:

CREATE TABLE tab_enc_pw (col1 CLOB ENCRYPT IDENTIFIED BY badpassword)

LOB(col1) STORE AS SECUREFILE(

CACHE

);

使用AES256启用LOB加密:

ALTER TABLE tab_nocrypt MODIFY

( col1 CLOB ENCRYPT USING ‘AES256’);

通过重新生成加密密钥修改一个Oracle SecureFiles字段:

ALTER TABLE tab_3DES REKEY USING ‘AES256’;

Disable LOB encryption:

禁用LOB加密:

ALTER TABLE tab_enc_pw MODIFY

( col1 CLOB DECRYPT);

Oracle数据库中存储的大对象数据容量会继续增长,但是存储费用在不断下降。其中有许多的敏感数据,如医疗记录、员工数据和知识产权。能够对这些信息进行加密,这是非常宝贵的,也可以避免在将来投入大量金钱和精力去实现安全性。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/130853.html<

(0)
管理的头像管理
上一篇2025-02-26 06:46
下一篇 2025-02-26 06:47

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注