Oracle 数据库安全权限配置标准


2 配置标准

2.1 账户授权及认证管理

2.1.1 按照账户分配权限

【目的】应按照用户分配账户,避免不同用户间共享账号。

【具体配置】

create user abc1 identified by password1;

建立role,并给role授权,把role赋给不同的用户删除无关账号

CREATE ROLE role_name;

GRANT CONNECT,RESOURCE TO role_name;

GRANT SELECT ON table_name TO role_name;

……

GRANT role_name TO username;

2.1.2 删除无关账号

【目的】应按删除或锁定与数据库运行,维护等工作无关的账号。

【具体配置】

alter user username lock;

drop user username cascade;

建议锁定三个月后删除

 

2.1.3 限制DBA 远程登入

【目的】限制具有数据库超级管理员(SYSDBA)权限的用户远程登入。

【具体配置】

在spfile中设置REMOTE_LOGIN_PASSWORDFILE=NONE来禁止SYSDBA用户从远程登入。

在sqlnet.ora中设置SQLNET.AUTHENTICATION_SERVICES=NONE来禁止SYSDBA角色本地直接登入。

【检查操作】

1. 以Oracle用户登入到系统

2. 以sqlplus “/ as sysdba”登入到sqlplus环境中

3. 使用show parameter 命令来检查参数REMOTE_LOGIN_PASSWORDFILE是否设置为NONE。show parameter REMOTE_LOGIN_PASSWORDFILE

4. 检查$ORACLE_HOME/network/admin/sqlnet.ora文件中参数SQLNET.AUTHENTICATION_SERVICES是否被设置成NONE。

2.1.4 最小权限

【目的】在数据库权限配置能力内,根据用户的业务需要,配置其所需的最小权限。

【具体配置】

给用户赋予相对最小权限

grant 权限 to username;

回收用户多余权限

revoke 权限 from username;

2.1.5 白名单设置

【目的】控制哪些主机IP能够连接至数据库服务器,防止DB遭受攻击

【具体配置】

在sqlnet.ora中设置TCP.VALIDNODE_CHECKING=yes开启客户端验证,TCP_INVITED_NODES=(127.1.1.0,本机IP,IP1,IP2……)

【检查操作】

1. 以Oracle用户登入到系统

2. 编辑$ORACLE_HOME/network/admin/sqlnet.ora文件添加TCP.VALIDNODE_CHECKING=yes和TCP_INVITED_NODES=(127.1.1.0,本机IP,IP1,IP2……)认证的主机IP

3. 重新加载监听生效lsnrctl relocate

2.1.6 数据库角色

【目的】使用数据库角色(ROLE)来管理对象的权限。

【具体配置】

1. 使用CREATE ROLE命令创建角色

2. 使用GRANT命令将相应的系统、对象或ROLE的权限赋予应用用户。

【检查操作】

1. 以DBA用户登入到sqlplus中。

2. 通过查询dba_role_privs、dba_sys_privs和dba_tab_privs等视图来检查是否使用ROLE来管理对象权限。  

2.1.7 数据字典保护

【目的】启动数据字典保护,只有SYSDBA用户才能访问数据字典基表

【具体配置】

通过设置下面初始化参数来限制只有SYSDBA权限的用户才能访问数据库字典。

O7_DICTIONARY_ACCESSIBILITY=FALSE

【检查操作】

以普通dba用户登入到数据库,不能查看X$开头的表,比如:

Select * from sys.x$kgllk;

1. 以oracle用户登入系统。

2. 以sqlplus / as sysdba登入

3. 使用show parameter 命令检查参数O7_DICTIONARY_ACCESSIBILITY是否设置为FALSE。

2.1.8 DBA 组操作系统用户数量

【目的】限制在DBA组中的操作系统用户数量,通常DBA组中只有Oracle安装用户。

【具体配置】

可通过下面类似命令来创建profile,并把它赋予一个用户

CREATE PROFILE app_user LIMIT

FAILED_LOGIN_ATTEMPTS 10

PASSWORD_LIFE_TIME 60

PASSWORD_REUSE_TIME 60

PASSWORD_REUSE_MAX 5

PASSWORD_VERIFY_FUNCTION verify_function

PASSWORD_LOCK_TIME 1/24

PASSWORD_GRACE_TIME 90;

ALTER USER username PROFILE app_user;

