lunes, 2 de julio de 2012

8.1. CREAR Y GESTIONAR CUENTAS DE USUARIO DE BASE DE DATOS.


Para establecer una sesión contra una Instancia y una Base de Datos, un usuario debe conectarse a una cuenta de usuario. La cuenta debe ser especificada por su nombre y autentificada por algún medio. La manera que la cuenta fue creada fijara un rango de atributos para la sesión, algunos de los cuales puede ser cambiado posteriormente mientras la sesión está en curso. Existe una serie de cuentas creadas en el momento de creación de la Base de Datos y el DBA generalmente creara muchas más posteriormente.
En algunas aplicaciones, cada usuario tendrá su propia cuenta de usuario de Base de Datos. Esto significa que la Base de Datos es plenamente consciente a quien pertenece cada sesión realmente. Este modelo de seguridad funciona bien para pequeñas aplicaciones pero es a menudo impráctico para grandes sistemas con muchas cientos o miles de usuarios. Para grandes sistemas, muchos usuarios se conectarán con la misma cuenta de usuario. Este modelo se basa en la aplicación para asignar el usuario final real a una cuenta de usuario de Base de Datos, y se puede hacer de la seguridad a nivel usuario y auditoria más complejo. Este capítulo se asume que conocen a cada usuario a la Base de Datos; todos ellos tienen su propia cuenta de usuario.


ATRIBUTOS DE LAS CUENTAS DE USUARIO.
Una cuenta de usuario tiene una serie de atributos definido en la cuenta en tiempo de creación. Estos serán aplicados a las sesiones que se conectan a la cuenta, aunque algunos puede ser modificados por la sesión o el DBA mientras la sesión esta ejecutándose, estos atributos son:


• Username.
• Authentication Method.
• Default Tablespace.
• Tablespace Quotas.
• Temporary Tablespace.
• User profile.
• Account Status.


Todos esto debe ser especificado al crear el usuario, aunque sólo nombre de usuario y métodos de autenticación son obligatorios, los demás tienen valores por defecto.


USERNAME
El username debe ser único en la Base de Datos y debe ajustarse por ciertas reglas. Un username debe iniciar con una Letra, debe ser no más de 30 caracteres, y consiste de solo letras, dígitos y el carácter dólar ($) y guion bajo (_). Un username no puede ser una palabra reservada. Las letras son case sensitive pero serán convertidas automáticamente a mayúsculas. Todas estas reglas (con la excepción de la longitud) puede ser evadidas sin el username es especificado dentro de comillas dobles, como lo muestra en la Figura 8-1.
En el primer ejemplo de la figura, un username JOHN es creado. Este fue ingresado en minúsculas, pero se han convertido a mayúsculas, como puede verse en la primera consulta. El segundo ejemplo utiliza doble comillas para crear el usuario con un nombre en minúsculas. El tercer y cuarto ejemplo utilizada doble comillas para eludir las reglas en caracteres y palabras reservadas; ambos fallarían sin las comillas dobles. Si un username incluye letras en minúsculas o caracteres no validos o una palabra reservada, entonces las comillas dobles deben ser siempre utilizadas para conectarse a la cuenta posteriormente.




EN EL TRABAJO
Es posible el uso de usernames no estándares, es esto puede causar confusión terrible. Algunas aplicaciones se basan en la conversión del caso; otras siempre utilizan comillas dobles. Puede ser considerado buena práctica siempre usar mayúsculas y solo caracteres estándar. Esto significa que comillas dobles puede ser utilizadas o no.


Un username nunca puede ser cambiado después de su creación. Si es necesario cambiarlo, la cuenta debe ser eliminada y otra cuenta creada. Esta es una acción drástica, porque todos los objetos en el esquema del usuario serán eliminados con el usuario.


TABLESPACE DEFAULT Y QUOTAS.
Cada cuenta de usuario tiene un Tablespace por defecto, este es el Tablespace donde todos los objetos de esquema (como tablas o índices) creados por el usuario residirán. Es posible para un usuario tener objetos propios en cualquier Tablespaces en el cual ha sido dada una Quota. Pero a menos que otro Tablespace se especifique cuando se crea el objeto, entrara en Tablespace por defecto del usuario.
Hay un Tablespace por default de Base de Datos grande que será aplicado a todas las cuentas de usuario si un Tablespace default no se especifica cuando se crea el usuario. El valor por defecto puede ser establecido cuando se crea la Base de Datos y cambiarlo posteriormente con.


