数据库管理员认证
作为DBA,您经常执行特殊操作,例如关闭或启动数据库。由于只有DBA才能执行这些操作,因此数据库管理员用户名需要安全的身份验证方案。
本节包含以下主题:
- Administrative Privileges
- Selecting an Authentication Method for Database Administrators
- Using Operating System Authentication
- Using Password File Authentication
管理权限(Administrative Privileges)
管理员执行基本数据库操作所需的管理权限通过两种特殊的系统权限SYSDBA和SYSOPER授予。您必须拥有授予您的这些权限之一,具体取决于您所需的授权级别。
即使数据库未打开,SYSDBA和SYSOPER系统权限也允许访问数据库实例。这些特权的控制完全在数据库本身之外。SYSDBA和SYSOPER权限也可以被认为是使您能够执行某些数据库操作的连接类型,而这些数据库操作不能以任何其他方式授予权限。例如,如果您具有SYSDBA权限,则可以通过指定CONNECT AS SYSDBA连接到数据库。
SYSDBA和SYSOPER
以下操作由SYSDBA和SYSOPER系统权限授权:
System Privilege | Operations Authorized |
SYSDBA |
实际上,该系统特权允许用户以用户SYS身份进行连接 |
SYSOPER |
此权限允许用户执行基本操作任务,但无法查看用户数据。 |
您被授权使用这些权限的方式取决于您使用的身份验证方法。
当你使用SYSDBA或SYSOPER权限连接时,你将使用默认模式连接,而不是与通常与您的用户名关联的模式连接。对于SYSDBA,此模式是SYS;对于SYSOPER,模式是PUBLIC。
使用管理权限进行连接:示例
此示例说明在与SYSDBA系统特权连接时为用户分配了另一个模式(SYS)。假设示例用户oe已被授予SYSDBA系统特权并发布了以下语句:
CONNECT oe CREATE TABLE admin_test(name VARCHAR2(20));
后来,用户oe发出这些声明:
CONNECT oe AS SYSDBA SELECT * FROM admin_test;
用户oe现在收到以下错误:
ORA-00942: table or view does not exist
以SYSDBA身份连接后,用户oe现在引用了SYS模式,但该表是在oe模式中创建的。
为数据库管理员选择身份验证方法(Selecting an Authentication Method for Database Administrators)
数据库管理员可以像其他用户那样通过数据字典(使用帐户密码)对数据库管理员进行身份验证。请记住,从Oracle Database 11g第1版开始,数据库密码区分大小写。 (您可以通过将SEC_CASE_SENSITIVE_LOGON初始化参数设置为FALSE来禁用区分大小写并返回到Pre-Release 11g行为。)
除了正常的数据字典认证外,还有以下方法可用于使用SYSDBA或SYSOPER权限认证数据库管理员:
- 操作系统(OS)认证
- 密码文件
- 使用基于网络的身份验证服务(如Oracle Internet Directory)进行强大的身份验证
当数据库未启动或不可用时,需要这些方法来验证数据库管理员。 (当数据库可用时,也可以使用它们。)
本节的其余部分重点介绍操作系统认证和密码文件认证。有关使用基于网络的身份验证服务验证数据库管理员的信息,请参见“Oracle Database Security Guide”。
- 这些方法取代了早期版本的Oracle数据库提供的CONNECT INTERNAL语法。 CONNECT INTERNAL不再受支持。
- 操作系统认证优先于密码文件认证。如果您符合操作系统身份验证的要求,那么即使您使用密码文件,也会通过操作系统身份验证进行身份验证。
您的选择将受到您是否打算在数据库驻留的同一系统上本地管理数据库的影响,或者您是否打算从单个远程客户端管理许多不同的数据库。
图1-2说明了您对数据库管理员身份验证方案的选择:
Figure 1-2 Database Administrator Authentication Methods
如果您正在执行远程数据库管理,请参阅Oracle Net文档以确定您是否使用安全连接。大多数流行的连接协议(如TCP / IP和DECnet)都不安全。
不安全的远程连接
要通过非安全连接以特权用户身份连接到Oracle数据库,必须通过密码文件进行身份验证。使用密码文件身份验证时,数据库将使用密码文件跟踪已授予SYSDBA或SYSOPER系统特权的数据库用户名。这种认证形式在“使用密码文件认证”中讨论。
本地连接和安全远程连接
您可以通过两种方式通过本地连接或安全远程连接以特权用户身份连接到Oracle数据库:
- 如果数据库具有密码文件并且您已被授予SYSDBA或SYSOPER系统特权,则可以连接密码文件并进行身份验证。
- 如果服务器未使用密码文件,或者您尚未被授予SYSDBA或SYSOPER权限,因此不在密码文件中,则可以使用操作系统身份验证。在大多数操作系统上,数据库管理员的身份验证涉及将数据库管理员的操作系统用户名放入一个特殊的组(通常称为OSDBA)。该组中的用户被授予SYSDBA权限。一个类似的组织OSOPER用于向用户授予SYSOPER权限。
使用操作系统认证
本节介绍如何使用操作系统对管理员进行身份验证。
OSDBA和OSOPER
这两个特殊操作系统组之一的成员资格使DBA能够通过操作系统向数据库进行身份验证,而不是使用数据库用户名和密码进行身份验证。这被称为操作系统认证。这些操作系统组通常被称为OSDBA和OSOPER。这些组是在数据库安装过程中创建和分配的特定名称。默认名称根据您的操作系统而有所不同,并在下表中列出:
Operating System Group | UNIX User Group | Windows User Group |
OSDBA | dba | ORA_DBA |
OSOPER | oper | ORA_OPER |
Oracle Universal Installer使用这些默认名称,但可以覆盖它们。覆盖它们的一个原因是如果您在同一台主机上运行多个实例。如果每个实例与主DBA拥有不同的人员,则可以通过为每个实例创建一个不同的OSDBA组来提高每个实例的安全性。例如,对于同一主机上的两个实例,第一个实例的OSDBA组可以命名为dba1,而第二个实例的OSDBA可以命名为dba2。第一个DBA只是dba1的成员,而第二个DBA只是dba2的成员。因此,当使用操作系统认证时,每个DBA只能连接到他指定的实例。
OSDBA或OSOPER组中的成员资格会以下列方式影响您与数据库的连接:
- 如果您是OSDBA组的成员,并且在连接到数据库时指定AS SYSDBA,则使用SYSDBA系统特权连接到数据库。
- 如果您是OSOPER组的成员,并且在连接到数据库时指定了AS SYSOPER,则使用SYSOPER系统特权连接到数据库。
- 如果您不是这些操作系统组的成员之一,并且尝试以SYSDBA或SYSOPER方式进行连接,则CONNECT命令将失败。
准备使用操作系统身份验证
要启用管理用户的操作系统身份验证:
1、为用户创建一个操作系统帐户。
2、将帐户添加到OSDBA或OSOPER操作系统定义的组。
实操例子:
1、新建一个操作系统用户test
[root@zml-rhel6 ~]# useradd test -g dba [root@zml-rhel6 ~]# su - test
2、配置环境变量
编辑.bash_profile
export ORACLE_BASE=/u01/app/oracle export ORACLE_SID=dg01 export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib
生效
source .bash_profile
3、使用sysdba特权登录
[test@zml-rhel6 ~]$ /u01/app/oracle/product/11.2.0/dbhome_1/bin/sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Sun Apr 8 18:45:07 2018 Copyright (c) 1982, 2009, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> quit Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options
可见登录成功
使用操作系统认证进行连接
用户可以通过身份验证,以管理用户身份启用,并通过键入以下SQL * Plus命令之一连接到本地数据库:
CONNECT / AS SYSDBA CONNECT / AS SYSOPER
仅对于Windows平台,支持通过安全连接进行远程操作系统身份验证。您必须为远程数据库指定网络服务名称:
CONNECT /@net_service_name AS SYSDBA CONNECT /@net_service_name AS SYSOPER
客户端计算机和数据库主机都必须位于Windows域中。
使用密码文件认证
准备使用密码文件身份验证
要使用密码文件身份验证启用对管理用户的身份验证,您必须执行以下操作:
1、如果尚未创建,请使用ORAPWD实用程序创建密码文件
ORAPWD FILE=filename ENTRIES=max_users
- 当您将数据库配置助手(DBCA)作为Oracle数据库安装过程的一部分调用时,DBCA会创建一个密码文件。
- 从Oracle数据库11g第1版开始,密码文件中的密码区分大小写,除非包含IGNORECASE = Y命令行参数。
参见:Creating and Maintaining a Password File
2、将REMOTE_LOGIN_PASSWORDFILE初始化参数设置为EXCLUSIVE。 (这是默认设置)
REMOTE_LOGIN_PASSWORDFILE是一个静态初始化参数,因此不能在不重启数据库的情况下进行更改
3、以用户SYS身份连接到数据库(或作为具有管理权限的其他用户)
请记住,从Oracle Database 11g第1版开始,数据库密码区分大小写。 (您可以通过将SEC_CASE_SENSITIVE_LOGON初始化参数设置为FALSE来禁用区分大小写并返回到Pre-Release 11g行为。)4、
4、如果用户不在数据库中,请创建用户并分配密码
从Oracle Database 11g第1版开始,数据库密码区分大小写。 (您可以通过将SEC_CASE_SENSITIVE_LOGON初始化参数设置为FALSE来禁用区分大小写并返回到Pre-Release 11g行为。)
5、将SYSDBA或SYSOPER系统特权授予用户将SYSDBA或SYSOPER系统特权授予用户
GRANT SYSDBA to oe;
该语句将用户添加到密码文件,从而启用AS SYSDBA连接
使用密码文件验证连接
通过使用SQL * Plus CONNECT命令,可以将管理用户连接到本地或远程数据库并进行身份验证。它们必须使用其用户名和密码以及AS SYSDBA或AS SYSOPER子句进行连接。请注意,从Oracle Database 11g第1版开始,密码区分大小写,除非密码文件是使用IGNORECASE = Y选项创建的
例如,用户oe已被授予SYSDBA权限,因此oe可以按如下方式连接:
CONNECT oe AS SYSDBA
但是,用户oe尚未被授予SYSOPER特权,因此以下命令将失败:
CONNECT oe AS SYSOPER
操作系统认证优先于密码文件认证。特别是,如果您是操作系统的OSDBA或OSOPER组的成员,并且您以SYSDBA或SYSOPER身份进行连接,则无论指定的用户名/密码如何,都将与相关的管理权限连接。 如果您不在OSDBA或OSOPER组中,并且您不在密码文件中,则尝试以SYSDBA或SYSOPER方式进行的连接将失败。
参考资料
https://docs.oracle.com/cd/E11882_01/server.112/e25494/dba.htm#ADMIN11046
因此不能在不重启数据库的情况下进行更改