Skip to content

加密用户

语法格式

ENCRYPT USER user_name  BY encry_name|encry_id [CASCADE]

参数解释

参数名称参数解释
user_name加密的用户
encry_name加密机名称
encry_id加密机编号
CASCADE是否加密原有表

执行步骤

  1. 登录SYSSSO用户创建加密机。
  2. 登录SYSDBA用户创建表,并插入数据。
  3. 查看存储文件下存储加密情况和未加密存储情况。
  4. 对用户进行加密。
  5. 查看存储文件下存储加密情况和未加密存储情况。

预期结论

  • 加密前能够明文查询到表中的数据。
  • 加密后不再能明文查询到表中的数据。

示例

  • 示例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”数据均以密文方式存储于数据库存储文件,在数据库存储文件已无法查到插入的数据。