您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Oracle 11g透明数据加密安全特性解析
升级大对象(LargeObject,即LOB)存储能力的关键原因是在Oracle11g中数据安全需求越来越高,本文主要是研究如何扩充对LOB和表空间的透明数据加密(TransparentDataEncryption,即TDE)特性来提高数据的安全性,并解释这些特性是如何保护复杂的、非结构化数据的,如医学数字图像通讯信息(DigitalImagingforCommunicationofMedicalInformation,即DICOM)对象。Oracle11g新的SecureFile特性主要是集中在数据压缩和重复数据删除方面,主要是为了节约存储LOB对象的空间,当然在安全特性方面Oracle11g不仅只有这两个,所有这些安全特性也非常符合最近当选的美国总统奥巴马颁布的议事日程,白宫的技术方向明确指明新的管理计划:在电子信息技术系统方面增加投入以降低医疗保健方面的成本,使用卫生信息技术降低医疗保健方面的成本,每年投入100亿美元,到五年后让美国的医疗保健系统扩展为基于标准的电子医疗信息系统,包括电子健康记录。加密LOB:把安全放进SecureFileOracle11g现在把在SecureFileLOB中存储敏感信息放在非常重要的战略位置,因为这样才能够证明在Oracle10gR2中推出的透明数据加密(TDE)的作用,TDE在列级提供了遵循工业标准的自动加密算法(如3DES168,AES128,AES192和AES256)。1、开启透明数据加密在开始使用透明数据加密特性之前,需要在数据库中进行一翻设置,幸运的是,在Oracle11g数据库中这个设置非常简单了,因为现在只需要在数据库的网络配置文件中添加合适的配置目录即可,在之前的Oracle版本中,最简单的方法就是通过OracleWalletManagerutility设置这个“wallet”文件,欲了解前期版本是如何启用透明数据加密特性的,请参考我之前的文章“如何在Oracle10gR2中实现透明数据加密”。清单1中的内容显示了我在SQLNET.ORA网络配置文件中添加的内容,以便在我指定的目录中创建默认的TDEPKI密钥文件ewallet.p12,然后我使用ALTERSYSTEMSETENCRYPTIONKEY命令打开这个“wallet”并开启加密特性。清单1开启透明数据加密在SQLNET.ORA网络配置文件中添加参数设置开启Oracle11g数据库的透明数据加密功能ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/u01/app/oracle/admin/orcl/wallet))然后,打开wallet并设置加密密钥密码激活Oracle11g的加密功能SQLALTERSYSTEMSETENCRYPTIONKEYIDENTIFIEDBYr3aL1y!T16ht;SQLALTERSYSTEMSETENCRYPTIONWALLETOPENIDENTIFIEDBYr3aL1y!T16ht;2、控制SecureFile加密完成TDE设置后,在开启SecureFileLOB加密相对就简单了,和在Oracle表中开启其它类型的加密很类似,ENCRYPT告诉Oracle在现有SecureFileLOB上应用TDE加密,也可以通过DECRYPT告诉Oracle从SecureFileLOB上移除加密特性。3、改变SecureFile加密算法或加密密钥和其它Oracle数据类型一样,ALTERTABLEREKEY命令可以用来修改当前的加密算法,如默认的加密算法AES192改为AES256,TDEPKI密钥发生变化的话,REKEY命令也可以用于重新加密现有的SecureFileLOB。Oracle将会在块级进行加密,确保重新加密执行得更有效。但请注意在相同的分区下对应的SecureFileLOB段只能够被修改为启用或禁用加密,如LOB段不能被REKEY,这是因为Oracle11g在相同的LOB分区内对所有SecureFileLOB使用了相同的加密算法。清单2显示这些命令的示例。清单2对已有的SecureFileLOB应用透明数据加密应用默认的加密给单个SecureFileLOBSQLALTERTABLEtrbtkt.secure_ticketsMODIFY(documentCLOBENCRYPT);应用非默认的AES256位加密算法给单个SecureFileLOBSQLALTERTABLEtrbtkt.secure_ticketsMODIFY(scrnimgCLOBENCRYPTUSING'AES256');为单个SecureFileLOBrekey加密SQLALTERTABLEtrbtkt.secure_ticketsMODIFY(scrnimgCLOBREKEYUSING'AES192');将加密应用给一个分区段SQLALTERTABLEtrbtkt.secure_ticketsMODIFYPARTITIONsts_open(LOB(document)(ENCRYPT));从单个SecureFileLOB中移除加密SQLALTERTABLEtrbtkt.secure_ticketsMODIFY(scrnimgCLOBDECRYPT);加密表空间Oracle10gR2将它的加密能力扩展到数据库的任意表和索引了,但要识别和隔离那些需要加密的对象和列工作量很大,通常,可能仅仅是将许多在业务功能上相似的对象全部加密了,如数据库中所有封装了机密雇员信息的表和索引,为了使在这些情况下的加密变得更加简单易行,Oracle11g现在可以加密整个表空间了。表空间加密仍然是在块级实现的,但遗憾的是它不能在现有的表空间上执行,因此OracleDBA必须在一开始创建表空间的时候就启用加密,然后OracleDBA就可以使用ALTERTABLEMOVE命令来将表移动到加密表空间中,与此类似,已有的索引也可以通过重新创建命令ALTERINDEXREBUILDONLINE,直接迁移到加密表空间中去。和加密列一样,在创建加密表空间之前,数据库加密wallet必须先打开才行,通过CREATETABLESPACE命令中新的ENCRYPTION指令,新的表空间将会自动应用指定的加密算法到所有存储在其内部的对象,默认采用的是AES128位加密算法,但可以应用任意一个标准的加密算法(3DES168,AES128,AES192和AES256之一),如果不出什么问题的话,一个加密表空间可以传输到一个不同的Oracle11g数据库中,只要源和目标数据库服务器使用了相同的endianness,并共享了相同的加密wallet即可。但注意临时表空间和UNDO表空间不能使用这类加密算法,同样,扩展表源数据和扩展LOB(如BFILE)也不能加密。最后,由于加密密钥是在表级应用的,因此无法为加密表空间内的加密对象执行全局rekey,但在初始化加密表空间时可以使用这个方法来执行一次rekey操作。为了说明加密表空间的特性,我创建了一个新的表空间PATIMAGES,采用了AES256位加密算法,如清单3中的代码所示。我将使用这个新的表空间作为容器,存储后面我们将要讨论到的通过SecureFile在表中存储敏感的医疗信息:使用来自DICOM文件的源数据,在Oracle11g中存储医疗影像和相关信息。清单3创建一个加密表空间存储敏感信息DROPTABLESPACEpatimagesINCLUDINGCONTENTSANDDATAFILES;CREATETABLESPACEpatimagesDATAFILE'/u01/app/oracle/oradata/orcl/patimages01.dbf'SIZE64MREUSEEXTENTMANAGEMENTLOCALUNIFORMSIZE1MSEGMENTSPACEMANAGEMENTAUTOENCRYPTIONUSING'AES256'DEFAULTSTORAGE(ENCRYPT);DICOM:存储病人医疗影像和元数据的工业标准美国放射学会(ACR)和国家电气制造联合会(NEMA)在1993年通过协作将医学影像和通讯(DICOM)标准化了,为医学影像设备和相关应用程序的开发提供了可供参照执行的依据,后来成为存储和传输放射影像通用的标准,Oracle10gR2完全支持DICOM3.0标准,但是直到Oracle11g才实现了对DICOM数据进行加密。Oracle11g扩展了Oracle10gR2中ORDImage对象类型的能力,增加了一个新的ORDDicom对象类型,以便更有效地存储DICOM影像,由于ORDDicom对象可以存储在SecureFileLOB中,这样就可以实现压缩、重复数据删除和加密存储在DICOM文件中的影像和相关的元数据的能力,医生、大学和医院使用计算的病人信息,特别是诊断和研究。Oracle10gR2提供了转储病人信息到XML文件的能力,但现在的ORDDicom对象扩展了这些能力,使得可以直接在Oracle11g数据库查询病人的元数据,这就意味着可以使用新的高级索引特性如XMLIndex数据类型来检索特殊的病人信息,此外,Oracle11g现在还可以创建、存储、展现和检索存储在ORDDicom对象内的数据影像的指纹特征,也就是说将会更容易选中正确的病人信息,ORDDicom数据模型也可以帮助保证病人信息的机密性,因为它提供了一个方法可以避免泄露来自DICOM文件病人元数据中的私密信息。1、创建DICOM对象为了说明如何使用这些强大的功能特性增强Oracle11gSecureFile的加密能力,我创建了一个新的方案和表MIPS.PATIENT_IMAGES,我将使用这个表存储DICOM元数据,并在ORDDicom和ORDImage数据类型列中存储影像数据,DICOM_IMAGE列将会存储来自对应的源文件直接载入的DICOM信息,ANONYMOUS列将会存储病人的敏感数据,THUMBPRINT列将会存储来自每个DICOM文件中第一个影像的指纹图像,清单4显示了我创建这个表的DDL语句。清单4创建加密的SecureFileLOB存储敏感信息创建一个用户(MIPS)DROPUSERmipsCASCADE;CREATEUSERmipsIDENTIFIEDBYmipsDEFAULTTABLESPACEpatimagesTEMPORARYTABLESPACEtempQUOTAUNLIMITEDONpatimages;GRANTCONNECT,RESOURCETOmips;GRANTEXECUTEANYPROCEDUREtomips;GRANTCREATEANYDIRECTORYTOmips;创建一个新的目录DROPDIRECTORYmips_imgs;CREATEORREPLACEDIRECTORYmips_imgsAS'/home/oracle/dicom';GRANTREADONDIRECTORYmips_imgsTOmips;创建一个新表MIPS.PATIENT_IMAGES使用SecureFileLOB存储DICOM文件。DROPTABLEmips.patient_imagesPURGE;CREATETABLEmips.patient_images(patient_idNUMBER,nameVARCHAR2(30),ssnVARCHAR2(11),dobDATE,dicom_imageORDSYS.ORDDICOM,anonymousORDSYS.ORDDICOM,thumbprintORDSYS.ORDIMAGE)TABLESPACEpatimagesLOB(dicom_image.source.localData)STOREASSECUREFILE(TABLESPACEpatimagesDISABLESTORAGEINROWDEDUPLICATECOMPRESSHIGHCACHE
本文标题:Oracle 11g透明数据加密安全特性解析
链接地址:https://www.777doc.com/doc-6205055 .html