240 likes | 407 Views
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.
E N D
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 • Parte de la iniciativa Trustworthy • Servicios y Características deshabilitados de forma predeterminada • Nueva herramienta para gestionarlo • Surface Area Configuration Tool
Principio del Menor Privilegio • Por defecto: Sin acceso, sin derechos, sin permisos • Mayor Granularidad de Permisos en SQL Server 2005 • Ej: CREATE TRACE, ALTER TRACE • Seguridad en Metadatos • Solo veo los objetos a los que puedo acceder
Agenda • SQL y la Seguridad • Separación de Usuarios y Esquemas • Contexto de Ejecución • Cifrado de Datos • Integración de CLR
Separación de Usuarios y Esquemas • ¿Qué son los esquemas? • Beneficios de los esquemas • Esquema Predeterminado
¿Qué son los esquemas? • Espacio de Nombres para objetos de Base de Datos Maestros Productos (Server1.AdventureWorks.maestros.Productos) Ventas Pedidos (Server1.AdventureWorks.SalesData.Orders)
Beneficios de los Esquemas • Los objetos están agrupados en el esquema • Podemos administrar usuarios (borrar, cambiar nombre) sin modificar el esquema de nombres • Podemos asignar permisos a nivel de esquema
Fernando (no default schema) Antonio (Default schema = ventas) Esquema Predeterminado Resolución de Nombres dbo SELECT * FROM Pedidos Productos SELECT * FROM Productos ventas SELECT * FROM Pedidos SELECT * FROM Productos Pedidos
Agenda • SQL y la Seguridad • Separación de Usuarios y Esquemas • Contexto de Ejecución • Cifrado de Datos • Integración de CLR
Contexto de Ejecución • ¿Qué es el Contexto de Ejecución? • Cambios de Contexto
¿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 usuario • sys.login_token / sys.user_token
Cambios de Contexto • Podemos 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)
Agenda • SQL y la Seguridad • Separación de Usuarios y Esquemas • Contexto de Ejecución • Cifrado de Datos • Integración de CLR
Cifrado de Datos • Jerarquía de Cifrado • Claves Maestras • Escenarios
Claves Maestras • Servicio • 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
Buenas 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 Escenarios
Agenda • SQL y la Seguridad • Separación de Usuarios y Esquemas • Contexto de Ejecución • Cifrado de Datos • Integración de CLR
Integración de CLR • ¿Será mi base de datos menos segura? • Seguridad de Acceso a Código • Buenas Prácticas
¿Será mi Base de Datos menos segura? • Integración de CLR deshabilitada por defecto • Podemos 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ón • Podemos asignar permisos a CREATE ASSEMBLY • El propietario puede asignar permiso de REFERENCE a un ensamblado
Buenas Prácticas • Utilizar el menor permiso necesario • EXTERNAL 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 UNSAFE • Si se necesitan estos permisos intentar separar el código en un ensamblado separado • Exponer solo los ensamblados necesarios