阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle数据库安全管理

391次阅读
没有评论

共计 8228 个字符,预计需要花费 21 分钟才能阅读完成。

1. 数据库安全控制策略概述

安全性是评估一个数据库的重要指标,Oracle 数据库从 3 个层次上采取安全控制策略:

  • 系统安全性。在系统级别上控制数据库的存取和使用机制,包括有效的用户名与口令、是否可以连接数据库、用户可以进行哪些系统操作等;
  • 数据安全性。在数据库模式对象级别上控制数据库的存取和使用机制。用户要对某个模式对象进行操作,必须要有操作的权限;
  • 网络安全性。Oracle 通过分发 Wallet、数字证书、SSL 安全套接字和数据密钥等办法来保证数据库的网络传输安全性。

    数据库的安全可以从以下几个方面进行管理:

  • 用户账户管理
  • 用户身份认证方式管理。Oracle 提供多种级别的数据库用户身份认证方式,包括系统、数据库、网络 3 种类型的身份认证方式
  • 权限和角色管理。通过管理权限和角色,限制用户对数据库的访问和操作
  • 数据加密管理。通过数据加密来保证网络传输的安全性
  • 表空间设置和配额。通过设置用户的存储表空间、临时表空间以及用户在表空间上使用的配额,可以有效控制用户对数据库存储空间的使用
  • 用户资源限制。通过概要文件设置,可以限制用户对数据库资源的使用

数据库审计。监视和记录数据库中的活动,包括审计所有的 SQL 语句、审计 SQL 权限、审计模式对象以及审计网络活动等。

接下来将对数据库安全管理方法进行一 一讨论。

 2. 用户管理

用户是数据库的使用者和管理者,Oracle 通过设置用户及安全属性来控制用户对数据库的访问。Oracle 的用户分两类,一类是创建数据库时系统预定义的用户,一类是根据应用由 DBA 创建的用户。

2.1 预定义用户

在 oracle 创建时创建的用户,我们称为预定义用户,预定义用户根据作用不同分为 3 类:

 

  • 管理员用户:包括 SYS,SYSTEM,SYSMAN,DBSNMP 等。SYS 是数据库中拥有最高权限的管理员,可以启动、关闭、修改数据库,拥有数据字典;SYSTEM 是一个辅助的数据库管理员,不能启动和关闭数据库,但是可以进行一些管理工作,如创建和删除用户;SYSMAN 是 OEM 的管理员,可以对 OEM 进行配置和管理;DBSNMP 用户是 OEM 代理,用来监视数据库的。以上这些用户都不能删除。
  • 示例方案用户:在安装 Oracle 或使用 odbc 创建数据库时,如果选择了”示例方案”,会创建一些用户,在这些用户对应的 schema 中,有产生一些数据库应用案例。这些用户包括:BI、HR、OE、PM、IX、SH 等。默认情况下,这些用户均为锁定状态,口令过期。
  • 内置用户:有一些 Oracle 特性或 Oracle 组件需要自己单独的模式,因此为他们创建了一些内置用户。如 APEX_PUBLIC_USER、DIP 等。默认情况下,这些用户均为锁定状态,口令过期。

此外还有 2 个特殊的用户 SCOTT 和 PUBLIC,SCOTT 是一个用于测试网络连接的用户,PUBLIC 实际是一个用户组,数据库中任何用户都属于该用户组,如果要为数据库中的全部用户授予某种权限,只需要对 PUBLIC 授权即可。

2.2 用户属性

