【赵渝强老师】Oracle数据库的用户认证方式

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS Agent(兼容OpenClaw),2核4GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 本文详解Oracle数据库用户认证机制,涵盖密码验证、全局验证和外部验证三种方式,并重点演示DBA管理员的OS认证实战:通过操作系统组权限实现免密登录,验证优先级及配置要点。

b443.png

Oracle数据库支持多种用户认证的方式,例如:密码认证、生物统计学验证、证书验证和标记验证,而在认证管理员用户和普通用户时又有一定区别。视频讲解如下:


下面分别进行介绍。


一、 验证数据库用户的方式

用户、设备或其它实体的身份要使用数据库中数据、资源或者调用数据库的应用程序,需要进行身份的验证。通过对该身份进行验证可建立一种信任关系,从而可进一步执行交互式操作。通过验证可将访问和操作与特定的身份联系起来,从而实现操作的可靠性。完成验证后,验证流程可允许或限制该实体许可的访问和操作的级别。创建用户时,必须确定要使用的验证方法,以后可修改此方法。Oracle支持三种不同的用户验证方式:密码口令验证、全局验证和外部验证。


  • 密码口令验证

该认证方式又称为Oracle数据库验证,创建的每一个用户都有一个关联密码口令。当用户尝试登陆数据库时,必须提供这个密码口令。数据库管理员可以在设置用户密码口令时,可以使其立即失效。这样会强制用户在首次登录后更改密码口令。

密码口令认证是最常用的数据库用户验证方式。


  • 全局验证

通过全局验证可以使用生物统计学、x509 证书、标记设备和Oracle Internet Directory来识别用户。使用这种方式的认证,需要外部设备的支持。


  • 外部验证

外部验证是通过使用宿主机的操作系统进行验证。用户在登陆Oracle数据库时,可以不提供用户名和密码口令而直接连接到Oracle数据库。Oracle数据库的SYS用户采用的就是这样的认证方式。使用外部验证时,数据库依赖于宿主机的操作系统或网络提供的验证服务来限制对数据库帐户的访问。


要使用Oracle数据库的外部认证,需要设置OS_AUTHENT_PREFIX的初始化参数,此参数的默认值为ops$。Oracle数据库会在每个用户的操作系统帐户名之前添加此前缀。当用户尝试建立连接时,Oracle数据库会将带有该前缀的用户名与数据库中的Oracle用户名进行比较。如果数据库中存在这样的一个对应用户,则Oracle允许该用户建立连接。


下面通过一个具体的示例来演示如何使用Oracle的外部认证登录数据库。

由于从Oracle 12c开始引入了容器数据库,建议使用12c以前的版本来进行测试。这里将使用Oracle 11gR2的版本来验证数据库用户的外部验证。


(1)查看当前CentOS操作系统的用户。

whoami
# 输出的信息如下:
oracle


(2)使用SYS用户登录Oracle,并查看初始化参数os_authent_prefix。

SQL> show parameter os_authent_prefix
NAME             TYPE  VALUE
--------------------------------------- ---------- -----------------
os_authent_prefix        string  ops$


(3)创建以ops$前缀开头的本地用户

SQL> create user ops$oracle identified by externally;


(4)给ops$oracle用户授权允许它登录并使用数据库

SQL> grant connect,resource to ops$oracle;


(5)直接使用sqlplus登录数据库。

sqlplus /


(6)查看当前登录的用户信息。

SQL> show user
# 输出的信息如下:
USER is "OPS$ORACLE"


二、 【实战】数据库管理员的认证


默认情况下,在UNIX和Linux操作系统中Oracle数据库管理员属于DBA的操作系统组,该组中的用户具有创建和删除数据库文件所需的权限。如果当前操作系统的用户就是Oracle数据库管理员,那么登录数据库可以直接使用操作系统验证。此时,用户不需要提供的用户名和密码口令直接进行登录。

操作系统验证优先于密码口令验证。特别是,如果您是操作系统中 OSDBA 或 OSOPER 组的成员,而且以 SYSDBA 或 SYSOPER 身份进行连接,则会使用关联的管理权限为您建立连接,不管您指定的用户名和口令是什么。


下面通过具体的步骤来验证数据库管理员的认证登录方式。


(1)查看当前操作系统的用户名。

whoami
# 输出的信息如下:
oracle


(2)查看当前操作系统用户的组信息。

