jueves, 24 de marzo de 2011

Guia Práctica Configurando Seguridad en SQL Server


Logins y Users

Logins están asociados a un servidor.
Users están asociados a una base de datos

Guia Práctica
1.       Crear un usuario de Windows llamado  Maria
2.       Abrir el MS Management Studio
3.       Buscamos en el Explorador de Objetos,  la Carpeta Security, Logins.
Aquí vamos a definir un nuevo Login,  el cual tendrá acceso al Servidor pero no a una base específica.
4.       Nuevo Login. Search.  Escribimos el nombre de nuestro usuario “Maria”.  Comprobamos.   Finalmente Aceptar
5.       Buscamos nuestra Base de Datos “Demo”.  Folder Security.  Folder Users.  Nuevo User.
6.       Aquí  vamos a definir el nombre del User, que puede ser o no el mismo del Login.   Escribimos Maria  y buscamos el Login equivalente.  Click en OK

  
7.       Iniciemos sesión de Windows con el Login Maria.
8.       Verifiquemos que no tenemos acceso a otras bases más que a “Demo”,  adicional no podemos visualizar ninguna Tabla,  solo vistas, pero al ejecutarla nos regresaran 0 Registros.
9.       Regresemos a la sesión de Administrador y  asignemos Roles al User Maria.    Vamos a la Base de Datos “Demo”.  Users y buscamos a “Maria”.  Asignaremos db_datareader y db_datawriter.


10.       Nuevamente regresamos a la sesión de Windows “Maria”.  Y verificamos los cambios.  Podemos ver las Tablas.  Y  Podemos hacer consulta de búsqueda e inserción de datos.
11.       En la sesión Administrador.  Buscamos el user “Maria” y vamos a la sección Securables.
Los Securables o “Asegurables” nos van a dar la opción de asignar permisos al usuario a determinados objetos y determinadas acciones.

12.       En securables seleccionamos Search,  “All Objects of the types”,  “Tables”.   Por ejemplo:  Para tabla Productos definimos que no tendra permisos para borrar.



13.       Regresamos a la sesion “Maria” y verificamos esta accion.



Roles
Cuando hablamos de Roles en SQL Server,  tenemos 2 Categorías:    Server-Level Role  y  DataBase-Level Role


Función de nivel de servidor
Descripción
sysadmin
Pueden realizar cualquier actividad en el servidor.
serveradmin
Pueden cambiar las opciones de configuración en el servidor y cerrar el servidor.
securityadmin
Administran los inicios de sesión y sus propiedades. Administran los permisos de servidor GRANT, DENY y REVOKE. También administran los permisos de base de datos GRANT, DENY y REVOKE. Asimismo, pueden restablecer las contraseñas para los inicios de sesión de SQL Server.
processadmin
Pueden finalizar los procesos que se ejecutan en una instancia de SQL Server.
setupadmin
Pueden agregar y quitar los servidores vinculados.
bulkadmin
Pueden ejecutar la instrucción BULK INSERT.
diskadmin
Se utiliza para administrar archivos de disco.
dbcreator
Pueden crear, modificar, quitar y restaurar cualquier base de datos.
public
Cada inicio de sesión de SQL Server pertenece a la función pública de servidor. Cuando a una entidad de seguridad de servidor no se le han concedido ni denegado permisos específicos para un objeto protegible, el usuario hereda los permisos concedidos a la función pública para ese elemento. Solo asigne los permisos públicos en cualquier objeto cuando desee que el objeto esté disponible para todos los usuarios.
 
 
Database-level Role


                               Función de nivel de base de datos
Descripción
db_owner
Pueden realizar todas las actividades de configuración y mantenimiento en la base de datos y también pueden quitar la base de datos.
db_securityadmin
Pueden modificar la pertenencia a funciones y administrar permisos. Si se agregan entidades de seguridad a esta función, podría habilitarse un aumento de privilegios no deseado.
db_accessadmin
Pueden agregar o quitar el acceso a la base de datos para inicios de sesión de Windows, grupos de Windows e inicios de sesión de SQL Server.
db_backupoperator
Pueden crear copias de seguridad de la base de datos.
db_ddladmin
Pueden ejecutar cualquier comando del lenguaje de definición de datos (DDL) en una base de datos.
db_datawriter
Pueden agregar, eliminar o cambiar datos en todas las tablas de usuario.
db_datareader
Pueden leer todos los datos de todas las tablas de usuario.
db_denydatawriter
No pueden agregar, modificar ni eliminar datos de tablas de usuario de una base de datos.
db_denydatareader
No pueden leer datos de las tablas de usuario dentro de una base de datos.


Schemas

Los esquemas facilitan un espacio de nombres (namespace), por lo que también nos permitirán organizar y agrupar nuestros objetos  y también facilitan la configuración de seguridad (GRANT, DENY, REVOKE) al poder conceder permisos sobre todos los objetos contenidos en un esquema mediante una única instrucción. 



1.       Crear dos esquemas

CREATE SCHEMA VENTAS
GO
CREATE SCHEMA RH   

2.       Crear Tablas y asignárselas al esquema RH
CREATE TABLE [RH].[Beneficios](
   [abc] [int] NULL
)
GO

CREATE TABLE [RH].[Deducciones](
   [abc] [int] NULL
)
GO

CREATE TABLE [RH].[Empleado](
   [abc] [int] NULL )

3.       Transferir el Esquema Ventas a la Tabla Clientes

ALTER SCHEMA Ventas TRANSFER dbo.clientes

4.       Crear una  nueva tabla llamada Flores y que pertenezca al esquema ventas.  Luego realizar la importación de datos desde un archivo CSV dado por medio de la sentecia BULK.
CREATE TABLE [Ventas].[Flores](
FlorID varchar(10) ,
      Nombre varchar(50) NULL,
      ColorPrimario varchar(50) NULL,
      ColorSecundario varchar(50) NULL,
      Medida varchar(50) NULL,
      Temperatura varchar(50) NULL,
      Costo smallmoney NULL,
      Precio smallmoney NULL,
      StockMinimo varchar(50) NULL,
      ProximaCompra varchar(50) NULL,
      Descripcion varchar(150) NULL)

GO


BULK
INSERT Ventas.Flores
        FROM 'c:\SQLServer\DatosFlores.csv'
            WITH
                ( FIELDTERMINATOR = ',',  ROWTERMINATOR = '\n' )
GO

5.       Creamos e Logins llamados:   Vendedor,  RecursosHumanos y AdminDemo.  Con Autenticacion SQL Server.  Password: 123.  Quitamos “Enforce Policy Password” para que nos deje guardar la contraseña sencilla.  En todos los casos ponemos por defecto la base de “Demo”


6.       En User Mapping,  seleccionamos la base “Demo” y buscamos el schema y asignamos al usuario correspondiente.  En el caso de AdminDemo no le asignamos uno específico porque tendrá accesos a muchos.
7.       Ahora vamos crear un Rol para Ventas, V_VENTAS,  V_RECURSOSHUMANO y asignarlo por esquema y a cada usuario.  
En la carpeta Security. Roles. DataBase Roles.
 
8.       Para el usuario AdminDemo  vamos a editar el rol db_owner y agregamos el usuario a este Rol.

9.       Ahora vamos a probar a cada usuario con un nueva conexión de sql por cada uno de ellos y ver las diferencias.  Podremos ver que cada usuario solo tiene acceso a la base Demo,  y específicamente a las tablas de su esquema.

No hay comentarios:

Publicar un comentario