sábado, 23 de julio de 2016

Administración de la seguridad con SQL Server (1º parte)

El servidor debe proporcionar al administrador de sistema los medios necesarios para que este conozca quién accede a los datos y así encontrarse en disposición de limitar dicho acceso a las personas adecuadas, y para realizar estrictamente las operaciones que se estimen oportunas. Esta tarea de preservar de deterioros o usos indeseados los datos de la base es decir, de gestionar la seguridad del servidor, es una de las más importantes labores que debe realizar el administrador del sistema.

Capas del sistema de seguridad


La seguridad en SQL Server es una tarea que se desarrolla en varias capas. Para acceder a los datos es necesario pasar por un buen número de puertas, que será necesario saber abrir. Podríamos hablar entonces de cuatro capas de seguridad. 

Administración de la seguridad con SQL Server




Para acceder a los datos el usuario deberá primero acceder al servidor logándose en el sistema operativo y para abrir SQL Server deberá poner de nuevo una contraseña además cada uno de los objetos de datos se hallará almacenado en una base de datos, Las bases de datos disponen del mecanismo de identificación de usuario de base de datos, para controlar qué usuarios de entre los que tienen acceso al servidor tendrán también acceso a los datos de la base. Este tercer paso de autentificación permite al usuario acceder finalmente a los datos.

Seguridad del objeto


Una vez el usuario accede a la base de datos deberá franquear un último peldaño del sistema de seguridad para poder operar sobre cada uno de los objetos de la base de datos, es decir, sobre las tablas, vistas, etc. es necesario poseer autorización para ejecutar sentencias SQL sobre estos objetos. El sistema proporciona una gran flexibilidad a la hora de proceder a proteger los datos. Es posible determinar en cada momento quién puede y qué puede hacer sobre cada objeto del servidor. Los permisos para llevar a cabo operaciones pueden concederse o revocarse individual o colectivamente. 

Figuras de identificación


Identificador de inicio de sesión (login id)


Un Inicio de sesión (login id) es el nombre que permite a un usuario acceder a SQL Server. Debe ser único para cada usuario al que queramos dar acceso. Por ejemplo, sa es el login id para el administrador. Añadir un nuevo login id al sistema no proporciona acceso a ninguna base de datos, salvo a la base de datos por defecto. Los login id se almacenan en la tabla syslogins de la base de datos master.

Usuario de la base de datos


Para acceder a una determinada base de datos es preciso haber sido declarado como usuario de la misma, con un cierto identificador de usuario (username). Cada usuario posee unos determinados permisos de acceso a la base de datos en la que está declarado. Los usermames se asocian a los  login id's, de manera que resulta natural pensar que cada uno de los identificadores de usuario tendrá un único username, que estará declarado en cada una de las bases de datos a las que tenga acceso. 

Funciones de servidor y base de datos (server/database roles)


Una función, sea de servidor o de bases de datos, es la agrupación lógica de un conjunto de usuarios del sistema operativo o de SQL Server que comparten permisos. Es decir, es un mecanismo que permite abstraer las diversas responsabilidades de los usuarios que van a acceder al servidor o a la base de datos, dándoles un nombre y otorgándoles los permisos necesarios para llevar a cabo su tarea, y agrupando bajo su ámbito a los usuarios que desempeñarán esas responsabilidades. 

Funciones de servidor y de base de datos


La diferencia entre las funciones de servidor y las de base de datos es básicamente el ámbito en el que tienen sentido. Las funciones de servidor abarcan todo SQL server mientras que las de bases de datos están restringidas a éstas. Además las funciones de servidor engloban y representan responsabilidades relacionadas fundamentalmente con la administración de SQL Server mientras que las de base de datos representan tareas vinculadas al acceso, administración y modificación de datos de una base de datos.

Quién puede pertenecer a una función


La flexibilidad de la adición de figuras de seguridad a las funciones es enorme. En particular, pueden incluirse en una función de servidor o bases de datos las siguientes entidades:
Usuarios individuales del sistema operativo: Con esta posibilidad resulta sencillo otorgar permisos para realizar operaciones con objetos del servidor a cualquier usuario individual del sistema operativo. 
Grupos del sistema operativo: Aún más facilidad para el administrador. Utilizando los grupos globales y locales del sistema operativo, podemos dar acceso a usuarios de nuestro dominio, o de otros con los que se hayan establecido relaciones de confianza, agrupados y con un esfuerzo de administración mínimo. 
Con esta técnica podemos evitar que las cuentas del sistema operativo pertenezcan simultáneamente a dos tipos de grupos de usuarios, los del sistema operativo, y los del servidor de bases de datos, con la consiguiente facilidad de administración. No es necesario, por tanto, duplicar en SQL Server la estructura jerárquica o funcional que existe en el sistema operativo para modelar la actividad y la política de seguridad de la empresa desde el punto de vista de sus usuarios.
Usuarios (identificadores de inicio de sesión) de SQL Server: Para aquellas situaciones de seguridad (modo de autenticación de SQL Server o sistema operativo) en las que sea SQL Server, a través de los identificadores de inicio de sesión, quien lleve a cabo las tareas de autenticación, es posible incluir a estos identificadores en filiaciones de servidor o base de datos para otorgarles los permisos adecuados.
Funciones: Para más flexibilidad, podemos incluir funciones dentro de otras funciones, en un mecanismo que se denomina anidamiento de funciones.

Funciones de servidor preestablecidas (server fixed roles)


