Oracle LiveLabs实验:DB Security - Transparent Sensitive Data Protection (TSDP)

本文主要是介绍Oracle LiveLabs实验:DB Security - Transparent Sensitive Data Protection (TSDP),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概述

此实验申请地址在这里,时间为15分钟。

本实验是DB Security Basics研讨会的的第8个实验,即Lab 8。

实验帮助在这里。

本实验使用的数据库为19.13。

Introduction

本研讨会介绍 Oracle 透明敏感数据保护 (TSDP) 的功能。 它让用户有机会学习如何配置这些功能,以便通过即时编辑敏感数据来保护对敏感数据的访问。

目标:

  • 为敏感数据创建 TSDP 策略
  • 检查动态敏感数据编辑以防止其暴露在应用程序之外

透明的敏感数据保护是一种查找和分类包含敏感信息的表列的方法。

Task 1: Prepare the TSDP Environment for the Labs

进入实验目录:

sudo su - oracle
cd $DBSEC_LABS/tsdp

创建 TSDP Admin 用户、TSDP 数据所有者并创建 TSDP 实验用表:

./tsdp_prepare_env.sh

实际执行的命令为:

prompt . Create the TSDP Admin user
GRANT CREATE SESSION TO ${DBUSR_TSDPADMIN} IDENTIFIED BY ${DBUSR_PWD};
GRANT CREATE PROCEDURE TO ${DBUSR_TSDPADMIN};
GRANT EXECUTE ON DBMS_TSDP_MANAGE TO ${DBUSR_TSDPADMIN};
GRANT EXECUTE ON DBMS_TSDP_PROTECT TO ${DBUSR_TSDPADMIN};
GRANT EXECUTE ON DBMS_RLS to ${DBUSR_TSDPADMIN};
GRANT EXECUTE ON DBMS_REDACT to ${DBUSR_TSDPADMIN};prompt
prompt . Create the TSDP data owner
GRANT CREATE SESSION, RESOURCE TO ${DBUSR_TSDP} IDENTIFIED BY ${DBUSR_PWD};
GRANT UNLIMITED TABLESPACE TO ${DBUSR_TSDP};
GRANT SELECT ON employeesearch_prod.demo_hr_employees to ${DBUSR_TSDP};conn ${DBUSR_TSDP}/${DBUSR_PWD}@${PDB_NAME}prompt . Create TSDP labs table
CREATE TABLE tsdp_hr_employees AS SELECT * FROM employeesearch_prod.demo_hr_employees;
COMMIT;

环境变量如下:

$ env|grep TSDP
DBUSR_TSDPADMIN=tsdp_admin
DBUSR_TSDP=tsdp_labs

Task 2: Create a TSDP Policy

创建敏感类型“CREDIT_CARD_TYPE”,敏感类型是您指定为敏感的一类数据:

./tsdp_create_sensitive_type.sh

实际执行的代码和输出为:


==============================================================================Create a TSDP sensitive type for all credit card numbers...
==============================================================================CON_NAME
------------------------------
PDB1
USER is "TSDP_ADMIN"-- . Create the sensitive type "credit_card_type" to classify the types of columns to protect
SQL> 
BEGINDBMS_TSDP_MANAGE.ADD_SENSITIVE_TYPE (sensitive_type  => 'credit_card_type',user_comment    => 'Type for Credit Card columns using a Varchar2 data type');
END;
/PL/SQL procedure successfully completed.

确定要保护的敏感列(这里,我们的规则是列名为“CORPORATE_CARD”):

./tsdp_add_sensitive_col.sh

实际执行的SQL为:

BEGINDBMS_TSDP_MANAGE.ADD_SENSITIVE_COLUMN(schema_name        => 'tsdp_labs',table_name         => 'TSDP_HR_EMPLOYEES',column_name        => 'CORPORATE_CARD',sensitive_type     => 'credit_card_type',user_comment       => 'Sensitive column addition of credit_card_type');
END;
/

要根据您定义的敏感类型识别要保护的列,您可以使用 OEM Cloud Control 应用程序数据模型 (ADM) 来识别这些列,也可以使用 DBMS_TSDP_MANAGE.ADD_SENSITIVE_COLUMN 过程。前者是批量添加,后者是单列添加。

创建 TSDP 策略“REDACT_PARTIAL_CC”,基于部分编校,将前 8 个字符替换为“*”。

./tsdp_create_policy.sh

实际执行的SQL为:

