活动介绍

Oracle数据库安全与审计指南

立即解锁
发布时间: 2025-08-21 02:09:19 阅读量: 2 订阅数: 6
# Oracle数据库安全与审计指南 ## 1. 外部身份验证 外部身份验证意味着用户无需在数据库中使用密码,Oracle会查看操作系统(OS),并将用户名(去掉OPS$前缀)与操作系统上的用户进行匹配。Oracle假定,由于用户已登录到操作系统,因此该用户已通过身份验证。可以通过修改Oracle参数OS_AUTHEN_PREFIX来更改这个前缀OPS$。 在为用户设置所有必要的权限后(后续会详细介绍),用户可以从操作系统命令行无密码登录: ```sql <sqlplus /> ``` ## 2. 权限授予 创建用户后,需要决定该用户在数据库中可以执行哪些操作。通常希望用户能够登录,但可能需要限制用户执行以下任务的权限: - 访问特定数据 - 启动和停止数据库 - 创建表、索引和视图 - 删除数据 - 执行备份 通过权限来确定用户可以执行的操作。数据库有两种类型的权限: - **系统权限**:控制用户在数据库中可以执行的操作。例如,能否创建表、创建用户和删除表空间等。这些权限主要用于添加或更改数据库中的结构。 - **对象权限**:控制用户如何访问数据库中的实际数据。例如,用户可以查看、更改或删除哪些数据。这些权限主要适用于表或视图中的行。 使用GRANT和REVOKE命令来管理所有权限。从命令名称可以很清楚地看出哪个是授予权限,哪个是撤销权限。不过,命令的格式取决于权限的类型。例如,授予权限时使用GRANT TO,撤销权限时使用REVOKE FROM。 ### 2.1 授予和撤销系统权限 系统权限是任何用户首先需要的权限。实际上有数百种系统权限,这里列出一些常见的系统权限,这些权限可以满足用户约90%的访问需求。 在用户对数据库进行任何操作之前,需要能够连接到数据库。CREATE SESSION权限允许用户访问数据库。没有这个权限,其他权限都没有意义。 #### 2.1.1 授予CREATE SESSION权限给用户DTITILAH的步骤: 1. 以SYSTEM用户身份登录到数据库。 2. 输入以下命令: ```sql <GRANT CREATE SESSION TO dtitilah;> ``` 你会看到以下信息,表示DTITILAH可以连接到数据库: ``` Grant succeeded. ``` #### 2.1.2 如果用户DTITILAH的密码已泄露,撤销其CREATE SESSION权限的步骤: 1. 以SYSTEM用户身份登录到数据库。 2. 输入以下命令: ```sql <REVOKE CREATE SESSION FROM dtitilah;> ``` 你会看到以下信息: ``` Revoke succeeded. ``` 当该用户尝试连接时,会看到以下错误信息: ``` ERROR: ORA-01045: user DTITILAH lacks CREATE SESSION privilege; logon denied ``` 3. 找出密码泄露的原因,解决安全漏洞。 4. 按照前面的步骤重新授予该权限,处理将恢复正常。 用户可能还拥有以下系统权限,允许他们在数据库中创建对象: - RESUMABLE:允许作业在遇到空间限制时暂停和恢复。 - FLASHBACK ARCHIVE:允许用户从过去检索数据。 - CREATE JOB:允许用户创建可以在Oracle调度程序中运行的作业。 - CREATE SYNONYM:允许用户为对象创建别名,以便更方便地访问。 以下权限通常适用于开发人员: - CREATE TABLE - CREATE VIEW - CREATE SEQUENCE - CREATE PROCEDURE - CREATE TRIGGER 数据库管理员(DBA)通常拥有以下权限: - CREATE ANY TABLE:在任何用户的模式中创建表。 - DROP ANY TABLE:从任何用户的模式中删除表。 - CREATE TABLESPACE:创建表空间存储区域。 - ALTER USER:更改用户特征。 - DROP USER:删除用户。 - ALTER SYSTEM:更改系统操作参数。 - GRANT ANY OBJECT:允许被授权者管理数据库中任何对象的任何对象权限,非常强大! WITH ADMIN OPTION是与系统权限相关的另一个功能。在授予系统权限时可以使用此选项,允许用户将该权限授予其他人。例如,假设你聘请了一位新的DBA,用户名为RPLEW。你希望用户MJAUST具有CREATE SESSION权限连接到数据库,同时也希望他能够将该权限授予其他人。 #### 2.1.3 授予系统权限WITH ADMIN OPTION的步骤: 1. 以SYSTEM用户身份登录到SQL*Plus。 2. 输入以下命令: ```sql <GRANT CREATE SESSION TO maust WITH ADMIN OPTION;> ``` 你会看到以下信息: ``` Grant succeeded. ``` 现在MAUST也可以管理CREATE SESSION权限了。 如果撤销了WITH ADMIN OPTION,由该用户授予此权限的所有用户仍然保留这些权限。这与WITH GRANT OPTION不同,它不是级联撤销。 ### 2.2 对象权限 对象权限控制数据的访问和修改。 #### 2.2.1 理解对象权限 只能授予八种对象权限: - SELECT:允许接收者从表中选择行。 - INSERT:允许接收者向表中插入行。 - UPDATE:允许接收者更改表中的现有行。 - DELETE:允许接收者从表中删除现有行。 - REFERENCES:允许用户在其他用户的表上创建视图或外键。 - INDEX:允许用户在其他用户的表上创建索引。 - ALTER:允许用户更改或添加其他用户表的结构。 - EXECUTE:允许接收者运行其他用户拥有的过程。 需要记住以下关于对象权限的要点: - 当你拥有一个对象时,你自动拥有该对象的所有权限。也就是说,你不需要被授予对自己表的SELECT权限。 - 不能从对象的所有者那里撤销对象权限。 - 拥有对象的模式最终控制该对象的权限。 - 未经明确许可,除了可能拥有系统权限GRANT ANY OBJECT的用户(通常是DBA)之外,没有人可以管理该对象的权限。 - 除了授予权限的人或拥有GRANT ANY OBJECT权限的人之外,任何人都不能撤销对象权限。即使是对象的所有者,除非她是授予者,否则也不能撤销自己对象上的权限。 #### 2.2.2 管理对象权限 以下示例中,用户MAGGIE、JASON和MATT在一个包含食谱的数据库中工作。此示例使用对象权限允许他们查看和添加更多食谱。 1. MAGGIE登录。 2. MAGGIE输入以下命令: ```sql <GRANT SELECT ON vegetarian_recipes TO jason;> ``` 这允许用户MAGGIE允许JASON从她的VEGETARIAN_RECIPES表中选择数据。她会看到以下信息: ``` Grant succeeded. ``` 与系统权限的WITH ADMIN OPTION类似,对象权限有一个叫做WITH GRANT OPTION的功能。 - MAGGIE可以允许JASON向她的表中插入数据,并允许JASON将该权限传递给其他人: ```sql <GRANT SELECT ON vegetarian_recipes TO jason WITH GRANT OPTION;> ``` - JASON可以将INSERT权限传递给MATT: ```sql <GRANT SELECT ON maggie.vegetarian_recipes TO matt;> ``` - MAGGIE不能直接从MATT撤销INSERT权限,她必须要求JASON这样做。 - 如果JASON拒绝撤销MATT的INSERT权限,MAGGIE可以从JASON撤销该权限,从而也撤销MATT的权限。这称为级联撤销,与系统权限不同。 - MAGGIE可以从JASON撤销INSERT权限,同时自动撤销MATT的权限: ```sql <REVOKE INSERT ON vegetarian_recipes FROM jason;> ``` 她会看到以下信息: ``` Revoke succeeded. ``` 如果用户想查看自己授予了哪些对象权限,可以查询视图USER_TAB_PRIVS。例如,MAGGIE可以查看JASON在她的对象上还拥有哪些权限: ```sql <SELECT * FROM USER_TAB_PRIVS WHERE GRANTEE = ‘JASON’;> ``` 她可能会看到类似以下的信息: | GRANTEE | OWNER | TABLE_NAME | GRANTOR | PRIVILEGE | | ---- | ---- | ---- | ---- | ---- | | JASON | MAGGIE | VEGETARIAN_RECIPES | MAGGIE | SELECT | ### 2.3 创建角色 可以使用数据库角色对权限进行分组,以便于管理。对象所有者可以创建一个角色并授予该角色,而不是分别向一个或多个具有相似工作职责的用户授予权限。 例如,假设你是一家大型零售商的DBA。每天都会招聘新的店员。应用程序允许他们执行多项任务,包括: - 向SALES表中插入数据 - 更新INVENTORY表 - 从ORDERS表中删除数据 #### 2.3.1 使用角色授予权限的步骤: 1. 以HR用户身份登录到SQL*Plus。 2. 输入以下命令: ```sql <CREATE ROLE sales_clerk;> ``` 这个角色名为SALES_CLERK,你会看到以下信息: ``` Role created. ``` 3. 向角色授予系统和对象权限: ```sql <GRANT INSERT ON sales TO sales_clerk;> <GRANT UPDATE ON inventory TO sales_clerk;> <GRANT DELETE ON orders TO sales_clerk;> ``` 以此类推。 4. 将角色授予员工: ```sql <GRANT sales_clerk TO rob, nora, dan;> ``` 角色被授予新店员ROB、NORA和DAN。你会看到以下信息: ``` Grant Succeeded. ``` 角色的另一个优点是动态权限管理,即向角色添加或删除权限会立即影响所有拥有该角色的用户。 所有用户在特定时间段(例如几个月)内需要能够从INVENTORY表中选择数据。此时,不必向可能数百名店员分别授予该权限,只需授予角色,他们将自动拥有该权限。这使得权限管理更加容易。 ### 2.4 Oracle提供的角色 数据库安装时会自带一些已经创建和设置好
corwn 最低0.47元/天 解锁专栏
赠100次下载
继续阅读 点击查看下一篇
profit 400次 会员资源下载次数
profit 300万+ 优质博客文章
profit 1000万+ 优质下载资源
profit 1000万+ 优质文库回答
复制全文