cat /etc/group | grep oracle
# 输出的信息如下:
dba:x:1001:oracle
asmdba:x:1002:oracle
backupdba:x:1003:oracle
dgdba:x:1004:oracle
kmdba:x:1005:oracle
racdba:x:1006:oracle
oper:x:1007:oracle


(3)使用管理员登录数据库时,不提供用户名和密码。登录后查看当前登录的用户。

sqlplus / as sysdba
SQL> show user
# 输出的信息如下:
USER is "SYS"


(4)使用管理员登录数据库时,提供正确的用户名,但密码是错误的。登录后查看当前登录的用户。

sqlplus sys/asjfklf as sysdba
SQL> show user
# 输出的信息如下:
USER is "SYS"


(5)使用管理员登录数据库时,提供错误的用户名和密码。登录后查看当前登录的用户。

sqlplus afsalkj/fdsaflka as sysdba
SQL> show user
# 输出的信息如下:
USER is "SYS"


(6)将用户oracle从操作系统的dba组中删除。即:从文件/etc/group中删除下面的语句。

dba:x:1001:oracle


(7)重复第(3)步到第(5)步的操作,此时将发现无法登录Oracle数据库。

相关文章
|
4月前
|
Kubernetes Go API
xkube v4.0发布,完全开发源代码并新增k8s网关、亲和性很多k8s实用功能
xkubе v4.0 是开源K8s可视化管理平台(Gitee:https://gitee.com/eeenet/xkube),全面开放Go后端源码。新增Gateway API全系支持(Gateway/HTTPRoute/GRPCRoute等)、增强Deployment/STS/Job配置能力、Pod资源Top监控、节点资源统计及审计日志,界面与依赖全面升级。
466 116
|
关系型数据库 MySQL Linux
Alibaba Cloud Linux release 3 (Soaring Falcon)操作系统
Alibaba Cloud Linux release 3 (Soaring Falcon)操作系统
|
1月前
|
存储 Linux Docker
告别繁琐安装!Obsidian 容器化部署,跨设备访问笔记自由
Obsidian 作为一款备受欢迎的本地知识管理工具,凭借其灵活的笔记链接、本地存储优势,成为很多开发者、知识管理者的首选。而通过 Docker 部署 Obsidian,不仅能实现跨环境快速部署,还能轻松实现数据持久化,适配 NAS、服务器、个人电脑等多种场景。本文将详细介绍 Windows 和 Linux 两大系统下,通过 Docker 部署 Obsidian 的完整流程,同时提供 Docker 一键安装命令,降低部署门槛。
468 2
|
5月前
|
Kubernetes 容器 Perl
kubernetes-1.34.2 二级制快速安装部署
kubenetes-1.34.2 二进制安装包,其他版本同样可以使用,包含etcd,kube-apiserver,kube-controller-manager,kube-scheduler,kubelet,containerd,coredns,metric-server的证书、配置文件,启动脚本。其中还包括证书的生成脚本、kubeconfig的生成脚本,同时包含了二进制可执行文件,本安装包已经包含了二进制文件,制作好的证书和安装包,可以直接拷贝到安装目录进行安装,也可以重新执行:make_install_package.sh 重新生成。该项目是为了配合k8s-1.34.2二进制的安装。
1143 1
|
Cloud Native 安全 应用服务中间件
云原生网关哪家强:Sealos 网关血泪史
云原生网关哪家强:Sealos 网关血泪史
917 99
|
运维 Kubernetes Cloud Native
Kubernetes云原生架构深度解析与实践指南####
本文深入探讨了Kubernetes作为领先的云原生应用编排平台,其设计理念、核心组件及高级特性。通过剖析Kubernetes的工作原理,结合具体案例分析,为读者呈现如何在实际项目中高效部署、管理和扩展容器化应用的策略与技巧。文章还涵盖了服务发现、负载均衡、配置管理、自动化伸缩等关键议题,旨在帮助开发者和运维人员掌握利用Kubernetes构建健壮、可伸缩的云原生生态系统的能力。 ####
|
Kubernetes 网络虚拟化 Perl
k8s常用的网络插件优化方案|干货
k8s常用的网络插件优化方案|干货
|
运维 Kubernetes Docker
Kubernetes 1.24 1.25 集群使用docker作为容器
在新版本Kubernetes环境(1.24以及以上版本)下官方不在支持docker作为容器运行时了,若要继续使用docker 需要对docker进行配置一番。需要安装cri-docker作为Kubernetes容器
3131 2