DECLAREredact_feature_options DBMS_TSDP_PROTECT.FEATURE_OPTIONS;policy_conditions DBMS_TSDP_PROTECT.POLICY_CONDITIONS;
BEGINredact_feature_options ('expression') := 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') =''TSDP_LABS''';redact_feature_options ('function_type') := 'DBMS_REDACT.PARTIAL';redact_feature_options ('function_parameters') := 'VVVVFVVVVFVVVVFVVVV,VVVV-VVVV-VVVV-VVVV,*,1,8';policy_conditions(DBMS_TSDP_PROTECT.DATATYPE) := 'VARCHAR2';DBMS_TSDP_PROTECT.ADD_POLICY ('redact_partial_cc', DBMS_TSDP_PROTECT.REDACT,redact_feature_options, policy_conditions);
END;
/

您可以通过定义具有以下组件的匿名块来创建策略:

  • 如果您将 Oracle 数据编校用于您的策略,则需要说明您要使用的数据编校类型,例如部分数据编校(DBMS_REDACT.PARTIAL)
  • 如果您将 Oracle 虚拟专用数据库用于您的策略,那么您要使用的 VPD 设置规范
  • 启用策略时要测试的条件。 例如,启用策略之前应满足的列的数据类型(VARCHAR2)
  • 通过使用 DBMS_TSDP_PROTECT.ADD_POLICY 过程,将这些组件联系在一起的命名透明敏感数据保护策略

将 TSDP 策略“REDACT_PARTIAL_CC”与之前创建的敏感类型“CREDIT_CARD_TYPE”相关联:

./tsdp_associate_policy.sh

实际执行的SQL为:

BEGINDBMS_TSDP_PROTECT.ASSOCIATE_POLICY(policy_name        => 'redact_partial_cc',sensitive_type     => 'credit_card_type',associate          => true);END;
/

在启用 TSDP 策略之前查看敏感数据:

./tsdp_select_data.sh

输出如下,CORPORATE_CARD列是启用TSDP策略的列:

==============================================================================Display the sensitive data from the TSDP table...
==============================================================================CON_NAME
------------------------------
PDB1
USER is "TSDP_LABS"SQL> SELECT userid, firstname, lastname, corporate_card FROM tsdp_hr_employees WHERE length(corporate_card)=19 order by 1USERID FIRSTNAME            LASTNAME                       CORPORATE_CARD
---------- -------------------- ------------------------------ -------------------------413 Kathy                Allen                          6761601157534710000449 Donna                Wright                         6761601157534710000467 Martin               Lawrence                       4936211210155040000521 Jonathan             Greene                         4905720557944970000524 Teresa               Morales                        5602226919579740000567 Patricia             Long                           4936211210155040000681 Rebecca              Long                           5602249443516610000682 Brian                Tucker                         6709177789649670000689 Jennifer             Myers                          6334124777282700000797 Timothy              Banks                          4905720557944970000800 Karen                Thomas                         5602226919579740000827 Heather              Campbell                       6759878641253360000988 Phyllis              Wright                         5602249443516610000989 David                Foster                         6709177789649670000996 Wayne                Wood                           6334124777282700000999 Kenneth              Marshall                       675987864125336000016 rows selected.

启用 TSDP 策略“REDACT_PARTIAL_CC”:

./tsdp_enable_policy.sh

实际执行的SQL为:

BEGINDBMS_TSDP_PROTECT.ENABLE_PROTECTION_TYPE(sensitive_type           => 'credit_card_type');
END;
/

再次查看数据,数据编辑已经生效:

$ ./tsdp_select_data.sh==============================================================================Display the sensitive data from the TSDP table...
==============================================================================CON_NAME
------------------------------
PDB1
USER is "TSDP_LABS"SQL> SELECT userid, firstname, lastname, corporate_card FROM tsdp_hr_employees WHERE length(corporate_card)=19 order by 1USERID FIRSTNAME            LASTNAME                       CORPORATE_CARD
---------- -------------------- ------------------------------ -------------------------413 Kathy                Allen                          ****-****-5347-0000449 Donna                Wright                         ****-****-5347-0000467 Martin               Lawrence                       ****-****-1550-0000521 Jonathan             Greene                         ****-****-9449-0000524 Teresa               Morales                        ****-****-5797-0000567 Patricia             Long                           ****-****-1550-0000681 Rebecca              Long                           ****-****-5166-0000682 Brian                Tucker                         ****-****-6496-0000689 Jennifer             Myers                          ****-****-2827-0000797 Timothy              Banks                          ****-****-9449-0000800 Karen                Thomas                         ****-****-5797-0000827 Heather              Campbell                       ****-****-2533-0000988 Phyllis              Wright                         ****-****-5166-0000989 David                Foster                         ****-****-6496-0000996 Wayne                Wood                           ****-****-2827-0000999 Kenneth              Marshall                       ****-****-2533-000016 rows selected.

如您所见,TSDP 立即编辑敏感数据,您无需重新启动数据库或重写 SQL 查询!

Task 3: (Optional) Reset the TSDP Labs Environment

