暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle Unix字符串命令和数据未加密

ASKTOM 2018-11-27
255

问题描述

你好,汤姆,

我有一个名为STRINGS的Unix命令的问题。如果我不对我的数据使用加密,我可以通过Unix读取我的字符串数据,即使这些数据在Oracle下被截断。

德兰格,我也有他们的历史...


首先,我用一个数据文件创建一个表空间。
SQL> CREATE TABLESPACE TEST_STRINGS DATAFILE '/u01/app/oracle/oradata/orcl12c/orcl/test_strings.dbf' size 10m EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO;
     SQL> alter user HR quota unlimited on TEST_STRINGS;


我在这个表空间中创建一个表。
SQL> CREATE TABLE HR.ZZTEST_STRINGS(ID VARCHAR2(20 CHAR)) tablespace test_strings;
     SQL> select tablespace_name from dba_tables where table_name = 'ZZTEST_STRINGS';
     TABLESPACE_NAME
     ------------------------------
     TEST_STRINGS



我们使用表的数据文件进入目录。
 [oracle@vbgeneric orcl]$ cd /u01/app/oracle/oradata/orcl12c/orcl
   
     [oracle@vbgeneric orcl]$ ls -l
     total 2156408
     -rw-r----- 1 oracle oinstall    7938048 Sep 16 06:02 APEX_1991375173370654.dbf
     -rw-r----- 1 oracle oinstall    2695168 Sep 16 06:02 APEX_1993195660370985.dbf
     -rw-r----- 1 oracle oinstall 1247813632 Sep 16 06:02 sysaux01.dbf
     -rw-r----- 1 oracle oinstall  367009792 Sep 16 06:02 system01.dbf
     -rw-r----- 1 oracle oinstall   67117056 Sep 16 05:57 temp01.dbf
     -rw-r----- 1 oracle oinstall   10493952 Sep 16 06:02 test_strings.dbf
     -rw-r----- 1 oracle oinstall  482353152 Sep 16 06:02 undotbs01.dbf
     -rw-r----- 1 oracle oinstall   81272832 Sep 16 06:02 users01.dbf


我创建数据,我可以看到他们与字符串,如果我强制DBWR写它与缓冲缓存的刷新。
     SQL> insert into ZZTEST_STRINGS values('TESTZZ01');


关于我插入的数据没有什么...
     [oracle@vbgeneric orcl]$ strings test_strings.dbf
     }|{z
     -ORCL12C
     TEST_STRINGS


如果我刷新缓冲区缓存,那就可以了 (但我不知道什么是AAAAAAAA)。
我如何避免这个问题: 我必须加密我的数据?
   SQL> alter system flush BUFFER_CACHE;
 
     [oracle@vbgeneric orcl]$ strings test_strings.dbf
     }|{z
     -ORCL12C
     TEST_STRINGS
     AAAAAAAA
     TESTZZ01



如果我截断我的表,我可以再次读取数据。正常吗?
     SQL> truncate table HR.ZZTEST_STRINGS;
     SQL> alter system flush BUFFER_CACHE;
              
     [oracle@vbgeneric orcl]$ strings test_strings.dbf
     }|{z
     -ORCL12C
     TEST_STRINGS
     AAAAAAAA
     TESTZZ01




陌生人,我可以在更新后访问数据的历史 :-)
     SQL> connect HR/HR@orcl; 



我放弃我的表空间和它的数据文件。
SQL> drop tablespace TEST_STRINGS INCLUDING CONTENTS;
SQL> ! rm /u01/app/oracle/oradata/orcl12c/orcl/test_strings.dbf


我从一张新表开始。
     SQL> CREATE TABLESPACE TEST_STRINGS DATAFILE '/u01/app/oracle/oradata/orcl12c/orcl/test_strings.dbf' size 10m EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO;
     SQL> CREATE TABLE ZZTEST_STRINGS(ID NUMBER, COMMENT_TEST VARCHAR2(20 CHAR)) tablespace test_strings;   
    
     SQL> insert into ZZTEST_STRINGS values(1, 'TEST1');
     SQL> insert into ZZTEST_STRINGS values(2, 'TEST2');
     SQL> insert into ZZTEST_STRINGS values(3, 'TEST3');
     SQL> commit;
   
     SQL> alter system flush BUFFER_CACHE;
              
     [oracle@vbgeneric orcl]$ strings test_strings.dbf
     }|{z
     -ORCL12C
     TEST_STRINGS
     AAAAAAAA
     TEST3,
     TEST2,
     TEST1



SQL> UPDATE ZZTEST_STRINGS set COMMENT_TEST = 'TEST1_UPDATE' where id = 1;
     SQL> commit;
     SQL> alter system flush BUFFER_CACHE;


我们有新旧价值。
     [oracle@vbgeneric orcl]$ strings test_strings.dbf
     }|{z
     -ORCL12C
     TEST_STRINGS
     AAAAAAAA
     TEST1_UPDATE,
     TEST3,
     TEST2,
     TEST1

祝你愉快,

大卫·杜布瓦



专家解答

这是一个常见的误解-Oracle存储的数据在某种程度上是无法理解的。默认情况下,正如您所发现的,数据只是文件系统上的纯文本。

这就是为什么我们建议 (并且在我们的云产品中是强制性的) 人们使用我们的透明数据加密来加密他们的数据。

这是一个视频演示


文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论