madrid, junio de 2009 seguridad en bases de datos: sql server 2005 y oracle 10g

31
Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Upload: timoteo-corrales

Post on 03-Jan-2015

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Madrid, junio de 2009

Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Page 2: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Autorización

Page 3: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Introducción a la seguridad de la información

Configuración de la plataforma

Confidencialidad

Integridad

Disponibilidad

Autenticación

Autorización

Auditoría

Integración de bases de datos con otras aplicaciones

Hacking de base de datos

Índice del curso

Page 4: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Índice del capítulo

Gestión de privilegios

Gestión de roles

Control de acceso granular

Page 5: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Objetivos de la autorización

Garantizar permisos para que los usuarios puedan realizar diferentes tareas en función de su perfil

Page 6: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Gestión de privilegios

Page 7: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Roles

Semejante a los grupos de Windows

Método sencillo de asignar permisos a grupos de usuarios

Pueden tener permisos:

Predefinidos por la bbdd: de servidor o de bbdd

Definidos por el usuario: estándar o de aplicación

Pueden existir a nivel de

Servidor: tareas administrativas del servidor

Bbdd:

Administración de la bbdd

Garantizar permisos dentro de la bbdd

Pueden crearse roles dentro de roles

Page 8: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Roles definidos por el usuario: estándar

Roles estándar

Agrupan permisos de manera que no haga falta asignarlos individualmente a cada usuario

Son creados por el administrador de la bbdd

Page 9: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Roles definidos por el usuario: aplicación

Roles de aplicación

Iguales a los anteriores, pero protegidos por contraseña y asignados a aplicaciones

Permiten restringir el acceso a los datos en función de la aplicación que accede a la bbdd

Son instanciados por la aplicación que se conecta al servidor

La aplicación hereda los permisos del rol al conectarse a la bbdd utilizando un usuario interno o externo y tras ejecutar el procedimiento almacenado sp_setapprole con una contraseña conocida solamente por la aplicación

El rol se desactiva con el procedimiento sp_unsetapprole

Page 10: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Roles predefinidos por la bbdd

Todas las bbdd vienen con una serie de roles predefinidos

En general, se usan para definir privilegios administrativos

La mayoría no pueden cambiarse excepto el rol público ni pueden eliminarse

El rol público es el predeterminado para todos los usuarios de la bbdd y se hereda al conectarse

Puede utilizarse para modificar los permisos de todos los usuarios de una bbdd

Se garantizan mediante sp_addrolemember

Se comprueban mediante sp_helprolemember

Se eliminan mediante sp_droprolemember

Page 11: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Roles predefinidos por la bbdd en SQL Server 2005

db_accessadmin: permite añadir y quitar usuarios

db_backupoperator: capacidad de hacer copias de respaldo

db_datareader, db_datawriter, db_denydatareader, and db_denydatawriter: lectura/escritura en la bbdd

db_ddladmin: tareas de DDL

db_securityadmin: aspectos de seguridad: roles, permisos y propiedad de objetos

db_owner: control completo sobre la bbdd

Page 12: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Principales (entidades de seguridad) en SQL Server 2005

Las entidades de seguridad son entidades que pueden solicitar recursos de SQL Server

Se pueden organizar en jerarquías

Su ámbito de influencia depende del ámbito de su definición (Windows, servidor o base de datos) y de si la entidad de seguridad es indivisible o es una colección.

Un Inicio de sesión de Windows es un ejemplo de entidad de seguridad indivisible y un Grupo de Windows es un ejemplo de una del tipo colección.

Toda entidad de seguridad tiene un identificador de seguridad (SID).

Page 13: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Principales (entidades de seguridad) en SQL Server 2005

Entidades de seguridad a nivel de Windows

Inicio de sesión del dominio de WindowsInicio de sesión local de Windows

Entidades de seguridad a nivel de SQL Server

Inicio de sesión de SQL Server

Entidades de seguridad a nivel de bases de datos

Usuario de base de datosFunción de base de datosFunción de aplicación

Page 14: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Principales (entidades de seguridad) en SQL Server 2005

Es un inicio de sesión de servidor, un usuario de bbdd o un rol

Principales de servidor

Inicio de sesión de servidor: Usuarios de Windows, grupos de seguridad de Windows, o inicios de sesión de la bbdd

Roles de servidor

Principales de bbdd

Usuarios de bbdd