相关推荐

LI_李波

资深数据库专家
北理工计算机硕士,曾在一家全球领先的互联网巨头公司担任数据库工程师,负责设计、优化和维护公司核心数据库系统,在大规模数据处理和数据库系统架构设计方面颇有造诣。
最低0.47元/天 解锁专栏
赠100次下载
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
千万级 优质文库回答免费看

最新推荐

【管理策略探讨】:掌握ISO 8608标准在路面不平度控制中的关键

![【管理策略探讨】:掌握ISO 8608标准在路面不平度控制中的关键](https://assets.isu.pub/document-structure/221120190714-fc57240e57aae44b8ba910280e02df35/v1/a6d0e4888ce5e1ea00b7cdc2d1b3d5bf.jpeg) # 摘要 本文全面概述了ISO 8608标准及其在路面不平度测量与管理中的重要性。通过深入讨论路面不平度的定义、分类、测量技术以及数据处理方法,本文强调了该标准在确保路面质量控制和提高车辆行驶安全性方面的作用。文章还分析了ISO 8608标准在路面设计、养护和管理

FRET实验的高通量分析:自动化处理与高精度数据解读的十个技巧

![FRET实验的高通量分析:自动化处理与高精度数据解读的十个技巧](https://www.bmglabtech.com/hubfs/1_Webseite/5_Resources/Blogs/kinase-assays-fig4.webp) # 摘要 FRET( Förster共振能量转移)实验是生物物理和生物化学研究中一种广泛应用的技术,尤其在高通量分析中具有重要地位。本文从FRET实验的背景讲起,详细探讨了高通量自动化处理技巧、高精度数据解读的理论与实践,以及高级自动化与数据分析方法。文中分析了高通量实验设计、自动化工具的应用、数据采集和管理,以及解读数据分析的关键技术。进阶内容包括机

ESP8266小电视性能测试与调优秘籍:稳定运行的关键步骤(专家版)

![ESP8266小电视性能测试与调优秘籍:稳定运行的关键步骤(专家版)](https://www.espboards.dev/img/lFyodylsbP-900.png) # 摘要 本文全面探讨了ESP8266小电视的基本概念、原理、性能测试、问题诊断与解决以及性能调优技巧。首先,介绍了ESP8266小电视的基本概念和工作原理,随后阐述了性能测试的理论基础和实际测试方法,包括测试环境的搭建和性能测试结果的分析。文章第三章重点描述了性能问题的诊断方法和常见问题的解决策略,包括内存泄漏和网络延迟的优化。在第四章中,详细讨论了性能调优的理论和实践,包括软件和硬件优化技巧。最后,第五章着重探讨了

SSD加密技术:确保数据安全的关键实现

![固态硬盘SSD原理详细介绍,固态硬盘原理详解,C,C++源码.zip](https://pansci.asia/wp-content/uploads/2022/11/%E5%9C%96%E8%A7%A3%E5%8D%8A%E5%B0%8E%E9%AB%94%EF%BC%9A%E5%BE%9E%E8%A8%AD%E8%A8%88%E3%80%81%E8%A3%BD%E7%A8%8B%E3%80%81%E6%87%89%E7%94%A8%E4%B8%80%E7%AA%BA%E7%94%A2%E6%A5%AD%E7%8F%BE%E6%B3%81%E8%88%87%E5%B1%95%E6%9C%9

【智能调度系统的构建】:基于矢量数据的地铁调度优化方案,效率提升50%

# 摘要 随着城市地铁系统的迅速发展,智能调度系统成为提升地铁运营效率与安全的关键技术。本文首先概述了智能调度系统的概念及其在地铁调度中的重要性。随后,文章深入探讨了矢量数据在地铁调度中的应用及其挑战,并回顾了传统调度算法,同时提出矢量数据驱动下的调度算法创新。在方法论章节中,本文讨论了数据收集、处理、调度算法设计与实现以及模拟测试与验证的方法。在实践应用部分,文章分析了智能调度系统的部署、运行和优化案例,并探讨了系统面临的挑战与应对策略。最后,本文展望了人工智能、大数据技术与边缘计算在智能调度系统中的应用前景,并对未来研究方向进行了展望。 # 关键字 智能调度系统;矢量数据;调度算法;数据

模块化设计策略:NE5532运放模块设计效率与可维护性提升指南

# 摘要 NE5532运放模块在电子设计领域中因其出色的性能而广泛应用。本文首先概述了NE5532运放模块的基本概念,并深入探讨模块化设计的理论基础和实践应用。通过对模块化设计的流程、电路优化、测试与验证进行详细分析,本文展示了如何在设计阶段提升NE5532运放模块的性能和可靠性。同时,文章还讨论了如何通过维护性提升策略保持模块的良好运行状态。最后,通过案例分析,总结了模块设计与应用中的成功经验和教训,并对未来的发展趋势进行了展望,提出了应对策略。本文旨在为电子设计师提供有关NE5532运放模块化设计的全面指导,促进其在未来的电子产品中得到更好的应用。 # 关键字 NE5532运放模块;模块

【OGG跨平台数据同步】:Oracle 11g环境下的跨平台同步绝技

# 摘要 本文详细介绍了跨平台数据同步技术,并以Oracle GoldenGate(OGG)为例进行深入探讨。首先,概述了Oracle 11g下的数据同步基础,包括数据同步的定义、重要性以及Oracle 11g支持的数据同步类型。随后,介绍了Oracle 11g的数据复制技术,并详细分析了OGG的软件架构和核心组件。在实战演练章节,文章指导读者完成单向和双向数据同步的配置与实施,并提供了常见问题的故障排除方法。最后,重点讨论了OGG同步性能优化策略、日常管理与监控,以及在不同平台应用的案例研究,旨在提升数据同步效率,确保数据一致性及系统的稳定性。 # 关键字 数据同步;Oracle Gold

【Swing资源管理】:避免内存泄漏的实用技巧

![【Swing资源管理】:避免内存泄漏的实用技巧](https://opengraph.githubassets.com/a6710ff2c86c331c13363554d00aab3dd898536c00e1344fa99ef3cd2923e717/daggerok/findbugs-example) # 摘要 Swing资源管理对于提高Java桌面应用程序的性能和稳定性至关重要。本文首先阐述了Swing资源管理的重要性,紧接着深入探讨了内存泄漏的成因和原理,包括组件和事件模型以及不恰当的事件监听器和长期引用所导致的问题。本文还对JVM的垃圾回收机制进行了概述,介绍了Swing内存泄漏检

英语单词助手背后的技术:C#语言特性详解

# 摘要 C#语言是一种现代化的、面向对象的编程语言,它为开发者提供了强大的数据类型支持和丰富的控制流特性。本文首先介绍了C#的基本数据类型、复杂数据类型以及变量的作用域和生命周期,然后探讨了C#的控制流语句、函数定义和异常处理。文章深入分析了C#面向对象编程的核心概念,如类、继承、多态以及高级特性如属性、索引器和事件。此外,还阐述了泛型编程、委托、事件、Lambda表达式和LINQ查询表达式的高级特性。最后,结合实际应用,本文展示了C#在开发英语单词助手中的应用实践,涵盖了设计思想、核心功能实现以及优化与维护策略。 # 关键字 C#;数据类型;控制流;面向对象编程;泛型;异常处理;LINQ

CUDA与AI:结合深度学习框架进行GPU编程的深度探索

![CUDA与AI:结合深度学习框架进行GPU编程的深度探索](https://media.licdn.com/dms/image/D5612AQG7Z5bEh7qItw/article-cover_image-shrink_600_2000/0/1690856674900?e=2147483647&v=beta&t=9Zg4MqIqf3NmEbTua7uuIAOk2csYGcYj9hTP7G5pmKk) # 摘要 本文介绍了CUDA在人工智能(AI)领域的应用与深度学习框架的集成。首先,概述了CUDA编程基础,包括其架构、内存模型以及线程组织管理。接着,探讨了深度学习框架的基本概念及其GP