seguridad en sql server 2005 para desarrolladores
DESCRIPTION
Seguridad en SQL Server 2005 para Desarrolladores. Agenda. SQL y la Seguridad Separación de Usuarios y Esquemas Contexto de Ejecución Cifrado de Datos Integración de CLR. SQL y la Seguridad. Seguridad por Defecto Principio de Menor privilegio. Seguridad por defecto. - PowerPoint PPT PresentationTRANSCRIPT
Seguridad en SQL Server 2005 para Desarrolladores
© 2006 Solid Quality Learning
AgendaSQL y la SeguridadSQL y la SeguridadSeparación de Usuarios y EsquemasContexto de EjecuciónCifrado de DatosIntegración de CLR
© 2006 Solid Quality Learning
SQL y la SeguridadSeguridad por DefectoPrincipio de Menor privilegio
© 2006 Solid Quality Learning
Seguridad por defectoParte de la iniciativa Trustworthy Servicios y Características deshabilitados de forma predeterminadaNueva herramienta para gestionarlo– Surface Area Configuration Tool
© 2006 Solid Quality Learning
Principio del Menor PrivilegioPor defecto: Sin acceso, sin derechos, sin permisosMayor Granularidad de Permisos en SQL Server 2005– Ej: CREATE TRACE, ALTER TRACESeguridad en Metadatos– Solo veo los objetos a los que puedo
acceder
© 2006 Solid Quality Learning
AgendaSQL y la SeguridadSeparación de Usuarios y Separación de Usuarios y EsquemasEsquemasContexto de EjecuciónCifrado de DatosIntegración de CLR
© 2006 Solid Quality Learning
Separación de Usuarios y Esquemas
¿Qué son los esquemas?Beneficios de los esquemasEsquema Predeterminado
© 2006 Solid Quality Learning
¿Qué son los esquemas?Espacio de Nombres para objetos de Base de Datos
MaestrosProductos
(Server1.AdventureWorks.maestros.Productos)
VentasPedidos
(Server1.AdventureWorks.SalesData.Orders)
© 2006 Solid Quality Learning
Beneficios de los EsquemasLos objetos están agrupados en el esquemaPodemos administrar usuarios (borrar, cambiar nombre) sin modificar el esquema de nombresPodemos asignar permisos a nivel de esquema
© 2006 Solid Quality Learning
Esquema Predeterminado
Productos
Pedidos
SELECT * FROM Productos
SELECT * FROM Pedidos
SELECT * FROM Productos
SELECT * FROM Pedidos
Fernando(no default schema)
Antonio(Default schema = ventas)
Resolución de Nombres
ventas
dbo
© 2006 Solid Quality Learning
AgendaSQL y la SeguridadSeparación de Usuarios y EsquemasContexto de EjecuciónContexto de EjecuciónCifrado de DatosIntegración de CLR
© 2006 Solid Quality Learning
Contexto de Ejecución¿Qué es el Contexto de Ejecución?Cambios de Contexto
© 2006 Solid Quality Learning
¿Qué es el Contexto de Ejecución?
Representado por dos testigos de seguridad:– Inicio de Sesión y Usuario– Existirán tantos testigos de usuario como
bases de datos acceda el usuariosys.login_token / sys.user_token
© 2006 Solid Quality Learning
Cambios de ContextoPodemos impersonalizar al usuario con EXECUTE AS– Nivel
• LOGIN• USER
– Tipo• CALLER• SELF• OWNER• Usuario
Duración– Se borra la sesión– Se completa el batch– Se cambia el contexto– Se revierte el contexto (REVERT)
© 2006 Solid Quality Learning
AgendaSQL y la SeguridadSeparación de Usuarios y EsquemasContexto de EjecuciónCifrado de DatosCifrado de DatosIntegración de CLR
© 2006 Solid Quality Learning
Cifrado de DatosJerarquía de CifradoClaves MaestrasEscenarios
© 2006 Solid Quality Learning
Jerarquía de Cifrado
© 2006 Solid Quality Learning
Claves MaestrasServicio– Clave Simétrica creada para el Servicio de SQL Server– Utilizada para cifrar:
• Contraseñas de servidores vinculados• Cadenas de Conexión• Credenciales de cuentas• Todas las claves de Base de Datos
Base de Datos– Clave Simétrica– Propósito:
• Cifrar Certificados y Claves dentro de la BBDD si no especificamos un mecanismo
– Cifrada con la Clave de Servicio y almacenada en la master (para abrir automáticamente la clave)
– Se almacena en la propia BBDD cifrada con contraseña
© 2006 Solid Quality Learning
EscenariosBuenas Prácticas– Cifrar datos utilizando
claves simétricas– Utilizar certificados de
orígenes de confianza– Utilizar certificados
para asegurar comunicaciones
• Service Broker• Database Mirroring• HTTP Endpoints
Intentar Evitar– Cifrar utilizando
claves asimétricas y certificados (Rendimiento)
– Cifrar todos los datos• No se pueden indexar• No se pueden utilizar
en joins
© 2006 Solid Quality Learning
AgendaSQL y la SeguridadSeparación de Usuarios y EsquemasContexto de EjecuciónCifrado de DatosIntegración de CLRIntegración de CLR
© 2006 Solid Quality Learning
Integración de CLR¿Será mi base de datos menos segura?Seguridad de Acceso a CódigoBuenas Prácticas
© 2006 Solid Quality Learning
¿Será mi Base de Datos menos segura?
Integración de CLR deshabilitada por defectoPodemos asignar tres niveles de seguridad en CREATE ASSEMBLY– SAFE– EXTERNAL ACCESS– UNSAFE
Para External Access y Unsafe es necesario habilitar la propiedad de BBDD Trusworthy y asignar el permiso al Inicio de SesiónPodemos asignar permisos a CREATE ASSEMBLYEl propietario puede asignar permiso de REFERENCE a un ensamblado
© 2006 Solid Quality Learning
Seguridad de Acceso a Código (CAS)
SAFE EXTERNAL_ACCESS UNSAFE
Permisos CAS Ejecución Ejecución + acceso a recursos
externos
Sin restricciones
(P/Invoke)Acceso datos locales
Si Si Si
Restricciones modelo programación
Si Si No
Comprobación requerida
Si Si No
Garantiza Seguridad / Fiabilidad
Fiabilidad &
Seguridad
Fiabilidad Ninguno
© 2006 Solid Quality Learning
Buenas PrácticasUtilizar el menor permiso necesarioEXTERNAL ACCESS utiliza la cuenta de servicio de SQL Server– Solo para inicios de sesión de confianza– Utilizar impersonalización
Aplicar técnicas de revisión de código para ensamblados EXTERNAL_ACCESS y UNSAFESi se necesitan estos permisos intentar separar el código en un ensamblado separadoExponer solo los ensamblados necesarios