Las tareas de administración están definidas por un conjunto de funciones de servidor preestablecidas en las que pueden ser incluidos diferentes usuarios del servidor. En cuanto al ámbito de permisos, los roles de nivel de servidor se aplican a todo el servidor.
Los roles fijos de servidor se proporcionan por compatibilidad con versiones anteriores. Es necesario asignar permisos más específicos.
Los permisos que se conceden a los roles fijos de servidor no se pueden modificar. A partir de SQL Server 2012, es posible crear roles de servidor definidos por el usuario y agregarles permisos de nivel de servidor.

roles de seguridad del servidor SQL Server



Pulsando con el botón derecho del ratón sobre un rol, y eligiendo propiedades obtenemos una pantalla que muestra los miembros que pertenecen a dicho rol, además unos botones nos permiten agregar o eliminar miembros.

Agregar o quitar usuarios a roles de seguridad del servidor SQL Server


Las siguientes son las funciones de servidor preestablecidas: 
sysadmin: Es una función equivalente a sa. Puede administrar el servidor en todos sus extremos. Agrupa los permisos de todas las demás funciones de servidor preestablecidas. 
serveradmin: Tiene la potestad de configurar los parámetros básicos del servidor. 
setupadmin: Puede instalar la duplicación de datos y crear y gestionar los procedimientos almacenados extendidos (extended stored procederes). 
securityadmin: Administra los identificadores de inicio de sesión (logins). 
processadmin: puede gestionar los procesos que se estén ejecutan-do en el ámbito de SQL Server. 
dbcreator: Los usuarios que pertenezcan a esta función de servidor poseerán permisos para crear y modificar bases de datos de usuario. 
diskadmin: Está facultado para crear ficheros en los medios de almacenamiento. Sean para datos, trasaction logs o copias de seguridad.
Se pueden añadir miembros con instrucciones de este tipo:

ALTER SERVER ROLE sysadmin
ADD MEMBER Mi_Base _de_datos


Funciones de la bases de datos


Esta Figura de autenticación permite agrupar usuarios de Windows o SQL Server para otorgarles permisos en una base de datos en concreto. La flexibilidad de esta Figura es muy grande, ya que podemos crear una estructura jerárquica de permisos en una base de datos, creando un pseudogrupo de usuarios, de ámbito exclusivo en una base de datos en SQL Server, sin que tengamos permisos para administrar las cuentas de usuario en Windows. 

Funciones de Bases de datos predefinidas (Fixed database roles)


Análogamente a las figuras de servidor predefinidas, existen las figuras de bases de datos predefinidas, que no pueden eliminarse ni modificarse y que son las siguientes.

Roles de base de datos SQL Server



agregar o eliminar usuarios a roles de base de datos SQL Server


Igual que en el caso anterior, pulsando con el botón derecho del ratón sobre un rol, y eligiendo propiedades obtenemos una pantalla que muestra los miembros que pertenecen a dicho rol, además unos botones nos permiten agregar o eliminar miembros.
db_accessadmin: Los usuarios pertenecientes a esta función pueden administrar el acceso y pertenencia a funciones de la base de datos de grupos de Windows, usuarios de Windows y usuarios de SQL Server.
db_backupoperator: Puede efectuar copias de seguridad de la base de datos.  
db_datareader: Tiene permiso de lectura en todas las tablas de la base de datos.  db_datawriter: Tiene permiso de escritura en todas las tablas de la base de datos. 
db_ddladmin: Puede ejecutar comandos SQL pertenecientes al subconjunto DDL (Data Definition Language), es decir, puede añadir, modificar y eliminar objetos en la base de datos.
db_securityadmin: Puede gestionar los permisos a objetos y sentencias sobre los objetos de la base de datos.
db_denydatareader: No puede consultar los datos de la base de datos, pero puede modificar su esquema. 
db_denydatawriter: No puede modificar dato alguno en la base de datos. 
db_owner: Puede llevar a cabo todas las operaciones y actividades sobre la base de datos en cuestión. Integra los permisos de todas las otras funciones de bases de datos.

Permisos en usuarios pertenecientes a múltiples funciones


Un usuario puede pertenecer a tantas funciones de una base de datos como se desee. Esas funciones, tienen conjuntos de permisos diferentes. Esta circunstancia nos hace preguntarnos cuáles son los permisos efectivos del usuario. 
Cuando un usuario pertenece a varios grupos, su conjunto de permisos resultante es la unión de los permisos asignados a todos los grupos a los que pertenezca. Excepto si una función tiene explícitamente denegado un cierto permiso, situación en la que la denegación explícita prevalece sobre los permisos otorgados en el mismo sentido en otras funciones de las que el usuario sea miembro. 

La función Public


Esta función existe en todas las bases de datos y a ella pertenecen todos los usuarios. Normalmente se asignan a esta función, para cada base de datos, los permisos por defecto y mínimos que se desea tengan todos los usuarios de la misma. Esta función no puede ser eliminada y existe incluso en las bases de datos de sistema. 

La función ObjectOwner : El propietario de objetos


Esta función es implícita, es decir, no aparece en ningún registro de la tabla sysusers, pero se almacena en la tabla sysobjects. El usuario que posee la tabla, el db_Owner pertenece a esta función implícita y tiene permisos para realizar cualquier tareas con el objeto, incluyendo su eliminación , y finalmente otorgar estos permisos a otros usuarios.

No hay comentarios:

Publicar un comentario