Roles de bbdd

Son el “quién” cuando se garantiza el acceso

Page 15: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Asegurables

Cualquier recurso dentro de SQL Server, incluido el servidor, al que se puede conceder acceso

Algunos asegurables son contenedores que pueden contener otro asegurables y se les llama “ámbitos”

El conjunto completo de asegurables forma una estructura jerárquica que permite asignar permisos al nivel correcto para garantizar el acceso requerido y nada más (principio de mínimo privilegio)

Page 16: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Ámbitos asegurables en SQL Server 2005

Servidor

ExtremoInicio de sesiónBase de datos

Los permisos asignados a nivel de servidor se heredan para las bbdd

Page 17: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Ámbitos asegurables en SQL Server 2005

Page 18: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Ámbitos asegurables en SQL Server 2005

Esquema

TipoColección de esquemas XMLObjeto

Page 19: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Permisos

Todos los asegurables de SQL Server 2005 tienen permisos asociados que se pueden conceder a una entidad de seguridad

Permisos nuevos

- CONTROL

- ALTER

- ALTER ANY

- TAKE OWNERSHIP

- IMPERSONATE

- CREATE

- VIEW DEFINITION

- BACKUP (or DUMP)

- RESTORE (or LOAD)

Page 20: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Permisos

Permisos antiguos

- SELECT

- INSERT

- UPDATE

- DELETE

- REFERENCES

- EXECUTE

Page 21: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Jerarquía de permisos

Page 22: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Permisos implícitos

Debido a la naturaleza jerárquica de los asegurables, es posible olvidar a qué da acceso un permiso particular en un ámbito particular más abajo en la jerarquía

La función dbo.ImplyingPermissions rastrea los permisos

Page 23: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Asignación de permisos

Existen tres acciones:

- GRANT

- DENY

- REVOKE

Se asignan a un principal de seguridad por otro principal de seguridad

El principal que los garantiza se registra con fines de auditoría, para saber quién asignó un permiso

Page 24: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Esquemas

Son colecciones de objetos dentro de una bbdd

Implementan dos reglas de SQL Server

Todos los objetos dentro de un esquema deben tener un nombre único, formado en parte por el propio esquema

Todos los objetos dentro de un esquema deben tener el mismo propietario

Los esquemas contienen objetos y las bbdd contienen esquemas, mientras que un servidor contiene bbdd

En conjunto estos contenedores crean un espacio de nombres donde el esquema constituye una de las fronteras

Page 25: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Roles de usuario

Agrupan privilegios y otros roles:

Predefinidos: Creados por Oracle

CONNECT, RESOURCE, DBA, etc.

Vista DBA_ROLES

Definidos por el usuario

Autorización:

Automática al conectarse a la BD

Protegidos por contraseña

Page 26: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Asignar/revocar privilegios y roles

Privilegios de sistema y roles a usuarios y otros roles

Privilegios de objeto a usuarios y roles

Privilegios sobre columnas de tablas

Page 27: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Práctica: Creación de roles

Utilizando Oracle Enterprise Manager:

Crear roles de usuario (privilegio CREATE ROLE)

Crear roles de usuario que requieran contraseña

Anidar roles dentro de otros roles

Modificar los roles y privilegios

Acceder a los privilegios mediante SET ROLE

Revocar los privilegios a un usuario

Page 28: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Vistas

Presentación a medida de datos contenidos en una o varias tablas como resultado de una consulta: Tabla virtual

Pueden utilizarse “casi” como una tabla

Ventajas:

Simplifican las consultas complejas

Se limita el acceso a filas y columnas mediante la cláusula WHERE

Page 29: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Práctica: Vistas

Crear una vista que limite las columnas visibles de una tabla

Crear una vista conjunta de varias tablas limitando las filas visibles

Vistas actualizables

Page 30: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Procedimientos almacenados, funciones

Mejoran el rendimiento porque el código está compilado

Pueden encadenar multitud de consultas

Facilitan el mantenimiento

Aumentan la seguridad:

Sólo se accede a los datos a través del sp

Se asegura que los usuarios tienen los mínimos privilegios posibles de acuerdo con las reglas de negocio

Page 31: Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g

Práctica: Procedimientos almacenados

Creación de procedimientos almacenados desde Oracle

Llamada a procedimientos almacenados desde página web directamente (¿problemas?)

Llamada a través de un objeto Parameter