Monday, January 27, 2014

Autentificación Oracle por medio del SO Linux / Widows

A) En Linux:

1. Creamos el usuario en el sistema operativo

# useradd marcos
# passwd marcos
Changing password for marcos.

2. Configuramos los parámetros siguientes:

La autentificación por sistema operativo  no esta activada por defecto en Oracle. Para permitir el uso de usuarios del sistema operativo , llamados por Oracle OPSS users, abrimos SQL Plus o alg'un cliente SQL Y ejecutamos el siguiente comando:


alter system set os_authent_prefix=OPS$ scope=spfile;

Nos modifica el fichero binario: cat /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/dbs/spfile%SID.ora

Este contiene parámetros de configuración de la instancia que se esta ejecutando.

Reiniciamos la DB:

shutdown immediate
Startup

Creamos el usuario en nuestra base de datos:

CREATE USER OPS$lucas IDENTIFIED EXTERNALLY DEFAULT;

Le aplicamos los roles y privilegios como cualquier otro usuario:

GRANT CONNECT, RESOURCE TO marcos;

3. Reiniciamos la base de datos: 

 /etc/init.d/oracle-%SID restart

4.- A continuación, tratamos de conectarnos a Oracle como un usuario del sistema operativo 
autenticado. Esperamos que falle! Quizás sea necesario configurar algunas variable de entorno para 
que SQL * PLUS funcione correctamente. 

- Vemos la configuración actual de SQL * PLUS

#cat 

/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/scripts/sqlplus.sh 

# su - tim_hall
$ export ORACLE_HOME=”Dato Obtenido del cat enterior”
$ export PATH=”Dato Obtenido del cat enterior”
$ export ORACLE_SID=”Dato Obtenido del cat enterior” , XE
$ sqlplus /

En el ejemplo:
$export:ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
$export PATH=$PATH:$ORACLE_HOME/bin:$PATH
$export ORACLE_SID=XE
$sqlplus /

Para que se coloquen automáticamente al iniciar sesion un usuario, editar el archivo 
/home/lucas/.bashrc y añadir las lineas 1, 2 y 3. y para que esta configuración la tengan 
usuario que creemos en el sistema las añadimos al fichero /etc/skel/.bashrc .

B) En Windows:

1. Creamos un usuario en el sistema operativo.
2. Configuramos los parámetros siguientes:

alter system set os_authent_prefix =OPS$ scope=spfile;

Nota: El valor por defecto es “OPS$” 

Si el usuario del sistema operativo es miembro de un grupo de dominio entonces también 
configuramos el siguiente parámetro:

alter system set remote_os_authent=TRUE scope=spfile;

Nota: El valor por defecto del parámetro es FALSE, 

3. Editamos el fichero sqlnet.ora y cambiamos el valor de la siguiente linea a NTS:

Sqlnet.authentication_services=(NTS)

4. Reiniciamos la base de datos:

shutdown immediate
startup

Vemos que los parámetros se hayan modificado correctamente usando :

SQL> show parameter authen
NAME TYPE VALUE
----------------------- ----------- -------------
os_authent_prefix string OPS$
remote_os_authent boolean TRUE

5. Creamos un usuario Oracle para autenticación mediante OS

Primero comprobamos el nombre del usuario del sistema operativo.

SQL> select UPPER(sys_context('userenv','os_user')) from dual;
-------------------------------------------------------------------
NOMBREDELAMAQUINA\MARCOS
Ahora creamos el usuario con el mismo nombre que vimos con la sentencia anterior, 
incluido el nombre de la máquina, añadiendo la clausula identified by EXTERNALLY. 
create user OPS$NOMBREDELAMAQUINA\MARCOS identified EXTERNALLY;
Nota: El nombre del usuario de Oracle debe tener obligatoriamente el mismo nombre que el usuario 
y el nombre de máquina del sistema operativo y al crearlo debe comenzar con “OPS$”.
Damos privilegios como a cualquier otro usuario :

SQL> grant dba to "OPS$MACHINENAME\TOM"; 
6. Testeamos la conexión a través del usuario del sistema operativo.
Sqlplus /
SQL> show user;
USER is "OPS$NOMBREDELAMAQUINA\MARCOS" 


No comments:

Post a Comment

Translate