在创建用户时,必须使用安全属性对用户进行限制,用户的安全属性主要包括:

  • 用户名:在同一个数据库中,用户名是唯一的,并且不能与角色名相同;
  • 用户身份认证:Oracle 采用多种方式进行身份认证,如数据库认证、操作系统认证、网络认证等;
  • 默认表空间:用户创建数据库对象时,如果没有显式指明存储在哪个表空间中,系统会自动将该数据库对象存储在当前用户的默认表空间,在 Oracle 11g 中,如果没有为用户指定默认表空间,则系统将数据库的默认表空间作为用户的默认表空间;
  • 临时表空间:临时表空间分配与默认表空间相似,如果不显式指定,系统会将数据库的临时表空间作为用户的临时表空间;
  • 表空间配额:表空间配额限制用户在永久表空间中可以使用的存储空间的大小,默认新建用户在表空间都没有配额,可以为每个用户在表空间上指定配额,也可授予用户 UMLIMITED TABLESPACE 系统权限,使用户在表空间的配额上不受限制。不需要分配临时表空间的配额;
  • 概要文件:每个用户必须具有一个概要文件,从会话级和调用级两个层次限制用户对数据库系统资源的使用,同时设置用户的口令管理策略。如果没有为用户指定概要文件,Oracle 将自动为用户指定 DEFAULT 概要文件;
  • 设置用户的默认角色
  • 账户状态:创建用户时,可以设定用户的初始状态,包括口令是否过期和账户是否锁定等。

可以通过数据字典 dba_users 查询各个用户的属性(这里只截取了前面几列):

 
SQL> select * from dba_users;                                                                                                           
                                                                                                                                        
USERNAME        USER_ID PASSWORD   ACCOUNT_STATUS    LOCK_DATE   EXPIRY_DATE DEFAULT_TABLESPACE  TEMPORARY_TABLESPACE   CREATED         
------------ ---------- ---------- ----------------- ----------- ----------- ------------------- ---------------------- -----------     
SCOTT                84            OPEN                          2017/8/20 0 USERS               TEMP                   2009/8/15 0     
LIJIAMAN             91            OPEN                          2017/10/31  USERS               TEMP                   2017/2/25 1     
ORACLE_OCM           21            EXPIRED & LOCKED  2009/8/15 0 2009/8/15 0 USERS               TEMP                   2009/8/15 0     
XS$NULL      2147483638            EXPIRED & LOCKED  2009/8/15 0 2009/8/15 0 USERS               TEMP                   2009/8/15 0

2.3 创建用户

创建用户语法如下:

CREATE USER user_name  IDENTIFIED
[BY password] |
[EXTERNALLY [AS‘certificate_DN’|‘kerberos_principal_name’] ] |
[GLOBALLY [AS ‘directory_DN’] ]
[DEFAULT TABLESPACE tablespace_name]
[TEMPORARY TABLESPACE tablespace_name | tablespace_group_name]
[QUOTA  n K | M | UNLIMITED ON tablespace_name]
[PROFILE profile_name]
[PASSWORD EXPIRE]
[ACCOUNT LOCK | UNLOCK];

其中:

-user_name:新创建的用户的名称;

-IDENTIFIED:指明用户认证方式;

-BY password:采用数据库身份认证,password 为用户密码;

-EXTERNALLY:指定用户采用外部认证,其中:①AS‘certificate_DN’指定用户采用 ssl 外部身份认证;②AS‘kerberos_principal_name’指定用户采用 kerberos 外部身份认证;

-GLOBALLY AS‘directory_DN’:指定用户采用全局身份认证;

-DEFAULT TABLESPACE tablespace_name:设置用户的默认表空间;

-TEMPORARY TABLESPACE tablespace_name | tablespace_group_name:设置用户临时表空间 / 表空间组;

-QUOTA n K|M|UNLIMITED ON tablespace_name:指定用户在特定表空间上的配额;

-PROFILE profile_name:为用户指定概要文件;

-PASSWORD EXPIRE:指定用户密码到期,用户首次登陆时系统会要求改密码;

-ACCOUNT LOCK|UNLOCK:指定用户为锁定 / 非锁定状态,默认不锁定。

2.4 修改用户

修改用户采用 ALTER 实现,语句与 CREATE USER 基本相同,唯一不同的是多了 DEFAULT ROLE 选项,用于指定用户的默认角色:

ALTER USER user_name  
...
[DEFAULT ROLE [role_list] | [ALL [EXCEPT role_list]] | NONE ]
...
;
其中:

