远程操作系统身份验证不适用于Oracle 21c PDB

5gfr0r5j  于 2023-11-17  发布在  Oracle
关注(0)|答案(2)|浏览(123)

我有一个问题与Oracle 21 c PDB连接。我已经创建了一个操作系统用户,应该能够登录到可插入数据库与.

sqlplus /

字符串
.命令。但是它不工作的方式我如何配置。

详情

**操作系统:**Rocky Linux 8.8版(绿色黑曜石)
**Oracle版本:**Oracle 21 c
**CDB:**iqlink2c
**PDB:**iqlink2

下面你可以看到步骤…
1.)我已在**.cshrc文件中使用以下参数创建了orcshrc**OS(Linux - Rocky 8)用户.

setenv ORACLE_BASE /opt/oracle
setenv ORACLE_HOME $ORACLE_BASE/product/21c/dbhome_1
setenv ORACLE_SID iqlink2
setenv ORACLE_TERM xsun5
setenv NLS_LANG AMERICAN_AMERICA.WE8ISO8859P1
setenv PATH ${PATH}:${ORACLE_HOME}/bin
setenv EDITOR /bin/vi


2.)我已登录到Pluggable Database(iqlink 2),并已使用以下语句创建了original DB用户.

create user orasync
identified externally
default tablespace COMPANY
temporary tablespace TEMP
quota unlimited on COMPANY
quota unlimited on COMPANY_INDX
/


。并授予dba特权。。

GRANT dba TO orasync
/


3.)我登录到容器数据库(iqlink 2c),并检查了os_authent_prefixremote_os参数.

SQL> SHOW PARAMETERS os_authent_prefix;

NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
os_authent_prefix            string  ops$
SQL> SHOW PARAMETERS remote_os;

NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
remote_os_roles              boolean     FALSE
SQL>

  • 注意:我知道remote_os_authent参数应该为TRUE**,但它在Oracle 21 c中根本不再可用。此时我想知道Oracle 21 c PDB是否可以进行远程操作系统登录?!*

4.)我删除了os_authent_prefix值,然后重新启动数据库...

[oracle@company02 ~]$ sqlplus sys@iqlink2c as sysdba

SQL*Plus: Release 21.0.0.0.0 - Production on Sat Nov 11 00:52:45 2023
Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.

Enter password: 

Connected to:
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0

SQL> alter system set os_authent_prefix='' scope=SPFILE;

System altered.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup; 
ORACLE instance started.

Total System Global Area 4294967152 bytes
Fixed Size          9695088 bytes
Variable Size        3388997632 bytes
Database Buffers      872415232 bytes
Redo Buffers           23859200 bytes
Database mounted.
Database opened.
SQL> show parameter os_authent_prefix;              

NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
os_authent_prefix            string


5.)我使用orbloc用户登录并尝试登录到可插入数据库.

[orasync@company02 ~]$ sqlplus /

SQL*Plus: Release 21.0.0.0.0 - Production on Sat Nov 11 01:04:49 2023
Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.

ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
Additional information: 4775
Additional information: 1962365431
Process ID: 0
Session ID: 0 Serial number: 0

Enter user-name:


.我也试过.

[orasync@company02 ~]$ sqlplus /@iqlink2

SQL*Plus: Release 21.0.0.0.0 - Production on Sat Nov 11 00:47:53 2023
Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.

**ERROR:
ORA-01017: invalid username/password; logon denied**

Enter user-name:


在这一点上,我真的不明白为什么不工作,因为我得到的答案为tnsping.

[orasync@company02 ~]$ tnsping iqlink2

TNS Ping Utility for Linux: Version 21.0.0.0.0 - Production on 11-NOV-2023 01:08:00

Copyright (c) 1997, 2021, Oracle.  All rights reserved.

Used parameter files:
/opt/oracle/product/21c/dbhome_1/network/admin/sqlnet.ora

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = iqlinkxg02)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = iqlink2)))
OK (0 msec)
[orasync@company02 ~]$


.我也可以从同一个操作系统用户使用其他数据库用户登录.

[orasync@company02 ~]$ sqlplus sys1@iqlink2

SQL*Plus: Release 21.0.0.0.0 - Production on Sat Nov 11 01:09:18 2023
Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.

Enter password: 
Last Successful login time: Sat Nov 11 2023 01:03:42 +01:00

Connected to:
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0

SQL>


我试图解决的第一件事是删除os_authent_prefix参数的ops$值,但在这种情况下,我得到了ORA-01017: invalid username/password; logon denied错误。
我尝试的另一件事是,我在服务器上配置了Oracle 19 c客户端,并相应地修改了Oracle 19 c用户的.cshrc文件。配置是好的,因为我可以用其他DB用户登录到DB,但我仍然得到ORA-01017: invalid username/password; logon denied错误。
最重要的是,我试图将setenv TWO_TASK $ORACLE_SID参数添加到.cshrc文件中,但实际上这只是一个形式上的更改,没有帮助。
任何帮助将不胜感激!

ncgqoxb0

ncgqoxb01#

remote_os_authentication被删除是有充分理由的。这是一个主要的安全漏洞。* 任何 * 客户端-甚至是黑客-与本地用户共享与数据库用户相同的名称可以连接到数据库。这是一个永远不应该使用的身份验证架构。
也就是说,不能以您描述的方式直接连接到PDB。只有CDB可以通过IPC类型的连接进行连接。对于PDB,您 * 必须 * 指定TNS别名并通过网络侦听器进行连接。然后,您可以在客户端上使用Oracle Wallet来保存用户名/密码凭据,并实现与OS身份验证IPC连接相同的效果。
请参阅此处的文档:https://www.oracle.com/technetwork/database/security/twp-db-security-secure-ext-pwd-stor-133399.pdf
网址:https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/configuring-authentication.html#GUID-3EA07020-A9F3-4FF9-9518-E1AEA3BDDBBE
基本步骤如下:
1.创建一个钱包
1.将用户名/密码凭据添加到钱包
1.将sqlnet.ora配置为指向Wallet
1.使用类似sqlplus /@pdb_tns_alias的方式连接
另请注意:您的Linux发行版不支持Oracle服务器;要获得正确的功能,您应该使用Oracle Linux。

v440hwme

v440hwme2#

如果你想让你的新操作系统用户(orboc)可以使用Oracle操作系统身份验证,那么你必须修改orboc的操作系统成员身份,使其成为Oracle dba组的成员(通常是dba,使用#usermod)。当位于操作系统级别时,你不能使用操作系统身份验证直接连接到Pluggable数据库(因为它只会让你处于根数据库)。
解决方法是在tnsnames.ora文件后面附加PDB的Net Service Name(如果不存在)。然后使用以下语法:

[orasync@company02 ~]$ sqlplus orasync/<password>@<Net_service_name_of_iqlink2>

字符串
注意:此演练不需要修改操作系统成员资格!祝你好运!

相关问题