oracle登录认证方式

2024年 4月 20日 90.9k 0

1 说明

1.1 常见认证方式

Oracle登录认证方式主要涉及到如何验证用户身份以访问数据库。Oracle数据库提供了多种认证机制来确保数据的安全性和访问控制,每种方式都有其特定的使用场景和安全性考虑。以下是Oracle中常见的登录认证方式:

1、基于操作系统的认证(OS认证)

在基于操作系统的认证中,Oracle依赖底层操作系统的用户身份验证机制。当使用OS认证时,Oracle进程以操作系统用户的身份运行,并继承该用户的权限。这种认证方式通常用于本地连接,特别是在Unix/Linux系统上。

2、密码文件认证(Password File)

密码文件(通常称为“口令文件”)是Oracle提供的一种认证机制,用于在数据库未完全启动或无法访问数据字典时,允许具有SYSDBA或SYSOPER权限的用户进行连接。密码文件通常存放在数据库服务器的特定目录下,并包含加密的用户名和密码信息。

3、数据库认证

数据库认证是最常用的认证方式,它依赖于Oracle数据字典中存储的用户名和密码信息。当用户尝试连接到数据库时,Oracle会查询数据字典以验证提供的用户名和密码是否匹配。普通用户就是使用这种认证方式。与前两种不同的地方在于,在数据库关闭的时候用户不能登录。

4、外部认证

如果配置了os_authent_prefix参数,如默认值为’ops',当数据库中存在用户'opslu9up’,且对该用户启用了外部验证。那么在操作系统上以lu9up用户登录成功后,就可以直接键入 sqlplus / ,登录用户是 ops$lu9up,密码由操作系统外部提供,不是数据字典认证。

1.2 数据库管理员身份验证

DBA经常执行一些特殊操作,如关闭数据库、启动数据库、修改参数等。由于只有DBA才能执行这些操作,所以DBA的数据库账号需要一种安全的身份验证方案。

DBA身份验证一般使用上面四种常见的登录认证的前两种:

  • os认证;
  • 口令文件认证。

下面就来着重讲讲这两种认证。

2 基于操作系统的认证(OS认证)

2.1 OSDBA & OSOPER

OSDBA和OSOPER是两个特殊操作系统组,如果操作系统用户属于OSDBA组或者OSOPER组,就能够通过操作系统而不是数据库用户名和密码来认证到数据库,这就是操作系统认证。这两个操作系统组通常被称为OSDBA和OSOPER。熟悉数据库安装的同学都应该有印象,OSDBA和OSOPER这两个组就是在进行操作系统(Linux)配置的时候创建的:

groupadd -g 1001 dba
groupadd -g 1002 oper

如果操作系统用户属于dba组或者oper组,那么在登录操作系统后,登录数据库的方式为:

  • 如果用户是dba组的成员,并在连接到数据库时指定了as sysdba,那么将以sysdba系统特权连接到数据库。如:sqlplua / as sysdba
  • 如果用户是oper组的成员,并在连接到数据库时指定了as sysoper,那么您将以sysoper系统特权连接到数据库。如:sqlplua / as sysoper
  • 如果用户不是这两个操作系统组的成员,却尝试以SYSDBA或SYSOPER身份连接,那么CONNECT命令将失败。ORA-01017: invalid username/password; logon denied。

下面来试验一下:

创建一个新的操作系统用户lu9up,暂时不添加任何组:

切换到lu9up用户,尝试指定as sysdba连接数据库:

手动配置一下环境变量,要不然没有sqlplus的路径。

因为lu9up用户不属于dba组,所以OS认证不通过,指定as sysdba连接数据库失败。

给lu9up用户添加dba组,再一次尝试指定as sysdba连接数据库:

3 密码文件认证(Password File)

oracle密码文件用于存储拥有部分特权用户的口令。

是sysdba或者sysoper身份的用户的远程认证密码文件,主要用于sys用户(严格来说是具有sysdba系统权限的用户)的远程登录认证。

这个密码文件的作用就是当数据库未启动的时候,可以通过密码验证的方式登录数据库并进行一系列的mount和open操作。在口令文件丢失或被破坏的情况下,SYS用户仍然可以以本地sysdba身份验证登录到数据库中(OS认证),但不能以sysdba远程登录了。

密码文件通常位于Oracle用户下的$ORACLE_HOME/dbs目录中,并命名为orapw。在创建数据库时,会生成密码文件,但也可以使用ORAPWD工具手动创建。创建密码文件时,需要指定文件名、SYS账号的口令以及密码文件中可以存放的最大用户数。

在使用密码文件时,需要设置初始化参数REMOTE_LOGIN_PASSWORDFILE来控制其使用状态。这个参数可以设置为EXCLUSIVE、SHARED或NONE,以确定密码文件的使用方式和搜索顺序。

查看初始化参数REMOTE_LOGIN_PASSWORDFILE:

参数值解释:

  • shared:密码文件可供多个数据库实例使用,可以包含sys用户和非sys用户。
  • exclusive:默认值,密码文件只能用于单个数据库实例,可以包含sys用户和非sys用户。
  • none:系统不使用密码文件,特权用户的只能依靠OS认证登录连接数据。

创建一个密码文件:

说明:

  • file:密码文件的文件名为orapworcl;
  • entries:允许5个不同的用户拥有sysdba或者sysoper系统权限;
  • force:覆盖存在的密码文件;
  • password:sys用户的密码。

尝试进行远程登录:

参数REMOTE_LOGIN_PASSWORDFILE当前值为exclusive,允许使用密码文件。当前服务器ip地址为56.3,ssh远程登录到56.2服务器,sqlplus sys/lu9up@192.168.56.3/orcl as sysdba命令连接数据库。

将参数REMOTE_LOGIN_PASSWORDFILE设置为none:

说明:

  • issys_mod=false,说明修改参数不能立刻生效,需要重启后才生效;
  • startup force为强制重启。

参数设置为none后再次远程连接,这次应该是连不上了:

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论