madrid, junio de 2009 seguridad en bases de datos: sql server 2005 y oracle 10g
TRANSCRIPT
Madrid, junio de 2009
Seguridad en bases de datos: SQL Server 2005 y Oracle 10g
Autorización
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
Índice del capítulo
Gestión de privilegios
Gestión de roles
Control de acceso granular
Objetivos de la autorización
Garantizar permisos para que los usuarios puedan realizar diferentes tareas en función de su perfil
Gestión de privilegios
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
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
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
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
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
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).
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
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
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)
Á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
Ámbitos asegurables en SQL Server 2005
Ámbitos asegurables en SQL Server 2005
Esquema
TipoColección de esquemas XMLObjeto
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)
Permisos
Permisos antiguos
- SELECT
- INSERT
- UPDATE
- DELETE
- REFERENCES
- EXECUTE
Jerarquía de permisos
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
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
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
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
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
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
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
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
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
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