运行以下命令以重置环境:

./tsdp_reset_env.sh

实际执行的SQL为:

prompt . Disable the TSDP policy
BEGINDBMS_TSDP_PROTECT.DISABLE_PROTECTION_COLUMN(schema_name          => 'tsdp_labs',table_name           => 'TSDP_HR_EMPLOYEES',column_name          => '%');
END;
/prompt . Drop the sensitive column
BEGINDBMS_TSDP_MANAGE.DROP_SENSITIVE_COLUMN (schema_name        => 'tsdp_labs',table_name         => 'TSDP_HR_EMPLOYEES',column_name        => 'CORPORATE_CARD');
END;
/prompt . Drop the sensitive type
BEGINDBMS_TSDP_MANAGE.DROP_SENSITIVE_TYPE (sensitive_type     => 'credit_card_type');
END;
/prompt . Drop the TSDP policy
BEGINDBMS_TSDP_PROTECT.DROP_POLICY(policy_name     => 'redact_partial_cc');
END;
/

Appendix: About the Product

透明敏感数据保护 (TSPD) 是一种查找和分类包含敏感信息的表列的方法。

此功能使您能够快速找到数据库中包含敏感数据的表列,对该数据进行分类,然后为给定类创建一个整体保护该数据的策略。 此类敏感数据的示例是信用卡号或社会保险号。

然后,TSDP 策略通过使用 Oracle 数据编辑或 Oracle 虚拟专用数据库设置来保护这些表列中的敏感数据。 TSDP 策略适用于您要保护的表的列级别,针对特定的列数据类型,例如包含信用卡信息的列的所有 NUMBER 数据类型。 您可以为您分类的所有数据创建统一的 TSDP 策略,然后在合规性法规发生变化时根据需要修改此策略。 或者,您可以导出 TSDP 策略以在其他数据库中使用。

TSDP 策略的好处是巨大的:您可以轻松地在拥有大量数据库的大型组织中创建和应用 TSDP 策略。 这使审计人员能够估计 TSDP 策略所针对的数据的保护程度,从而极大地帮助审计人员。 TSDP 对于政府环境特别有用,在这种环境中,您可能拥有大量具有类似安全限制的数据,并且您必须一致地对所有这些数据应用策略。 策略可以是编辑、加密、控制对它的访问、审计对它的访问,并在审计跟踪中屏蔽它。 如果没有 TSDP,您将不得不逐列配置每个编校策略、列级加密配置和虚拟专用数据库策略。

使用透明敏感数据保护 (TSDP) 的好处:

  • **您只需配置一次敏感数据保护,然后根据需要部署此保护。**您可以配置透明的敏感数据保护策略来指定必须如何保护一类数据(例如,信用卡列),而无需实际指定目标数据。换句话说,当您创建透明敏感数据保护策略时,您不需要包含对您要保护的实际目标列的引用。透明敏感数据保护策略根据数据库中的敏感列列表以及策略与指定敏感类型的关联来查找这些目标列。当您在创建透明的敏感数据保护策略后向数据库添加更多敏感数据时,这会很有用。创建策略后,您可以在一个步骤中启用对敏感数据的保护(例如,基于整个源数据库启用保护)。新数据的敏感类型以及敏感类型和策略关联决定了如何保护敏感数据。这样,随着新的敏感数据的增加,您无需配置其保护,只要满足当前透明敏感数据保护策略的要求即可。

  • **您可以管理多个敏感列的保护。**您可以根据合适的属性(例如标识的源数据库、敏感类型本身或特定架构、表或列)启用或禁用对多个敏感列的保护。这种粒度提供了对数据安全性的高级控制。此功能的设计使您能够根据属于这些合规性法规范围的大型数据集的特定合规性需求来管理数据安全性。您可以根据特定类别而不是为每个单独的列配置数据安全性。例如,您可以为信用卡号或社会保险号配置保护,但您不需要为数据库中包含此数据的每一列配置保护。

  • **您可以保护使用 Oracle Enterprise Manager Cloud Control 应用程序数据建模 (ADM) 功能识别的敏感列。**您可以使用 Cloud Control AD​​M 功能创建敏感类型并发现敏感列的列表。然后,您可以将此敏感列列表及其相应的敏感类型导入您的数据库。从那里,您可以使用此信息创建和管理透明的敏感数据保护策略。

Want to Learn More?

参考文档:Oracle Transparent Sensitive Data Protection 19c

这个文档挺好,把启用TSDP的步骤和用例讲的很清楚。

Acknowledgements

本实验的作者为Hakim Loumi,数据库安全的PM。贡献者为Rene Fontcha。

这篇关于Oracle LiveLabs实验:DB Security - Transparent Sensitive Data Protection (TSDP)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/677469

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置