ALTER DATABASE DEFAULT TABLESPACE tablespace_name ;


FIGURE 8-1
Si un Tablespace por defecto no es especificado cuando se crea la Base de Datos, se establecerá el Tablespace SYSTEM.


EN EL TRABAJO
Despues de crear una Base de Datos, no deje el Tablespace SYSTEM por default; esto es muy mala práctica. O bien el cambio tan pronto como se haya creado otro Tablespace, o después del comando CREATE DATABASE de hecho le permite crear un Tablespace por defecto.


Una Quota es la cantidad de espacio en el Tablespace que un usuario está permitido a ocupar. El puede crear objetos y asignar extents a los mismos hasta que la cuota es alcanzada. Si él no tiene una Quota en un Tablespace, el no puede crear objetos en los absoluto. Las Quotas pueden ser cambiadas en cualquier momento. Si la Quota de un usuario es reducida por debajo del tamaño de los objetos que ya posee (o incluso reducida a cero), los objetos sobrevivirán y todavía serán utilizables, pero no se le permitirá hacerse más grandes.


La figura 8-2 muestra como investigar y establecer Quotas.
La primera consulta en la figura es contra DBA_USERS y determina los Tablespace default y temporal para el usuario JOHN, creado en la figura 8-1. DBA_USERS tiene una fila por cada cuenta de usuario en la Base de Datos. El usuario JHON ha cogido los default de la Base de Datos para default y temporal Tablespaces, que se muestran en la última consulta contra DATABASE_PROPERTIES.




EXAMEN
Antes de crear una Tabla, usted debe tener permiso para ejecutar CREATE TABLE y una Quota en un Tablespace en la que puede crearlo.


El dos comandos ALTER USER en la figura 8-2, da a JOHN la capacidad para tomar 10 MB de espacio en el Tablespace USERS y una cantidad ilimitada de espacio en el Tablespace EXAMPLE. La consulta contra DBA_TS_QUOTAS confirma esto la figura “-1” es la forma “ilimitada” está representado. En el momento de la consulta se ejecuto JOHN no tenia creado ningún objeto, por lo que las cifras bytes son ceros, lo que indica que el no está utilizando espacio en ese Tablespace.


EN EL TRABAJO
La mayoría de usuarios no necesitarán las Quotas, porque ellos nunca crearán objetos. Tendrán solamente permisos contra los objetos poseídos por otros esquemas. Los pocos esquemas de objetos poseídos probablemente tendrán QUOTA UNLIMITED en los Tablespaces donde residen sus objetos.


TABLESPACE TEMPORALES.
Objetos permanentes son almacenados en Tablespaces permanentes, objetos temporales son almacenados en Tablespace temporales. Una sesión necesitara espacio en un Tablespace temporal, si necesita espacio para ciertas operaciones que exceden el espacio disponible en la PGA de la sesión. Recuerde que la PGA es la Program Global Area, la memoria privada a la sesión. Operaciones que necesitan espacio temporal (en memorial si es posible, en un Tablespace temporal si es necesario) incluye ordenación de filas, unión de tablas, construcción de índices y utilización de tablas temporales. Cada cuenta de usuario es asignada a un Tablespace temporal, y todas las sesiones de usuario conectadas a la cuenta compartirán este Tablespace temporal.
La consulta contra DBA_USERS en la figura 8-2 muestra el Tablespace temporal del usuario JOHN, que es el Tablespace Temporal default de la Base de Datos. Esto es mostrado por la última consulta en la figura 8-2, contra DATABASE_PROPERTIES.
Objetos temporales son creados y eliminados según sea necesario por la Base de Datos. Un usuario no es necesario otorgar una cuota en un Tablespace Temporal. Esto es porque los objetos no son en realidad propiedad de él, sino son propiedad del usuario SYS, que tiene una cuota limitada en todos los Tablespaces.


EXAMEN
Los usuarios no necesitan una cuota en sus Tablespace temporal.


