La autenticación del sistema operativo permite a Oracle pasar el control de la autenticación del usuario al sistema operativo. Las conexiones de autenticación de SO no privilegiadas toman la siguiente forma.
sqlplus /
sqlplus /@service
Cuando se intenta una conexión desde el servidor de base de datos local, el nombre de usuario del sistema operativo se pasa al servidor Oracle. Si se reconoce el nombre de usuario, se acepta la conexión Oracle; de lo contrario, se rechaza la conexión.
Este artículo presenta los pasos de configuración necesarios para configurar la autenticación del sistema operativo en las plataformas UNIX / Linux y Windows.
Primero, cree un usuario del sistema operativo, en este caso el usuario se llama «dbandtech». En entornos UNIX y Linux, esto se hace utilizando los comandos useradd y passwd.
# useradd dbandtech
# passwd dbandtech
Changing password for dbandtech.
New password:
Retype new password:
#
En Windows, los usuarios locales se crean usando el cuadro de diálogo Administración de la computadora (Inicio> Programas> Herramientas administrativas> Administración de la computadora), o los usuarios del dominio se pueden crear en Active Directory.
A continuación, intente conectarse a Oracle como usuario autenticado del sistema operativo. ¡Esperamos que esto falle! Puede ser necesario configurar algunas variables de entorno para que SQL * Plus funcione correctamente. Bajo UNIX o Linux esperaría algo como lo siguiente.
# su - dbandtech
$ export ORACLE_HOME=/u01/app/oracle/product/10.1.0/db_1
$ export PATH=$PATH:$ORACLE_HOME/bin
$ export ORACLE_SID=DEV1
$ sqlplus /
SQL*Plus: Release 10.1.0.3.0 - Production on Wed Jun 7 08:43:30 2006
Copyright (c) 1982, 2004, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
El siguiente es el equivalente de Windows.
C:\> set ORACLE_SID=DB10G
C:\> sqlplus /
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Oct 17 11:17:55 2006
Copyright (c) 1982, 2005, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
En ambos casos, las conexiones fallaron porque no le hemos dicho a Oracle que los usuarios están autenticados por el sistema operativo. Para hacer esto, debemos crear un usuario de Oracle, pero primero debemos verificar el valor del parámetro de inicialización Oracle OS_AUTHENT_PREFIX.
SQL> SHOW PARAMETER os_authent_prefix
NAME TYPE VALUE
------------------------------------ ----------- --------------
os_authent_prefix string ops$
SQL>
Como puede ver, el valor predeterminado es «ops$». Si esto no es apropiado, se puede cambiar usando el comando ALTER SYSTEM, pero por ahora usaremos este valor predeterminado.
Ahora que conocemos el prefijo de autenticación del sistema operativo, podemos crear un usuario de la base de datos para permitir una conexión autenticada del sistema operativo. Para hacer esto, creamos un usuario de Oracle de la manera normal, pero el nombre de usuario debe ser el valor del prefijo concatenado con el nombre de usuario del sistema operativo. Entonces, para el usuario del sistema operativo «dbandtech», esperaríamos un nombre de usuario Oracle de «ops$dbandtech» en una plataforma UNIX o Linux.
-- UNIX
CREATE USER ops$dbandtech IDENTIFIED EXTERNALLY;
GRANT CREATE SESSION TO ops$dbandtech;
La situación se complica ligeramente en las plataformas Windows, ya que el nombre del dominio o la máquina forma parte del nombre de usuario presentado a Oracle. En las plataformas Windows, esperaría un nombre de usuario Oracle de «OPS$DOMAIN\DBANDTECH» para el usuario de Windows «dbandtech».
-- Windows
CREATE USER "OPS$DBANDTECH.COM\DBANDTECH" IDENTIFIED EXTERNALLY;
GRANT CREATE SESSION TO "OPS$ORACLE-BASE.COM\DBANDTECH";
Cuando se utiliza un servidor de Windows, hay una consideración adicional. La siguiente opción debe establecerse en el archivo «%ORACLE_HOME%\network\admin\sqlnet.ora».
SQLNET.AUTHENTICATION_SERVICES = (NTS)
Con la configuración completa, podemos repetir nuestras pruebas de conexión de autenticación del sistema operativo. Primero, en un entorno UNIX o Linux.
su - dbandtech
export ORACLE_HOME=/u01/app/oracle/product/10.1.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=DEV1
sqlplus /
SQL*Plus: Release 10.1.0.3.0 - Production on Wed Jun 7 08:41:15 2006
Copyright (c) 1982, 2004, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining options
SQL>
Luego, la misma prueba en un entorno Windows.
C:\> set ORACLE_SID=DB10G
C:\> sqlplus /
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Oct 17 11:47:01 2006
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL>
Como puede ver, los servidores de bases de datos en ambos entornos ahora están configurados para permitir que el usuario «dbandtech» se conecte utilizando la autenticación del sistema operativo.
Si prefiere no tener un prefijo para el usuario de Oracle, debe establecer el parámetro OS_AUTHENT_PREFIX en nulo (cadena vacía). La sintaxis ALTER SYSTEM no se adapta bien a las cadenas de longitud cero, por lo que debe realizar el cambio a la larga.
create pfile='/tmp/pfile.txt' from spfile;
shutdown immediate;
Agregue esto al archivo «/tmp/pfile.txt».
os_authent_prefix=''
Recrea el pfile.
sqlplus / as sysdba
create spfile from pfile='/tmp/pfile.txt';
startup
show parameter os_authent_prefix
NAME TYPE VALUE
------------------------------------ ----------- ----------------
os_authent_prefix string
SQL>
Pingback: Secure External Password Store - DBandTech.com