a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 127|回复: 2

[其他] Oracle认证:使用Oracle的TDE特性加密(3)

[复制链接]
发表于 2012-8-4 13:41:06 | 显示全部楼层 |阅读模式
Enter value for new_data_tbs: data_002   Enter value for new_indx_tbs: indx_002
6 V$ y8 c6 O% m# g  Enter value for old_indx_tbs: indx_001
3 K' j/ u9 H+ ~1 [( y! f3 K  Enter value for old_data_tbs: data_0017 N0 r% [2 s$ E  g9 G9 \
  Enter value for owner: app_001
- o! _+ q3 o  i  ALTER TABLE app_001.transactions MOVE TABLESPACE data_002;! m+ @, ~1 J4 ~
  ALTER INDEX app_001.transactions_pk REBUILD TABLESPACE indx_002;3 }# q! b$ }5 E( ~) z) j' z; c6 O& p
  ALTER INDEX app_001.transactions_ndx1 REBUILD TABLESPACE indx_002;  L4 c  r" @/ i( K
  SQL> SET HEADING ON;
: b1 v3 [1 q/ u% Z% R) K  SQL> SET VERIFY ON;: L. t+ k" f8 K
  SQL> SET ECHO ON;8 n+ J; X1 c8 h0 u
  SQL> -- execute script output4 a$ k8 w) r/ z0 S  F) x4 y# W
  SQL> ALTER TABLE app_001.transactions MOVE TABLESPACE data_002;
) ^7 ?  v# W' c. _0 Q4 q6 G  Table altered.
/ W5 X  L7 s' g  SQL> ALTER INDEX app_001.transactions_pk REBUILD TABLESPACE indx_002;
* }" I3 {* F0 x4 F  Index altered.2 y, N1 ~) w* W5 z
  SQL> ALTER INDEX app_001.transactions_ndx1 REBUILD TABLESPACE indx_002;
; g9 F) t9 t3 t: ^! H# {0 j  Index altered.7 E, i# s- o( u* }
  SQL> -- Check for any unusable indexes