Para cambiar el Tablespace Temporal de un usuario (que afectara a todas las futuras sesiones que se conecten a la cuenta), utilice el comando ALTER USER:


ALTER USER username TEMPORARY TABLESPACE tablespace_name;


EN EL TRABAJO
Si muchos usuarios se conectan a la misma cuenta de usuario, ellos compartirán el uso de un Tablespace temporal. Esto puede ser un cuello de botella de rendimiento, que puede evitarse mediante el uso de grupos de Tablespaces temporales.


PERFILES (PROFILE)
Un perfil de usuario controla su configuración de la contraseña y le da una cantidad limitada de control sobre su uso de recursos. El uso de perfiles es detallado en la sección Create y Gestionar Perfiles.
Los perfiles son una manera útil de gestionar Passwords y recursos, pero en realidad solo puede aplicarse en un entorno donde cada usuario de aplicación tiene su propia cuenta de usuario de base de datos. Por ejemplo, si muchos usuarios conectados a la misma cuenta de usuario de base de datos, usted no desea que la contraseña sea invalidado para uno de ellos, porque eso bloquearía todos los demás. Similarmente, el uso de los recursos a menudo necesita ser gestionados en función de cada sesión en lugar de para la cuenta en total.


ESTADO DE LA CUENTA.
Cada cuenta de usuario tiene un cierto estatus, como se indica en la colunma ACCOUNT_STATUS de DBA_USERS. Estos son nueve posibles:

• OPEN la cuenta está disponible para su uso.
• LOCKED esto indica que el DBA deliberadamente bloqueo la cuenta. El usuario no puede conectarse a una cuenta bloqueada.
• EXPIRED esto indica que el tiempo de visa ha caducado. Los Password pueden tener un tiempo de vida limitado. Ningún usuario puede conectarse a una cuenta EXPIRED hasta que el Password sea reseteado.
• EXPIRED & LOCKED no solo ha sido bloqueada la cuenta, pero su contraseña también ha expirado.
• EXPIRED (GRACE) esto indica que el periodo de gracia está en vigor. Un Password no necesita expirar inmediatamente cuando su curso de vida termina; puede ser configurado con un periodo de gracia durante el cual los usuarios pueden conectarse a la cuenta de tener oportunidad para cambiar el Password.
• LOCKED (TIMED) esto indica que la cuenta está bloqueada porque el numero de intentos de Login fallo. Una cuenta puede ser configurada para bloquearse automáticamente por un periodo después de una Password incorrecto se presenta un número determinado de veces.
• EXPIRED & LOCKED (TIMED)
• EXPIRED (GRACE) & LOCKED
• EXPIRED (GRACE) & LOCKED (TIMED)


Para bloquear y desbloquear una cuenta, utilice estos comandos:


ALTER USER username ACCOUNT LOCK ;
ALTER USER username ACCOUNT UNLOCK ;


Para obligar al usuario a cambiar su Password, utilice este comando:


ALTER USER username PASSWORD EXPIRE;


Esto inmediatamente iniciara el periodo de gracia, obligando al usuario a cambiar su password en el siguiente intento de Login. No hay comando como “alter … unexpire”. La única manera de hacer la cuenta es totalmente funcional otra vez para restablecer su contraseña;


METODOS DE AUTENTIFICACION
Una cuenta de usuario debe tener un método de autentificación: algún medio por el cual la Base de Datos pueda determinar su el usuario intenta crear una sesión conectándose a la cuenta se le permite hacerlo. La técnica más sencilla es mediante la presentación de una contraseña que será comparada contra una contraseña almacenada dentro de la Base de Datos, pero hay alternativas. Las posibilidades son:


• Operating System Authentication.
• Password File Authentication.
• Password Authetication.
• External Authentication.
• Global Authentication.


Las primeras dos técnicas son utilizadas solo por administradores; las ultimas requieren un Servidor de Directorio LDAP. El servidor de directorio LDAP es el Oracle Internet Directory, enviadas como parte de Oracle Application Server.


OPERATING SYSTEM AND PASSWORD FILE AUTHENTICATION
Para habilitar autentificación de Sistema Operativo y Archivo de Password (los dos van juntos) para una cuenta, usted debe otorgar al usuario o SYSDBA o el privilegio SYSOPER:


