Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 数据库管理 » 安全 » 保护数据的安全 » 加密和解密数据库 » 加密数据库的某些部分

 

表加密

表加密可以对包含敏感数据的表或实例化视图进行加密,而且不会造成在对整个数据库加密时可能会导致的性能影响。启用表加密时,会对加密表的表页、相关联的索引页和临时文件页进行加密。还会对包含有关加密表的事务的事务日志页进行加密。

有关对实例化视图进行加密的详细信息,请参见加密和解密实例化视图

要对数据库中的表加密,必须启用表加密。启用表加密必须在数据库初始化时进行。要查看是否启用了表加密,请使用 DB_PROPERTY 函数查询 EncryptionScope 数据库属性,如下所示:

SELECT DB_PROPERTY( 'EncryptionScope' );

如果返回值为 TABLE,则表明表加密已启用。

要查看表加密当前使用的加密算法,请使用 DB_PROPERTY 函数查询 Encryption 数据库属性,如下所示:

SELECT DB_PROPERTY( 'Encryption' );

有关所支持的加密算法列表,请参见加密和解密数据库

表加密对性能的影响

对于加密的表,每个表页在写入磁盘时都会进行加密,在从磁盘读入时都会进行解密。此过程对应用程序不可见。不过,从加密的表读出或向其中写入时,可能会对性能产生轻微的负面影响。对现有表进行加密或解密可能会花费很长的时间,时间长短取决于表的大小。

加密表中列索引的索引页也将被加密,包含有关加密表事务的事务日志页及数据库临时文件中的所有页同样会进行加密。所有其它数据库和事务日志页均未加密。

加密表可能包含压缩列。在这种情况下,数据将先进行压缩,再进行加密。

对表加密不会影响存储要求。

启动启用了表加密的数据库

启动启用了表加密的数据库与启动加密数据库的情况相同。例如,如果启动数据库时使用 -ek 选项,则必须指定密钥。如果启动数据库时使用 -ep 选项,则会提示您输入密钥。请参见初始化实用程序 (dbinit)

启用数据库中的表加密

必须在创建数据库时启用和配置表加密。如果数据库未启用表加密,或当前正在执行数据库加密,则必须重新创建数据库以启用表加密。

♦  创建采用表加密的数据库 (SQL)
♦  创建采用表加密的数据库(命令提示符)
♦  使用现有数据库创建采用表加密的数据库 (SQL)
加密表

要对数据库中的表加密,必须已在数据库中启用表加密。请参见启用数据库中的表加密

加密表时,将使用在数据库创建时所指定的加密算法和密钥。

♦  创建表时对表加密 (SQL)
♦  创建表后对其加密 (SQL)
另请参见