Download Descargar
Document related concepts
Transcript
UNIVERSIDAD LATINO INGENIERIA EN SISTEMAS COMPUTACIONALES Implementación y mantenimiento de base de datos UNIDAD 3: Administración de bases de datos. TEMA: Implementando seguridad. Actividad de Aprendizaje No. 15 Elaboró: ISC Adiel Ernesto Pacheco Mutul. Instrucciones: Realice las siguientes actividades usando SQL Server 2008 y la base de datos AdventureWorks2008. NOTA: Utilize preferentemente una instalación de prueba de SQL Server, para no afectar sus bases de datos en producción. Guia Práctica Configurando Seguridad en SQL Server PARTE A 1. Crear una base de datos llamada “Demo” 2. Dentro de la nueva base de datos cree una tabla llamada “Productos” con los campos Id int, Descripcion varchar(100) y estatus bit. PARTE B Logins y Users Logins están asociados a un servidor. Users están asociados a una base de datos. Realice las siguientes actividades: 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 acción. Para ello realice un SELECT sobre la tabla productos, un INSER INTO y un DELETE, configure los permisos para que la cuenta únicamente tenga bloqueda la opción “DELETE” y pueda realizar las otras consultas. PARTE C Lea los siguientes conceptos, y dispóngase a discutirlos en clase. Roles Cuando hablamos de Roles en SQL Server, tenemos 2 Categorías: Level Role y DataBase-Level Role Server- Función de nivel de Descripción servidor sysadmin Pueden realizar cualquier actividad en el servidor. serveradmin Pueden cambiar las opciones de configuración en el servidor y cerrar el servidor. securityadmin processadmin setupadmin bulkadmin diskadmin dbcreator public 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. Pueden finalizar los procesos que se ejecutan en una instancia de SQL Server. Pueden agregar y quitar los servidores vinculados. Pueden ejecutar la instrucción BULK INSERT. Se utiliza para administrar archivos de disco. Pueden crear, modificar, quitar y restaurar cualquier base de datos. 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 Descripción Función de nivel de base de datos db_owner db_securityadmin db_accessadmin db_backupoperator db_ddladmin db_datawriter db_datareader db_denydatawriter Pueden realizar todas las actividades de configuración y mantenimiento en la base de datos y también pueden quitar la base de datos. 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. 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. Pueden crear copias de seguridad de la base de datos. Pueden ejecutar cualquier comando del lenguaje de definición de datos (DDL) en una base de datos. Pueden agregar, eliminar o cambiar datos en todas las tablas de usuario. Pueden leer todos los datos de todas las tablas de usuario. No pueden agregar, modificar ni eliminar datos de tablas de db_denydatareader usuario de una base de datos. No pueden leer datos de las tablas de usuario dentro de una base de datos. PARTE D 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.