Oracle Label Security(Oracle标签安全性)

如需转载,请注明出处 http://kei.iteye.com

 

Why we choose OLS

 

1、绝大多数商业应用程序都必须处理安全性问题。应用程序经常需要限制对专用记录的访问、建立审计跟踪,或者执行一个工作流过程,所有这些都要符合公司的安全策略。构建安全的软件是一个富有挑战性且复杂的工作,在整个机构内管理软件的安全策略可能会更困难。

 

2、作为模式(schema)设计人员,你可能会在表中添加安全性列并根据这些表创建用户特定的视图。作为DBA,你可能会创建角色和权限来保护数据库对象。而作为开发人员,你可能会编写PL/SQL包,将安全事务处理封装在应用程序内。所有这些技术都很有效,但这些方法也都具有一定的缺点。例如,某人可能会无意中将专用数据导出至一个个人模式、原有的应用程序可能与安全对象不兼容,或者用户可能会利用SQL*Plus绕过整个应用程序的安全性检查。

 

Oracle Label Security的实现原理

 


Oracle Label Security的安装

完成安装Oracle9i或Oracle10g

运行Universal Installer添加OLS组件

运行Database Configuration Assistant配置好OLS

安装好之后在数据库中会有一个名为“LBACSYS”的用户,密码也是“LBACSYS”该用户将管理我们的安全策略


 


* 这里的名称和路径必须是oracle的安装路径



 *在这里选择Oracle Label Security组件



 

 
创建一个安全策略(Policy)

一个策略就是一个包括所有安全规则和访问要求的存储桶(bucket)。行级别的数据标签和对这些行的模式访问总是与一个策略相关联。

首先以LBACSYS身份建立连接然后执行
EXEC sa_sysdba.create_policy('DOC_POLICY','DOC_LABEL');

第一个参数DOC_POLICY是该策略的名字,第二个参数DOC_LABEL是一个列的名字,Oracle Label Security将把该列添加到你将在标签控制下替换的表内。

为了核实你的策略已经创建,可查询DBA_SA_POLICIES 


定义一个级别(level)

每个安全性策略都必须包含指定访问表的不同等级的级别。

每个级别都有一个策略名、一个数字ID、一个缩写名与一个全名。该数字ID表示敏感度级别--编号越高,表明敏感度越高。

EXEC sa_components.create_level('DOC_POLICY', 1000, 'PUBLIC', 'PublicLevel');

查看一个级别可以用
SELECT * FROM dba_sa_levels 


定义区间(可选)(Compartment)

区间使你能够将对一行数据的访问精确限定在一个级别之内。区间有一个策略名、一个数字ID、一个缩写名与一个全名。区间的数字ID并不指定其敏感度的级别。它仅用于在显示访问信息时对区间进行排序。

EXEC sa_components.create_compartment(‘DOC_POLICY’, 200, ‘FIN’, ‘FINANCE’);

要查看已经定义的区间可以查看DBA_SA_COMPARTMENTS视图


定义一个分组(可选)(Group)

和使用区间类似,使用分组是将访问限制在一个级别内的另一个可选用的方法。当有多个层次的用户时(如在一个公司的机构设置图中),组是非常有用的。与区间类似,分组也具有一个数字ID、一个缩写名和一个全名。此外编号(数字)并不表示任何敏感度,它仅用于在显示分组信息时对其进行排序。

EXEC sa_components.create_group('DOC_POLICY', 10, 'ALL', 'ALL_REGIONS');

要观察关于分组的信息,可查询DBA_SA_GROUPS视图。


创建一个标签

一个标签是级别、区间和分组的一个组合。每个标签都必须包含一个级别,还可以包含(也可以不包含)区间和/或分组。

该标签使你能够将数据的不同用户所要求的各种不同类型访问迅速地组合在一起。

标签是级别、区间与分组的缩写名的一个组合,并遵循以下语法:
级别: 区间, ... 区间_n:分组,.. 分组_n

级别、区间与分组都必须用冒号隔开。如果指定了一个以上的区间或组,它们必须用逗号隔开。 

EXEC sa_label_admin.create_label('DOC_POLICY', '10000', 'PUBLIC', TRUE);

在创建一个标签时,必须为其指定一个编号。该编号在数据库的所有策略中是惟一的。要查看标签信息,可查询DBA_SA_LABELS视图。


将标签策略应用于表

要将一个表置于标签安全性控制之下,需要把该标签策略赋给该表。

TABLE_OPTIONS参数使你能够定义将把什么类型的控制应用到该表上。
LABEL_DEFAULT指明,如果没有为一个 INSERT语句提供标签,那么将使用缺省的会话行标签。
READ_CONTROL参数规定该 SELECT, UPDATE和DELETE访问在整个标签内是有效的。
WRITE_CONTROL参数决定哪些INSERT, UPDATE活动是通过一个标签获得授权的。

EXEC sa_policy_admin.apply_table_policy ( 'DOC_POLICY','APP','DOCUMENTS', 'LABEL_DEFAULT,READ_CONTROL,WRITE_CONTROL');

要确定哪些策略已经被应用到了哪些表和模式,可以查询DBA_SA_TABLE_POLICIES视图。


指定用户标签

现在需要定义在一个策略中哪些用户具有什么类型的访问权限。这也是你给一个用户指定最大读/写权限的地方。
这些过程将一个用户映射到访问级别和被指定了标签的行。

EXEC sa_user_admin.set_user_labels('DOC_POLICY','EMP','PUBLIC');

为了查看用户及访问级别,可查询DBA_SA_USER_LABELS视图。


指定正常授权级别的访问

