您的位置:首页 > 数据库 > Oracle

ORACLE数据库用户管理

2016-04-26 22:56 274 查看

一.数据库用户管理

1.用户与安全

  oracle数据库的安全包括在对象级控制数据库访问和使用的机制,这是通过数据库用户实现的。数据库用户是定义在数据库中的

一个名称,它是存取数据库中信息的通道,是oracle数据库的基本访问机制。

  要访问数据库,用户必须制定有效的数据库用户账号,而且还要根据账户的要求通过验证。每个数据库用户都有自己的数据库

账户。

  每个数据库用户有一系列安全属性

a.唯一的用户名:不超过30个字符,不能包含特殊字符,必须以字母开头

b.验证方法:最常见的验证方法是口令,oracle10g支持其他多种验证方法,如生物统计学验证,标记验证和证书验证

c.默认表空间:如果用户未指定其他表空间,则可在这个表空间中创建对象。else:具有默认表空间不代表用户具有用户在该表空间

中创建对象的权限,也不意味这用户具有该表空间的空间限额,这两项需要另外单独授权。

d.临时表表空间:用户可在其中创建临时对象(排序和临时表)

e.用户概要文件:分配给用户的一组资源和口令的限制

f.使用者组:由资源管理器使用

g:表空间配额:致命用户在某个表空间中所能使用的存储空间的大小

2.预定义账户sys和system

a.sys账户

-授予了DBA角色

-具有admin option的所有权限

-具有启动、关闭和某些维护命令时需要的账户

-拥有数据字典

-拥有自动工作量资料档案库(AWR)

-使用as sysdba字句连接(任何具有SYSDBA权限的用户均可通过使用as sysdba连接到sys账户)

b.system账户

-授予了DBA角色

c.sys和system账户不在理性程序操作中使用

d.只有授予了sysdba和sysoper权限的授权用户才可以启动或关闭数据库

e.sys和system账户是数据库中必须存在的战鼓,不能将其删除

3.验证用户

  验证指的是对要使用数据,资源或应用程序的用户,设备或其他实体的身份进行验证,通过

对该身份的验证建立一种信任关系,从而可以进一步执行交互。

a.外部验证

  又称操作系统验证。用户在不指定用户名或口令的情况下连接到oracle数据库。使用外部验证时,

数据库依赖于基础操作系统或网络验证服务来限制对数据库账户的访问,而不涉及到数据库口令。

  由参数OS_AUTHENT_PREFIX定义的前缀控制,oracle在每个用户的操作系统账户名之前添加此前缀。

默认为OPS$。当用户尝试连接时,oracle会将带前缀的用户名与数据库中的oracle username进行比较。

案例:

sys@ORCL> show parameter os_authent

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

os_authent_prefix                    string      ops$

remote_os_authent                    boolean     FALSE

[root@redhat5 ~]# useradd gmk;

[root@redhat5 ~]# passwd gmk

Changing password for user gmk.

New UNIX password: 

BAD PASSWORD: it is based on a dictionary word

Retype new UNIX password: 

passwd: all authentication tokens updated successfully.

sys@ORCL> create user OPS$GMK identified externally;

User created.

sys@ORCL> grant connect to ops$gmk;

Grant succeeded.

sys@ORCL> select * from dba_users where username='OPS$GMK';

[gmk@redhat5 ~]$ vi .bash_profile

编辑完毕后使环境变量生效

source .bash_profile

[test@redhat5 ~]$ sqlplus / 即可成功使用操作系统登录

b.口令验证

  又称为oracle数据库验证



[oracle@redhat5 ~]$ sqlplus scott/oracle

scott@ORCL> conn test/oracle

Connected.

test@ORCL> connect scott/oracle

  口令验证时oracle使用最多的身份验证方式。在使用口令身份验证进行连接时,实例将针对在数据字典中的用户账户

存储的口令验证给定的口令所以,数据库必须处于打开状态,从逻辑上讲,使用口令验证连接时,不可能发出startup

或者shutdown命令。else:不允许sys用户以口令身份验证的方式进行连接,sys只能使用口令文件,操作系统或LDAP

身份验证。

  数据库验证的优点

-用户账户及其验证信息全部存储在数据库中,验证由oracle server完成,而不需要借助数据库外的任何控制。

-使用数据库验证时,oracle提供了严格的口令管理特征以加强口令的安全性,如账户锁定,口令有效期以及口令长度,

复杂度。

-易于管理

二.管理员验证

数据库管理员能够执行普通用户不能执行的操作(如启动和关闭数据库),oracle为数据库管理员提供个更为安全的身份验证方式

1.      操作系统安全性

在Linux,unix中,默认情况下DBA属于install操作系统组,改组具有创建和删除数据库文件所需的权限。

-DBA必须具有创建和删除文件的操作系统权限。

-普通用户不应具有创建和删除文件的权限。

2.  数据库管理员验证的两种方式,操作系统认证和口令文件认证。如果使用口令文件验证,则使用用户名记录连接,如果使用操作系统验证,表示这是一个conenct/连接,不记录具体用户。

Else:操作系统认证优先于口令文件验证。特别对于操作系统中OSDBA和OSOPER组的成员,而且以SYSDBA或SYSOPER身份进行连接,则会使用关联的管理权限进行连接而不管用户名和口令是什么。

Else2:要为用户启用操作系统和口令验证,必须为用户授予SYSDBA或SYSOPER的权限,授予权限之后将会把用户口令从数据字典复制到外部口令文件中,所以,此时即使未打开实例,也可读取口令进行验证。

Case1:口令验证

Case2:操作系统验证

另外:

SYSOPER具有的权限:startup,shutdown,alterdatabase open/mount,alter database backup,alter database archivelog以及recovery命令,并具备restrictedsession权限。

SYSDBA:具有所有系统权限,以及权限的adminoption选项,包括SYSOPER所具有的权限,此外,能够执行create database命令,以及基于时间的恢复(time-based recovery)。

三.身份验证的参数

1. remote_login_passwordfile:是否允许远程登录使用口令文件进行验证。

sys@ORCL> show parameter remote_login

 

NAME                                 TYPE        VALUE

------------------------------------ -----------------------------------------

remote_login_passwordfile            string      EXCLUSIVE

a: shared:一个或多个数据库可以使用口令文件,可以包含SYS或非SYS的口令文件

b: exclusive: 新版本oracle与shared功能一致

c.none: 不允许远程使用口令文件验证

else:查看口令文件进行验证的用户

sys@ORCL> select * from v$pwfile_users;

 

USERNAME                       SYSDB SYSOP SYSAS

------------------------------ ----- ----------

SYS                            TRUE  TRUE FALSE

2.      SQLNET.AUTHENTICATION_SERVICES:$ORACLE_HOME/network/admin/sqlnet.ora配置文件中

a.NONE:不允许通过操作系统用户登录

b.ALL:允许所有的登录方式

c.NTS:允许本次操作系统用户认证

四.数据库模式对象(schema)

  schema模式是一系列对象的集合。
  一个模式只能被一个数据库用户拥有,并且模式的名称与这个用户的名称相同。oracle每个用户都拥有一个模式,
他所创建的模式对象都保存在这个shcema中。模式对象的类型有表,索引,簇,触发器,plsql,序列,同义词,
视图,存储过程,函数等。并不是所有的oracle对象都是模式对象,比如表空间,用户,角色,会滚蛋,概要文件等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: