oracle redact加密介绍和详细步骤

环境:oracle 11.2.0.4

一、     1. Oracle Data Redaction介绍

Oracle高级安全新组件,其作用是限制SQL语句的返回结果样式,对于特定的用户可以限制某些字段显示被自动改写过的值。

说明:不能对sys和system用户进行数据的redact。因为他们都有EXP_FULL_DATABASE这个角色,而这个角色又包含了EXEMPT REDACTION POLICY系统权限。同理,也不能直接赋予用户dba权限,dba自动包含EXP_FULL_DATABASE角色。

2. redact分类

(1).Full redaction.对列中的数据全部redactnumber类型的列将全部返回为0character类型的列将全部返回为空格日期类型返回为2001-01-01

(2).Partial redaction. 对列中的一部分数据进行redact比如可以对社会保险号的前几位设置返回为*剩下的几位保持不变。只有列中的数据为固定宽度时才能使用这种方式,如果列中存储的是email地址,每个email地址的宽度不尽相同,此时要使用Regular expressions

(3).Regular expressions. 对不同长度的内容加密,例如e-mail,仅仅对字符类型有效。

(4).Random redaction. 随机乱码加密

(5).No redaction.测试加密的内部运行机制,并不会真正加密。

二、     oracle scott用户下建表进行加密(redact)实验

1. 加密准备工作:

REVOKE dba FROM SCOTT;

GRANT CONNECT, resource, unlimited tablespace TO SCOTT;

GRANT SELECT ON sys.redaction_policies TO SCOTT;

GRANT SELECT ON sys.redaction_columns TO SCOTT;

GRANT EXECUTE ONdbms_redact TO SCOTT;

查询约束和加密策略

SQL> selectpolicy_name from redaction_policies;

2. scott用户下创建2张表,并设置了主外键约束

create tablestudents(name varchar2(10) primary key not null,age varchar2(10),countvarchar2(10));

insert intostudents (name,age,count) values ('xxxxxx','vvvvvv','nnnnnn');

 

create tableclass(aa varchar2(10),name varchar2(10),cc varchar2(10));

insert intoclass (aa,name,cc) values ('zzzzzz','xxxxxx','cccccc');

alter tableclass ADD CONSTRAINT FK_name FOREIGN KEY(name) references students(name);

3.开始加密(redact)(注意:在使用add_policy以后,只能使用ALTER_POLICY再添加,除非drop掉policy。

partial方式加密,注意事项1:只需修改function_type就可以更改为其他加密方式。

注意事项2:function_parameters格式针对字符型,如果是数字则修改为 function_parameters  => ‘6,3,6’,

 BEGIN

DBMS_REDACT.ADD_POLICY (

   object_schema          => 'SCOTT',

   object_name            => 'CLASS',

   policy_name            => 'REDACT_EMP',

   column_name            => 'NAME',

   function_type          => DBMS_REDACT.PARTIAL,

   function_parameters    => 'VVVVVV,VVVVVV,*,3,6',

   expression             => '1=1',

   enable                 => TRUE

   );

END;

/

 

添加一列policy

 BEGIN

 DBMS_REDACT.ALTER_POLICY(

  object_schema       => 'SCOTT',

  object_name         => 'CLASS',

  policy_name         => 'REDACT_EMP',

  action              => DBMS_REDACT.ADD_COLUMN,

  column_name         => 'AA',

  function_type       => DBMS_REDACT.PARTIAL,

  function_parameters    => 'VVVVVV,VVVVVV,*,1,6'

 );

END;

/

指定只对hr用户有效

BEGIN

DBMS_REDACT.ALTER_POLICY (

   object_schema          => 'SCOTT',

   object_name            => 'CLASS',

   policy_name            => 'REDACT_EMP',

   column_name            => 'AA',

   action               => DBMS_REDACT.MODIFY_EXPRESSION,

   expression  => 'SYS_CONTEXT (''USERENV'',''SESSION_USER'' ) =''HR'''

);

END;

/

删除一列policy(注意:即使删除所有policycolumn,但policy本身还存在)

 BEGIN 

 DBMS_REDACT.ALTER_POLICY(

  object_schema       => ''SCOTT'',

  object_name         => 'CLASS',

  policy_name         => 'REDACT_EMP',

  action              => DBMS_REDACT.DROP_COLUMN,

  column_name         => 'NAME'

);

END;

/

 

删除编写策略(包括policy本身)

BEGIN

  DBMS_REDACT.DROP_POLICY (

    object_schema  => 'SCOTT',

    object_name    => 'CLASS',

    policy_name    => 'REDACT_EMP');

END;

/

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]:遇到问题: FileNotFoundError: \[Errno 2\] No such file or directory: 'models/trained_models/wind_model_NL_1h_CNN2DWind_NL.pt' 。 引用\[2\]:报错代码 #FileNotFoundError: \[Errno 2\] No such file or directory: './data/articles.csv' aaa = pd.read_csv('./data/articles.csv') # ./data表示该目录下有个data文件,实际data是在code文件的上一层文件中 aaa 。 引用\[3\]:** 代码如下 import csv import os import pandas as pd # 先创建一个空列表,然后通过for循环实现 readList = \[\] files = os.listdir(r"D:\Lynn.Yan\Python\Plot\data") # i是文件 # 读取多个csv文件内容 # 跳过第一行“标题” # 添加“文件名”作为新的列 for i in files: with open('{}'.format(i), 'r') as read_csvfile: read_all = csv.reader(read_csvfile) next(read_csvfile) for line in read_all: line.append(i) readList.append(line) # list转化成dataframe # 添加列名 testData = pd.DataFrame(readList) titleList = \["Cycle", "Voltage", "Current", "RPM", "Torque", "Force", "Position", "CustomAI", "TC1", "TC2", "TC3", "TC4", "TC5", "UpdateTime", "Filename"\] testData.columns = titleList testData.head() 。 问题:FileNotFoundError: \[Errno 2\] No such file or directory: 'Results/time_redact.csv' 回答: 这个错误是由于文件或目录不存在导致的。在你的代码中,你尝试读取了一个名为'models/trained_models/wind_model_NL_1h_CNN2DWind_NL.pt'的文件,但是该文件不存在。同样地,在另一个代码段中,你尝试读取了一个名为'./data/articles.csv'的文件,但是该文件也不存在。最后,你还尝试读取了一个名为'Results/time_redact.csv'的文件,同样地,该文件也不存在。请确保你提供的文件路径是正确的,并且文件确实存在于指定的位置。 #### 引用[.reference_title] - *1* [FileNotFoundError: [Errno 2] No such file or directory: ‘models/trained_models/wind_model_NL_1h_CNN...](https://blog.csdn.net/lcnana/article/details/121307592)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [FileNotFoundError: [Errno 2] No such file or directory: ‘./data/articles.csv](https://blog.csdn.net/weixin_43409127/article/details/124175494)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [解决FileNotFoundError: [Errno 2] No such file or directory: ‘220102933.86_56.csv](https://blog.csdn.net/weixin_45560266/article/details/126460377)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值