GRANT [sysdba | sysoper ] TO username ;


La concesión de uno o ambos de estos privilegios copiara el Password de usuario del Diccionario de Datos en el archivo externo de Password. Donde este puede ser leído mediante la instancia incluso si la Base de Datos no está abierta. También permite que la instancia autentifique a usuario comprobando si el usuario del sistema operativo es un miembro del grupo de sistema operativo que posee la instalación de Oracle Home.
Después de la creación de la Base de Datos, el único usuario con estos privilegios s SYS.
Para utilizar la autentificación de archivo de Password, el usuario puede conectarse con esta sintaxis con SQL PLUS.


CONNECT username / password [@db_alias] AS [ SYSOPER | SYSDBA ] ;


Tenga en cuenta que la autentificación de archive de password puede ser utilizada para una conexion a una Base de Datos Remota sobre Oracle Net.
Para utilizar la autentificación de sistema operativo, el usuario puede conectarse con esta sintaxis con SQL PLUS:


CONNECT / AS [ SYSOPER | SYSDBA ] ;


El Password de sistema operativo no es almacenado por Oracle, y por lo tanto no hay ediciones con contraseñas cambiantes.
El equivalente de estas sintaxis está disponible cuando se conecta con el Database Control, mediante la selección de SYSDBA desde la conexión en la lista desplegable en la ventana de Logindel Database Control. Para determinar a quien el rpivilegio SYSDBA y el SYSOPER se han concedido, consulte la vista V$PWFILE_USERS. La conexión con la autentificación de sistema operativo o archivo de Password siempre es posible, no importa en qué estado la Instancia y Base de Datos se encuentren, y es necesario para emitir comandos STARTUP o SHUTDOWN. Un privilegio tercero que opera de la misma manera como SYSDBA y SYSOPER es SYSASM. Este es un privilegio que sólo es aplicable a los casos de ASM.


EXAMEN
Todas las sesiones de usuario debe ser autenticado. No hay tal cosa como un "anónimo" de inicio de sesión, y algún método de autenticación se debe utilizar.


PASSWORD AUTHENTICATION
La sintaxis para una conexión con autentificación Password utilizando SQL PLUS es


CONNECT username / password [@db_alias] ;


O con Database Control, selección NORMAL de la lista desplegable.
Cuando se conecta con autentificación de Password, la instancia validara el Password dada contra esa que esta almacenada con la cuenta de usuario en el diccionario de datos. Para que esto funcione, la Base de datos debe estar abierta; es lógicamente imposible emitir un comando STARUP o SHUTDOWN cuando se conecta con autentificación Password. El usuario SYS no está permitido para conectarse con la autentificación Password; solo autentificación Archivo de contraseñas, sistema operativo o autentificación LDAP como posibles para SYS.
Los nombres de usuario distinguen entre mayúsculas y minúsculas, pero son convertidos automáticamente a mayúsculas a menos que especifique con comillas dobles. En versiones previas de la Base de Datos, Los Passwords no distinguían mayúsculas y minúsculas en lo absoluto. Con la versión 11g, los Passwords son sensibles a mayúsculas y no hay ningún caso de conversión automática. No es necesario el uso de comillas dobles; el Password siempre será leído exactamente como se escribió.
Cuando una conexión es realizada atraves de una red, la versión 11g siempre encriptara utilizando el algoritmo AES antes de su transmisión. Para utilizar encriptamiento para el tráfico en curso entre procesos usuarios y procesos servidor requiere la opción de Seguridad Avanzada, pero el encriptamiento de Password es un estándar.
Cualquier usuario puede cambiar su Password de su cuenta de usuario en cualquier momento, o un usuario con muchos privilegios (tal como SYSTEM) puede cambiar cualquier Password de la cuenta de usuario. La sintaxis (si va a cambiar su propia contraseña u otro) es:


ALTER USER username IDENTIFIED BY password ;