可通过设置profile来限制数据库账户口令的复杂程度,口令生存周期和账户的锁定方式等。

 

2.1.9 用户属性

【目的】对用户属性进行控制,包括密码策略、资源限制等。

【具体配置】

通过/etc/passwd文件来检查是否有其他用户在DBA组中。

2.2 口令

2.2.1 口令复杂度

【目的】对于采用静态口令进行认证的数据库,口令长度至少6位,并包括数字、大小写字母和特殊符号4类中至少2类。

【具体配置】

为用户创建profile,调整PASSWORD_VERIFY_FUNCTION,指定密码复杂度

【检测操作】

修改密码为不符合要求的密码,将失败。

2.2.2 口令期限

【目的】对于采用静态口令认证技术的数据库,账户口令的生存期不长于90天。

【具体配置】

为用户创建profile,指定PASSWORD_GRACE_TIME为90天

【检测操作】

到期不修改密码,密码将会失效。连接数据库将不会成功。

2.2.3 口令历史

【目的】对于采用静态口令认证技术的数据库,应配置数据库,使用户不能重复使用最近5次(含5次)内已使用的口令。

【具体配置】

为用户创建profile,指定PASSWORD_REUSE_MAX为5

2.2.4 失败登入次数

【目的】对于采用静态口令认证技术的数据库,应配置当用户连接认证失败册书超过10次(不含10次),锁定该用户使用的账户。

【具体配置】

为用户创建profile,指定FAILED_LOGIN_ATTEMPTS为6

2.2.5 遵循操作系统账户策略

【目的】Oracle软件账户的访问控制可遵循操作系统账户的安全策略,比如不要共享账户、强制定期修改密码、密码需要一定的复杂度等。

【具体配置】

使用操作系统一级的账户安全管理来保护Oracle软件账户。

【检查操作】

每三个月自动提示更改密码,过期后不能登入。

每三个月强制修改Oracle软件账户密码,并且密码需要满足一定的复杂度,符合操作系统的密码要求

2.3 日志(帕拉迪)

2.3.1 登入日志

【目的】数据库应配置日志功能,对用户登入进行记录,记录内容包括用户登入使用的账户、登入是否成功、登入时间以及远程登入时用户使用的IP地址。

【具体配置】

方法一:安装审计类软件(推荐)

方法二:创建ORACLE登入触发器捕获数据(适合于9i、10G,11G可直接查看AUD$,)

2.3.2 操作日志

【目的】数据库应配置日志功能,记录用户对数据库的操作,包括但不限于以下内容:账户创建、删除和权限修改、口令修改、读取和修改数据库配置、读取和修改业务敏感数据。记录需要包含操作时间,操作用户、操作内容以及操作结果。

【具体配置】

安装审计类软件(推荐)

方法二:创建ORACLE登入触发器捕获数据(适合于9i、10G,11G可直接查看AUD$,)

2.3.3 数据库审计策略

【目的】根据业务要求制定数据库审计策略。

【具体配置】

1. 通过设置参数audit_trail=db或os来打开数据库审计。

2. 然后使用audit命令对相应的对象进行审计设置。

【检测操作】

对审计的对象进行一次数据库操作,检查操作是否被记录。

1. 检查初始化参数audit_trail是否设置。

2. 检查dba_audit_trail视图中或$ORACLE_BASE/admin/adump目录下是否有数据。

AUDIT 会有相应资源开销,请检查系统资源是否充足。

2.4 其他

2.4.1 限制DBA 用户访问敏感数据

【目的】使用Oracle提供的Data Vault选件来限制有DBA权限的用户访问敏感数据。

【具体配置】

方法一:安装审计类软件(推荐)

方法二:Oracle Data Vault是作为数据库安全解决方案的一个单独选件,主要功能是将数据库管理账户的权限和应用数据访问的权限分开,Data Vault可限制有DBA权限的用户访问敏感数据。设置较为复杂,具体请查看配置文档。

2.4.2 连接超时

【目的】在某些应用环境下可设置数据库连接超时,比如数据库将自动断开超过10分钟的空闲远程连接。

【具体配置】

在$ORACLE_HOME/network/admin/sqlnet.ora中设置下面参数:

SQLNET.EXPIRE_TIME=10

10 分钟以上的无任何操作的空闲数据库连接被自动断开。

 


请使用浏览器的分享功能分享到微信等