1 p( Z& t8 Q; [; X) m  SQL> SELECT owner, index_name, tablespace_name# x8 j( f% Y; P& v2 Y5 g
  2 FROM dba_indexes6 b/ A, x1 o& Q+ r2 q( j
  3 WHERE STATUS = ’UNUSABLE’;
5 D' @1 L0 t- x5 t  no rows selected
$ s+ s' ^) t& q  SQL> -- Gather new schema stats
- `( T3 Q4 w3 x5 R( E5 f7 k0 ^' ~  SQL> EXEC dbms_stats.gather_schema_stats(’app_001’);, T" X2 b( ~" Q( [
  PL/SQL procedure successfully completed.: Z, f- E5 Y8 h* R1 _; R
  SQL> -- Check for remaining segments in old tablespaces
3 j  [  P" m* G2 f' D
( z% v9 ~& L2 o  SQL> SELECT distinct owner
回复

使用道具 举报

 楼主| 发表于 2012-8-4 13:41:07 | 显示全部楼层

Oracle认证:使用Oracle的TDE特性加密(3)

</p>  2 FROM dba_segments
7 C: v% h" e& r7 G( g7 u  3 WHERE tablespace_name IN (UPPER(’&&OLD_DATA_TBS’), UPPER(’&&OLD_INDX_TBS’));
5 q9 Y) w# F% m, E: s, I  old 3: WHERE tablespace_name IN (UPPER(’&&OLD_DATA_TBS’), UPPER(’&&OLD_INDX_TBS’)); w$ S( G# z: E
  new 3: WHERE tablespace_name IN (UPPER(’data_001’), UPPER(’indx_001’))
. ?5 l: L  a# |. s: P# P; |. w  no rows selected
- g3 {1 k, V: \& X; d6 e  SQL> -- Check for users assigned to old tablespaces, O% G2 H/ l! A2 g9 N9 R; V, B
  SQL> SELECT username, default_tablespace FROM dba_users
9 `- d! S: _& ?0 o  T  2 WHERE default_tablespace IN (UPPER(’&&OLD_DATA_TBS’), UPPER(’&&OLD_INDX_TBS’));
  C6 a! X, A* }8 H7 ?4 {  old 2: WHERE default_tablespace IN (UPPER(’&&OLD_DATA_TBS’), UPPER(’&&OLD_INDX_TBS’)). y! z1 t: {8 }3 {( q: e
  new 2: WHERE default_tablespace IN (UPPER(’data_001’), UPPER(’indx_001’))* q+ J( n& N( [: \
  USERNAME DEFAULT_TABLESPACE
1 x8 K: u& l2 k1 j3 z9 k8 K  ------------------------------ ------------------------------) u' {: ]) U; R. ?9 R$ G6 b
  APP_001 DATA_001
: B. \/ {/ B1 |  SQL> -- Assign new default tablespaces for users, as necessary
8 ?+ v8 X! H* E' u  SQL> ALTER USER app_0013 m% g7 ~$ o. T4 s
  2 DEFAULT TABLESPACE data_002;
, m* T* V' j6 [$ E! c  User altered.
5 J) F* g+ L+ f! s7 N# V: O6 P1 j  SQL> -- List the data file names of old tablespaces& z% s0 B! n8 }, ~3 k8 ^
  SQL> COL tablespace_name FOR A15;% D1 f8 w, [, @
  SQL> COL file_name FOR A70;+ N- G( j: _+ I0 k, h9 `: {2 w
  SQL> SET LINES 100;& \# V+ C6 O0 T+ S/ J/ f1 Q
  SQL> SELECT tablespace_name, file_name' s+ b! ?% J+ k+ m. M- c
  2 FROM dba_data_files9 b% C4 i* _, `2 j# |! N
  3 WHERE tablespace_name IN (UPPER(’&&OLD_DATA_TBS’), UPPER(’&&OLD_INDX_TBS’));
4 G! Q7 p1 O2 ~  old 3: WHERE tablespace_name IN (UPPER(’&&OLD_DATA_TBS’), UPPER(’&&OLD_INDX_TBS’))
& o" c" Y! q/ J  p1 _( }4 a  ]  new 3: WHERE tablespace_name IN (UPPER(’data_001’), UPPER(’indx_001’))5 V4 U; i3 }; C0 f- U
  TABLESPACE_NAME FILE_NAME& b; R: t- W/ B" d+ R5 Y
  --------------- ----------------------------------------------------------------------6 q9 f( w: r' ], E, g
  DATA_001 /data01/oracle/db001/datafile/o1_mf_data_001_4m081w7m_.dbf9 E" q) b% A1 G: c1 o( o
  INDX_001 /data01/oracle/db001/datafile/o1_mf_indx_001_4m082l4q_.dbf
0 I1 h# \9 q9 k+ f* j# @  SQL> -- Drop old tablespaces, but keep data files in place
& M, g: @" O* k% I6 U* M( C4 [( f7 |  SQL> DROP TABLESPACE data_001
! E7 z% y& h' U9 w% T3 z( Y1 _4 u* R  2 INCLUDING CONTENTS KEEP DATAFILES;' X8 {! Q3 H; W5 `
  Tablespace dropped.
) z7 v0 p1 m# r' c$ ^+ \  SQL> DROP TABLESPACE indx_001  z/ V0 P+ M6 e: p" P/ K

/ X9 g6 j! A& x! f0 z  2 INCLUDING CONTENTS KEEP DATAFILES;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-4 13:41:08 | 显示全部楼层

Oracle认证:使用Oracle的TDE特性加密(3)

</p>  Tablespace dropped.
8 Q0 e6 v3 x& R- U' u7 N# }  SQL> -- Shred/remove old data files6 t9 h/ l$ [) P+ J- W# V
  SQL> HOST shred -n 200 -z -u /data01/oracle/db001/datafile/o1_mf_data_001_4m081w7m_.dbf
6 m1 i, ]1 a- b. K6 L2 G0 d  SQL> HOST shred -n 200 -z -u /data01/oracle/db001/datafile/o1_mf_indx_001_4m082l4q_.dbf
/ {; U$ Z5 c3 \. p# L+ N  列表 3 删除残剩敏感数据的未加密虚副本需要一系列轨范才能解决良多相关性。
0 E* |  U: }6 R) ?+ N2 l  K, r# {0 i  列表 3 中的最后一步针对特定的操作系统。在本例中,我演示了 Linux/Unix shred 适用轨范的用法。其他您可能想探讨的适用轨范是 Linux/Unix wipe、scrub 和 srm 轨范。( c9 F1 m- d: ?( U
  筹备可能的从头生成密钥操作' F' D* `  N) I( d6 E
  我的客户还想做些筹备以应对未来可能需要从头生成密钥的情形。为现稀有据从头生成密钥意味着您要使用新密钥对现稀有据从头加密。当您思疑某人已经获得对现有表密钥的访谒权限而且可能会在您的节制之外破解敏感数据时,可能需要执行该操作。/ R! c( k/ y) j, |# [' {
  完成从头生成密钥操作的轨范与最初加密现稀有据的轨范近似:删除方针列上的索引,从头生成该列数据的密钥,然后重建删除的索引。或者,如不美观您担忧与使用以前的密钥加密的数据相对应的虚副本,可以一再将段移动到新表空间、删除旧表空间、然后断根旧表空间的数据文件的过程。
* L$ i& t* L* M9 N  注:以我的经验,PCI 审计员会对从头生成万能加密密钥很是对劲,因为该过程不需要访谒任何数据,而且 PCI 尺度不包含对 2 层密钥系统结构(如 Oracle 的系统结构)的建议。从合适 PCI 的角度看,从头生成万能加密密钥应该足够了,而且 PCI 审计员无法强制具有几十亿行的公司将其营业封锁几天,仅仅只是为了从头生成密钥。
" z1 s% q& C) v/ c  H$ f# \( c$ w* X  确定可能的发芽打算更改* m9 E# o3 y( n2 L8 B- s
  Oracle 文档、若干文章以及我阅读过的一些论坛帖子几乎都提到了有关加密列的数据后现有发芽执行打算可能发生更改的概要信息以及某些具体信息。一般来说,相对于没有索引的列,在加密具有索引的列时,您必需注重执行 SQL 语句所发生的情形。当 Oracle 加密具有索引的列时,Oracle 还将加密响应的索引值。如不美观您花点时刻考虑这个问题,就会清嚣张地发现以具有索引的数据为方针的相等谓词应该继续操作索引,但因为该索引值存储在索引中的体例,加密值的随机性质使得加密索引典型围扫描成本过高。列表 4 演示了这些具体描述的根基情形。% V) E2 {$ o! h5 U5 @7 k1 y
  SQL> CONNECT app_001' l% ]# e0 T5 u* ]% K
  Enter password:, Q- v# e$ D: b5 |  ?8 p3 I
  Connected.
8 T9 X5 ^/ p& d$ }( v  SQL> -- Create a plan table' }5 `4 [1 m4 ?5 n  C3 @) e" q
  SQL> @?/rdbms/admin/utlxplan.sql;
4 N$ A9 I  s$ B* ^% L  E' ~  Table created.
: ]8 u! @9 [$ f( @# r  SQL> -- Disable encryption of the credit card column& X; z: K- c' }2 [1 Q
  SQL> ALTER TABLE app_001.transactions3 U8 [" q/ @' J" r3 u" A
  2 MODIFY (credit_card DECRYPT);
3 s* D1 O$ }- S3 ?  H2 L) Y9 ]  Table altered.6 t6 ?7 h) f0 F, ]0 j
  SQL> -- Ensure schema stats are current
! ?- _% M3 y( y5 Z6 V  SQL> EXEC dbms_stats.gather_schema_stats(’app_001’);) b; g8 h( s& @" K# I' t" V
  PL/SQL procedure successfully completed.( G9 P$ L- Z$ @
  SQL> -- Display some representative data
$ C1 q: @' `) n  Y/ T8 J  SQL> COL credit_card FOR 9999999999999999;
8 M! I  M+ [0 v4 M  SQL> SELECT * FROM app_001.transactions
0 \1 Q3 O  o3 u9 [- ~, h# Y  2 WHERE rownum < 5;
& k) G( r- H' d3 B& B, S: v  TRANS_ID CREDIT_CARD
+ [5 ^4 A# G. Q4 E/ D" W+ [  ---------- -----------------# X8 }* f! F& K" o8 d* w. G; X
  389 3469681098409570" k: i5 R# C1 J
  390 3441050723354352
) Y; D% e% S  Q& O1 |. @. x* k  391 3485598407754404
, p* k  o; i8 s1 S0 g% K3 J  392 3485458104610650
& {7 q: d3 L5 y& x* D9 h  SQL> -- Enable tracing and explain plan output7 ~( ~$ a* Q! P- p9 v. l
  SQL> SET AUTOTRACE ON EXPLAIN;) d3 Y/ c2 z3 S6 u
  SQL> -- Demonstrate an equality predicate targeting the3 t+ I* }$ G" N
  SQL> -- encrypted column
! H$ {5 P0 d) d  q5 \" I# }  SQL> SELECT * FROM app_001.transactions
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-4 14:49 , Processed in 0.194478 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表