要确保CRUD(CREATE, READ, UPDATE, 和 DELETE)访问已经准备就序。Label Security是与正规的表授权一起工作的。在完成CRUD授权之前,用户不能进行SELECT, INSERT, UPDATE, 或 DELETE 或DELETE操作。当一个SQL查询访问一个表时,Oracle Label Security将首先检查CRUD访问是否合适,然后,如果有一个安全策略被应用于一个表,则它将确保该访问被执行。

SQL> CONN app/appSQL> GRANT SELECT ON documents TO emp;
SQL> GRANT SELECT, UPDATE ON documents TO hr_emp;
SQL> GRANT SELECT, UPDATE, INSERT ON documents TO mgr;


指定合适的标签

现在,确保为每个行都指定一个合适的标签。如果表中已经有了数据,那么你需要用合适的标签值来更新该标签列(DOC_LABEL)。因为该表已经处于Oracle Label Security 控制之下,所以必须用一个具有权限的模式来更新该标签列。当然,也可以暂时禁用该策略,先更新该标签列,然后再重新启用该策略。
当任一SQL语句访问该表时,Oracle数据库首先验证CRUD访问,然后施以Oracle Label Security限制。这样,用户只能执行经授权的操作。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
authors: Marlene Theriault William Heney Publisher: O'Reilly First Edition October 1998 (目录) Security in an oracle System Chapter 1 Oracle and Security What’s It All About? The Oracle Security Model Procedures, Policies, and Plans If I Had a Hammer... Chapter 2 Oracle System Files What’s in the Files? The Instance and the Database: Starting an Oracle Database Types of Database Files Chapter 3 Oracle Database Objects The User Interface: User Versus Schema Objects Tables Table Triggers Views Stored Programs Synonyms Privileges Roles Profiles Chapter 4 The Oracle Data Dictionary Creating and Maintaining the Data Dictionary The Data Dictionary Views About SQL.BSQ Views Used for Security The Composition of the Views Chapter 5 Oracle Default Roles and User Accounts About the Defaults The CONNECT Role The RESOURCE Role The DBA Role The SYSDBA and SYSOPER Roles Using the Default Roles Default User Accounts Segmenting Authority in the Database Chapter 6 Profiles, Passwords, and Synonyms Profiles Passwords Synonyms Implementing Security Chapter 7 Developing a Database Security Plan About the Security Policy and Security Plan Types of Accounts Standards for Accounts Standards for Usernames Standards for Passwords Standards for Roles Standards for Views Standards for the Oracle Security Server Standards for Employees Sample Security Plan Index Sample Security Plan Checklist Chapter 8 Installing and Starting Oracle Segmenting Application Processing Installing Oracle Securely Connecting to the Database Without a Password Installing and Configuring SQL*Net Setting Up Initialization Parameters for Security Chapter 9 Developing a Simple Security Application The Application Overview Preparing the Role-Object Matrix Views Roles Grants Application Control of Access Chapter 10 Developing an Audit Plan Why Audit? Where to Audit How Auditing Works Auditing and Performance Default Auditing Types of Auditing Purging Audit Information Chapter 11 Developing a Sample Audit Application About the Audit Trail Application About Performance and Storage Using the Audit Data in Reports SQL Scripts to Generate Scripts Chapter 12 Backing Up and Recovering the Database What Are the Backup Options? What’s New for Oracle8? What Are the Recovery Options? Chapter 13 Using the Oracle Enterprise Manager What Is the OEM? The DBA Toolkit and Security OEM and the Job Scheduler OEM and the Event Management System Chapter 14 Maintaining User Accounts Application Design Requirements Running the Application Documenting the User State A Sample Script Enhanced Oracle Security Chapter 15 Using the Oracle Security Server About Cryptography Ways to Authenticate Users What’s in the OSS? Configuring and Using the OSS Chapter 16 Using the Internet and the Web Web Basics Evaluating Web Assets and Risks Protecting a Web Site Getting Users Involved Chapter 17 Using Extra-Cost Options Trusted Oracle Advanced Networking Option Oracle Application Server Appendix References Oracle Books Security Books Oracle Electronic References Security Electronic References (英文版)
Oracle数据库安全性测试通常包括以下步骤: 1. 数据库漏洞扫描:使用漏洞扫描工具(如Nessus)来检查数据库服务器是否存在已知漏洞或配置错误。 2. 访问控制测试:测试数据库是否配置了正确的访问控制策略,如密码复杂度、账户锁定、访问限制等。 3. 数据库加密测试:测试数据库是否已经启用了加密功能以保护敏感数据,如数据加密、传输加密等。 4. 安全审计测试:测试数据库是否已经启用了审计功能,以记录用户访问数据库的行为并检测潜在的安全威胁。 5. 数据库备份和恢复测试:测试数据库备份和恢复机制是否可靠,以确保在系统故障或数据丢失的情况下能够迅速恢复数据。 6. 配置管理测试:测试数据库服务器是否按照最佳安全实践进行配置,如关闭不必要的服务、限制访问等。 7. 数据库授权测试:测试数据库是否正确授权给用户和应用程序,以确保只有授权的用户和应用程序才能访问数据库。 8. 代码审计测试:如果您的应用程序连接到Oracle数据库,还需要对应用程序进行安全代码审计,以确保应用程序和数据库之间的数据传输是安全的。 总之,Oracle数据库安全性测试是一个综合的过程,需要综合考虑数据库服务器本身的安全性以及与应用程序之间的协作。为了确保数据库的安全性,您应该定期进行测试,并采取必要的安全措施来保护数据库的安全和隐私。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值