Oracle-安全管理

让石头裂开的不是最后一击,而是前面的99次击打
文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。

在这里插入图片描述


安全性对于数据库来说是重中之重,是衡量一个数据库产品的重要指标。例如银行的数据库数据、国家的军事数据等都是非常重要的,必须完善保护,防止被非法获取。这篇文章将重点介绍与oracle数据库安全管理相关的技术,包括用户管理、权限管理和角色管理。

一、用户管理

在安装oracle数据库的时候,默认的用户有sys、system、scott和sh。其中sys是超级管理员,具有最高权限,可以启动、修改和关闭数据库;system是普通管理员,不能启动和关闭数据库,但可以完成创建用户等管理工作;scott是普通用户;sh是大数据用户。
每一连接到数据库的用户必须是系统的合法用户。
1、创建新用户
我们必须以管理员身份登录才能创建新的用户,其基本语法格式如下所示。

create user user_name identified by password;

其中user_name为新用户的用户名,password为口令。该语法还有很多参数,这里就不一一详述,用户如果需要可以查找帮助文件。

创建新用户user1,口令为123456

create user user1 identified by 123456;

2、用户锁定与解锁
用户锁定是指用户暂时无法登录数据库,但不影响该用户的所有数据库对象的正常使用,当用户账号解锁后,用户可以和以前一样正常连接和登录数据库。
锁定的命令如下。

alter user user_name account lock;

解锁的命令如下。

alter user user_name account unlock;

3、修改用户账号信息
用户创建完成后,管理员可以对用户进行修改,包括修改用户口令、改变用户表空间等,基本语法如下所示。

扫描二维码关注公众号,回复: 14364281 查看本文章
alter user user_name identified by password;

将user1的口令修改为654321
命令如下所示。

alter user user1 identified by 654321;

4、删除用户账户
当一个数据库用户不再使用的时候,可以将该用户以及其拥有的所有对象都删除。基本语法如下所示。

drop user user_name [cascade]

如果该用户下面没有任何数据对象,可以直接使用drop user命令删除,如果该用户下面有对象,必须使用cascade参数。

删除用户user1

drop user user1;

二、权限管理

使用我们新创建的用户登录会报错,是因为每一个新创建的用户本身不具备任何的权限,而在oracle数据库里面,如果用户想要登录,则必须具有创建session的权限。
事实上,oracle数据库使用权限来控制用户对数据的访问和用户所能执行的操作。权限就是执行特定类型的sql命令或访问其他用户对象的权利。用户在数据库中可以执行哪些操作,以及可以对哪些对象进行操作,完全取决于该用户所拥有的权限。在oracle数据库中,用户权限分为两种。
系统权限:指系统级控制数据库的存取和使用的机制,即执行某种sql语句的能力。例如,能够启动或者停止数据库,能够创建、删除或者修改数据库对象(表,索引,视图等)。在oracle11g数据库中,有200多种系统权限。
对象权限:对某个特定的数据库对象执行某种操作的权限。例如特定表的插入、删除、修改、查询的权限。在oracle11g数据库中,有9中类型的对象权限。

1、系统权限的授予

grant <系统权限> to <用户名>

授予用户user1创建表的权限。

grant create session to user1;

2、系统权限的收回

revoke <系统权限> from <用户名>

撤销用户user1创建表的权限

revoke create table from user1;

撤销用户user1登录数据库的权限

revoke create session from user1;

3、用户系统权限的查询
与系统权限有关的数据字典是dba_sys_privs(所有系统权限)和user_sys_privs(用户拥有的系统权限)。可以使用查询命令在这几个数据字典中查询。

查看当前用户具有的系统权限

select * from user_sys_privs;

4、对象权限的授予
基本语法和系统权限的授予一样,如下所示。

grant <对象权限> on <对象> to <用户名>

授予user1用户对scott用户下数据表emp的select,insert和delete的权限。

grant select,insert,delete on scott.emp to user1;

5、对象权限的回收
基本语法如下所示

revoke <对象权限> on <对象> from <用户名>

回收user1用户对scott用户下数据表emp的select和delete的权限。

revoke select,delete on scott.emp from user1;

三、角色管理

oracle的权限有很多,在管理的时候如果要逐个授予,既费时又费力,为了简化管理,引入了角色的概念。所谓角色就是一系列相关权限的集合,即将所需要的权限先授予给角色,在需要的时候再将角色授予给用户,这样用户就得到了该角色所具有的所有权限,从而减少了权限的管理。
1、角色的定义
oracle数据库创建的时候系统自动创建一些常用的角色,这些角色已经由系统授予了相应的一些权限,管理员可以直接将这些角色授权给不同用户。这些常用的角色如下表所示。
dba:该角色包含所有系统的权限
connect:该角色向用户提供登录和执行基本函数的能力,可以具有创建表、视图、序列等的权限
resource:该角色具有创建过程、触发器、表、序列等的权限。

2、角色创建
基本语法如下

create role <角色名称> identified by <口令>

创建角色clerk,口令为123

create role clerk identified by 123;

3、为角色分配权限
角色创建后,既可以授予系统权限也可以授予对象权限,授予方法同上节介绍的授予用户权限的语法相同。

为角色clerk授予对scott用户下数据表emp的select,insert和delete的权限

grant select,insert,delete on scott.emp to clerk;

4、将角色授予用户
基本语法如下所示。

grant <角色名> to <用户名>

将clerk角色授予用户user1

grant clerk to user1;

5、角色权限的回收
把角色clerk对scott用户下数据表emp的select和delete的权限回收。

revoke select,delete on scott.emp from clerk;

6、角色信息查询
我们可以使用数据字典dba_role_privs、user_role_privs、roles_sys_privs等获取数据库角色及其权限信息。

查询角色clerk所拥有的系统权限信息。

select * from roles_sys_privs where role = 'clerk';

查询用户所拥有角色的信息

select * from dba_role_privs;

四、总结

这里的相关内容还没有整理完毕,文章后面持续更新,建议收藏。

文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。

可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。

猜你喜欢

转载自blog.csdn.net/weixin_44096133/article/details/125648051