Si su cuenta de usuario es creada con autentificación externa, Oracle delegara la autentificación a un Servicio Externo; no le pedirá una contraseña. Si la opción de Seguridad Avanzada ha sido licenciada, entonces el servicio externo puede ser un Servidor Kerberos, un Servidor Raduis, o el servicio nativo de autentificación (en el entorno Windows) de Windows. Cuando un usuario intenta una conexión a la cuenta de usuario, en lugar de la autentificación del mismo usuario, la instancia de Base de Datos aceptara o rechazara la autentificación en función a si el servicio externo de autentificación autentifico al usuario. Por ejemplo, si utilizas Kerberos, la Base de datos comprobara que el usuario tiene un token valido de Kerberos.
Sin la opción de seguridad avanzada, la única forma para autentificación externa puede ser utilizando la autentificación del sistema operativo. Esto es un requerimiento para la cuentas SUSDBA y SYSOPER (como ya hemos comentado) pero puede también ser utilizado por usuarios normales.
La técnica es crear una cuenta de usuario Oracle con el mismo nombre como la cuenta de usuario de sistema operativo pero procedido con una cadena especificada por el parámetro de instancia OS_AUTHENT_PREFIX. Este valor predeterminado de parámetro a la cadena OPS$. Para comprobar su valor, utiliza la consulta tal como esta:


select value from v$parameter where name='os_authent_prefix';


Sobre Linux o Unix, autentificación externa con sistema operativo es muy simple. Suponiendo que el OS_AUTHENT_PREFIX está predeterminado y que hay un usuario del sistema operativo llamado jwatson, entonces crear un usuario Oracle y otorgar el privilegio de crear sesión:


create user ops$jwatson identified externally;
grant create session to ops$jwatson;


Cualquier usuario Logeado sobre Unix como jwatson será capaz de emitir este comando:


sqlplus /


Desde un prompt de sistema operativo, será conectado a la Base de Datos con la cuenta de usuario ops$jwatson. Debajo de Windows, cuando Oracle consulta el sistema operativo para encontrar la identidad del usuarios, Windows Usualmente regresa (depending on details of Windows security configuration) el nombre de usuario prefijado con el Dominio Windows. Suponiendo que el Id de inicio de sesión de Windows es John Watson (incluyendo un espacio) y que el dominio es JWACER (que pasa a ser el nombre de la maquina) y que el OS_AUTHENT_PREFIX es un valor por default, el comando será:


create user "OPS$JWACER\JOHN WATSON" identified externally;


Tenga en cuenta que el nombre de usuario deber en mayúsculas, y debido a los caracteres ilegales (una barra invertida y un espacio) debe ir entre comillas dobles.


EN EL TRABAJO
Utilizar autentificación externa puede ser muy útil, pero solo si el usuario realmente inicia sesión en la maquina host de la Base de Datos. Los usuarios rara vez lo hará, por lo que la técnica es más probable que sea de valor para las cuentas utilizadas para ejecutar trabajos de mantenimiento o por lotes.


AUTENTIFICACION GLOBAL
Un nuevo estándar para la gestión de identidad es el uso de servidores LDAP. Un directorio compatible con un servidor LDAP, el Oracle Internet Directory, es distribuido por Oracle Corporation como parte del Servidor de aplicaciones Oracle. Un usuario global es un usuario que se define en el directorio LDAP y autentificación global es una forma de delegar la autentificación de usuarios en el directorio.
Hay dos técnicas para autentificación global:


• Los usuarios pueden ser definidos en el directorio, y también en la Base de Datos. Un usuario se conecta a una cuenta de usuario con el mismo nombre que el nombre común del usuario en el directorio.
• Los usuarios pueden ser definidos solo en el directorio. La base de datos se dará cuenta de los nombres de los usuarios globales, pero se conecta a todos los usuarios a la misma cuenta de usuario.

Ninguna de estas técnicas requiere que el usuario presente una contraseña para la base de datos. La conexión va a pasar sin ningún mensaje si las cuentas de la guía y las cuentas de usuario de base de datos están configuradas correctamente.


CREANDO CUENTAS.
El comando CREATE USER solo tiene dos argumentos necesarios: un nombre de usuario y un método de autentificación. Opcionalmente. Puede aceptar una clausula para especificar un Tablespace por default y un Tablespace temporal. Una o más clausulas de Quota, un nombre de perfil, y comandos para bloquear la cuentas y caducar el Password. Un típico ejemplo sería.


