Oracle LiveLabs实验:DB Security - Privilege Analysis
Posted dingdingfish
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle LiveLabs实验:DB Security - Privilege Analysis相关的知识,希望对你有一定的参考价值。
概述
此实验申请地址在这里,时间为2小时。
实验帮助在这里。
本实验使用的数据库为19c。
Introduction
本次研讨会介绍了 Oracle 权限分析的功能。 它使用户有机会学习如何使用此功能来始终了解所有用户在整个数据库生命周期中访问的权限使用情况。
本课程演示了:
- 捕获数据库的工作负载
- 生成权限分析报告以了解此捕获期间使用的所有用户/系统权限
Task 1: Capture the workload to analyze
进入实验目录,并创建捕获:
sudo su - oracle
cd $DBSEC_LABS/priv-analysis
./pa_create_capture.sh
这个脚本解释一下:
- 使用用户pa_admin连接可插拔数据库pdb1
- 使用以下SQL(返回TRUE)确定用户有CAPTURE_ADMIN角色
select sys_context('SYS_SESSION_ROLES','CAPTURE_ADMIN') has_role from dual;
- 然后创建了数据库范围的权限捕获
- 确认捕获创建成功(但还未启用)
select NAME, TYPE, ENABLED from DBA_PRIV_CAPTURES where NAME = 'All Database Capture';
NAME TYPE ENABLED
----------------------------------- ---------------- --------------------
All Database Capture DATABASE N
最后,启用捕获:
./pa_enable_capture.sh
这个脚本和上一个很相似,执行后,启用状态变为Y:
select NAME, TYPE, ENABLED from DBA_PRIV_CAPTURES where NAME = 'All Database Capture';
NAME TYPE ENABLED
----------------------------------- ---------------- --------------------
All Database Capture DATABASE Y
然后,产生一些工作负载:
./pa_generate_workload.sh
这个脚本使用使用多个用户连接数据库,并执行操作。用户包括dba_harvey,dba_debra,pu_pete。
看一下用户设置:
$ set|grep USR
DBUSR_AVAUDIT=avaudituser
DBUSR_DBA1=dba_harvey
DBUSR_DBA2=dba_debra
DBUSR_DBA3=dba_nicole
DBUSR_DBA4=dba_junior
DBUSR_DBV_OWNER=c##dvowner
DBUSR_DBV_SAL=c##sec_dba_sal
DBUSR_DS_ADMIN=DS_ADMIN
DBUSR_EMPDEV=employeesearch_dev
DBUSR_EMPPROD=employeesearch_prod
DBUSR_OGGADMIN=c##avggadmin
DBUSR_OLS_LBAC=lbacsys
DBUSR_OLS_OWNER=c##oscar_ols
DBUSR_PA=pa_admin
DBUSR_PU=pu_pete
DBUSR_PWD=Oracle123
DBUSR_SYS=sys
DBUSR_SYSTEM=system
DBUSR_TSDP=tsdp_labs
DBUSR_TSDPADMIN=tsdp_admin
OKV_USRADM=kvrestadmin
负载完成后,就可以禁用捕获了:
./pa_disable_capture.sh
Task 2: Analyze the workload captured
接下来生成分析报告。
./pa_generate_report.sh
此脚本使用权限分析员pa_admin连接数据库,然后执行一个过程。
这个过程获取了在捕获期间标识为使用的所有特权和角色,并将其与授予每个用户的角色和特权进行比较。根据要处理的数据量,可能需要几分钟才能生成。
然后,可以查看报告了。结果就不秀了,很长:
./pa_review_report.sh
此脚本实际调用了pa_review_report.sql,实际查询的系统表为:
-
DBA_USED_PRIVS/DBA_UNUSED_PRIVS
-
DBA_USED_OBJPRIVS/DBA_UNUSED_OBJPRIVS
-
DBA_USED_PUBPRIVS
-
DBA_USED_SYSPRIVS/DBA_UNUSED_SYSPRIVS
-
DBA_USED_USERPRIVS/DBA_UNUSED_USERPRIVS
-
您可以查看捕获期间所有活动用户使用和未使用的所有权限(系统和对象)
-
此步骤对于更好地了解在此期间数据库上发生的情况至关重要,以确定您的用户是否正确使用他们自己的权限,或者您是否需要撤销一些非必要的权限以避免任何滥用风险,尤其是在身份盗窃期间
-
请注意,您可以根据需要多次运行此权限分析任务……事实上,强烈建议尽可能多地执行此操作,以始终控制用户的活动权限并避免潜在攻击者的任何权限提升尝试
Task 3: (Optional) Drop the capture
./pa_drop_capture.sh
其实就是执行一个过程。
Appendix: About the Product
下面这些文字的描述大部分来自Oracle Docs.
权限分析通过帮助您实施数据库角色和权限的最低权限最佳实践来提高应用程序和数据库操作的安全性。
权限分析在 Oracle 数据库内核中运行,通过识别已使用和未使用的权限来实施最小权限模型,有助于减少用户、工具和应用程序帐户的攻击面。
权限分析动态捕获数据库用户和应用程序使用的权限。特权分析的使用有助于快速有效地实施最低特权准则。在最小权限模型中,用户只被授予他们完成工作所需的权限和访问权限。通常,即使用户执行不同的任务,用户都被授予相同的一组强大的权限。如果没有权限分析,找出每个用户必须拥有的权限可能是一项艰巨的工作,并且在许多情况下,即使用户有不同的任务,他们最终也可能会获得一些共同的权限集。即使在管理特权的组织中,用户也往往会随着时间的推移积累特权,并且很少会失去任何特权。职责分离将单个流程分解为不同用户的不同任务。最低权限强制执行分离,因此用户只能执行所需的任务。职责分离的执行有利于内部控制,但也降低了恶意用户窃取特权凭据的风险。
权限分析捕获数据库用户和应用程序在运行时使用的权限,并将其发现写入您可以查询的数据字典视图。如果您的应用程序包含定义者权限和调用者权限过程,则权限分析会捕获编译和执行过程所需的权限,即使该过程是在创建和启用权限捕获之前编译的。(其中有个概念,即对于存储过程的definer’s rights and invoker’s rights)
您可以创建不同类型的权限分析策略来实现特定目标:
- 基于角色的权限使用捕获
您必须提供角色列表。 如果在数据库会话中启用了列表中的角色,则将捕获会话使用的权限。 您可以捕获以下类型角色的权限使用:Oracle 默认角色、用户创建的角色、基于代码的访问控制 (CBAC) 角色和安全应用程序角色。 - 基于上下文的权限使用捕获
您必须仅使用 SYS_CONTEXT 函数指定布尔表达式。 如果条件评估为 TRUE,则将捕获使用的权限。 此方法可用于通过在 SYS_CONTEXT 中指定用户来捕获数据库用户使用的权限和角色。 - 基于角色和上下文的权限使用捕获
您必须提供已启用的角色列表和条件的 SYS_CONTEXT 布尔表达式。 当在会话中启用这些角色中的任何一个并且满足给定的上下文条件时,特权分析就会开始捕获特权使用。 - 数据库范围的权限捕获
如果您未在权限分析策略中指定任何类型,则将捕获数据库中使用的权限,但用户 SYS 的权限除外。 (这也称为无条件分析,因为它是在没有任何条件的情况下开启的。)
使用权限分析的好处
- 查找不必要的授予权限
- 实施最小权限最佳实践:访问数据库的帐户的权限应限制为应用程序或用户严格要求的权限
- 开发安全应用程序:在应用程序开发阶段,一些管理员可能会授予应用程序开发人员许多强大的系统权限和角色
- 您可以在多租户环境中创建和使用权限分析策略
- 可用于捕获已对预编译的数据库对象(PL/SQL 包、过程、函数、视图、触发器以及 Java 类和数据)执行的权限
Want to Learn More?
Acknowledgements
本实验的作者为Database Security的PM:Hakim Loumi,贡献者为Rene Fontcha。
以上是关于Oracle LiveLabs实验:DB Security - Privilege Analysis的主要内容,如果未能解决你的问题,请参考以下文章
Oracle LiveLabs实验:DB Security - ASO (Data Redaction)
Oracle LiveLabs实验:DB Security - Audit Vault and DB Firewall
Oracle LiveLabs实验:DB Security - Native Network Encryption (NNE)
Oracle LiveLabs实验:DB Security - Database Vault