透明加密¶
透明加密是仅由用户进行必要的加密初始化,由数据库自动完成工作密钥生成、数据加解密等操作的功能。
透明加密功能是基于 wallet 实现的,wallet 用于存储管理密钥信息。根据 wallet 打开方式,分为手动打开 wallet 和 自动打开 wallet。 手动打开 wallet 需要提供密码,而自动打开 wallet 无需提供密码,当需要使用加、解密功能时,数据库自动打开 wallet,访问密钥,进行加、解密操作。
为用户提供如下命令创建、开启、关闭 wallet 和 修改 wallet 打开方式。详细语法请参见 ALTER SYSTEM 和 CREATE DATABASE。
1.建库时,创建 wallet:
创建手动打开 wallet:
./oscar -e "create database $dbname encrypt using $encrypt_algorithm muanul" -w "$wallet_password" 或
./oscar -e "create database $dbname encrypt using $encrypt_algorithm" -w "$wallet_password"
创建自动打开 wallet:
./oscar -e "create database $dbname encrypt using $encrypt_algorithm auto" -w "wallet_password"
2.启库后,创建 wallet:
创建手动打开 wallet:
ALTER SYSTEM SET ENCRYPTION KEY MANUAL IDENTIFIED BY '$wallet_password'; 或
ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY '$wallet_password';
创建自动打开 wallet:
ALTER SYSTEM SET ENCRYPTION KEY AUTO IDENTIFIED BY '$wallet_password';
3.打开 wallet:
手动打开 wallet:
ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY '$wallet_password';
自动打开 wallet:
无需命令,在需要访问密钥使用加密功能时会自动打开
4.修改 wallet 打开方式:
修改为手动打开 wallet:
ALTER SYSTEM MODIFY WALLET MANUAL OPEN IDENTIFIED BY '$wallet_password';
修改为自动打开 wallet:
ALTER SYSTEM MODIFY WALLET AUTO OPEN IDENTIFIED BY '$wallet_password';
5.关闭 wallet:
关闭手动打开wallet:
ALTER SYSTEM SET WALLET CLOSE IDENTIFIED BY '$wallet_password';
关闭自动打开wallet:
ALTER SYSTEM SET WALLET CLOSE;
6.备份 wallet:
如果手动打开 wallet 已打开,备份 wallet:
ALTER SYSTEM BACKUP WALLET IDENTIFIED BY '$wallet_password';
如果手动打开 wallet 未打开,备份wallet:
ALTER SYSTEM BACKUP WALLET FORCE KEYSTORE IDENTIFIED BY '$wallet_password';
备份 wallet 并指定备份文件标识:
ALTER SYSTEM BACKUP WALLET USING 'file1' IDENTIFIED BY '$wallet_password';
备份 wallet 并指定备份文件位置:
ALTER SYSTEM BACKUP WALLET IDENTIFIED BY '$wallet_password' TO '/opt/ShenTong';
7.修改 wallet 密码:
已打开手动打开钱包的情况下,修改密码:
ALTER SYSTEM ALTER WALLET PASSWORD IDENTIFIED BY '$wallet_password' SET '$new_wallet_password';
未打开手动打开钱包的情况下,修改密码,需要指定 FORCE KEYSTORE 关键字:
ALTER SYSTEM ALTER WALLET PASSWORD FORCE KEYSTORE IDENTIFIED BY '$wallet_password' SET '$new_wallet_password'
修改密码并备份钱包:
ALTER SYSTEM ALTER WALLET PASSWORD IDENTIFIED BY '$wallet_password' SET '$new_wallet_password' WITH BACKUP;
修改密码并备份钱包,指定备份文件标识:
ALTER SYSTEM ALTER WALLET PASSWORD IDENTIFIED BY '$wallet_password' SET '$new_wallet_password' WITH BACKUP USING '$backup_identifier';
注解
1.encrypt_algorithm 表示加密算法,支持的加密算法有:DES3、AES128、AES192、AES256 和 SM4,默认为 SM4。
2.wallet_password 有密码强度要求:必须包含大、小写字母、数字、特殊字符其中至少三种且长度不低于12位,最大长度不超过128位。
3.wallet 根据打开方式分为手动打开 wallet 和自动打开 wallet 两种。手动打开 wallet 每次打开关闭时必须使用密码。自动打开 wallet 会在在需要访问密钥使用加密功能时会自动打开,无需提供密码。
4.目前神通数据库暂不支持修改 wallet,请务必确保 wallet.pwd 存在,否则可能影响到数据库中的加密数据。
5.创建的 wallet 位于:$SZ_OSCAR_HOME/wallet/$dbname/ 路径下,手动打开 wallet 名为 wallet.pwd,自动打开 wallet 名为 wallet.sso。以上对于 wallet 的 ALTER SYSTEM 命令只允许在 mount 模式或者 startup 模式下执行。
6.成功创建 wallet 后会自动打开新创建的 wallet。自动打开 wallet 和手动打开 wallet 只能同时打开一个,如果想要打开另外一个 wallet,需要先关闭当前 wallet。
7.备份 wallet 只会备份 wallet.pwd 文件。如果未打开手动打开 wallet (包括当前打开的是自动打开 wallet),备份 wallet 需要指定 FORCE KEYSTORE 关键字。
8.如果未打开手动打开钱包,修改密码则需要指定 FORCE KEYSTORE 关键字。
9.WITH BACKUP 备份的是修改密码之前的 wallet.pwd 文件。备份恢复 wallet 后,需要使用备份时的 wallet 密码。
设置表或数据库的加密属性,请参见《神通数据库SQL语言参考手册》如下章节: