加密用户
语法格式
ENCRYPT USER user_name BY encry_name|encry_id [CASCADE]
参数解释
参数名称 | 参数解释 |
---|---|
user_name | 加密的用户 |
encry_name | 加密机名称 |
encry_id | 加密机编号 |
CASCADE | 是否加密原有表 |
执行步骤
- 登录SYSSSO用户创建加密机。
- 登录SYSDBA用户创建表,并插入数据。
- 查看存储文件下存储加密情况和未加密存储情况。
- 对用户进行加密。
- 查看存储文件下存储加密情况和未加密存储情况。
预期结论
- 加密前能够明文查询到表中的数据。
- 加密后不再能明文查询到表中的数据。
示例
示例1
sql--使用SYSDBA用户创建测试库TEST,在库中创建用户U1与U2 SQL> CREATE DATABASE TEST; SQL> USE TEST SQL> CREATE USER U1 IDENTIFIED BY '1234@ABCD'; SQL> CREATE USER U2 IDENTIFIED BY '1234@ABCD'; SQL> GRANT DBA TO U1; SQL> GRANT DBA TO U2; --在U1与U2中分别创建表并插入数据 SQL> SET SESSION AUTHORIZATION U1 SQL> CREATE TABLE u1_tab(enc VARCHAR); SQL> INSERT INTO u1_tab VALUES('abcabcabc001'); SQL> SET SESSION AUTHORIZATION U2 SQL> CREATE TABLE u2_tab(enc VARCHAR); SQL> INSERT INTO u2_tab VALUES('xyzxyzxyz001'); SQL> SET SESSION AUTHORIZATION SYSDBA SQL> CHECKPOINT;
- 上述示例,在未使用加密机加密存储文件情况下,数据“abcabcabc001”与“xyzxyzxyz001”在数据库存储文件中以明文方式进行存储。
- 使用加密机“ENCRYPTOR2”加密用户“U1”新增对象数据,使用加密机“ENCRYPTOR2”加密用户“U2”所有数据。
示例2
sql--使用SYSDBA用户 SQL> ENCRYPT USER u1 BY 'ENCRYPTOR2'; SQL> SET SESSION AUTHORIZATION U1 SQL> INSERT INTO u1_tab VALUES('abcabcabc002'); SQL> CREATE TABLE u1_tab_1(enc VARCHAR); SQL> INSERT INTO u1_tab_1 VALUES('abcabcabc003'); SQL> SET SESSION AUTHORIZATION SYSDBA SQL> ENCRYPT USER U2 BY 'ENCRYPTOR2' CASCADE; SQL> SET SESSION AUTHORIZATION U2 SQL> INSERT INTO u2_tab VALUES('xyzxyzxyz002'); SQL> CREATE TABLE u2_tab_1(enc VARCHAR); SQL> INSERT INTO u2_tab_1 VALUES('xyzxyzxyz003'); SQL> SET SESSION AUTHORIZATION SYSDBA SQL> CHECKPOINT; SQL> USE SYSTEM SQL> SELECT user_name,encry_id FROM SYS_USERS WHERE user_name IN ('U1','U2'); USER_NAME | ENCRY_ID | ------------------------------------------------------------------------------ U1| 3 | U2| 3 |
- 上述示例,在数据库存储文件中分别查询“U1”用户和“U2”用户插入数据。
- 在“U1”用户中,表“U1_TAB”中数据“abcabcabc001”、“abcabcabc002”仍然以明文方式存储于数据库存储文件,新建表“U1_TAB_1”中数据使用密文存储,在数据库存储文件已无法查到“abcabcabc003”数据。
- 在“U2”用户中,表“U2_TAB”与表“U2_TAB_1”数据均以密文方式存储于数据库存储文件,在数据库存储文件已无法查到插入的数据。