1 create user scott identified by tiger
2 default tablespace users temporary tablespace temp
3 quota 100m on users, quota unlimited on example
4 profile developer_profile
5 password expire
6 account unlock;


Solo la primera línea es requerida, hay valores por default para todos lo demás. Tomando el comando línea por línea.


1. Proporciona el username, y una contraseña para autentificación con contraseña.
2. Proporciona los Tablespaces Default y Temporal.
3. Establece Quotas sobre el Tablespace Default y otros.
4. Designa un Perfil para contraseña y gestión de recursos.
5. Obliga al usuario cambiar su Password inmediatamente.
6. Hace la cuenta disponible para usarla (que habría sido el valor por default.).


Cualquier atributo de una cuenta puede ser modificado posteriormente con el comando ALTER USER. Con la excepción del nombre. Para cambiar el Password,


alter user scott identified by lion;


Para cambiar los Tablespaces Default y temporal.


alter user scott default tablespace hr_data temporary tablespace hr_temp;


Para cambiar Quotas.


alter user scott quota unlimited on hr_data, quota 0 on users;


Para cambiar el Perfil.


alter user scott profile prod_profile;


Para obligar cambiar su password,


alter user scott password expire;


Para bloquear la cuenta,


alter user scott account lock;


Teniendo creada una cuenta de usuario, puede ser necesario eliminarla.


drop user scott;


Este comando únicamente funcionará si el usuario no posee ningún objeto: si el esquema esta vacio. Si usted no quiere identificar todos los objetos propios y eliminarlos primero, puede eliminarlos con el usuario pero especificando CASCADE:


drop user scott cascade;


Para gestionar las cuentas con el Database Control, desde la pagina principal del Database Control tome la ficha Schema y luego el Link Users en la sección de seguridad. Esto mostrará las cuentas de usuario en la Base de Datos. La figura 8-3 las muestra ordenadas en orden inverso de su fecha de creación. Para cambiar el orden haga clic en el encabezado de la columna correspondiente.
El primer “usuario” es la imagen es el PUBLIC. Este es un usuario ficticio a quien los privilegios pueden ser otorgados si usted desea concederlos a cada usuario. El botón Crear presentará una ventana solicitando todos los atributos de la cuenta de usuario. El botón Delete eliminará una cuenta, con la opción CASCADE si es necesario. Pero le dará un “Estas seguro de” antes de proceder.




Para modificar los atributos de una cuenta, seleccione y dar clic en Edit. Esto lo llevará a la ventana Editar Usuario. Como lo muestra la figura 8-4. Esta ventana puede ser utilizado para cambiar todos los aspectos de la cuenta excepto para Quotas de Privilegios, que tienen sus propias fichas. También cuenta con etiquetas para Grant y Revoking privilegios y roles.


EJERCICIO 8-1.
CREAR USUARIOS.
En este ejercicio, usted creara algunos usuarios para ser utilizados por los ejercicios restantes en este capítulo. Se asume que hay un Tablespace permanente llamado EXAMPLE y un Tablespace temporal llamado TEMP. Si estos no existen, o crearlos o utilizar cualquier Tablespace adecuado.




1. Conéctese a su Base de Datos con SQL*PLUS como un usuario de privilegios altos, tales como SYSTEM o SYS.


2. Crear tres usuarios:
create user alois identified by alois
default tablespace example password expire;
create user afra identified by oracle;
default tablespace example quota unlimited on example;
create user anja identified by oracle;


3. Confirme que los usuarios han sido creados con el Database Control. Desde la página principal de la Base de Datos, la ruta de navegación es la Ficha Server y el link Users en la sección Security. Que debe ser parecido a los que se muestran en esta ilustración:




4. Desde el SQL*PLUS, intente conectarse como usuario ALOIS:
connect alois/alois

5. Cuando se le solicite, seleccione un nuevo Password (tales como “oracle”). Pero no va a servir de algo, porque ALOIS no tiene el rpivilegio CREATE SESSION.

6. Refrescar la ventana del Database Control, y note el status de la cuenta ALOIS ya no es EXPIRED pero abierto, porque su contraseña ha cambiado.

No hay comentarios:

Publicar un comentario