• Like
Sql4
Upcoming SlideShare
Loading in...5
×
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
98
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. SQL(Data Control Language)
  • 2. • SQL provee mecanismos de seguridad limitados. • Se confía en el software para implementar un framework de seguridad más robusto. • Los vendedores de Bases de Datos implementan los varios aspectos de seguridad en distintas maneras.
  • 3. Mecanismos de Seguridad Básica • Hay tres niveles de seguridad comunes para todos los RDBMS (Relational DataBase Management Systems): – Autenticación: El usuario se conecta al RDBMS. – Autorización: El usuario obtiene acceso a la base de datos o a los objetos del esquema de la base de datos para realizar ciertas acciones, basados en el set de privilegios asignados al usuario. – Auditar: Para monitorear actividad sospechosa y realizar un análisis. • En lo que difieren es en la manera en que cada uno de estos RDBMS implementan estos niveles.
  • 4. Identificación y autenticación • La primera línea de defensa es la autenticación. • Antes de acceder al RDBMS se debe proveer suficiente información validada ya sea por el RDBMS o por el sistema operativo en el cual esta base de datos se encuentra instalada. • Una vez que la identidad es autenticada, se puede proceder con el intento de acceder a los recursos, objetos y datos de la base de datos.
  • 5. Autorización y Control de acceso • Una vez que el usuario es autenticado y se le concede acceso a la base de datos, el RDBMS emplea un complejo sistema de privilegios (permisos) para objetos particulares de la base de datos. • Estos privilegios incluyen permisos para acceder, modificar, destruir o ejecutar objetos relevantes de la base de datos, así como añadir, modificar y borrar datos.
  • 6. Encriptación • Provee una capa adicional de seguridad, protegiendo los datos de personas no autorizadas. • Aún si se obtiene acceso a la base de datos, no será fácil descifrar datos encriptados.
  • 7. Integridad y Consistencia • Mientras la seguridad se basa en la autenticación y autorización de procedimientos, la integridad de los datos juega el rol de proteger los datos de manipulación no intencional o maliciosa. • Por ejemplo, aun si un usuario obtiene acceso a la base de datos (robando la clave), aun debe seguir reglas relacionales para manipular datos.
  • 8. • Entre estas reglas, la que no se permite registros huérfanos. Es decir no se puede borrar registros de una tabla de un padre sin entender las relaciones de la base de datos. • Aunque algunos RDBMS implementan la característica ¨CASCADE¨, que remueve registros hijos cuando se borrar el del padre. • Otra regla es la de no insertar un registro duplicado en una columna protegida con un UNIQUE constraint. • Otra regla, la de no ingresar datos inválidos que violen un CHECK constraint.
  • 9. Auditar • Provee medios para monitorear actividad de base de datos, ambas legítima y no autorizadas. • Preserva la bitácora de intentos de acceso a la base de datos, ya sean exitosos o fallidos. • Tambien los intentos de delete e inserts. • Es un componente necesario para ser considerado para una certificación de seguridad.
  • 10. Definiendo un usuario • SQL99 no especifica alguna sintaxis especial o alguna forma de crear un usuario en la base de datos. • Los vendedores de bases de datos han creado algunas soluciones ingeniosas para esto. • Oracle hace poca distinción entre un usuario y el esquema de la base de datos, DB2 UDB usa solo usuario definidos por el sistema operativo y Microsoft SQL Server combina ambos mecanismos, usando cuentas de Windows y procedimientos especiales del sistema para añadir usuarios a la base de datos.
  • 11. Database User • Es alguien que hace uso de los servicios que el servidor del RDBMS provee. Puede ser una aplicación, un administrador, o cualquiera que acceda a la base de datos en algún momento. • Esta es la primera línea de defensa cuando hablamos de los aspectos de seguridad.
  • 12. Crear un usuario en MySQL • CREATE USER user [IDENTIFIED BY [PASSWORD] 'password’] [, user [IDENTIFIED BY [PASSWORD] 'password']] • Para crear un usuario se necesita como mínimo un nombre de usuario y una contraseña, el resto es opcional. • CREATE USER alumno IDENTIFIED BY ‘clavealumno’;
  • 13. En oracle • Para crear un usuario identificado por el sistema operativo se usa EXTERNALLY. • Si usamos PASSWORD EXPIRE, le estamos diciendo a Oracle que la contraseña para este usuario expira inmediatamente, forzando al usuario a seleccionar una contraseña diferente en la próxima conexión a la base de datos. • ACCOUNT LOCK especifica por ejemplo que el acceso se bloquee después de muchos intentos fallidos o deshabilite la cuenta de un usuario cuando el empleado abandone la compañía.
  • 14. En oracle • Cuando un usuario es creado, un esquema correspondiente a ese usuario es creado también. • El nuevo usuario no tiene derechos o privilegios en el RDBMA, pero se le debe conceder el privilegio de CONNECT a la base de datos Oracle.
  • 15. Borrar un usuario en MySQL • DROP USER <user name>; • En MySQL el usuario está separado de la base de datos
  • 16. Borrar un usuario en Oracle • DROP USER <user name> [CASCADE]; • CASCADE especifica que todos los objetos en el esquema del usuario deben borrarse antes de borrar al usuario. • Oracle no permite borrar un usuario cuyo esquema contiene algún objeto, a menos que se especifique esta cláusula. • DROP USER <user name> [CASCADE]; • DROP USER alumno CASCADE;
  • 17. ALTER USER • Provee una manera conveniente de modificar las propiedades del usuario sin la necesidad de hacerle DROP al usuario y luego recrearlo desde el principio. ALTER USER user_specification [, user_specification] ... user_specification: user PASSWORD EXPIRE
  • 18. Crear una base de datos • Oracle 10gExpress Edition trae creada por defecto una base de datos llamada XE en la cual se puede crear usuarios y trabajar directamente con ella. • Aunque una sola base de datos XE puede correr en una computadora, lo importante es que no se necesita una base de datos para cada aplicación que se cree. Oracle usa el concepto de esquemas para separar aplicaciones. CREATE DATABASE nuevabd; CREATE DATABASE ha fallado base de datos ya montada
  • 19. Connect • La sintaxis del comando es la siguiente: conn[ect] <username>/<password>[@<database_sid>] connect alumno/clavealumno@XE; conn alumno/clavealumno; connect alumno; (pide la clave)
  • 20. DISCONNECT • Se puede desconectar de Oracle pero seguir en el SQL*Plus”: DISC[ONNECT]
  • 21. Administrando la seguridad con Privilegios • Un RDBMS es una colección de objetos, esquemas, tablas, vistas, procedimien tos, etc. Así como los procesos que administran estos objetos. • Restringir el acceso a estos objetos es un mecanismo de seguridad esencial implementado en el nivel de SQL a través del sistema de privilegios.
  • 22. Privilegios • Representan el derecho de un usuario en particular para acceder, crear, manipular y destruir varios objetos dentro de una base de datos, así como realizar tareas administrativas. • Se los puede conceder a un usuario o ROLE. • Se los puede dividir en dos categorías: – Privilegios de Sistema – Privilegios de Objetos
  • 23. Privilegios a nivel de Sistema • Permite a los usuarios realizar tareas administrativas en un RDBMS • Crear una base de datos • Crear y Borrar Usuario • Crear, alterar y destruir objetos de bases de datos, etc • Se necesita un alto nivel de autoridad en el RDBMS para conceder o tener privilegios de sistema
  • 24. Privilegios a nivel de Objeto • Estos privilegios pueden llegar hasta el nivel de columna (si el objeto de la base de datos es una tabla o vista), o a cualquier otro objeto en la base de datos como stored procedures, funciones y triggers.
  • 25. GRANT en MySQL CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass'; GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost’ WITH GRANT OPTION; CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass'; GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%’ WITH GRANT OPTION; CREATE USER 'admin'@'localhost'; GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost'; CREATE USER 'dummy'@'localhost';
  • 26. GRANT en Oracle • Para ¨Conceder¨ privilegios: GRANT [ALL [PRIVILEGES]] | <privilege,...> [ON <object_name>] TO <user> | <group> | <role> [WITH GRANT OPTION] Opción Descripción Aplica a ADMIN OPTION Permite al usuario GRANT privilegios del sistema a otros usuario o roles Oracle 9i GRANT OPTION Permite al usuario GRANT privilegios de objetos a otros usuario o roles Oracle 9i, Microsoft SQL Server 2000, IBM DB2 UDB 8.1 SQL92/99 Standard HIERARCHY OPTION Indica que el privilegio de objeto es concedido no solo para el objeto sino para todos los objetos derivados. Oracle 9i
  • 27. • GRANT ALL [PRIVILEGES] | <system privilege,...> | <role> TO <user> | <role> | <PUBLIC> [IDENTIFIED BY <password>] [WITH ADMIN OPTION]; • GRANT ALL PRIVILEGES TO alumno IDENTIFIED BY clavealumno WITH ADMIN OPTION;
  • 28. Privilegios del Sistema en Oracle • ALTER SYSTEM • AUDIT SYSTEM • CREATE [PUBLIC] DATABASE LINK • DROP [PUBLIC] DATABASE LINK • CREATE ANY INDEX • ALTER ANY INDEX • DROP ANY INDEX • CREATE [ANY] MATERIALIZED VIEW • ALTER ANY MATERIALIZED VIEW • DROP ANY MATERIALIZED VIEW • CREATE [ANY] OPERATOR • DROP ANY OPERATOR • EXECUTE ANY OPERATOR • CREATE [ANY] PROCEDURE • DROP ANY PROCEDURE • EXECUTE ANY PROCEDURE • CREATE PROFILE • ALTER PROFILE • DROP PROFILE • CREATE ROLE • ALTER ANY ROLE • DROP ANY ROLE • GRANT ANY ROLE • CREATE [ANY] SEQUENCE • ALTER ANY SEQUENCE • DROP ANY SEQUENCE • SELECT ANY SEQUENCE • CREATE SESSION • ALTER SESSION Para verlos todos en Oracle: select * from DBA_SYS_PRIVS;
  • 29. Privilegios del Sistema en Oracle • CREATE [ANY | PUBLIC ] SYNONYM • DROP [ANY | PUBLIC ] SYNONYM • CREATE [ANY] TABLE • ALTER ANY TABLE • DELETE ANY TABLE • DROP ANY TABLE • INSERT ANY TABLE • LOCK ANY TABLE • SELECT ANY TABLE • UPDATE ANY TABLE • CREATE TABLESPACE • ALTER TABLESPACE • DROP TABLESPACE • ALTER ANY TRIGGER • DROP ANY TRIGGER • CREATE [ANY] TYPE • ALTER ANY TYPE • DROP ANY TYPE • EXECUTE ANY TYPE • UNDER ANY TYPE • CREATE USER • ALTER USER • BECOME USER • DROP USER • CREATE [ANY] VIEW • DROP ANY VIEW • UNDER ANY VIEW • COMMENT ANY TABLE • GRANT ANY PRIVILEGE • SELECT ANY DICTIONARY Para verlos todos en Oracle: select * from DBA_SYS_PRIVS;
  • 30. Privilegios de Objetos En Oracle • INSERT • SELECT • UPDATE • DELETE • ALTER • INDEX • UNDER • EXECUTE • REFERENCES
  • 31. Privilegios en MySQL
  • 32. Privilegios en MySQL http://dev.mysql.com/doc/refman/5.5/en/privileges-provided.html
  • 33. En MySQL • GRANT SELECT, INSERT ON *.* TO 'someuser'@'somehost'; • GRANT CREATE ROUTINE ON mydb.* TO 'someuser'@'somehost'; • GRANT EXECUTE ON PROCEDURE mydb.myproc TO 'someuser'@'somehost';
  • 34. En Oracle GRANT CREATE TABLE TO alumno IDENTIFIED BY clavealumno WITH ADMIN OPTION; • Si tiene los privilegios suficientes el usuario alumno con la contraseña clavealumno se creará. Pero no se puede usar este usuario y contraseña para conectarse a la base de datos si al usuario alumno no se le ha concedido el privilegio de sistema CREATE SESSION. • El error que se muestra es: user ALUMNO lacks CREATE SESSION privilege; logon denied • Para corregirlo: GRANT CREATE SESSION TO alumno IDENTIFIED BY clavealumno WITH ADMIN OPTION;
  • 35. REVOKE en Oracle • Revoca los privilegios, a nivel de sistema u objeto, de un usuario, rol o grupo. REVOKE [GRANT OPTION FOR] ALL [PRIVILEGES] | <privilege>,... FROM USER <user> | GROUP <group> | PUBLIC [CASCADE | RESTRICT] Se puede revocar un privilegio o un GRANT OPTION. Por ejemplo un usuario puede perder su habilidad de conceder privilegios pero sus privilegios no se ven afectados.
  • 36. Revocando Privilegios de Sistema REVOKE ALL [PRIVILEGES] | <role> | <system_privilege>,... FROM <user> | <role> | PUBLIC; REVOKE CREATE TABLE FROM alumno; El efecto de Revoke es inmediato
  • 37. Revocando Privilegios de Objeto REVOKE ALL [PRIVILEGES] | <object_privilege,...> [(<column>)] ON [<schema>].<object>] FROM <user> | <role> | PUBLIC CASCADE CONSTRAINTS [FORCE]; REVOKE INSERT, DELETE, UPDATE (pago_empleado, pago_empleado2) ON EMPLEADO FROM PUBLIC; Todos los objetos dependientes como vistas creadas por el usuario que perdió el privilegio se vuelven inválidas.
  • 38. REVOKE en MYSQL • REVOKE • priv_type [(column_list)] • [, priv_type [(column_list)]] ... • ON [object_type] priv_level • FROM user [, user] ... • REVOKE ALL PRIVILEGES, GRANT OPTION • FROM user [, user] ... • REVOKE PROXY ON user • FROM user [, user] ...
  • 39. • REVOKE INSERT ON *.* FROM 'jeffrey'@'localhost'; • REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...