设为首页 收藏本站
查看: 804|回复: 0

[经验分享] 设置oracle 认证方式

[复制链接]

尚未签到

发表于 2018-9-14 13:15:56 | 显示全部楼层 |阅读模式
  oracle 认证方式
  oracle认证方式分为操作系统认证和口令文件认证2种方式,操作系统认证有时候也叫本地认证。这2种认证我是这么理解的:
  --操作系统认证:
  即oracle认为操作系统用户是可靠的,即既然能登陆到操作系统那么oracle数据库你也能登陆
  --口令文件认证:
  oracle认证认为操作系统用户是不可信任的,如果要访问数据库,必须进行再次认证。
  具体实现如下:
  --操作系统认证:
  配置sqlnet.ora文件中的参数:SQLNET.AUTHENTICATION_SERVICES=(NTS)
  spfile(pfile)文件参数: REMOTE_LOGIN_PASSWORDFILE=('NONE')
  --口令文件认证:
  配置sqlnet.ora文件中的参数:SQLNET.AUTHENTICATION_SERVICES=(NONE)
  spfile(pfile)文件参数: REMOTE_LOGIN_PASSWORDFILE=('EXCLUSIVE')或('SHARED')
  这个时候需要配置口令文件PWDorcl.ora。(orcl为数据库SID)
  select * from v$pwfile_users;
  一、sysdba的权限
  sysdba(sysoper和normal)是登录数据库的身份,与角色(dba、resource)、对象权限及系统权限有所区别,登录身份表明了可对数据库的整体进行哪些操作,sysdba有些类似unix下的root帐户。
  sysdba的权限或可对数据库进行的操作:
  startup,shutdown
  alter database open|mount
  alter database backup controlfile
  alter tablespace begin/end backup
  recover database
  alter database archivelog,restricted session
  create database
  recover database until
  二、os认证和口令文件认证
  1、os认证和口令文件认证其实质是对oracle数据库采取何种管理方式,是本地管理还是通过一台管理服务器统一管理。
  本地管理采用的就是os认证方式,统一管理采用的就是口令文件认证方式
  2、两种认证的实现
  oracle数据库通过sqlnet.ora文件中的参数 SQLNET.AUTHENTICATION_SERVICES,PFILE(或SPFILE)文件中的参数 REMOTE_LOGIN_PASSWORDFILE和口令文件PWDsid.ora三者协同作用实现身份认证。
  SQLNET.AUTHENTICATION_SERVICES=(NTS)|(NONE)
  SQLNET.AUTHENTICATION_SERVICES=(NTS): 操作系统认证方式,不使用口令文件
  SQLNET.AUTHENTICATION_SERVICES=(NONE):口令文件认证方式
  REMOTE_LOGIN_PASSWORDFILE=(NONE)|(EXCLUSIVE)|(SHARED)
  REMOTE_LOGIN_PASSWORDFILE=(NONE):不使用口令文件,操作系统认证
  REMOTE_LOGIN_PASSWORDFILE=(EXCLUSIVE):口令文件认证方式,但只有一个数据库实例可以使用此文件,
  系统允许将SYSOPER/SYSDBA授予除INTERNAL/SYS以外的其他用户,且以具有这类身份的其他用户登录是有效的
  REMOTE_LOGIN_PASSWORDFILE=(SHARED):口令文件认证方式,可有多个数据库实例使用此文件,但是此设置下
  只有INTERNAL/SYS帐号能被识别,即使文件中存有其他用户的信息,也不允许他们以SYSOPER/SYSDBA登录
  1)SQLNET.AUTHENTICATION_SERVICES=(NTS)同时REMOTE_LOGIN_PASSWORDFILE=(NONE),此时为操作系统认证方式。
  当以oracle_dba组下的用户登录进入本地windows2000后进行下边的操作:
  sqlplus /nolog
  sql>conn /as sysdba
  或
  sqlplus /nolog
  sql>conn 任意用户名/密码 as sysdba
  均可以sysdba身份登录成功,进行数据库方面的操作
  当以远程进行登录时,执行
  sqlplus /nolog
  sql>conn /as sysdba
  或
  sqlplus /nolog
  sql>conn sys/密码 as sysdba
  均显示
  “ERROR:
  ORA-01031: insufficient privileges
  ”
  也就是不允许以sysdba身份远程登录系统,这也是os认证之所以也称为本地认证方式的原因
  2)SQLNET.AUTHENTICATION_SERVICES=(NONE)同时REMOTE_LOGIN_PASSWORDFILE=(EXCLUSIVE)或(SHARED),配合口令文件
  PWDsid.ora,此时为口令文件认证方式
  当在本地以oracle_dba组下的用户登录进入windows2000后进行下边的操作:
  sqlplus /nolog
  sql>conn /as sysdba
  显示
  “ERROR:
  ORA-01031: insufficient privileges
  ”
  实质上是要求提供拥有sysdba身份的用户名和密码
  在本地或远程进行下边的操作
  sqlplus "sys/密码@服务名 as sysdba"
  可进入系统
  也就是说口令文件认证方式允许用户从本地或远程以sysdba身份登录,但必须提供口令字
  3)SQLNET.AUTHENTICATION_SERVICES=(NTS)同时REMOTE_LOGIN_PASSWORDFILE=(EXCLUSIVE)或(SHARED),配合口令文件PWDsid.ora,此时操作系统认证和口令文件认证同时起作用
  当在本地以oracle_dba组下的用户登录进入windows2000后进行下边的操作:
  sqlplus /nolog
  sql>conn /as sysdba
  可进入系统
  当在远程执行
  sqlplus "sys/密码@服务名 as sysdba"
  同样可正常登录到数据库系统上
  上边的参数配置容易令人迷惑、混淆,造成假象。我推测网上有些朋友所以对身份认证产生费解可能就是因为这么
  配置参数的!
  三、其他
  从前边的讨论可以知道,我们能够对sys以外的用户赋予sysdba身份,具体方法就是
  SQLNET.AUTHENTICATION_SERVICES=(NONE)
  REMOTE_LOGIN_PASSWORDFILE=(EXCLUSIVE)
  口令文件PWDsid.ora
  SQL>grant sysdba to 用户名
  这样,其他具有sysdba身份的用户就加入到PWDsid.ora中,并可以被PWDsid.ora识别,我们可以用这个被赋予sysdba身份的用户登录并进行类似sys用户下所能执行的操作
  NONE
  Oracle ignores any password file. Therefore, privileged users must be authenticated by the operating system.
  SHARED
  More than one database can use a password file. However, the only user recognized by the password file is SYS.
  EXCLUSIVE
  The password file can be used by only one database and the password file can contain names other than SYS
  ==============================================================================================
  ORACLE数据库通过sqlnet.ora文件中的参数sqlnet.authentication_services,参数文件中的remote_login_passwordfile和口令文件pwdsid.ora三者协同作用实现身份认证.
  Sqlnet.authentication_services=(NTS)|(NONE)
  NTS:操作系统认证方式,不使用口令文件;
  NONE:口令文件认证方式
  Remote_login_passwordfile=(NONE)|(EXCLUSIVE)|(SHARED)
  NONE:不使用口令文件,操作系统认证;
  EXCLUSIVE:口令文件认证方式,但只有一个数据库实例可以使用此文件;
  SHARED:口令文件认证方式,可以有多个数据库实例可以使用此文件,但此设置下只有SYS帐号能被识别,即使文件中存在其他用户的信息,也不允许他们以SYSOPER/SYSDBA登录.
  (1).sqlnet.authentication_services=(NTS)
  同时Remote_login_passwordfile=(NONE),此时为操作系统认证方式.
  当以oracle_dba组下的用户登录进入本地的操作系统后,进行以下操作:
  sqlplus /nolog
  SQL>conn /assysdba
  可以以sysdba身份登录成功,进行数据库方面的操作.
  当以远程进行登录时,执行:
  sqlplus /nolog
  SQL>conn /assysdba
  则会显示:
  ERROR:ORA-01031:insufficient privileges
  即不允许以sysdba身份远程登录系统,这也是OS认证这所以称为本地认证方式的原因.
  (2).Sqlnet.authentication_services=(NONE),同时
  Remote_login_passwordfile=(EXCLUSIVE)|(SHARED),配合口令文件PWDsid.ora,此时为口令文件认证方式:
  当在本地以oracle_dba组下的用户登录进入系统时,进行以下操作:
  sqlplus /nolog
  SQL>conn /assysdba
  则会显示:
  ERROR:ORA-01031:insufficient privileges
  在本地或远程进行下边的操作:
  sqlplus /nolog
  SQL>conn sys/密码@服务名assysdba
  可以进入系统,也就是说口令文件认证方式允许用户从本地或远程以sysdba身份登录,但必须提供口令字.
  (3).Sqlnet.authentication_services=(NTS),同时
  Remote_login_passwordfile=(EXCLUSIVE)|(SHARED),配合口令文件PWDsid.ora,此时为操作系统认证和口令文件认证同时起作用:
  当在本地以oracle_dba组下的用户登录进入操作系统后,进行下边的操作:
  sqlplus /nolog
  SQL>conn /assysdba
  可以进入系统.即操作系统认证方式登录成功.
  当在远程执行:
  sqlplus /nolog
  SQL>conn sys/密码@服务名assysdba
  同时可正常登录到数据库系统,即口令文件认证方式登录成功.
  附:
  要知道以下几种登陆方式不是一种概念
  sqlplus /nolog
  1: conn /assysdba                    本机登陆,使用操作系统认证,有无监听都可以
  2: conn sys/password assysdba   本机登陆,使用密码文件认证,有无监听都可以
  3: conn sys/password@dbanote assysdba 可以本机可以远程,使用密码文件认证,必须有监听,必须有tnsnames.ora,remote_login_passwordfile必须是EXCLUSIVE
  说明:
  从oracle的解释可以知道,SQLNET.AUTHENTICATION_SERVICES=(NTS)是WINDOWS系统专用的,对linux/UNIX是不适用的。
  最后做一个简单的总结:
  1、在windows下,SQLNET.AUTHENTICATION_SERVICES必须设置为NTS或者ALL才能使用OS认证;不设置或者设置为其他任何值都不能使用OS认证。
  2、在linux下,在SQLNET.AUTHENTICATION_SERVICES的值设置为ALL,或者不设置的情况下,OS验证才能成功;设置为其他任何值都不能使用OS认证


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-582871-1-1.html 上篇帖子: oracle 查询一段时间之前的数据 下篇帖子: CentOS-6 64位安装oracle 11g
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表