-role_list:指定角色列表;

-ALL:指定全部角色;

-EXCEPT role_list:除了 role_list 指定的角色之外的角色;

-NONE:不指定角色 .

2.5 锁定与解锁用户

当用户被锁定后,就不能登录数据库了,但是用户的所有数据库对象仍然可以继续使用,当用户解锁后,用户就可以正常连接到数据库。

在 Oracle 中,当账户不再使用时,就可以将其锁定。通常,对于不用的账户,可以进行锁定,而不是删除。

例子,锁定与解锁 scott 用户:

 
/*使用 SYS 锁定 SCOTT 账户,锁定之后无法在登录*/
SQL> show user;
USER 为 "SYS"
SQL> ALTER USER SCOTT ACCOUNT LOCK;

用户已更改。SQL> conn scott/tiger
ERROR:
ORA-28000: the account is locked


警告: 您不再连接到 ORACLE。/*解锁 SCOTT 账户,解锁后登录到数据库*/
SQL> conn sys as sysdba
输入口令:
已连接。SQL> ALTER USER SCOTT ACCOUNT UNLOCK;

用户已更改。SQL> conn scott/tiger;
已连接。

2.6 删除用户

使用 drop user 删除用户,基本语法为:

DROP USER user_name [CASCADE];

如果用户拥有数据库对象,则必须使用 CASCADE 选项,Oracle 先删除用户的数据库对象,再删除该用户。

2.7 查询用户信息

在 Oracle 中,包含用户信息的数据字典如下:

视图名称 说明
DBA_USERS 包含数据库的所有用户的详细信息(15 项)
ALL_USERS 包含数据库所有用户的用户名、用户 ID 和用户创建时间(3 项)
USER_USERS 包含当前用户的详细信息(10 项)
DBA_TS_QUOTAS 包含所有用户的表空间配额信息
USER_TS_QUOTAS 包含当前用户的表空间配额信息
V$SESSION 包含用户会话信息
V$SESSTAT 包含用户会话统计信息

3. 资源限制与口令管理

在数据库中,对用户的资源限制与用户口令管理是通过数据库概要文件(PROFILE)实现的,每个数据库用户必须具有一个概要文件,通常 DBA 将用户分为几种类型,为每种类型的用户单独创建一个概要文件。概要文件不是一个具体的文件,而是存储在 SYS 模式的几个表中的信息的集合。

3.1 资源限制

概要文件通过一系列资源管理参数,从会话级和调用级两个级别对用户使用资源进行限制。会话资源限制是对用户在一个会话过程中所能使用的资源进行限制,调用资源限制是对一条 SQL 语句在执行过程中所能使用的资源总量进行限制。资源限制的参数如下:

  • CPU 使用时间:在一个会话或调用过程中使用 CPU 的总量;
  • 逻辑读:在一个会话或一个调用过程中读取物理磁盘和逻辑内存数据块的总量;
  • 每个用户的并发会话数;
  • 用户连接数据库的最长时间;

下面是 scott 用户的资源限制信息:

Oracle 数据库安全管理

3.2 口令管理

oracle 概要文件用于数据库口令管理的主要参数如下:

  • FAILED_LOGIN_ATTEMPTS:限制用户失败次数,一旦达到失败次数,账户锁定;
  • PASSWORD_LOCK_TIME:用户登录失败后,账户锁定的时间长度;
  • PASSWORD_LIFE_TIME:用户口令的有效天数,达到设定天数后,口令过期,需要重新设置新的口令;

下图是 scott 用户的口令管理参数设置信息:

Oracle 数据库安全管理

3.3 查询概要文件信息

在 Oracle 11g 中,包含概要信息的数据字典如下:

视图名称 说明
DBA_USERS 包含数据库中所有用户属性信息,包括使用的概要文件(profile)
DBA_PROFILES 包含数据库中所有的概要文件及其资源设置、口令管理设置等信息
USER_PASSWORD_LIMITS 包含当前用户的概要文件的口令限制参数设置信息
USER_RESOURCE_LIMITS 包含当前用户的概要文件的资源限制参数设置信息
RESOURCE_COST 每个会话使用资源的统计信息

4. 权限管理

在 Oracle 数据库中,用户权限主要分为系统权限与对象权限两类。系统权限是指在数据库基本执行某些操作的权限,或针对某一类对象进行操作的权限,对象权限主要是针对数据库对象执行某些操作的权限,如对表的增删(删除数据)查改等。

4.1 系统权限

(4.1.1)系统权限概述

在 Oracle 11g 中,一共有 200 多项系统权限,可通过数据字典 system_privilege_map 获得所有的系统权限。

SQL> select * from system_privilege_map;                     
                                                             
PRIVILEGE NAME                                      PROPERTY
——– —————————————- ———-
        3 ALTER SYSTEM                                      0
        4 AUDIT SYSTEM                                      0
        5 CREATE SESSION                                    0
        6 ALTER SESSION                                    0
      …          …                                    …
208 rows selected

(4.1.2)系统权限的授予

授予用户系统权限的 SQL 语法为:

GRANT system_privilege_list | [ALL PRIVILEGES]

TO user_name_list | role_list | PUBLIC [WITH ADMIN OPTION];

其中:

-system_privilege_list:系统权限列表,以逗号分隔;

-ALL PRIVILEGES:所有系统权限;

-user_name_list:用户列表,以逗号分隔;

-role_list:角色列表,以逗号分隔;

-PUBLIC:给数据库中所有用户授权;

-WITH ADMIN OPTION:允许系统权限接收者再将权限授予其它用户

在授予用户系统权限时,需要注意:

  • 只有 DBA 用户才有 alter database;
  • 应用开发者一般需要拥有 create table、create view、create index 等系统权限;
  • 普通用户一般只需具有 create session 权限
  • 在授权用户时带有 with admin option 子句时,用户可以将获得的权限再授予其它用户。

(4.1.3)系统权限的回收

回收用户系统权限的 SQL 语法如下:

REVOKE system_privilege_list | [ALL PRIVILEGES]

FROM user_name_list | role_list | PUBLIC

回收用户系统权限需要注意以下 3 点:

  • 多个管理员授予同一个用户相同的权限,其中一个管理员回收其授予用户的系统权限,该用户将不再具有该系统权限;
  • 为了回收用户系统权限的传递性(授权时使用了 with admin option),须先回收该系统权限,在重新授予用户该权限;
  • 如果一个用户的权限具有传递性,并且给其它用户授权,那么该用户系统权限被收回后,其它用户的系统权限并不会受影响;

4.2 对象权限

对象权限是指对某个特定模式对象的操作权限。数据库模式对象所有者拥有该对象的所有对象权限,对象权限的管理实际上是对象所有者对其他用户操作该对象的权限管理。在 Oracle 数据库中,不同类型的对象具有不同的对象权限,而有的对象并没有对象权限,只能通过系统权限进行管理,如簇、索引、触发器、数据库链接等。

(1)对象权限的授予

在 Oracle 数据库中,用户可以直接访问同名 Schema 下的数据库对象,如果需要访问其它 Schema 下的数据库对象,就需要具有相应的对象权限。对象权限授予的 SQL 语法为:

GRANT object_privilege_list | ALL [PRIVILEGES] [ (column,...) ] 
ON [schema.]object 
TO user_name_list | role_list | PUBLIC [WITH GRANT OPTION];

其中:

-object_privilege_list:对象权限列表,以逗号分隔;

-ALL PRIVILEGES:全部权限;

-[schema.]object:待授权的对象;

-user_name_list:用户列表,以逗号分隔;

-role_list:角色列表,以逗号分隔;

-PUBLIC:所有用户

(2)对象权限的回收

回收对象权限的 SQL 语法为:

REVOKE object_privilege_list | ALL [PRIVILEGES]
ON [schema.]object
FROM user_name_list | role_list | PUBLIC [CASCADE CONSTRAINTS] | [FORCE];

其中:

-CASCADE CONSTRAINTS:当回收 REFERENCE 对象权限或回收 ALL PRIVILEGES,删除利用 REFERENCES 对象权限创建的外键约束;

-FORCE:当回收在表中被使用的用户自定义对象类型的 EXECUTE 权限时,必须指定 FORCE 关键字。

回收对象权限需要注意以下 3 点:

  • 多个管理员授予同一个用户相同的对象权限,一个管理员将该对象权限回收后,该用户不再具有该对象权限;
  • 为了回收用户对象权限的传递性,须先回收该对象权限,再重新赋予给用户该对象权限;
  • 如果一个用户的对象权限具有传递性,并且已经给其它用户授权,那么该用户的对象权限被回收后,其它用户的对象权限也将被收回。(值得注意的是,这一条与系统权限传递性的回收不相同)。

4.3 查询权限信息

视图名称 说明
DBA_SYS_PRIVS 包含所有 用户 角色 获得的系统权限信息
ALL_SYS_PRIVS 包含当前用户可见的全部 用户 角色 获得的系统权限信息
USER_SYS_PRIVS 当前用户获得的系统权限信息
DBA_TAB_PRIVS 包含所有 用户 角色 获得的对象权限信息
ALL_TAB_PRIVS 包含当前用户可见的全部 用户 角色 获得的对象权限信息
USER_TAB_PRIVS 当前用户获得的对象权限信息
DBA_COL_PRIVS 包含数据库中所有列对象的权限信息
ALL_COL_PRIVS 包含当前用户可见的所有列对象的权限信息
USER_COL_PRIVS 当前用户拥有的或授予其它用户的所有列对象的权限信息
SESSION_PRIVS 当前会话可以使用的所有权限信息

5. 角色管理

假如我们直接给每一个用户赋予权限,这将是一个巨大又麻烦的工作,同时也不方便 DBA 进行管理。通过采用角色,使得:

  • 权限管理更方便。将角色赋予多个用户,实现不同用户相同的授权。如果要修改这些用户的权限,只需修改角色即可;
  • 角色的权限可以激活和关闭。使得 DBA 可以方便的选择是否赋予用户某个角色;
  • 提高性能,使用角色减少了数据字典中授权记录的数量,通过关闭角色使得在语句执行过程中减少了权限的确认。

Oracle 数据库安全管理

                    图. 用户、角色、权限关系图

由于个人接触的数据库用户较少,没有单独创建角色,故角色的创建、修改、删除、激活、禁用、授予、回收不再一一讲述,只要知道如何查询角色信息即可。

在 Oracle 中,包含角色的数据字典如下:

视图名称 说明
DBA_ROLE_PRIVS 包含数据库中所有用户拥有的角色信息
USER_ROLE_PRIVS 包含当前用户拥有的角色信息
ROLE_ROLE_PRIVS 角色拥有的角色信息
ROLE_SYS_PRIVS 角色拥有的系统权限信息
ROLE_TAB_PRIVS 角色拥有的对象权限信息
DBA_ROLES 当前数据库中所有角色及其描述信息
SESSION_ROLES 当前会话所具有的角色信息

6. 审计

审计相关见:http://www.linuxidc.com/Linux/2017-10/147360.htm

更多 Oracle 相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-10/147361.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计8228字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19352
评论数
4
阅读量
8059565
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
免费领取huggingface的2核16G云服务器,超简单教程

免费领取huggingface的2核16G云服务器,超简单教程

免费领取 huggingface 的 2 核 16G 云服务器,超简单教程 前言 HuggingFace.co...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛 NAS-4:飞牛 NAS 安装 istore 旁路由,家庭网络升级的最佳实践 开始 大家好我是...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

  300 元就能买到的 ” 小钢炮 ”?惠普 7L 四盘位小主机解析 最近...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...