zoukankan      html  css  js  c++  java
  • 数据库安全之TDE列加密

    透明数据加密(Transparent Data Encryption)

    TDE - 基于列的加密
    由于有了Oracle的TDE-基于列的加密,你所要做的只是定义需要加密的列,Oracle将为包含加密列的表创建一个私密的安全加密密钥,然后采用你指定的加密算法加密指定列的明文数据。
     这个加密,不需要我们写特殊的代码,只要我们制定“需要加密的列”,当用户插入下一行数据的时候,数据库透明的加密数据然后存储加密后的数据。当用户读取数据时,数据库给我们自动解密,也不需要应用程序去修改任何代码。
     
    1.保证数据库兼容版本高于10gSQL> show parameter compatible

    NAME TYPE VALUE
    ------------------------------------ ----------- ------------------------------
    compatible string 11.2.0

    2. 设定wallet的位置(在sqlnet.ora文件中写入如下内容,需要重启数据库才能生效):   指定 ENCRYPTION_WALLET_LOCATION 参数

    [oracle@11g admin]$ cat sqlnet.ora

    #SQLNET.AUTHENTICATION_SERVICES= (NTS)
    NAMES.DIRECTORY_PATH= (TNSNAMES)
    ENCRYPTION_WALLET_LOCATION =
    (SOURCE=
    (METHOD=file)
    (METHOD_DATA=
    (DIRECTORY=/home/oracle/wallet)))

    3)在指定(DIRECTORY路径下建好wallet目录。 不然报:ORA-28368: cannot auto-create wallet

    [oracle@11g ~]$ mkdir wallet

    [oracle@11g wallet]$ pwd

    /home/oracle/wallet

    4)在wallet里面创建key

    SQL> alter system set encryption key authenticated by "andy";

    System altered.

    5)创建一个表,对其中某列加密

    SQL> create table andy.andy_tde(
    id number(10) primary key,
    col_tde varchar2(50) encrypt using 'AES192'
    ); 2 3 4

    Table created.

    说明:TDE支持的加密算法:

    3DES168 AES128  AES192(默认)  AES256

    SQL> set linesize 300
    SQL> select * from dba_encrypted_columns;

    OWNER TABLE_NAME COLUMN_NAME ENCRYPTION_ALG
    ------------------------------ ------------------------------ ------------------------------ ------------------
    ANDY ANDY_TDE COL_TDE AES 192 bits key

    SQL> insert into andy_tde values (1,'tde');

    1 row created.

    SQL> commit;

    Commit complete.

    SQL> select * from andy_tde;

    ID COL_TDE
    ---------- ---------------------------------
    1 tde

    6)如果关闭wallet,无法访问加密的数据:

    SQL> alter system set wallet close identified by "andy";

    System altered.

    SQL> select * from andy_tde;
    select * from andy_tde
    *
    ERROR at line 1:
    ORA-28365: wallet is not open

    7)重新打开wallet,才可以访问加密的数据

    SQL> alter system set wallet open identified by "andy";

    System altered.

    SQL> select * from andy_tde;

    ID COL_TDE
    ---------- ----------------------------
    1 tde

  • 相关阅读:
    CSS简单的四种引入方式
    html之表单标签
    html基础标签之head和body标签
    Python之协程的实现
    Python之实现不同版本线程池
    Python多进程之multiprocessing模块和进程池的实现
    Python之queue模块
    sqlserver 时间格式化
    关于sql server 代理(已禁用代理xp)解决办法
    sqlserver如何启动数据库邮件
  • 原文地址:https://www.cnblogs.com/andy6/p/6265870.html
Copyright © 2011-2022 走看看