presentación

15
ADMINISTRANDO LA SEGURIDAD EN SQL SERVER INTEGRANTES: CASIANO BAUTISTA JAZMIN DEL MILAGRO CHINGUEL TINEO SEGUNDO FLORENTINO GUEVARA ZAVALETA NOHELI ELIZABETH RELÚZ TÚLLUME JUDITH LILIBETH TENORIO CERNA GIANMARCO AUTENTIFICACIÓN DE USUARIOS ROLES DEL SERVIDOR ROLES DE BASE DE DATOS ACCESO A LOS RECURSOS

Upload: judith-reluz

Post on 25-Sep-2015

3 views

Category:

Documents


0 download

DESCRIPTION

diapositivaa

TRANSCRIPT

ADMINISTRANDO LA SEGURIDAD EN SQL SERVERINTEGRANTES:CASIANO BAUTISTA JAZMIN DEL MILAGROCHINGUEL TINEO SEGUNDO FLORENTINOGUEVARA ZAVALETA NOHELI ELIZABETHRELZ TLLUME JUDITH LILIBETHTENORIO CERNA GIANMARCOAUTENTIFICACIN DE USUARIOSROLES DEL SERVIDORROLES DE BASE DE DATOSACCESO A LOS RECURSOS CREACIN DE USUARIOSUn usuario es una entidad de seguridad de la base de datos.Los inicios de sesin deben estar asignados a un usuario de base de datos para poder conectarse a una base de datosCREATE USER user_name [ { { FOR | FROM } { LOGIN login_name | CERTIFICATE cert_name | ASYMMETRIC KEY asym_key_name } | WITHOUT LOGIN ] [ WITH DEFAULT_SCHEMA = schema_name ] user_nameLOGINlogin_nameCERTIFICATEcert_nameASYMMETRIC KEYasym_key_nameWITH DEFAULT_SCHEMA=schema_nameWITHOUT LOGIN2. Crear un usuario de base de datos con un esquema predeterminadoEn el siguiente ejemplo, primero se crea un inicio de sesin de servidor denominadoWanidaBenshoofcon una contrasea y, a continuacin, se crea el usuario de base de datosWanidacorrespondiente con el esquema predeterminadoMarketing.CREATE LOGIN WanidaBenshoof WITH PASSWORD = '8fdKJl3$nlNv3049jsKK';USE AdventureWorks2008R2;CREATE USER Wanida FOR LOGIN WanidaBenshoof WITH DEFAULT_SCHEMA = Marketing;GO3.. Crear un usuario de base de datos a partir de un certificadoEn el siguiente ejemplo, se crea el usuario de base de datosJinghaoLiudesde el certificado CarnationProduction50.USE AdventureWorks2008R2;CREATE CERTIFICATE CarnationProduction50 WITH SUBJECT = 'Carnation Production Facility Supervisors', EXPIRY_DATE = '11/11/2011';GOCREATE USER JinghaoLiu FOR CERTIFICATE CarnationProduction50;GO 1.-Crear un usuario de base de datosEn el siguiente ejemplo, primero se crea un inicio de sesin de servidor denominadoAbolrousHazemcon una contrasea y, a continuacin, se crea el usuario de base de datosAbolrousHazemcorrespondiente enAdventureWorks2008R2.CREATE LOGIN AbolrousHazem WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';USE AdventureWorks2008R2;CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;GO EJEMPLOSCREACIN DE LOGIN Crea un inicio de sesin del Motor de base de datos para SQL Server y Windows Azure SQL DatabaseCREATE LOGIN login_name { WITH | FROM } ::= PASSWORD = { 'password' | hashed_password HASHED } [ MUST_CHANGE ] [ , [ ,... ] ] ::= SID = sid | DEFAULT_DATABASE = database | DEFAULT_LANGUAGE = language | CHECK_EXPIRATION = { ON | OFF} | CHECK_POLICY = { ON | OFF} | CREDENTIAL = credential_name ::= WINDOWS [ WITH [ ,... ] ] | CERTIFICATE certname | ASYMMETRIC KEY asym_key_name ::= DEFAULT_DATABASE = database | DEFAULT_LANGUAGE = language

login_namePASSWORD='password'PASSWORD=hashed_passwordHASHEDMUST_CHANGECREDENTIAL=credential_nameSID =sid

DEFAULT_DATABASE=databaseDEFAULT_LANGUAGE=languageCHECK_EXPIRATION={ ON | OFF }CHECK_POLICY={ ON | OFF }WINDOWSCERTIFICATEcertnameASYMMETRIC KEYasym_key_nameA.Crear un inicio de sesin con una contraseaEl ejemplo siguiente crea un inicio de sesin para un usuario determinado y le asigna una contrasea.CREATE LOGIN WITH PASSWORD = '';B.Crear un inicio de sesin con una contraseaEl ejemplo siguiente crea un inicio de sesin para un usuario determinado y le asigna una contrasea.La opcinMUST_CHANGEexige a los usuarios que cambien la contrasea la primera vez que se conecten al servidor.CREATE LOGIN WITH PASSWORD = '' MUST_CHANGE;GOC.Crear un inicio de sesin asignado a una credencialEl ejemplo siguiente crea el inicio de sesin para un usuario determinado, utilizando el de usuario.Este inicio de sesin se asigna a la credencial.CREATE LOGIN WITH PASSWORD = '', CREDENTIAL = ;GOD.Crear un inicio de sesin desde un certificadoEn el ejemplo siguiente se crea el inicio de sesin de un usuario determinado a partir de un certificado de master.USE MASTER;CREATE CERTIFICATE WITH SUBJECT = ' certificate in master database', EXPIRY_DATE = '12/05/2025';GOCREATE LOGIN FROM CERTIFICATE ;GOE.Crear un inicio de sesin desde una cuenta de dominio de WindowsEl ejemplo siguiente crea un inicio de sesin a partir de una cuenta de dominio de Windows.CREATE LOGIN [\] FROM WINDOWS;GOEJEMPLOSROLES DEL SERVIDORSQL Server proporciona roles de nivel de servidor para ayudarle a administrar los permisos de un servidor.Estos roles son entidades de seguridad que agrupan otras entidades de seguridad.Los roles de nivel de servidor se aplican a todo el servidor en lo que respecta a su mbito de permisos.Los roles fijos de servidor se proporcionan por comodidad y compatibilidad con versiones anteriores.Siempre que sea posible, asigne permisos ms especficos.SQL Server proporciona nueve roles fijos de servidor.Los permisos que se conceden a los roles fijos de servidor no se pueden modificar.A partir de SQL Server 2012, puede crear roles de servidor definidos por el usuario y agregarles permisos de nivel de servidor.Puede agregar entidades de seguridad a nivel de servidor (inicios de sesin de SQL Server, cuentas de Windows y grupos de Windows) a los roles de nivel de servidor.Cada miembro de un rol fijo de servidor puede agregar otros inicios de sesin a ese mismo rol.Los miembros de roles de servidor definidos por el usuario no pueden agregar otras entidades de seguridad de servidor al rol.ROLES FIJOS DE NIVEL DE SERVIDOR DESCRIPCIONSysadminLos miembros del rol fijo de servidor sysadmin pueden realizar cualquier actividad en el servidor.ServeradminLos miembros del rol fijo de servidor serveradmin pueden cambiar las opciones de configuracin del servidor y apagarlo.SecurityadminLos miembros del rol fijo de servidor securityadmin administran los inicios de sesin y sus propiedades.Administran los permisos de servidor GRANT, DENY y REVOKE.Tambin pueden administrar los permisos de nivel de base de datos GRANT, DENY y REVOKE si tienen acceso a una base de datos.Asimismo, pueden restablecer las contraseas para los inicios de sesin de SQL Server.ProcessadminLos miembros del rol fijo de servidor processadmin pueden finalizar los procesos que se ejecuten en una instancia de SQL Server.SetupadminLos miembros del rol fijo de servidor setupadmin pueden agregar y quitar servidores vinculados mediante instrucciones Transact-SQL.(Se necesita la pertenencia a sysadmin cuando se utiliza Management Studio).BulkadminLos miembros del rol fijo de servidor bulkadmin pueden ejecutar la instruccin BULK INSERT.DiskadminEl rol fijo de servidor diskadmin se usa para administrar archivos de disco.dbcreatorLos miembros del rol fijo de servidor dbcreator pueden crear, modificar, quitar y restaurar cualquier base de datos.PublicCada inicio de sesin de SQL Server pertenece al rol de servidor public.Cuando a una entidad de seguridad de servidor no se le han concedido ni denegado permisos especficos para un objeto protegible, el usuario hereda los permisos concedidos al rol public para ese objeto.ROLES DE BASE DE DATOS Para administrar con facilidad los permisos en las bases de datos, SQL Server proporciona variosroles, que son las entidades de seguridad que agrupan a otras entidades de seguridad.Son como losgruposdel sistema operativo Microsoft Windows.Los roles de nivel de base de datos se aplican a toda la base de datos en lo que respecta a su mbito de permisos.Existen dos tipos de roles de nivel de base de datos en SQL Server: losroles fijos de base de datos, que estn predefinidos en la base de datos, y losroles flexibles de base de datos, que pueden crearse.Los roles fijos de base de datos se definen en el nivel de base de datos y existen en cada una de ellas.Los miembros de los roles de base de datosdb_ownerydb_securityadminpueden administrar la pertenencia a roles fijos de base de datos.Sin embargo, solo los miembros del rol de base de datosdb_ownerpueden agregar miembros al rol fijo de base de datosdb_owner.Tambin hay algunos roles fijos de base de datos con fines especiales en la base de datos msdb.ROLES DE NIVEL DE BASE DE DATOS DESCRIPCIONdb_ownerLos miembros del rol fijo de base de datosdb_ownerpueden realizar todas las actividades de configuracin y mantenimiento en la base de datos y tambin pueden eliminar la base de datos.db_securityadminLos miembros del rol fijo de base de datosdb_securityadminpueden modificar la pertenencia a roles y administrar permisos.Si se agregan entidades de seguridad a este rol, podra habilitarse un aumento de privilegios no deseadodb_accessadminLos miembros del rol fijo de base de datosdb_accessadminpueden agregar o quitar el acceso a la base de datos para inicios de sesin de Windows, grupos de Windows e inicios de sesin de SQL Serverdb_backupoperatorLos miembros del rol fijo de base de datosdb_backupoperatorpueden crear copias de seguridad de la base de datos.db_ddladminLos miembros del rol fijo de base de datosdb_ddladminpueden ejecutar cualquier comando del lenguaje de definicin de datos (DDL) en una base de datos.db_datawriterLos miembros del rol fijo de base de datosdb_datawriterpueden agregar, eliminar o cambiar datos en todas las tablas de usuario.db_datareaderLos miembros del rol fijo de base de datosdb_datareaderpueden leer todos los datos de todas las tablas de usuario.db_denydatawriterLos miembros del rol fijo de base de datosdb_denydatawriterno pueden agregar, modificar ni eliminar datos de tablas de usuario de una base de datos.db_denydatareaderLos miembros del rol fijo de base de datosdb_denydatareaderno pueden leer datos de las tablas de usuario dentro de una base de datos.GRANTCrear prueba del usuario USE TestDB; GO CREATE ROLE TestRole; GO CREATE USER TestUser WITHOUT LOGIN; GO EXEC sp_addrolemember @rolename = 'TestRole', @membername = 'TestUser'; GO Crear tablas y Permisos Ahora vamos a crear un esquema, un par de mesas, y vamos a conceder a la posibilidad de seleccionar en contra de la primera tabla. CREATE SCHEMA Test; GO CREATE TABLE Test.TestTable (TableID int); GO GRANT SELECT ON OBJECT::Test.TestTable TO TestRole; GO CREATE TABLE Test.TestTable2 (TableID int); GO PRUEBA DE CONSULTAS Una vez hecho esto, vamos a usar dos " test harnesses " para poner a prueba la capacidad del usuario para acceder a las tablas en cuestin. Tenga en cuenta que con los permisos actuales, el usuario slo debe ser capaz de emitir un SELECT en contra de la primera tabla. -- Test Harness to verify how permissions work for Test.TestTable. EXECUTE AS USER = 'TestUser'; GO SELECT * FROM Test.TestTable; GO REVERT; GO -- Test Harness to verify how permissions work for Test.TestTable2. EXECUTE AS USER = 'TestUser'; GO -- This should fail initially, as there is no permission for this table SELECT * FROM Test.TestTable2; GO REVERT; GO PERMISOS ---Consulta para ver los permisos aplicables SELECT dp.class_desc, s.name AS 'Schema', o.name AS 'Object', dp.permission_name, dp.state_desc, prin.[name] AS 'User' FROM sys.database_permissions dp JOIN sys.database_principals prin ON dp.grantee_principal_id = prin.principal_id JOIN sys.objects o ON dp.major_id = o.object_id JOIN sys.schemas s ON o.schema_id = s.schema_id WHERE LEFT(o.name, 9) = 'TestTable' AND dp.class_desc = 'OBJECT_OR_COLUMN' UNION ALL SELECT dp.class_desc, s.name AS 'Schema', '-----' AS 'Object', dp.permission_name, dp.state_desc, prin.[name] AS 'User' FROM sys.database_permissions dp JOIN sys.database_principals prin ON dp.grantee_principal_id = prin.principal_id JOIN sys.schemas s ON dp.major_id = s.schema_id WHERE dp.class_desc = 'SCHEMA'; REMOKEREVOKE deshace un permiso, ya sea un GRANT o DENY. Si emite el siguiente REVOKE y luego comprueba los permisos, se le nota que la concesin que estaba presente para Test.Table1. Despus de emitir la orden de revocacin, vuelva a ejecutar las consultas del arns de pruebas anteriores en contra de esa mesa y vers que el usuario no puede consultar la tabla por ms tiempo. -- Deshacer el permiso utilizando REVOKE; REVOKE SELECT ON OBJECT::Test.TestTable FROM TestRole; Recuerde, REVOKE no cancela una subvencin. No bloquea una subvencin. Se elimina un permiso en el nivel especificado a la entidad de seguridad (usuario o rol) especificado. Es por eso que decimos que deshace un permiso. DENYDenegar el acceso bloques. DENY triunfa sobre otro acceso. Si un usuario tiene tanto un GRANT y un DENY sobre un objeto dado, por cualquier medio, DENY tendr efecto. Por ejemplo, consideremos el caso de un SELECT GRANT en el esquema de prueba. Esto dara a la capacidad de emitir un SELECT contra cualquier tabla o vista en el esquema de prueba. Intenta simplemente aplicando este permiso, vuelva a comprobar el permiso y, a continuacin, las pruebas de acceso del usuario al tanto Test.TestTable y Test.TestTable2. Usted ver el usuario puede ahora emitir una consulta SELECT contra ambas tablas. A veces, si usted busca permisos explcitos contra una tabla o un procedimiento almacenado, usted no lo vea. Sin embargo, el usuario puede ejecutar el SELECT o EXECUTE respectivamente. Si este es el caso, entonces el permiso est en una asegurable que contiene el objeto. Eso es lo que estamos haciendo aqu. El esquema de prueba contiene las tablas TestTable y TestTable2. As que si un usuario tiene permisos SELECT contra el esquema de prueba, tambin tiene el permiso SELECT en las tablas y vistas en el esquema de prueba. -- Permiso a nivel de esquema GRANT SELECT ON SCHEMA::Test TO TestRole; GO Ahora vamos a aplicar un negar. En este caso estoy aplicando una denegar explcitamente al usuario de prueba en vez de ir a travs de un papel. Y yo slo estoy aplicarlo al objeto Test.TestTable. Ahora volver a ejecutar las consultas del arns de prueba. Vers se neg el acceso. Sin embargo, todava se puede consultar Test.TestTable2. No hay un niegan aplicar contra ella. -- Especifica DENY y bloqueara el GRANT DENY SELECT ON OBJECT::Test.TestTable TO TestUser; Y si vuelve a ejecutar el script permisos, ver todos los permisos concedidos, para incluir el negar. GRACIAS