INSTITUTO DE EDUCACION SUPERIOR TECNOLOGICO PUBLICO “MANUEL ANTONIO HIERRO POZO” I. TEMA: • • • • • II. Crear USUARIOS BASE DE DATOS DE CONTROL Crear USUARIOS en la BD Asignar/Denegar Permisos sobre el sistema Asignar/Denegar Permisos sobre los objetos de las Bases de Datos Crear PERFILES, PRIVILEGIOS Y ROLES. MARCO TEORICO 2.1 CUENTAS DE USUARIO Tanto Oracle como SQL Server utilizan el concepto de cuenta de usuario para que los usuarios autorizados puedan conectarse a la base de datos. En Oracle recibe el nombre de usuario o username. En SQL Server se le llama login ID o simplemente login. Cualquier operación que realice un usuario está regida por los privilegios asignados a su cuenta. En las bases de datos Oracle encontramos tres tipos de usuarios: • Propietarios del Esquema usuarios que crean y mantienen los objetos relacionados con una aplicación • Usuarios de la aplicación usuarios (o sistemas) que manipulan los datos de las tablas creadas por los propietarios. • Usuarios administrativos usuarios con roles especiales como el de administrador de la base de datos o administrador de la seguridad. 2.1.1 CARACTERÍSTICAS DE LOS USUARIOS DE ORACLE A los usuarios de Oracle se les puede asignar la configuración referida a: • Nombre de usuario. No puede repetirse y como máximo debe tener 30 caracteres que sólo podrán contener letras del alfabeto inglés, números, el signo dólar y el signo de guión bajo (_) • Configuración física. Se refiere al espacio asociado al usuario para almacenar sus datos (lo que Oracle llama tablespace) y la cuota (límite de almacenamiento) que se le asigna. UD. Base de Datos en Servidor Windows 1 Ing. Eder Solórzano INSTITUTO DE EDUCACION SUPERIOR TECNOLOGICO PUBLICO “MANUEL ANTONIO HIERRO POZO” • Perfil asociado. El perfil del usuario indica los recursos y configuración que tomará el usuario al sistema • Privilegios y roles. Permiten especificar las acciones que se le permiten realizar al usuario. • • ESTADO DE LA CUENTA DE USUARIO: Abierta. El usuario puede conectar y realizar sus acciones habituales Bloqueada. EL usuario no podrá conectar mientras siga en estado bloqueado. El bloqueo lo realiza el DBA: • ALTER USER usuario ACCOUNT LOCK Expirada. La cuenta agotó el tiempo máximo asignado a ella. Para salir de este estado, el usuario/a debe resetear su contraseña de usuario. • Expirada y bloqueada. • Expirada en periodo de gracia. Está en los últimos momentos de uso antes de pasar a estado de expirada. 2.2 CONCEPTOS DE GESTIÓN DE PRIVILEGIOS Y RECURSOS Concepto Significado Privilegio Permiso para realizar una acción, asignable a un usuario o un rol Rol Conjunto de privilegios, asignables a un usuario o un rol Usuario Colección de objetos y privilegios identificado con un nombre y password Perfil Conjunto de restricciones relativas al uso de recursos, y asignable a usuarios. Un usuario sólo puede tener un perfil Recurso Uso susceptible de ser restringido, asignable a un perfil 2.2.1 PRIVILEGIOS • Por defecto un usuario no posee ningún privilegio en Oracle, estos deben ser asignados. • Para ello se emplean las instrucciones GRANT y REVOKE. • Usuarios DBA tienen derechos a asignar todos los tipos de privilegios • Existen 200 privilegios del sistema, veremos los más importantes: CREATE SESSION: permite que un usuario pueda conectarse a la base de datos UD. Base de Datos en Servidor Windows 2 Ing. Eder Solórzano INSTITUTO DE EDUCACION SUPERIOR TECNOLOGICO PUBLICO “MANUEL ANTONIO HIERRO POZO” ALTER DATABASE: permite ejecutar comandos para modificar la estructura física. ALTER SYSTEM: permite modificar parámetros de la instancia y estructuras de memoria CREATE TABLE: permite ejecutar DML y DDL en el esquema del propietario SELECT ANY TABLE EJEMPLO: Grant create session, alter session, create table, create view, create synonym, create cluster, create database link, create sequence, create trigger, create type, create procedure, create operator to JuanPerez; 2.2.2 ROLES • Asignar privilegios es complicado y tedioso porque puede ser necesario digitar cientos de grant. • Un ROL agrupa un gran conjunto de privilegios. Sisntaxis: CREATE ROLE NombreRol; • Los grant a un rol normalmente incluyen WITH ADMIN o WITH OPTION Ejemplo Se crearán 3 roles con privilegios. Create role hr_junior; Grant create session to hr_junior; Grant select on hr.regions to hr_junior; Create Role hr_senior; Grant hr_junior to hr_senior with admin option; Grant insert, update, delete on hr.regions to hr_senior; 2.2.3 ROLES PREDEFINIDOS Connect: por compatibilidad ahora equivale al privilegio CREATE SESSION Resource: Todos los permisos necesarios para tener recursos para la creación de objetos DBA: Todos los permisos para un administrador de base de datos (DBA) SCHEDULER_ADMIN: privilegios para manejar trabajos planificados. 2.2.4 PROFILE • Para obligar una política de password y para restringir los recursos a una sesión. • La política de password siempre está activa, la limitación a recursos a una sesión debe indicarse en el parámetro RESOURCE_LIMIT UD. Base de Datos en Servidor Windows 3 Ing. Eder Solórzano INSTITUTO DE EDUCACION SUPERIOR TECNOLOGICO PUBLICO “MANUEL ANTONIO HIERRO POZO” 2.6 GESTION DE PRIVILEGIOS Y RECURSOS III. DESARROLLO Creación de usuarios: Sintaxis: CREATE USER nombre IDENTIFIED BY 'contraseña' EXTERNALLY | GLOBALLY AS nombreGlobal} [DEFAULT TABLESPACE tableSpacePorDefecto] [TEMPORARY TABLESPACE tableSpacetTemporal] [QUOTA {cantidad [K|M] | UNLIMITED} ON tablespace ] [PASSWORD EXPIRE] [ACCOUNT {UNLOCK|LOCK}]; [PROFILE {perfil | DEFAULT}] Para la gestión de se utilizan los comandos Usuarios CREATE USER (crear) ALTER USER (modificar) DROP USER (borrar) GRANT (conceder un permiso o un rol a un usuario) REVOKE (denegar un permiso o un rol a un usuario) CREACION DE USUARIOS- BASE DE DATOS CONTROL 1. Conectarse como usuario SYSTEM a la base y crear un usuario llamado “administrador” autentificado por la base de datos. Indicar como "tablespace" por defecto USERS y como "tablespace" temporal TEMP; asignar una cuota de 500K en el "tablespace" USERS. UD. Base de Datos en Servidor Windows 4 Ing. Eder Solórzano INSTITUTO DE EDUCACION SUPERIOR TECNOLOGICO PUBLICO “MANUEL ANTONIO HIERRO POZO” Por código: Prerrequisitos: Privilegio de sistema CREATE USER CREATE USER administrador IDENTIFIED BY 123456 DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE "TEMP" QUOTA 500k ON USERS; EJERCICIOS: MODIFICACION DE USUARIOS 2. Modifique el usuario administrador, para bloquear la cuenta del usuario y cambiar la contraseña a admin01. Por código: Prerrequisitos: Privilegio de sistema ALTER USER ; Conectarse como usuario administrador y Explique qué sucede: 3. Modifique el usuario administrador, para desbloquear la cuenta del usuario y que la cuente expire. Conectarse como administrador y ver qué sucede. De una solución. Escriba código: UD. Base de Datos en Servidor Windows 5 Ing. Eder Solórzano INSTITUTO DE EDUCACION SUPERIOR TECNOLOGICO PUBLICO “MANUEL ANTONIO HIERRO POZO” ; Rpta: VISTAS DEL DICCIONARIO DE BD: • dba_tablespaces: tablespaces que se encuentran creado en una base de datos • dba_profiles : donde nosotros podremos configurar los límites de recursos que queramos para los usuarios de nuestra base de datos. • dba_users : Para obtener información de todos los usuarios de la base de datos, utiliza la vista consultar usuarios La vista administrativa DBA_USERS muestra la lista y configuración de todos los usuarios del sistema. Para observar la estructura de la vista, siempre es conveniente usar DESCRIBE DBA_USERS. SQL> DESC DBA_USERS; SQL> select username from DBA_USERS; CONCEDER PRIVILEGIOS Se usa con la instrucción GRANT que funciona así: GRANT privilegio1 [,privilegio2[,…]] TO usuario [WITH ADMIN OPTION]; La opción WITH GRANT OPTION permite que el usuario al que se le concede el privilegio puede conceder dicho privilegio a otros usuarios. Es, por tanto, una opción a utilizar con cautela. UD. Base de Datos en Servidor Windows 6 Ing. Eder Solórzano INSTITUTO DE EDUCACION SUPERIOR TECNOLOGICO PUBLICO “MANUEL ANTONIO HIERRO POZO” INFORMACIÓN SOBRE PRIVILEGIOS 4-Otorgar el privilegio “CREATE SESSION” al usuario “administrador” e Intentar de nuevo la conexión sqlplus. Código: ; 5. Conectarse como usuario “administrador” y crear un usuario llamado “prueba00” que tenga como "tablespace" por defecto USERS y como "tablespace" temporal TEMP; asignar una cuota de 0K en el "tablespace" USERS. ¿Es posible hacerlo? UD. INSTITUTO DE EDUCACION SUPERIOR TECNOLOGICO PUBLICO “MANUEL ANTONIO HIERRO POZO” 6. Conectado como usuario SYSTEM, otorgar el privilegio “create user” al usuario “administrador” y repetir el ejercicio anterior. Explique 7. Averiguar que usuarios de la base de datos tienen asignado el privilegio “create user” de forma directa, ¿qué vista debe ser consultada? 8. Hacer lo mismo para el privilegio “create session”. UD. Base de Datos en Servidor Windows 8 Ing. Eder Solórzano INSTITUTO DE EDUCACION SUPERIOR TECNOLOGICO PUBLICO “MANUEL ANTONIO HIERRO POZO” Base de Datos en Servidor Windows 6 Ing. Eder Solórzano 9. Crear dos "tablespace" llamados TS_NOMINA y TS_ACADEMO, que contendrán datos relativos a las aplicaciones de nómina y datos académicos de los empleados de una empresa, según las siguientes características: UD. Base de Datos en Servidor Windows 9 Ing. Eder Solórzano INSTITUTO DE EDUCACION SUPERIOR TECNOLOGICO PUBLICO “MANUEL ANTONIO HIERRO POZO” Localizados en la unidad D:/ BD/lab14 PRIVILEGIOS SOBRE LOS OBJETOS grant privilegio_d _objeto on nombre_tabla to usuario; grant select on t1 to usuario; CREACION DE ROLES Los roles se crean usando esta sintaxis: CREATE ROLE nombre_rol [NOT IDENTIFIED | IDENTIFIED {BY password | EXTERNALLY | GLOBALLY | USING package}]; UD. Base de Datos en Servidor Windows 10 Ing. Eder Solórzano INSTITUTO DE EDUCACION SUPERIOR TECNOLOGICO PUBLICO “MANUEL ANTONIO HIERRO POZO” La opción IDENTIFIED funciona igual que las formas de identificar un usuario, salvo la opción PACKAGE que hace que el rol sólo se pueda utilizar para el paquete de aplicaciones indicado. Por defecto un ROL no requiere identificación. La instrucción ALTER ROLE permite modificar la configuración del rol (tiene las mismas opciones que CREATE ROLE) INFORMACIÓN SOBRE ROLES Buscar en la documentación en línea y en bd el contenido de las vistas: SQL> DESC DBA_PROFILES SQL> DESC DBA_ROLES SQL> DESC DBA_USERS SQL> DESC DBA_ROLE_PRIVS SQL> desc DBA_TAB_PRIVS SQL> DESC DBA_SYS_PRIVS 10. probar a crear un rol llamado “Perfil_administrador”, para que permita realizar consultas y actualizar los datos de la bd. Asígnele estos permisos solo para las tablas regiones y clientes al usuario HR. Ejecutar: SQL> UD. Base de Datos en Servidor Windows 11 Ing. Eder Solórzano INSTITUTO DE EDUCACION SUPERIOR TECNOLOGICO PUBLICO “MANUEL ANTONIO HIERRO POZO” 11. Comprobar en el diccionario de datos los usuarios o roles que poseen el privilegio “CREATE ROLE”. Crear un rol llamado conectarse que incluya los roles connect y resource, y asignar ese rol a Scott SQL>create role conectarse; SQL>grant connect, resource to conectarse; SQL>grant conectarse to scott; 12. Crear un rol llamado “ADMIN”, asignarle los privilegios “create session”, “create user” y “CREATE ROLE”. Asignarlo al usuario administrador. UD. Base de Datos en Servidor Windows 12 Ing. Eder Solórzano INSTITUTO DE EDUCACION SUPERIOR TECNOLOGICO PUBLICO “MANUEL ANTONIO HIERRO POZO” 13. Consultar los privilegios de sistema que tiene asignados de forma directa el usuario “administrador”, revocarlos y asignarle el rol “admin.”. 15.- Asignarle privilegios de objeto que usted cree por conveniente, para ello tendrá que crear sus objetos. SQL> SELECT * FROM DBA_SYS_PRIVS WHERE PRIVILEGE=’CREATE ROLE’; SQL> SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE=’ADMINISTRADOR’; PROFILE Ver la configuracion del profile Para ver los profiles asignados a los usuarios: Select username, profile from dba_users; Select * from dba_profiles where profile=‘DEFAULT’; UD. Base de Datos en Servidor Windows 13 Ing. Eder Solórzano INSTITUTO DE EDUCACION SUPERIOR TECNOLOGICO PUBLICO “MANUEL ANTONIO HIERRO POZO” Creando un nuevo profile Create profile dba_profile limit sessions_per_user unlimited password_life_time 7 password_grace_time 1; Alter user sys profile dba_profile; Alter user system profile dba_profile; Alter user Juancito profile dba_profile; 16. Averiguar que usuarios de base de datos o que roles tienen asignado el privilegio “CREATE PROFILE”. SQL> 17. Asignar el permiso “CREATE PROFILE” al rol Perfil_administrador. SQL> grant create profile to Perfil_administrador; 18. Consultar que perfiles tiene asignados cada usuario de la base de datos. SQL> select username, profile from dba_users order by username; 19. Crear un perfil especificaciones: llamado “DESARROLLO” con las siguientes Límites aplicables a perfiles COMPOSITE_LIMIT Suma del máximo de CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION y PRIVATE_SGA. Si este limite es excedido, Oracle aborta la sesión y regresa un error. CONNECT_TIME :Tiempo permitido de conexión por sesión en minutos. CPU_PER_CALL: Máximo tiempo de CPU por llamada en centésimas de segundo. CPU_PER_SESSION: Máximo tiempo de CPU por sesión en centésimas de segundo. UD. Base de Datos en Servidor Windows 14 Ing. Eder Solórzano INSTITUTO DE EDUCACION SUPERIOR TECNOLOGICO PUBLICO “MANUEL ANTONIO HIERRO POZO” IDLE_TIME: Tiempo máximo permitido sin actividad por el usuario antes de ser desconectado. Se expresa en minutos. LOGICAL_READS_PER_CALL: Máximo número de bloques de base de datos leídos por llamada. LOGICAL_READS_PER_SESSION :Máximo numero de bloques de base de datos leídos por sesión. PRIVATE_SGA: Máxima cantidad de bytes de espacio privado reservado en la SGA. Se puede expresar en el formato enteroK para kilobytes o enteroM para megabytes. SESSIONS_PER_USER: Máximo número de sesiones concurrentes permitidas por usuario. FAILED_LOGIN_ATTEMPTS : Número de intentos fallidos de conexión de un usuario, antes de que Oracle ponga la cuenta bloqueada. PASSWORD_GRACE_TIME Número de días de gracia para realizar un cambio de password de nuestra cuenta. Si en el periodo de tiempo delimitado no fue cambiado el password, el password expira. PASSWORD_LIFE_TIME: Número de días de vida de un password. PASSWORD_LOCK_TIME: Número de días que permanecerá bloqueado un usuario después de rebasar el límite FAILED_LOGIN_ATTEMPTS. PASSWORD_REUSE_MAX: Número de veces que debe cambiar una contraseña antes de poder ser reusada la original. PASSWORD_REUSE_TIME: Número de días que tienen que pasar para poder re-usar un password. PASSWORD_VERIFY_FUNCTION: En este parámetro, se puede especificar un script para validar el password. Por ejemplo, que tenga una determinada cantidad de caracteres, que tenga letras y números, etcétera. SQL> create profile desarrollo limit sessions_per_user 2 cpu_per_session unlimited cpu_per_call 6000 connect_time 480 idle_time 2 failed_login_attempts 2 password_life_time 120; 20. Asignar el perfil anterior al usuario “administrador”. SQL> 21. Intentar la conexión dos veces como usuario “administrador”. fallando la contraseña, ¿qué sucede? Comprobar si la cuenta ha sido bloqueada en la vista de base de datos correspondiente. UD. Base de Datos en Servidor Windows 15 Ing. Eder Solórzano INSTITUTO DE EDUCACION SUPERIOR TECNOLOGICO PUBLICO “MANUEL ANTONIO HIERRO POZO” CONSULTA A LA VISTA DE BD SQL> select username, lock_date from dba_users where username like ' administrador %'; MOSTRAR RESULTADO Para casa: 1.- modificar el usuario Scott y cambiarle el pasword por tiger, crear como "tablespace" por defecto hr_data y como "tablespace" temporal hr_temp; asignar una cuota de 1000K on users, el pasword expire y desbloquear la cuenta. 2. Abrir una sesión sqlplus e intentar conectarse como usuario “administrador01”, ¿qué sucede?, ¿por qué? 3. Averiguar qué privilegios de sistema, roles y privilegios sobre objetos tiene concedidos el usuario “administrador”. 4. Crear dos "tablespace" temporales, manejados de forma local, llamados TEMP_NOMINA y TEMP_ACADEMO con las siguientes características: Por codigo ydesde la base de datos control UD. Base de Datos en Servidor Windows 16 Ing. Eder Solórzano INSTITUTO DE EDUCACION SUPERIOR TECNOLOGICO PUBLICO “MANUEL ANTONIO HIERRO POZO” Localizados en la unidad D:/ BD/lab14 Por codigo: SQL> create temporary tablespace temp_academo tempfile 'd:\bd\lab02\temp_academo01.dbf' size 500k autoextend on next 50k maxsize 600k extent management local uniform size 100k; Por codigo: temp_nomina y desde la base de datos control 5. como usuario administrador, intente crear una Tabla: tabla Alumno (código int,Nombre varchar 15 )..que sucede, solucione el problema 6. como usuario administrador, conceda privilegios de objeto sobre la nueva Tabla..y demuestre tales privilegios. UD. Base de Datos en Servidor Windows 17 Ing. Eder Solórzano INSTITUTO DE EDUCACION SUPERIOR TECNOLOGICO PUBLICO “MANUEL ANTONIO HIERRO POZO” 7. Crear un usuario y asignarle un perfil, con los recursos que crea conveniente. Ver resultados https://jorgesanchez.net/manuales/abd/controlusuariosoracle.html (para más información) UD. Base de Datos en Servidor Windows 18 Ing. Eder Solórzano INSTITUTO DE EDUCACION SUPERIOR TECNOLOGICO PUBLICO “MANUEL ANTONIO HIERRO POZO” UD. Base de Datos en Servidor Windows 19 Ing. Eder Solórzano