You are on page 1of 70

Mdulo 4

Administracin de la seguridad

Contenido:
Leccin 1: Descripcin general de la seguridad
de SQL Server 4-2
Leccin 2: Proteger el mbito de servidor 4-8
Leccin 3: Proteger el mbito de base de datos 4-26
Leccin 4: Administrar claves y certificados en
SQL Server 4-42
Prctica: Seguridad de SQL Server 4-53
La informacin contenida en este documento, incluidas las direcciones URL y otras referencias a sitios web
de Internet, est sujeta a modificaciones sin previo aviso. A menos que se indique lo contrario, los nombres
de ejemplo de compaas, organizaciones, productos y dominios, direcciones de correo electrnico,
logotipos, personas, personajes, lugares y eventos mencionados son ficticios. No se pretende indicar, ni debe
deducirse ninguna asociacin con compaas, organizaciones, productos, dominios, direcciones de correo
electrnico, logotipos, personas, lugares o eventos reales. Es responsabilidad del usuario el cumplimiento de
todas las leyes de derechos de autor aplicables. Ninguna parte de este documento puede ser reproducida,
almacenada o introducida en un sistema de recuperacin, o transmitida de ninguna forma, ni por ningn
medio (ya sea electrnico, mecnico, por fotocopia, grabacin o de otra manera) con ningn propsito, sin la
previa autorizacin por escrito de Microsoft Corporation.
Los nombres de fabricantes o productos y las direcciones URL se proporcionan con fines informativos
nicamente y Microsoft no hace ninguna representacin ni otorga ninguna garanta, ya sea expresa, implcita
o legal, en relacin a estos fabricantes o al uso de los productos con ninguna de las tecnologas de Microsoft.
La inclusin de un fabricante o producto no implica aprobacin por parte de Microsoft del fabricante o del
producto. Se proporcionan vnculos a sitios de terceros. Estos sitios no estn bajo el control de Microsoft y
Microsoft no es responsable del contenido de ninguno de los sitios vinculados ni de los vnculos que stos
contengan, ni tampoco de los cambios o actualizaciones que se produzcan en dichos sitios. Microsoft no es
responsable de la difusin en web ni de ninguna otra forma de transmisin recibida desde cualesquiera de
los sitios vinculados. Microsoft facilita estos vnculos nicamente para su comodidad y la inclusin de un
vnculo no implica la aprobacin por parte de Microsoft del sitio o de los productos contenidos en l.

Microsoft puede ser titular de patentes, solicitudes de patentes, marcas, derechos de autor y otros derechos
de propiedad intelectual sobre el contenido de este documento. El suministro de este documento no le
otorga a usted ninguna licencia sobre estas patentes, marcas, derechos de autor u otros derechos de
propiedad intelectual, a menos que ello se prevea en un contrato escrito de licencia de Microsoft.

2006 Microsoft Corporation. Reservados todos los derechos.

Microsoft, Active Directory, ActiveX, Excel, Outlook, PowerPoint, SharePoint, Verdana, Visio, Visual Basic,
Windows CE, Windows Mobile, Windows NT, y Windows Server son marcas registradas o marcas
comerciales de Microsoft Corporation en EE.UU. y/o en otros pases.

Otros nombres de productos y compaas mencionados aqu pueden ser marcas comerciales de sus
respectivos propietarios.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 41

Objetivos del mdulo Despus de completar este mdulo, los alumnos podrn:
Describir la arquitectura de seguridad de SQL Server.
Implementar la seguridad en el mbito de servidor.
Implementar la seguridad en el mbito de base de datos.
Administrar certificados en SQL Server.

Introduccin La seguridad es una consideracin primordial cuando se disea y administra un


entorno de base de datos. En este mdulo, obtendr informacin sobre el modelo de
seguridad de Microsoft SQL Server en SQL Server 2005, considerablemente
mejorado y ampliado respecto a las versiones anteriores de SQL Server.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
42 Mdulo 4: Administracin de la seguridad

Leccin 1: Descripcin general de la seguridad de SQL Server

Objetivos de la leccin Despus de completar esta leccin, los alumnos podrn:


Describir las entidades de seguridad en SQL Server 2005.
Describir los protegibles en SQL Server 2005.
Describir cmo se procesan los permisos en SQL Server 2005.

Introduccin Esta leccin proporciona una introduccin a los componentes fundamentales de


seguridad de SQL Server: entidades de seguridad, protegibles y el modo en que se
aplican los permisos dentro del modelo de seguridad de SQL Server.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 43

Qu son las entidades de seguridad?

Qu son las entidades SQL Server 2005 emplea el trmino entidad de seguridad para referirse a las identidades
de seguridad? autenticadas en un sistema de SQL Server. La comprensin de las diferentes entidades
de seguridad que pueden existir en un sistema de SQL Server le ayudar a planear su
modelo de seguridad.

Una entidad de seguridad es cualquier identidad autenticada a la que se puede conceder


permiso para tener acceso a un objeto del sistema de base de datos. SQL Server
distingue entre entidades principales indivisibles, que son identidades nicas (como, por
ejemplo, inicios de sesin), y entidades de seguridad de coleccin, que son colecciones de
identidades (tales como funciones fijas de servidor).

Niveles de entidades de Las entidades de seguridad existen en tres niveles: Microsoft Windows, SQL Server y
seguridad base de datos. Los tipos de entidad de seguridad posibles en cada uno de estos niveles
se muestran en la tabla siguiente.

Nivel Entidades de seguridad


Windows Cuenta de usuario local de Windows
Cuenta de usuario de dominio de Windows
Grupo de Windows
SQL Server Inicio de sesin de SQL Server
Funcin de SQL Server
Base de datos Usuario de la base de datos
Funcin de la base de datos
Funcin de aplicacin
Grupo de bases de datos (slo para
compatibilidad con versiones anteriores)

Nota Los grupos de bases de datos se admiten principalmente por motivos de


compatibilidad con versiones anteriores. Debera usar las funciones de base de datos
para crear entidades de seguridad de coleccin en el nivel de base de datos.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
44 Mdulo 4: Administracin de la seguridad

Qu son los protegibles?

Qu son los protegibles? Los objetos cuyo acceso est regulado por el sistema de autorizacin de SQL Server
2005 se denominan protegibles. Como ocurre con las entidades de seguridad,
es necesario comprender los diferentes mbitos de los protegibles en SQL Server
para planear su modelo de seguridad.

Los protegibles se organizan en jerarquas anidadas llamadas mbitos, que tambin


se pueden proteger. Los tres mbitos protegibles son servidor, base de datos y esquema.
Los protegibles en el nivel de Windows incluyen archivos y claves del Registro.

El mbito de servidor Los protegibles que contiene el mbito de servidor incluyen:

Inicios de sesin
Extremos
Bases de datos

El mbito de base de Los protegibles que contiene el mbito de base de datos incluyen:
datos
Usuarios
Funciones
Funciones de aplicacin
Certificados
Claves simtricas
Claves asimtricas
Ensamblados
Catlogos de texto completo
Eventos DDL
Esquemas
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 45

El mbito de esquema Los protegibles que contiene el esquema incluyen:

Tablas
Vistas
Funciones
Procedimientos
Tipos
Sinnimos
Agregados

Nota Tenga en cuenta que una entidad de seguridad tambin puede ser un
protegible. Por ejemplo, un inicio de sesin es una entidad de seguridad, pero tambin
se pueden otorgar permisos en ese inicio de sesin a otros inicios de sesin, lo que lo
convierte en un protegible.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
46 Mdulo 4: Administracin de la seguridad

Permisos de SQL Server 2005

Introduccin SQL Server 2005 usa permisos para controlar el acceso a los protegibles por parte
de entidades de seguridad. Para planear su modelo de seguridad para la base de datos,
es importante entender cmo se implementan los permisos en los mbitos de los
protegibles.

Los permisos son las reglas que gobiernan el nivel de acceso de las entidades de
seguridad a los protegibles. Se pueden otorgar, revocar o denegar permisos en un
sistema de SQL Server. Todos los protegibles de SQL Server tienen permisos asociados
que pueden otorgarse a cada entidad de seguridad.

Ejemplos de permiso La nica manera de que una entidad de seguridad pueda tener acceso a un recurso en
un sistema de SQL Server es recibir permiso para ello, directa o indirectamente a travs
de la suscripcin de una entidad secundaria como una funcin o un grupo. Puede
administrar los permisos usando el Explorador de objetos en SQL Server Management
Studio o mediante la ejecucin de instrucciones GRANT, REVOKE o DENY.

Los permisos concretos asociados a cada uno de los protegibles varan segn los tipos
de acciones que son compatibles con un protegible.

Permisos heredados Determinados permisos en SQL Server 2005 se pueden heredar a travs de un permiso
concedido en un nivel ms alto de la jerarqua de mbito del protegible. Por ejemplo:

Una entidad de seguridad a la que se le ha concedido el permiso SELECT en un


esquema hereda automticamente el permiso SELECT en todos los objetos del
esquema.
Una entidad de seguridad a la que se la ha concedido el permiso CONTROL en un
objeto de base de datos hereda automticamente el permiso CONTROL en todos
los protegibles que contiene esa base de datos y todos los protegibles que
contienen los esquemas incluidos en esa base de datos.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 47

Permisos efectivos Los permisos efectivos para una entidad de seguridad se evalan de la misma manera
que en versiones anteriores de SQL Server. Una entidad de seguridad puede realizar
una accin determinada si:

El permiso se ha concedido explcitamente a la entidad de seguridad o a una


coleccin de la que es miembro la entidad de seguridad, y
El permiso no se ha denegado explcitamente a la entidad de seguridad o a una
coleccin de la que es miembro la entidad de seguridad.

Nota Una instruccin DENY explcita siempre reemplaza a una instruccin GRANT.
Por ejemplo, si a un usuario se le ha concedido explcitamente el permiso SELECT en
una tabla determinada pero es miembro de una funcin a la que se le ha denegado
explcitamente el permiso SELECT en la tabla, el usuario no podr ejecutar una
instruccin SELECT en la tabla.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
48 Mdulo 4: Administracin de la seguridad

Leccin 2: Proteger el mbito de servidor

Objetivos de la leccin Despus de completar esta leccin, los alumnos podrn:


Describir los modos de autenticacin de SQL Server.
Explicar de qu modo afectan las directivas de la contrasea a los inicios de sesin
en SQL Server.
Describir cmo administrar inicios de sesin.
Describir las funciones fijas de servidor.
Explicar los requisitos para la delegacin de cuentas.
Definir las credenciales y su uso.
Describir los permisos del mbito de servidor.

Introduccin Esta leccin examina la seguridad en el nivel de objeto de servidor en SQL Server 2005.
Es importante entender cmo proteger el mbito de servidor para garantizar que slo
los usuarios autorizados puedan tener acceso a las instancias de SQL Server.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 49

Qu son los modos de autenticacin de SQL Server?

Introduccin SQL Server 2005 puede configurarse para usar uno de los dos modos de autenticacin
siguientes:

Modo de autenticacin de Windows. Los usuarios se autentican con Windows y se les


concede el acceso a SQL Server mediante un inicio de sesin asignado a su cuenta de
Windows (o a un grupo de Windows del que son miembros). Cuando se realiza la
solicitud de conexin inicial, el smbolo de acceso del usuario, que se emiti cuando se
inici sesin en Windows, se presenta a SQL Server y, si se encuentra un inicio de sesin
coincidente, se concede al usuario el acceso a SQL Server.
Modo de autenticacin de Windows y SQL Server. Los usuarios que se conectan a SQL
Server mediante una conexin de confianza (una conexin de red a travs de la cual se
puede pasar el smbolo de acceso de Windows del usuario) tienen acceso a SQL Server
mediante la autenticacin de Windows. Adems, SQL Server mantiene inicios de sesin
no asignados a usuarios de Windows y los usuarios pueden conectarse a SQL Server
tras indicar un nombre de inicio de sesin vlido y la contrasea que SQL Server valida
de forma independiente a Windows. El modo de autenticacin de Windows y SQL
Server se conoce a veces como modo mixto.

Nota Los inicios de sesin en SQL Server asignados a los usuarios de Windows se
conocen como inicios de sesin de Windows. Los inicios de sesin autenticados en SQL
Server se conocen como inicios de sesin de SQL.
Las necesidades de seguridad de sus entornos de servidor y de red determinarn el
modo de autenticacin que se usar para SQL Server. Puede usar SQL Server
Management Studio para establecer el modo de autenticacin de su servidor.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
410 Mdulo 4: Administracin de la seguridad

Cundo usar el modo de Use el modo de autenticacin de Windows en entornos de red en los que todos los
autenticacin de usuarios estn autenticados mediante cuentas de usuario de Windows.
Windows
La autenticacin de Windows proporciona varias ventajas sobre la autenticacin de
SQL Server, como por ejemplo:

Le permite agregar grupos de usuarios a SQL Server mediante la agregacin de


una cuenta de inicio de sesin nica.
Permite a los usuarios un rpido acceso a SQL Server sin tener que recordar otra
cuenta de inicio de sesin y contrasea.

Cundo usar el modo de Use el modo de autenticacin de Windows y SQL Server cuando deba permitir que se
autenticacin de conecten a SQL Server usuarios o aplicaciones que no tienen las credenciales de
Windows y SQL Server Windows. A menos que necesite especficamente conexiones a SQL Server que no sean
de Windows, no debera habilitar el modo de autenticacin de Windows y SQL Server
por las razones siguientes:

La autenticacin de Windows no exige que los nombres de usuario y las


contraseas pasen por la red al conectarse a SQL Server. En su lugar, se usa el
smbolo de acceso de usuario de Windows, lo que hace ms segura la
autenticacin de Windows.
La autenticacin de Windows requiere menos sobrecarga administrativa, ya que el
acceso a SQL Server puede lograrse mediante un inicio de sesin que se asigna a
un grupo de Windows, y la administracin de cada uno de los usuarios se confina
al dominio de Windows.
El modo de autenticacin de Windows y SQL Server aumenta la superficie del
sistema de SQL Server, lo que lo hace ms vulnerable ante cualquier ataque.

Importante Independientemente del modo de seguridad empleado, asegrese de


que la contrasea para el inicio de sesin del administrador del sistema (sa) no est en
blanco.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 411

Cmo funcionan las directivas de contraseas

Introduccin En Windows 2000 y Microsoft Windows Server 2003, puede usar la Directiva de
grupo para definir las configuraciones de usuarios y equipos para grupos de usuarios y
equipos. Puede usar la Directiva de grupo para configurar muchas opciones, incluidas
las directivas de cuentas. Las directivas de contraseas son tiles para garantizar que
todas las contraseas sean lo suficientemente complejas y que se cambien
peridicamente para maximizar la seguridad y evitar el acceso no autorizado.

En SQL Server 2005, las directivas de cuentas locales o de dominio se pueden aplicar a
inicios de sesin de SQL, as como a los inicios de sesin de Windows, cuando SQL
Server se instala en equipos que usan Windows Server 2003 o posterior.

Directivas de Las directivas de complejidad de contraseas estn diseadas para disuadir los ataques
complejidad de de fuerza bruta por medio del aumento del nmero de contraseas posibles. Cuando se
contraseas aplica la directiva de complejidad de contraseas, las nuevas contraseas deben cumplir
los requisitos de directiva establecidos por la directiva de contraseas de Windows. Un
ejemplo de este tipo de directiva sera:

La contrasea no contiene todo o parte del nombre de cuenta del usuario. Una
parte de un nombre de cuenta se define como tres o ms caracteres alfanumricos
consecutivos delimitados en ambos extremos por un espacio en blanco (espacio,
tabulacin, retorno, etc.) o por cualquiera de los caracteres siguientes: , . - _ #
La contrasea debe tener una longitud de siete caracteres como mnimo.
La contrasea contiene caracteres de tres de las cuatro categoras siguientes:
Abecedario ingls en maysculas (de la A a la Z)
Abecedario ingls en minsculas (de la a a la z)
Dgitos en base decimal (del 0 al 9)
Caracteres no alfanumricos (por ejemplo: !, $, #, o %)
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
412 Mdulo 4: Administracin de la seguridad

Directiva de caducidad Las directivas de caducidad de contraseas se usan para administrar el tiempo de
de contraseas vida de una contrasea. Cuando se usa una directiva de caducidad de contraseas,
se recuerda a los usuarios que cambien las contraseas anteriores y las cuentas con
contraseas caducadas se deshabilitan.

Para obtener ms informacin Para obtener ms informacin sobre directivas de


contraseas, consulte Directiva de contraseas en los Libros en pantalla de SQL
Server.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 413

Cmo administrar inicios de sesin de SQL Server

Introduccin Puede administrar los inicios de sesin mediante el Explorador de objetos en


SQL Server Management Studio o por medio de la ejecucin de las instrucciones
Transact-SQL CREATE LOGIN, ALTER LOGIN y DROP LOGIN.

Nota De manera predeterminada, SQL Server est configurado para usar el modo de
autenticacin de Windows. Todava puede crear inicios de sesin de SQL, pero no
podrn conectarse al servidor hasta que se cambie el modo de autenticacin al modo de
autenticacin de Windows y SQL Server.

Crear inicios de sesin Puede usar la instruccin CREATE LOGIN para crear inicios de sesin de Windows o
SQL Server. Las opciones concretas que puede usar dentro de la instruccin CREATE
LOGIN dependen de si est creando un inicio de sesin de Windows o un inicio de
sesin de SQL Server.

El ejemplo siguiente muestra una instruccin CREATE LOGIN que crea un inicio de
sesin de Windows para un grupo de Windows local denominado SalesDBUsers:

CREATE LOGIN [SERVERX\SalesDBUsers]


FROM WINDOWS
WITH DEFAULT_DATABASE = AdventureWorks

El ejemplo siguiente muestra una instruccin CREATE LOGIN que crea un inicio de
sesin de SQL:

CREATE LOGIN Alicia


WITH PASSWORD = 'Pa$$w0rd',
DEFAULT_DATABASE = AdventureWorks
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
414 Mdulo 4: Administracin de la seguridad

Las cuentas de usuario de Windows estn sujetas a directivas de contraseas aplicadas


por Windows. SQL Server 2005 proporciona restricciones de directiva similares para
inicios de sesin de SQL cuando est instalado en Windows Server 2003. Cuando una
directiva de contraseas est habilitada para el servidor, SQL Server la habilita de forma
predeterminada para nuevos inicios de sesin de SQL; puede cambiar este
comportamiento mediante las opciones de la instruccin CREATE LOGIN mostradas
en la tabla siguiente.

Opcin Descripcin
HASHEDloca Especifica que la contrasea ya se ha
comprobado aleatoriamente. Si no est
especificada, la cadena se comprobar
aleatoriamente antes del almacenamiento.
MUST_CHANGE Solicita a un inicio de sesin que cambie
su contrasea la primera vez que se
conecta. Si se especifica esta opcin,
CHECK_EXPIRATION y CHECK_POLICY
deben establecerse en ON.
CHECK_EXPIRATION Cuando se encuentra en ON (el valor
predeterminado), esta opcin especifica
que la directiva de caducidad de
contraseas de Windows Server 2003
debera aplicarse al inicio de sesin de SQL
Server. En servidores de Windows 2000,
esta opcin no tiene ningn efecto. Si esta
opcin se encuentra en ON, la opcin
CHECK_POLICY tambin debe estar en
ON o se producir un error en la
instruccin.
CHECK_POLICY Cuando se encuentra en ON (el valor
predeterminado), esta directiva especifica
que la directiva de complejidad de
contraseas de Windows Server 2003
debera aplicarse al inicio de sesin de SQL
Server. En servidores de Windows 2000,
esta opcin no tiene ningn efecto.

El ejemplo siguiente muestra una instruccin CREATE LOGIN que crea un inicio de
sesin de SQL que no est sujeto a la directiva de contraseas definida para el servidor:

CREATE LOGIN Toms


WITH PASSWORD = 'password',
DEFAULT_DATABASE = AdventureWorks,
CHECK_EXPIRATION = OFF,
CHECK_POLICY = OFF

Importante CHECK_EXPIRATION y CHECK_POLICY slo se aplican en Windows


Server 2003 y posteriores. Adems, un problema conocido en Windows Server 2003
podra evitar que se restablezca el recuento de la contrasea incorrecta una vez se haya
alcanzado el umbral de bloqueo. Esto podra producir un bloqueo inmediato en los
subsiguientes intentos fallidos de inicio de sesin. Puede restablecer manualmente el
recuento de la contrasea incorrecta con solo establecer CHECK_POLICY = OFF,
seguido por CHECK_POLICY = ON.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 415

Modificar inicios de Puede modificar un inicio de sesin viendo sus propiedades en el Explorador de objetos
sesin o mediante la ejecucin de la instruccin ALTER LOGIN. Un uso comn de la
instruccin ALTER LOGIN es desbloquear un inicio de sesin bloqueado por una
contrasea caducada. El ejemplo siguiente muestra cmo desbloquear una cuenta
bloqueada:

ALTER LOGIN Alicia WITH PASSWORD = 'NewPa$$w0rd' UNLOCK

Eliminar inicios de sesin Puede eliminar un inicio de sesin haciendo clic sobre l con el botn secundario en el
Explorador de objetos y haciendo clic a continuacin en Eliminar, o ejecutando la
instruccin DROP LOGIN como se muestra en el ejemplo siguiente:

DROP LOGIN Alicia

Para obtener ms informacin Para obtener ms informacin acerca de cmo


administrar inicios de sesin en Transact-SQL, consulte CREATE LOGIN (Transact-
SQL), ALTER LOGIN (Transact-SQL) y DROP LOGIN (Transact-SQL) en los
Libros en pantalla de SQL Server.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
416 Mdulo 4: Administracin de la seguridad

Qu son las funciones fijas de servidor?

Introduccin Las funciones proporcionan un medio de agrupar usuarios en una sola unidad a la que
se pueden aplicar permisos.

SQL Server proporciona funciones de servidor predefinidas para funciones


administrativas comunes, de manera que resulte sencillo otorgar una seleccin de
permisos administrativos a un usuario determinado. Las funciones fijas de servidor
proporcionan agrupaciones de privilegios administrativos en el nivel de servidor.
Se administran de forma independiente a las bases de datos de usuarios en el servidor.

Funciones fijas de En la tabla siguiente se describen las funciones fijas de servidor.


servidor
Funcin Descripcin
sysadmin Realizar cualquier actividad.
dbcreator Crear y modificar bases de datos.
diskadmin Administrar archivos de disco.
serveradmin Configurar opciones para todos los servidores.
securityadmin Administrar y auditar inicios de sesin del servidor.
processadmin Administrar procesos de SQL Server.
bulkadmin Ejecutar instrucciones BULK INSERT.
setupadmin Configurar servidores de rplica y servidores vinculados.

La funcin fija de Adems de las funciones fijas de servidor mostradas en la tabla anterior, cada instancia
servidor pblica de SQL Server contiene una funcin fija de servidor especial denominada pblica, de la
que todos los inicios de sesin son miembros. La funcin fija de servidor pblica recibe
el permiso VIEW ANY DATABASE.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 417

Asignar una cuenta de Puede usar las Propiedades de inicio de sesin de SQL Server en SQL Server
inicio de sesin a una Management Studio o el procedimiento almacenado del sistema
funcin fija de servidor sp_addsrvrolemember para agregar una cuenta de inicio de sesin como un miembro
de una funcin fija de servidor. Slo los miembros de funciones fijas de servidor pueden
ejecutar el procedimiento almacenado del sistema sp_addsrvrolemember.

Al agregar una cuenta de inicio de sesin a una funcin de servidor, la cuenta consigue
los permisos asociados a la funcin de servidor.

Para asignar cuentas de inicio de sesin a funciones fijas de servidor, tenga en cuenta los
puntos siguientes:

No puede agregar, modificar o eliminar funciones fijas de servidor.


Cualquier miembro de una funcin fija de servidor puede agregar otras cuentas de
inicio de sesin a esa funcin.
El procedimiento almacenado del sistema sp_addsrvrolemember no puede
ejecutarse dentro de una transaccin definida por el usuario.
Tambin puede usar el procedimiento almacenado del sistema
sp_dropsrvrolemember para eliminar un miembro de una funcin fija de
servidor.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
418 Mdulo 4: Administracin de la seguridad

Requisitos para la delegacin

Introduccin SQL Server y Windows se pueden configurar para permitir que una instancia de SQL
Server se conecte a otra instancia de SQL Server en el contexto de un usuario de
Windows autenticado. Esta tcnica se conoce como delegacin.

Por ejemplo, un procedimiento almacenado en una base de datos en Servidor1 podra


consultar una tabla en una base de datos en Servidor2. Cuando se usa la delegacin,
el procedimiento almacenado usa la identidad de seguridad del usuario que lo llam al
solicitar los datos desde Servidor2.

Requisitos para la Para usar la delegacin, todos los servidores a los que est conectando deben tener
delegacin instalado Windows 2000 o Windows Server 2003 con el soporte tcnico de Kerberos
habilitado; adems, debe estar usando el servicio de directorios de Active Directory.

Windows Server 2003 admite una delegacin ms concreta que las versiones anteriores
de Windows. Windows Server 2003 permite la concesin de derechos de delegacin a
determinadas combinaciones de servicios. Se dice que estas combinaciones son de
confianza para la delegacin restringida. Esta configuracin es la configuracin
preferida y ms segura en dominios que tienen la funcionalidad completa de Windows
Server 2003.

Configurar Active Debe establecer las opciones de cuenta siguientes en Active Directory para que la
Directory para la delegacin funcione:
delegacin
La cuenta es confidencial y no se puede delegar. No debe seleccionar esta opcin para el
usuario que solicita la delegacin.
La cuenta es de confianza para la delegacin. Debe seleccionar esta opcin para la cuenta
de servicio de SQL Server.
El equipo es de confianza para la delegacin. Debe seleccionar esta opcin para el equipo
que ejecuta SQL Server.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 419

Configurar SQL Server Para usar la delegacin de la cuenta de seguridad, SQL Server debe tener un Nombre
para la delegacin principal de servicio (SPN) asignado por el administrador de dominio de cuenta de
Windows Server 2003 a la cuenta de servicio de SQL Server y debe usar un Protocolo de
control de transmisin/Protocolo de Internet (TCP/IP). Si el servicio de SQL Server se
est ejecutando en la cuenta LocalSystem, el servicio SQL Server registra un SPN
automticamente al inicio del servicio y anula el registro cuando se cierra SQL Server.

Para obtener ms informacin Para obtener ms informacin sobre la delegacin,


consulte Configurar servidores vinculados para la delegacin en los Libros en pantalla
de SQL Server.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
420 Mdulo 4: Administracin de la seguridad

Qu son las credenciales?

Introduccin Una credencial es una representacin alternativa de un inicio de sesin que contiene la
informacin de autenticacin necesaria para conectarse a un recurso fuera de SQL
Server. La mayora de las credenciales estn compuestas por un inicio de sesin y una
contrasea de Windows. Las credenciales permiten a los usuarios que se conectan a
SQL Server mediante el modo de autenticacin de SQL Server conectarse a Windows
(u otros recursos) fuera de SQL Server. Por ejemplo, un usuario conectado a SQL
Server con un inicio de sesin de SQL podra ejecutar un procedimiento almacenado
que llama a un servicio web ASP.NET que est configurado para la autenticacin de
Windows. El procedimiento almacenado pasara al servicio web el nombre de cuenta y
la contrasea de Windows en la credencial asignada al inicio de sesin de SQL Server.

Crear una credencial Puede crear una credencial mediante el uso de SQL Server Management Studio o de la
instruccin CREATE CREDENTIAL de Transact-SQL. La sintaxis de la instruccin
CREATE CREDENTIAL puede verse en la siguiente muestra de cdigo.

CREATE CREDENTIAL credential_name WITH IDENTITY = 'identity_name'


[ , SECRET = 'secret' ]

Las clusulas y parmetros de la instruccin CREATE CREDENTIAL son como se


describen a continuacin:

credential_name. Especifica el nombre de la credencial que se est creando.


credential_name no puede comenzar con el signo almohadilla (#). Las credenciales del
sistema empiezan por ##.
identity_name. Especifica el nombre de la cuenta que se va a usar al conectarse fuera del
servidor.
secret. Especifica el secreto requerido para superar la autenticacin. Esta clusula es
opcional.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 421

El ejemplo siguiente crea la credencial llamada AlterEgo. La credencial contiene el


usuario de Windows Elena y la contrasea Pa$$w0rd.

CREATE CREDENTIAL AlterEgo WITH IDENTITY = 'ADVENTURE-WORKS\Elena',


SECRET = 'Pa$$w0rd'
GO

Para obtener ms informacin Para obtener ms informacin sobre las credenciales


y la delegacin, consulte Credenciales en los Libros en pantalla de SQL Server.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
422 Mdulo 4: Administracin de la seguridad

Permisos de mbito de servidor

Introduccin Los protegibles del mbito de servidor incluyen objetos como el mismo servidor,
los inicios de sesin y las bases de datos.

Permisos en el nivel de La tabla siguiente muestra algunos permisos de ejemplo en el mbito de servidor.
servidor Para obtener una lista completa de los permisos, consulte Permisos en los Libros
en pantalla de SQL Server.

Protegible Permiso Descripcin


Servidor CONNECT_SQL Conectarse al servidor.
CREATE LOGIN Crear un inicio de sesin.
ALTER ANY LOGIN Modificar cualquier inicio de
sesin en el mbito de
servidor.
CONTROLSERVER Control administrativo de
todo el sistema.
Login ALTER Modificar el inicio de sesin.
IMPERSONATE Suplantar el inicio de sesin.
Base de datos CREATE TABLE Crear una tabla en la base de
datos.
ALTER ANY USER Modificar cualquier usuario
de la base de datos.
CONTROL Control completo de la base
de datos.

Conceder los permisos a Para conceder permisos a protegibles en el mbito de servidor:


protegibles de mbito de
servidor 1. Use el Explorador de objetos en SQL Server Management Studio para ver las
propiedades del inicio de sesin al que desea conceder los permisos.
2. En la ficha Elementos que pueden protegerse, agregue los protegibles requeridos
y establezca los permisos necesarios.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 423

Tambin puede otorgar permisos del mbito de servidor mediante el uso de la


instruccin GRANT de Transact-SQL con la sintaxis siguiente:

GRANT { securable_permission [ ,...n ] }


[ON securable_type :: securable_name]
TO login [ ,...n ]
[ WITH GRANT OPTION ]
[ AS { group | role } ]

Las clusulas y parmetros de la instruccin GRANT para protegibles del mbito de


servidor se describen en la tabla siguiente.

Clusula/Parmetro Descripcin
securable_permission El permiso especfico que se concede al
protegible.
securable_type El tipo de protegible del mbito de servidor
al que se aplica el permiso. Esta clusula se
omite si el permiso se aplica al propio
servidor.
securable_name El nombre del protegible del mbito de
servidor.
Inicio de sesin Un inicio de sesin al cual se otorga el
permiso.
WITH GRANT OPTION Una opcin que permite que el cesionario
conceda el mismo permiso a otros.
AS group | role Una especificacin de una entidad de
seguridad con los permisos necesarios para
conceder este permiso del mbito de
servidor. Se requiere en escenarios en los
que el otorgante no tiene todos los
permisos necesarios para conceder el
permiso, pero es miembro de una funcin o
grupo que s los tiene.

Ejemplo El ejemplo siguiente muestra cmo otorgar el permiso de servidor ALTER ANY
DATABASE y el permiso ALTER a un inicio de sesin denominado AWWebApp para un
inicio de sesin denominado ADVENTUREWORKS\Elena:

USE master
GRANT ALTER ANY DATABASE
TO [ADVENTUREWORKS\Elena]

GRANT ALTER
ON LOGIN :: AWWebApp
TO [ADVENTUREWORKS\Elena]

Nota Para los permisos de protegibles del mbito de servidor, la instruccin GRANT
debe ejecutarse en la base de datos master.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
424 Mdulo 4: Administracin de la seguridad

Ejercicio: Administrar inicios de sesin

Objetivos El objetivo de este ejercicio es permitir que los alumnos creen un inicio de sesin de
Windows y asignar permisos del mbito de servidor.

Preparacin Asegrese de que la mquina virtual 5406A-MIA-SQL-04 se est ejecutando y de que ha


iniciado sesin como Alumno.

Si no se ha iniciado ninguna mquina virtual, siga estos pasos:

1. Cierre todas las dems mquinas virtuales que se estn ejecutando.


2. Inicie la mquina virtual.
3. En el cuadro de dilogo Iniciar sesin en Windows, realice el procedimiento de
inicio de sesin usando el nombre de usuario Alumno y la contrasea Pa$$w0rd.

Confirmar el modo de  Realice el procedimiento siguiente para confirmar el modo de autenticacin de


autenticacin de SQL SQL Server.
Server 1. Haga clic en Inicio, seleccione Todos los programas, Microsoft SQL Server 2005
y, a continuacin, haga clic en SQL Server Management Studio.
2. En el cuadro de dilogo Conectar al servidor, especifique los detalles mostrados
en la tabla siguiente y haga clic en Conectar.
Elemento de interfaz de usuario Valor
Tipo de servidor Motor de base de datos
Nombre del servidor MIAMI
Autenticacin Autenticacin de Windows

3. Si el Explorador de objetos no est visible, haga clic en Explorador de objetos en


el men Ver.
4. En el Explorador de objetos, haga clic con el botn secundario en el servidor
MIAMI y, a continuacin, haga clic en Propiedades.
5. Haga clic en Seguridad.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 425

6. En la seccin de autenticacin de servidor, compruebe que est seleccionado el


Modo de autenticacin de Windows.
Si no se ha seleccionado el Modo de autenticacin de Windows, siga los
pasos del 7 al 14 para cambiar el modo de autenticacin.
Si se ha seleccionado el Modo de autenticacin de Windows, haga clic en
Cancelar para cerrar el cuadro de dilogo.
7. En la seccin de autenticacin de servidor, haga clic en Modo de autenticacin de
Windows.
8. Elija Aceptar para ejecutar los cambios.
9. Elija Aceptar si se informa de que debe reiniciar el servidor.
10. En el Explorador de objetos, haga clic con el botn secundario en el servidor
MIAMI y, a continuacin, haga clic en Reiniciar.
11. Haga clic en S cuando se le pida la confirmacin.
12. Elija S cuando se le informe de que el servicio Agente SQL Server tambin se
detendr.
13. En el panel de resumen, haga clic con el botn secundario en Agente SQL Server y,
a continuacin, haga clic en Iniciar.
14. Haga clic en S cuando se le pida la confirmacin.

Crear un inicio de sesin  Realice el procedimiento siguiente para crear un inicio de sesin.
1. En el Explorador de objetos, expanda MIAMI y, a continuacin, expanda
Seguridad.
2. Haga clic con el botn secundario en Inicios de sesin y, a continuacin, haga clic
en Nuevo inicio de sesin.
3. En el cuadro de dilogo Inicio de sesin Nuevo, en el cuadro Nombre de inicio
de sesin, escriba MIAMI\Carlos.
4. Haga clic en Aceptar para crear el inicio de sesin.

Asignar permisos para el  Realice el procedimiento siguiente para asignar permisos del mbito de servidor.
mbito de servidor 1. En el Explorador de objetos, haga clic con el botn secundario en MIAMI y,
a continuacin, haga clic en Propiedades.
2. En el cuadro de dilogo Propiedades del servidor: MIAMI, haga clic en Permisos
en el panel Seleccionar una pgina.
3. Si MIAMI\Carlos no aparece an en la lista Inicios de sesin o funciones:
a. Haga clic en Agregar para agregar un inicio de sesin.
b. En el cuadro de dilogo Seleccionar inicios de sesin o funciones, haga clic
en Examinar.
c. En el cuadro de dilogo Buscar objetos, active la casilla de verificacin que
hay al lado de MIAMI\Carlos y, a continuacin, haga clic en Aceptar.
d. Haga clic en Aceptar para cerrar el cuadro de dilogo Seleccionar usuarios
o funciones.
4. Haga clic en MIAMI\Carlos en la lista Inicios de sesin o funciones.
5. Seleccione la casilla Conceder a la derecha de Alter any database en la lista de
Permisos explcitos para MIAMI\Carlos.
6. Haga clic en Aceptar para cerrar el cuadro de dilogo.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
426 Mdulo 4: Administracin de la seguridad

Leccin 3: Proteger el mbito de base de datos

Objetivos de la leccin Despus de completar esta leccin, los alumnos podrn:


Describir cmo administrar usuarios.
Describir a los usuarios especiales en una base de datos de SQL Server.
Describir funciones de base de datos y su propsito.
Definir funciones de aplicacin y su uso.
Describir permisos del mbito de base de datos.
Describir permisos del mbito de esquema.

Introduccin Esta leccin examina la seguridad en el nivel de base de datos en SQL Server 2005.
Es importante entender la seguridad en el nivel de base de datos para controlar
quin puede tener acceso a las bases de datos de una instancia de SQL Server y qu
acciones pueden realizar los usuarios de una base de datos.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 427

Cmo administrar usuarios

Introduccin Los inicios de sesin se usan para permitir el acceso al sistema SQL Server. Sin embargo,
el acceso a cada una de las bases de datos se logra creando usuarios en esas bases de
datos. Puede crear usuarios mediante el uso del Explorador de objetos en SQL Server
Management Studio o la ejecucin de la instruccin CREATE USER en la base de datos
adecuada.

Asignar usuarios a inicios En la mayora de los casos, los usuarios de la base de datos estn asignados a inicios de
de sesin sesin. Por ejemplo, podra crear una usuaria llamada Elena en la base de datos
AdventureWorks para hacer que esa base de datos sea accesible para un inicio de
sesin denominado ADVENTUREWORKS\Elena. De forma predeterminada, todos los
inicios de sesin suscritos a la funcin fija de servidor sysadmin estn asignados al
usuario dbo en todas las bases de datos.

Cuando se ha creado un inicio de sesin para un grupo de Windows, puede crear un


usuario para que el inicio de sesin permita que todos los usuarios de Windows del grupo
tengan acceso a la base de datos. Adems, puede crear un usuario para un miembro
individual del grupo Windows incluso si no existe ningn inicio de sesin individual para
ese usuario. Por ejemplo, si un grupo de Windows local denominado
DBSERVER1\SalesUsers contiene los usuarios de dominio
ADVENTUREWORKS\Laura y ADVENTUREWORKS\Marta, puede crear un inicio de
sesin nico para el grupo DBSERVER1\SalesUsers para dar acceso a SQL Server a
ambos usuarios. Por ejemplo, podra crear un usuario denominado SalesUsers en la base
de datos AdventureWorks que se asigne al inicio de sesin denominado
DBSERVER1\SalesUsers para permitir que ambos usuarios tengan acceso a la base de
datos. Sin embargo, si deseara conceder los permisos concretos a Laura y no a Marta,
puede crear un usuario denominado Laura en la base de datos AdventureWorks para
ADVENTUREWORKS\Laura, aunque no hay ningn inicio de sesin individual para
ADVENTUREWORKS\Laura. Cuando Marta tiene acceso a la base de datos
AdventureWorks, lo hace usando la identidad SalesUsers, pero cuando Laura tiene
acceso a la base de datos, lo hace con la identidad Laura.

Nota Algunos usuarios integrados de la base de datos, como sys e


INFORMATION_SCHEMA, no estn asignados a inicios de sesin.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
428 Mdulo 4: Administracin de la seguridad

Ejemplo de creacin de Puede crear un usuario en SQL Server Management Studio mediante el uso del
un usuario Explorador de objetos o la instruccin CREATE USER de Transact-SQL, como se
muestra en los ejemplos siguientes:

-- Crear un usuario para un inicio de sesin con el mismo nombre


CREATE USER Bernardo

-- Crear un usuario con un nombre diferente a partir del inicio de sesin asignado
CREATE USER Juan FOR LOGIN [ADVENTUREWORKS\Juan]

-- Crear un usuario con un esquema predeterminado explcitamente definido CREATE


USER SalesUser FOR LOGIN [DBSERVER1\SalesUsers]
WITH DEFAULT_SCHEMA = 'Sales'

Para obtener ms informacin Para obtener ms informacin acerca de la


instruccin CREATE USER, consulte CREATE USER (Transact-SQL) en los Libros en
pantalla de SQL Server.

Modificar un usuario Puede modificar un usuario cambiando sus propiedades en el Explorador de objetos o
mediante la ejecucin de la instruccin ALTER USER.

Quitar un usuario Puede quitar un usuario eliminndolo en SQL Server Management Studio o ejecutando
la instruccin DROP USER. Debe transferir la propiedad de los objetos de un usuario
antes de anularlo.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 429

Usuarios especiales

Introduccin Los usuarios especiales de una base de datos son usuarios predefinidos que tienen
funciones especiales como la de permitir el acceso administrativo o de invitado.

dbo El inicio de sesin sa y los miembros de la funcin sysadmin estn asignados a una
cuenta de usuario especial, que se encuentra dentro de todas las bases de datos,
denominada dbo. Cualquier objeto creado por un administrador del sistema pertenece
automticamente a dbo. El usuario dbo es una cuenta predeterminada y no puede
eliminarse.

invitado La cuenta de usuario guest (invitado) permite inicios de sesin sin cuentas de usuario
para tener acceso a una base de datos. Las cuentas de inicio de sesin asumen la
identidad del usuario guest cuando se cumplen las condiciones siguientes:

La cuenta de inicio de sesin tiene acceso a SQL Server pero no tiene acceso a la
base de datos a travs de su propia cuenta de usuario.
Se ha habilitado la cuenta de invitado.

La cuenta de invitado puede habilitarse mediante la instruccin GRANT para conceder


el permiso CONNECT al usuario invitado. El cdigo siguiente muestra cmo habilitar
la cuenta de invitado en la base de datos AdventureWorks:

USE AdventureWorks
GRANT CONNECT TO guest;
GO

Los permisos se pueden aplicar al usuario invitado como si el usuario invitado fuera
cualquier otra cuenta de usuario. Puede habilitar al usuario invitado en cualquier base
de datos excepto la master y las bases de datos tempdb.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
430 Mdulo 4: Administracin de la seguridad

Qu son las funciones de base de datos?

Introduccin SQL Server proporciona dos tipos de funciones en el nivel de base de datos: funciones
fijas de base de datos y funciones de base de datos definidas por el usuario.

Funciones fijas de base Las funciones fijas de base de datos proporcionan a las agrupaciones privilegios
de datos administrativos en el nivel de base de datos a las que se han concedido permisos para
las tareas comunes de la base de datos. Las funciones fijas de base de datos de una base
de datos se describen en la tabla siguiente.

Funcin Descripcin
db_accessadmin Agregar o quitar usuarios, grupos y
funciones de la base de datos.
db_backupoperator Realizar una copia de seguridad de la base
de datos.
db_datareader Leer datos de cualquier tabla.
db_datawriter Agregar, cambiar o eliminar datos de
cualquier tabla.
db_ddladmin Agregar, modificar o eliminar objetos de la
base de datos.
db_denydatareader No poder leer los datos de ninguna tabla.
db_denydatawriter No poder cambiar los datos de ninguna
tabla.
db_owner Realizar cualquier actividad de funcin de
base de datos.
db_securityadmin Cambiar las funciones de la base de datos,
cambiar las funciones de aplicacin, crear
esquemas.
public Mantener los permisos predeterminados.

Para obtener ms informacin Para obtener ms informacin sobre las funciones


fijas de base de datos, consulte Funciones en el nivel de base de datos en los Libros en
pantalla de SQL Server.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 431

La funcin public es una funcin fija de base de datos especial a la que pertenece cada
usuario de la base de datos y no se puede eliminar. La funcin public:

Mantiene todos los permisos predeterminados para los usuarios de una base de
datos.
No puede tener usuarios, grupos o funciones asignados porque los usuarios,
grupos y funciones ya le pertenecen de forma predeterminada.
Est definida en cada base de datos, incluidas las bases de datos master,
msdb, tempdb, model y todas las bases de datos de usuario.
No se puede eliminar.

Sin los permisos adecuados, un usuario puede tener acceso a una base de datos de SQL
Server pero slo podr realizar tareas limitadas. Sin permisos, un usuario posee todos
los permisos que se conceden a la funcin public y puede realizar las acciones
siguientes:

Ejecutar las instrucciones que no requieren permisos, como la instruccin PRINT.


Ver informacin de la tabla del sistema y ejecutar ciertos procedimientos
almacenados del sistema para la base de datos master y las bases de datos de
usuario a las que tenga acceso.
Obtener acceso a cualquier base de datos con una cuenta de invitado habilitada.

Sugerencia Dado que cada usuario es miembro de la funcin public, generalmente


debera revocar todos los permisos concedidos al grupo pblico para garantizar que los
usuarios no hereden los permisos que no deberan tener.

Funciones de base de Cuando ninguna de las funciones fijas de base de datos se adeca a sus propsitos,
datos definidas por el puede crear sus propias funciones de base de datos para agrupar a varios usuarios que
usuario requieran los mismos permisos en una base de datos. La creacin de una funcin de
base de datos definida por el usuario le permite crear un grupo de usuarios con un
conjunto de permisos comunes. Puede crear una funcin de base de datos definida por
el usuario mediante el Explorador de objetos en SQL Server Management Studio o por
medio de la instruccin CREATE ROLE de Transact-SQL, como se muestra en los
ejemplos siguientes:

USE AdventureWorks
CREATE ROLE auditors

Puede modificar o eliminar una funcin de base de datos definida por el usuario en el
Explorador de objetos o mediante el uso de las instrucciones ALTER ROLE y DROP
ROLE de Transact-SQL.

Para obtener ms informacin Para obtener ms informacin acerca de cmo


administrar funciones de base de datos definidas por el usuario consulte CREATE
ROLE (Transact-SQL), ALTER ROLE (Transact-SQL) y DROP ROLE (Transact-
SQL) en los Libros en pantalla de SQL Server.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
432 Mdulo 4: Administracin de la seguridad

Asignar una entidad de Despus de crear una funcin, use el Explorador de objetos en SQL Server Management
seguridad a una funcin Studio o el procedimiento almacenado del sistema sp_addrolemember para agregar
de base de datos usuarios o funciones como miembros de la funcin. Slo los miembros de las funciones
fijas de servidor sysadmin, db_securityadmin y db_owner o el propietario de la
funcin pueden ejecutar sp_addrolemember para agregar un miembro a una funcin
de base de datos definida por el usuario.

Considere los datos siguientes cuando asigne cuentas de seguridad a una funcin de
base de datos definida por el usuario:

Cuando agrega una cuenta de seguridad a una funcin, cualquier permiso


aplicado a la funcin se aplicar al nuevo miembro.
Cuando agrega una funcin de base de datos como un miembro de otra funcin
de base de datos, no es posible crear funciones recursivas. Por consiguiente,
SalesManager no podra agregarse como miembro de SeniorEmployee si
SeniorEmployee ya fuera miembro de SalesManager.

Para quitar una entidad de seguridad de una funcin de base de datos, use el
Explorador de objetos o el procedimiento almacenado del sistema
sp_droprolemember.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 433

Qu son las funciones de aplicacin?

Introduccin Las funciones de aplicacin permiten cumplir con la seguridad para una aplicacin
determinada. Proporcionan un contexto de seguridad alternativo para que un usuario
tenga acceso a una base de datos. El usuario ejecuta una aplicacin asociada a una
funcin de aplicacin y el contexto de seguridad de la funcin de aplicacin se usa en
lugar del usuario individual.

Funciones de aplicacin Las funciones de aplicacin difieren de otras funciones. A continuacin se muestra una
frente a otras funciones lista de las diferencias fundamentales entre las funciones de aplicacin y otras
de base de datos funciones:

Las funciones de aplicacin no tienen miembros: se activan para los usuarios


cuando los usuarios ejecutan la aplicacin.
Las funciones de aplicacin permiten que los usuarios dispongan de permisos
especiales cuando usan la aplicacin y evitan la necesidad de conceder permisos
directamente a los usuarios.
Las funciones de aplicacin exigen activar una contrasea.

Al activar una funcin de aplicacin, los usuarios:

Pierden todos los permisos existentes en la base de datos actual para sus cuentas
de usuario y cualquier funcin a la que pertenezcan, salvo los permisos que se
aplican a la funcin public.
Heredan todos los permisos concedidos a la funcin de aplicacin en la base de
datos actual.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
434 Mdulo 4: Administracin de la seguridad

Crear una funcin de Use SQL Server Management Studio o el comando CREATE APPLICATION ROLE
aplicacin (Transact-SQL) para crear una nueva funcin de aplicacin. Slo los miembros de las
funciones db_owner, db_securityadmin y sysadmin pueden crear funciones de
aplicacin; la instruccin requiere el permiso ALTER ANY APPLICATION ROLE en la
base de datos.

Cuando se crea una funcin de aplicacin, debe especificarse una contrasea. Esta
contrasea se usa a continuacin para activar la funcin de aplicacin.

El ejemplo siguiente muestra cmo crear una funcin de aplicacin denominada


weekly_receipts con una contrasea compleja:

CREATE APPLICATION ROLE weekly_receipts


WITH PASSWORD = '987Gbv876sPYY5m23'
GO

Activar una funcin de El procedimiento almacenado sp_setapprole se usa para activar una funcin de
aplicacin aplicacin. sp_setapprole puede ejecutarse slo mediante instrucciones Transact-SQL y
no puede ejecutarse dentro de otro procedimiento almacenado o dentro de una
transaccin definida por el usuario.

El ejemplo siguiente muestra el procedimiento sp_setapprole utilizado para activar la


funcin de aplicacin weekly_receipts creada en el ejemplo anterior:

EXEC sp_setapprole 'weekly_receipts', '987Gbv876sPYY5m23'


GO

Para obtener ms informacin Para obtener ms informacin sobre el uso de las


funciones de aplicacin, consulte Funciones de aplicacin en los Libros en pantalla de
SQL Server.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 435

Permisos de mbito de base de datos

Introduccin Los permisos de base de datos son permisos para que una entidad de seguridad pueda
ejecutar ciertas tareas dentro de la base de datos. Por ejemplo, el permiso ALTER ANY
USER permite que una entidad de seguridad cree, modifique y quite usuarios de una
base de datos.

Tipos de permisos del Los permisos del mbito de base de datos son permisos que pueden aplicarse a
mbito de base de datos protegibles en el mbito de base de datos, como usuarios, esquemas, funciones,
ensamblados y objetos de service broker. La tabla siguiente muestra algunos de los
permisos del mbito de base de datos.

Protegible Permiso Descripcin


Usuario ALTER Modificar el usuario especificado.
Esquema SELECT Seleccionar filas de cualquier objeto
del esquema.
ALTER Modificar cualquier objeto del
esquema.
TAKE OWNERSHIP Hacerse con la propiedad del
esquema.

Conceder permisos de Puede conceder permisos a una base de datos mediante el uso del Explorador de
base de datos objetos en SQL Server Management Studio o por medio de la instruccin GRANT de
Transact-SQL con la sintaxis siguiente:

GRANT { database_permission [ ,...n ] }


TO security_account [ ,...n ]
[ WITH GRANT OPTION ]
[ AS { group | role } ]
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
436 Mdulo 4: Administracin de la seguridad

Las clusulas y parmetros de la instruccin GRANT en el nivel de base de datos se


describen en la tabla siguiente.

Clusula/Parmetro Descripcin
database_permission El permiso especfico que se concede a la base de datos.
security_account Una entidad de seguridad en el nivel de base de datos a
la cual se otorga el permiso.
WITH GRANT OPTION Una opcin que permite que el cesionario conceda el
mismo permiso a otros.
AS group | role Una especificacin de una entidad de seguridad con los
permisos necesarios para conceder este permiso en el
nivel de base de datos. Se requiere en escenarios en los
que el otorgante no tiene todos los permisos necesarios
para conceder el permiso, pero es miembro de una
funcin o grupo que s lo es.

El ejemplo siguiente muestra cmo otorgar el permiso ALTER ANY USER a una entidad
de seguridad:

USE AdventureWorks
GRANT ALTER ANY USER
TO HRManager

Nota Para los permisos de base de datos, la instruccin GRANT debe ejecutarse en la
base de datos a la que se aplica el permiso.

Concesin de permisos Puede conceder permisos a algunos de los protegibles de la base de datos mediante el
de protegible del mbito uso del Explorador de objetos en SQL Server Management Studio o por medio de la
de base de datos instruccin GRANT de Transact-SQL con la sintaxis siguiente:

GRANT {securable_permission [ ,...n ] }


ON securable_type : : securable_name
TO security_account [ ,...n ]
[ WITH GRANT OPTION ]
[ AS { group | role } ]

Las clusulas y parmetros de la instruccin GRANT para protegibles del mbito de


servidor se describen en la tabla siguiente.

Clusula/Parmetro Descripcin
securable_permission El permiso especfico que se concede al protegible.
securable_type El tipo de protegible del mbito de base de datos al
que se aplica el permiso.
securable_name El nombre del protegible del mbito de base de datos.
security_account Una entidad de seguridad en el nivel de base de datos
a la cual se otorga el permiso.
WITH GRANT OPTION Una opcin que permite que el cesionario conceda el
mismo permiso a otros.
AS group| role Una especificacin de una entidad de seguridad con
los permisos necesarios para conceder este permiso en
el nivel de base de datos. Se requiere en escenarios en
los que el otorgante no tiene todos los permisos
necesarios para conceder el permiso, pero es miembro
de una funcin o grupo que s lo es.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 437

El ejemplo siguiente muestra cmo otorgar el permiso SELECT en un esquema llamado


sales:

USE AdventureWorks
GRANT SELECT
ON SCHEMA :: sales
TO SalesUser

Nota Para los permisos de mbito de base de datos, la instruccin GRANT debe
ejecutarse en la base de datos que contiene el protegible al que se aplica el permiso.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
438 Mdulo 4: Administracin de la seguridad

Permisos de mbito de esquema

Introduccin Los protegibles del mbito de esquema incluyen objetos como tablas, vistas,
procedimientos almacenados y tipos.

permisos de mbito de La tabla siguiente muestra algunos de los permisos aplicables en el mbito de esquema.
esquema
Protegible Permiso Descripcin
Esquema SELECT Seleccionar filas de cualquier
objeto del esquema.
ALTER Modificar cualquier objeto
del esquema.
TAKE OWNERSHIP Hacerse con la propiedad
del esquema.
Tabla SELECT Seleccionar filas de la tabla.
ALTER Modificar la tabla.
CONTROL Control completo de la tabla.

Para obtener ms informacin Para obtener ms informacin sobre permisos de


mbito de esquema, consulte Permisos en los Libros en pantalla de SQL Server.

Concesin de permisos Puede conceder permisos a algunos de los protegibles de la base de datos mediante el
de protegible del mbito uso del Explorador de objetos en SQL Server Management Studio o por medio de la
de esquema instruccin GRANT de Transact-SQL. La sintaxis de la instruccin GRANT es diferente
para los tipos definidos por el usuario que para otros protegibles del mbito de
esquema. La sintaxis usada para conceder permisos en un tipo definido por el usuario
se muestra en el ejemplo siguiente, que muestra cmo conceder el permiso EXECUTE
en un tipo llamado addressType:

USE AdventureWorks
GRANT EXECUTE
ON TYPE :: Person.addressType
TO SalesUser
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 439

Para otros protegibles de mbito de esquema (como tablas, vistas y procedimientos


almacenados), use la sintaxis mostrada en el ejemplo siguiente, que muestra cmo
conceder el permiso SELECT en una tabla llamada orders en el esquema sales:

USE AdventureWorks
GRANT SELECT
ON sales.orders
TO SalesUser
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
440 Mdulo 4: Administracin de la seguridad

Ejercicio: Administrar usuarios

Objetivos El objetivo de este ejercicio es permitir que los alumnos creen un usuario de base de
datos y asignen permisos del mbito de base de datos y de esquema.

Preparacin Asegrese de que la mquina virtual 5406A-MIA-SQL-04 se est ejecutando y de que ha


iniciado sesin como Alumno.

Si no se ha iniciado ninguna mquina virtual, siga estos pasos:

1. Cierre todas las dems mquinas virtuales que se estn ejecutando.


2. Inicie la mquina virtual.
3. En el cuadro de dilogo Iniciar sesin en Windows, realice el procedimiento de
inicio de sesin usando el nombre de usuario Alumno y la contrasea Pa$$w0rd.

Ver los usuarios  Realice el procedimiento siguiente para ver los usuarios existentes.
existentes 1. Haga clic en Inicio, seleccione Todos los programas, Microsoft SQL Server 2005
y, a continuacin, haga clic en SQL Server Management Studio.
2. En el cuadro de dilogo Conectar al servidor, especifique los detalles mostrados
en la tabla siguiente y haga clic en Conectar.
Elemento de interfaz de usuario Valor
Tipo de servidor Motor de base de datos
Nombre del servidor MIAMI
Autenticacin Autenticacin de Windows

3. En el Explorador de objetos, expanda Bases de datos, AdventureWorks,


Seguridad, y Usuarios.

Crear un usuario  Realice el procedimiento siguiente para crear un usuario.


1. Haga clic con el botn secundario en Usuarios y, a continuacin, haga clic en
Nuevo usuario.
2. En el cuadro de dilogo Usuario de la base de datos Nuevo en el cuadro de
texto Nombre de usuario escriba Carlos.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 441

3. Haga clic en el botn de puntos suspensivos a la derecha del cuadro de texto


Nombre de inicio de sesin.
4. En el cuadro de dilogo Seleccionar inicio de sesin haga clic en Examinar.
5. En el cuadro de dilogo Buscar objetos, active la casilla de verificacin que hay al
lado de MIAMI\Carlos y, a continuacin, haga clic en Aceptar.
6. Haga clic en Aceptar para cerrar el cuadro de dilogo Seleccionar inicio de sesin.
7. Haga clic en Aceptar para crear el usuario.

Asignar permisos para el  Realice el procedimiento siguiente para asignar permisos del mbito de base de
mbito de base de datos datos.
1. En el Explorador de objetos, haga clic con el botn secundario en
AdventureWorks y, a continuacin, haga clic en Propiedades.
2. En el cuadro de dilogo Propiedades de la base de datos AdventureWorks,
haga clic en Permisos en el panel Seleccionar una pgina.
3. Si Carlos no aparece an en la lista Usuarios o funciones:
a. Haga clic en Agregar para agregar un usuario.
b. En el cuadro de dilogo Seleccionar usuarios o funciones, haga clic en
Examinar.
c. En el cuadro de dilogo Buscar objetos, active la casilla de verificacin que
hay al lado de Carlos y, a continuacin, haga clic en Aceptar.
d. Haga clic en Aceptar para cerrar el cuadro de dilogo Seleccionar usuarios
o funciones.
4. Active las casillas de verificacin Conceder para Crear tabla, Crear vista y
Seleccionar en la lista Permisos explcitos para Carlos.
5. Haga clic en Aceptar para cerrar el cuadro de dilogo.

Asignar permisos para el  Realice el procedimiento siguiente para asignar permisos del mbito de esquema.
mbito de esquema 1. En el Explorador de objetos, expanda Esquemas en la carpeta Seguridad para la
base de datos AdventureWorks.
2. Haga clic con el botn secundario en HumanResources y, a continuacin, haga
clic en Propiedades.
3. En el cuadro de dilogo Propiedades de esquemas HumanResources, haga clic
en Permisos en la lista Seleccionar una pgina.
4. Si Carlos no aparece an en la lista Usuarios o funciones:
a. Haga clic en Agregar para agregar un usuario.
b. En el cuadro de dilogo Seleccionar usuarios o funciones, haga clic en
Examinar.
c. En el cuadro de dilogo Buscar objetos, active la casilla de verificacin que
hay al lado de Carlos y, a continuacin, haga clic en Aceptar.
d. Haga clic en Aceptar para cerrar el cuadro de dilogo Seleccionar usuarios
o funciones.
5. Active las casillas de verificacin Denegar para Modificar, Eliminar y Seleccionar
en la lista Permisos explcitos para Carlos.

6. Haga clic en Aceptar para cerrar el cuadro de dilogo.


USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
442 Mdulo 4: Administracin de la seguridad

Leccin 4: Administrar claves y certificados en SQL Server

Objetivos de la leccin Despus de completar esta leccin, los alumnos podrn:


Describir claves y cmo crearlas en SQL Server.
Describir certificados.
Describir la arquitectura de criptografa de SQL Server.
Describir cundo usar claves y certificados.
Administrar certificados.

Introduccin El motor de base de datos de SQL Server 2005 admite el uso de claves criptogrficas y
certificados digitales para la firma de cdigo y la funcionalidad criptogrfica. Puede
crear, exportar e importar certificados X.509 en SQL Server y usarlos para implementar
las soluciones de seguridad basadas en la infraestructura de claves pblicas (PKI).

En esta leccin obtendr ms informacin acerca de cmo crear y administrar claves y


certificados en SQL Server 2005.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 443

Qu son las claves?

Introduccin Una clave es un valor que se puede aplicar a una funcin criptogrfica para cifrar o
descifrar un valor de datos seguro. El algoritmo criptogrfico que se usa para crear la
clave y la longitud de la clave determinan su complejidad. Las claves son la base
fundamental para toda la criptografa y se pueden implementar en dos formas: simtrica
y asimtrica.

Claves simtricas Una clave simtrica es un valor que se usa tanto para cifrar como para descifrar datos.
Cuando se usa una clave simtrica, deben compartirla tanto la persona o sistema que
cifra los datos como la persona o sistema que los descifra. SQL Server admite claves
simtricas para la encriptacin de datos.

Puede crear una clave simtrica en SQL Server mediante la ejecucin de la instruccin
CREATE SYMMETRIC KEY, como se muestra en el ejemplo de cdigo siguiente:

CREATE SYMMETRIC KEY SymKey


WITH ALGORITHM = AES_256
ENCRYPTION BY PASSWORD = 'j7%ga5c$b+hdb05'

Tenga en cuenta que debe cifrar la propia clave simtrica para mantenerla en secreto.
En el ejemplo anterior, se usa una contrasea para cifrar la clave simtrica. Las opciones
alternativas para cifrar una clave simtrica son usar un certificado, una clave asimtrica
u otra clave simtrica.

Para obtener ms informacin Para obtener ms informacin acerca de la creacin


de claves simtricas en SQL Server, consulte CREATE SYMMETRIC KEY (Transact-
SQL) en los Libros en pantalla de SQL Server.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
444 Mdulo 4: Administracin de la seguridad

Claves asimtricas Las claves asimtricas estn compuestas de un par de valores que pueden usarse en una
funcin aritmtica unidireccional de manera que los datos puedan cifrarse con un valor
y descifrarse con el otro. Los pares de claves asimtricas estn compuestos de una clave
pblica, que puede compartirse pblicamente, y una privada, que el propietario de la
clave debe mantener en secreto. Los datos cifrados con la clave pblica slo pueden
descifrarse con la clave privada. Adems, la clave pblica puede usarse para comprobar
que una parte de los datos ha sido cifrada por la clave privada (aunque no puede usarse
para descifrar los datos). Este enfoque se usa para crear una firma digital que puede
usarse para autenticar el origen de los datos.

Puede crear claves asimtricas en SQL Server mediante la ejecucin de la instruccin


CREATE ASYMMETRIC KEY, como se muestra en el ejemplo siguiente:

CREATE ASYMMETRIC KEY AsymKey


WITH ALGORITHM = RSA_2048
ENCRYPTION BY PASSWORD = 'bmsA$dk7i82bv55'

Tenga en cuenta que la clave privada de una clave asimtrica se cifra con una
contrasea. Si se omite la clusula ENCRYPTION BY PASSWORD, SQL Server cifra la
clave privada con la clave de base de datos para la base de datos en la que se crea la
clave. Las claves de base de datos se analizan ms adelante en este mdulo.

Para obtener ms informacin Para obtener ms informacin acerca de la creacin de


claves asimtricas en SQL Server, consulte CREATE ASYMMETRIC KEY (Transact-SQL)
en los Libros en pantalla de SQL Server.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 445

Qu son los certificados?

Introduccin Los certificados son instrucciones firmadas digitalmente que asocian una clave pblica
a la identidad de la persona o sistema que posee la clave privada correspondiente. Una
entidad emisora de certificados de confianza puede emitir los certificados y usarlos para
autenticar un gran nmero de usuarios sin necesidad de mantener una contrasea para
cada usuario.

Contenido de un Un certificado suele contener la siguiente informacin:


certificado
La clave pblica del sujeto (la persona o sistema al que se emiti el certificado).
La informacin identificativa del sujeto, como el nombre y la direccin de correo
electrnico.
El perodo de validez. sta es el tiempo durante el que el certificado se considera
vlido.
Informacin identificadora y firma digital del emisor.

Certificados en SQL SQL Server 2005 admite certificados para la autenticacin, autorizacin y criptografa;
Server tambin proporciona la funcionalidad para crear, exportar e importar certificados, como
se muestra en el ejemplo de cdigo siguiente:

-- crear un nuevo certificado


CREATE CERTIFICATE AWCustRelationsCert
ENCRYPTION BY PASSWORD = 'pGFD4bb925DGvbd2439587y'
WITH SUBJECT = 'Adventure Works Customer Relations',
EXPIRY_DATE = '31/10/2009'

-- Exportar el certificado
BACKUP CERTIFICATE AWCustRelationsCert
TO FILE = 'c:\certs\AWCustRelationsCert.cer'

-- Importar un certificado
CREATE CERTIFICATE SupplierCert
FROM FILE = 'c:\certs\SupplierCert.cer'

Para obtener ms informacin Para obtener ms informacin acerca de cmo


administrar certificados en SQL Server, consulte CREATE CERTIFICATE (Transact-SQL)
y BACKUP CERTIFICATE (Transact-SQL) en los Libros en pantalla de SQL Server.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
446 Mdulo 4: Administracin de la seguridad

Arquitectura de criptografa de SQL Server

Introduccin SQL Server 2005 usa una jerarqua de claves y certificados para implementar la
funcionalidad criptogrfica. Cada nivel de la jerarqua se usa para proteger los
elementos del nivel inmediatamente inferior.

Clave principal de La Clave principal de servicio es una clave Triple DES en la base de la jerarqua de
servicio cifrado de SQL Server 2005. Esta clave se genera automticamente cuando se necesita
por primera vez, y est protegida por la proteccin de datos de Windows API (DPAPI).

Sugerencia Realice una copia de seguridad de la Clave principal de servicio y


gurdela en una ubicacin externa segura.

Clave principal de base Una clave principal de base de datos es una clave simtrica Triple DES que se puede
de datos usar para proteger las claves privadas de certificados y claves asimtricas de una base de
datos. Cuando se crea una clave principal de base de datos, se cifra mediante el uso del
algoritmo Triple DES y una contrasea proporcionada por el usuario. Para habilitar el
descifrado automtico de la clave principal, una copia de la clave se cifra mediante el uso
de la Clave principal de servicio tanto en la misma base de datos como en la base de
datos master.

La muestra de cdigo Transact-SQL siguiente muestra cmo crear una clave principal de
base de datos.

USE AdventureWorks
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '23987hxJ#KL95234nl0zBe'

Sugerencia Realice una copia de seguridad de cada clave principal de base de datos y
gurdelas en una ubicacin externa segura.

Claves y certificados en Puede crear claves y certificados en una base de datos para cifrar los datos confidenciales
una base de datos o implementar una autenticacin y autorizacin basadas en certificados. Las claves
privadas en una base de datos se pueden proteger mediante la clave principal de base de
datos o mediante una contrasea.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 447

Cundo usar claves y certificados

Introduccin Hay varias maneras de usar claves y certificados en una solucin de base de datos de
SQL Server.

Cifrado de datos Puede usar claves y certificados para cifrar datos para el almacenamiento seguro en la
base de datos. SQL Server incluye las funciones en la tabla siguiente para cifrar y
descifrar datos.

Funciones Descripcin
EncryptByKey y Use estas funciones para cifrar y descifrar datos con
DecryptByKey una clave simtrica. Estas funciones requieren un
GUID que identifique la clave asimtrica que debe
usarse, lo que puede obtenerse llamando a la funcin
KeyGUID.
EncryptByAsymKey y Use estas funciones para cifrar y descifrar datos con
DecryptByAsymKey una clave asimtrica. Estas funciones requieren un Id.
que identifique la clave asimtrica que debe usarse, lo
que puede obtenerse llamando a la funcin
AsymKey_ID.
EncryptByCert y Use estas funciones para cifrar y descifrar datos con
DecryptByCert un certificado. Estas funciones requieren un Id. que
identifique la clave asimtrica que debe usarse, lo que
puede obtenerse llamando a la funcin Cert_ID.

Los algoritmos de criptografa asimtrica, como los usados por claves y certificados
asimtricos, son intensivos para el procesador y pueden conducir a la sobrecarga de
rendimiento cuando se usan para cifrar grandes cantidades de datos. Por esta razn,
generalmente debera cifrar los datos con una clave simtrica, que a su vez se cifra con
una clave asimtrica o un certificado.

Para obtener ms informacin Para obtener ms informacin sobre el cifrado de


datos en una base de datos, consulte Cmo cifrar una columna de datos en los Libros
en pantalla de SQL Server.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
448 Mdulo 4: Administracin de la seguridad

Firma de mdulos de Puede usar una clave asimtrica o un certificado para firmar un mdulo de cdigo, como
cdigo un procedimiento, funcin o desencadenador almacenado. Cualquier modificacin
subsiguiente en un mdulo de cdigo firmado invalidar la firma. La firma y contrafirma
slo pueden realizarla las personas con acceso a la clave privada.

Adems de comprobar que el mdulo de cdigo no ha sido forzado, una firma crea una
identidad secundaria para el mdulo de cdigo. Puede crear un usuario a partir del
certificado usado para firmar el mdulo de cdigo mediante la clusula FOR
CERTIFICATE de la instruccin CREATE USER y conceder permisos al usuario basado
en certificados en lugar de a los usuarios que ejecutarn el mdulo de cdigo.

Para firmar un mdulo de cdigo, la clave privada debe estar presente y usar la
instruccin ADD SIGNATURE como se muestra en el ejemplo siguiente:

ADD SIGNATURE TO Sales.AddOrder BY CERTIFICATE SalesDevCert

Para obtener ms informacin Para obtener ms informacin acerca de la firma de


mdulos de cdigo, consulte ADD SIGNATURE (Transact-SQL) en los Libros en
pantalla de SQL Server.

Contexto de SQL Server 2005 proporciona la clusula EXECUTE AS para controlar el contexto de
suplantacin seguridad para la ejecucin del mdulo de cdigo. Si un mdulo de cdigo que cambia de
contexto de ejecucin usando la clusula EXECUTE AS obtiene acceso a los recursos de
otra base de datos, la base de datos de destino debe confiar en el autenticador usado para
establecer el contexto de la suplantacin para extender el contexto de la suplantacin de
la base de datos de origen.

Una manera de extender el contexto de la suplantacin por varias bases de datos es


firmar el mdulo de cdigo que contiene la clusula EXECUTE AS con un certificado. La
firma realiza dos funciones: acta como autenticador para el contexto de la suplantacin
y proporciona una identidad secundaria para el mdulo de cdigo.

En la base de datos de destino, debe crear un usuario que est asignado al certificado y
conceder el permiso AUTHENTICATE (si el cdigo requiere permisos del mbito de
base de datos) o el permiso AUTHENTICATE SERVER (si el cdigo requiere permisos
del mbito de servidor). Esto permite que el certificado usado como autenticador en la
base de datos de origen compruebe la identidad del mdulo de cdigo en la base de
datos de destino.

Tambin deben concederse al usuario asignado al certificado los permisos necesarios


para tener acceso a los objetos de base de datos referenciados por el mdulo de cdigo.
Esto permite usar la identidad secundaria del mdulo de cdigo firmado para tener
acceso a los recursos necesarios.

Para obtener ms informacin Para obtener ms informacin acerca de cmo


extender el contexto de suplantacin, consulte Extender la suplantacin de la base de
datos mediante EXECUTE AS en los Libros en pantalla de SQL Server.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 449

Autenticacin entre Puede usar certificados para implementar la autenticacin por las instancias del servidor
servidores para el reflejo del service broker y de la base de datos. Esto permite que las instancias del
servidor se autentiquen entre s para comunicarse de forma segura.

Para obtener ms informacin Para obtener ms informacin sobre el uso de


certificados para establecer un contexto de suplantacin, consulte Certificados y
Service Broker y Seguridad en el transporte para la creacin del reflejo de una base de
datos en los Libros en pantalla de SQL Server.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
450 Mdulo 4: Administracin de la seguridad

Demostracin: Usar certificados

Introduccin En esta demostracin, ver cmo usar un certificado para implementar un contexto de
suplantacin a lo largo de varias bases de datos.

Preparacin Asegrese de que la mquina virtual 5406A-MIA-SQL-04 se est ejecutando y de que ha


iniciado sesin como Alumno.

Si no se ha iniciado ninguna mquina virtual, siga estos pasos:

1. Cierre todas las dems mquinas virtuales que se estn ejecutando.


2. Inicie la mquina virtual.
3. En el cuadro de dilogo Iniciar sesin en Windows, realice el procedimiento de
inicio de sesin usando el nombre de usuario Alumno y la contrasea Pa$$w0rd.

Crear a un usuario de Use el procedimiento siguiente para crear un usuario de Windows denominado
Windows SalesUser.

1. Use el Explorador de Windows para ver la carpeta D:\Democode.


2. Haga doble clic en CreateUser.vbs para crear un usuario nuevo de Windows
denominado SalesUser. Cuando se muestre el mensaje de confirmacin, haga clic
en Aceptar.

Implementar bases de Use el procedimiento siguiente para crear dos bases de datos.
datos
1. Haga clic en Inicio, seleccione Todos los programas, Microsoft SQL Server 2005
y, a continuacin, haga clic en SQL Server Management Studio.
2. En el cuadro de dilogo Conectar al servidor, especifique los valores de la tabla
siguiente y haga clic en Conectar.
Propiedad Valor
Tipo de servidor Motor de base de datos
Nombre del servidor MIAMI
Autenticacin Autenticacin de Windows
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 451

3. En el men Archivo, seleccione Abrir, haga clic en Archivo y abra el archivo


Cert.sql situado en la carpeta D:\Democode. Cuando se le solicite, conctese al
servidor MIAMI mediante la autenticacin de Windows.
4. Resalte el cdigo bajo el comentario crea un inicio de sesin y, a continuacin,
haga clic en el botn Ejecutar. Este cdigo crea un inicio de sesin para el usuario
de Windows MIAMI\SalesUser.
5. Resalte el cdigo que hay debajo del comentario crea la base de datos Marketing
y haga clic en el botn Ejecutar. Este cdigo crea una base de datos denominada
Marketing, que contiene una sola tabla denominada dbo.MarketingTable.
6. Resalte el cdigo que hay debajo del comentario crea la base de datos Sales y
haga clic en el botn Ejecutar. Este cdigo crea una base de datos denominada
Sales, que contiene un usuario denominado SalesUser para el inicio de sesin de
MIAMI\SalesUser y dos procedimientos almacenados denominados
dbo.GetMarketingDataUnsigned y dbo.GetMarketingDataSigned. Ambos
procedimientos representan al usuario SalesUser y consultan la tabla
MarketingTable en la base de datos Marketing.

Administrar un Use el procedimiento siguiente para firmar un mdulo de cdigo con un certificado,
certificado exportar el certificado e importarlo a otra base de datos.

1. Resalte el cdigo que hay debajo del comentario crea el certificado y firma el
procedimiento y, a continuacin, haga clic en el botn Ejecutar. Este cdigo crea
una clave de base de datos master y, a continuacin, crea un certificado
denominado SalesCert que est cifrado con la clave de base de datos master.
Finalmente, firma el procedimiento almacenado dbo.GetMarketingDataSigned
con el certificado.
2. Resalte el cdigo que hay debajo del comentario exporta el certificado y haga clic
en el botn Ejecutar. Este cdigo exporta el certificado y su clave pblica.
3. Use el Explorador de Windows para ver la carpeta D:\Democode, haga doble clic
en SalesCert.cer para verlo y, a continuacin, haga clic en Aceptar para cerrar el
certificado.
4. En SQL Server Management Studio, resalte el cdigo que hay debajo del
comentario importa el certificado y, a continuacin, haga clic en el botn
Ejecutar. Este cdigo importa el certificado del archivo en la base de datos
Marketing.

Procedimiento para usar Use el procedimiento siguiente para crear un autenticador a partir del certificado.
un certificado como
autenticador 1. Resalte el cdigo que hay debajo del comentario crea el autenticador para
Marketing y, a continuacin, haga clic en el botn Ejecutar. Este cdigo crea un
nuevo usuario denominado SalesCertUser del certificado y le concede el permiso
AUTHENTICATE. Tambin otorga al usuario los permisos necesarios para
recuperar los datos de la tabla dbo.MarketingTable.
2. Resalte el cdigo que hay bajo el comentario pruebe el procedimiento no
firmado y haga clic en el botn Ejecutar. Este cdigo llama al procedimiento
almacenado no firmado en el que se produce un error porque el contexto de
seguridad suplantado no es de confianza en el mbito de destino.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
452 Mdulo 4: Administracin de la seguridad

3. Resalte el cdigo que hay bajo el comentario prueba el procedimiento firmado y


haga clic en el botn Ejecutar. Este cdigo llama al procedimiento almacenado
firmado con xito porque el autenticador comprueba la firma en el mbito de
seguridad de destino.
4. En SQL Server Management Studio, resalte el cdigo que hay debajo del
comentario borra y, a continuacin, haga clic en el botn Ejecutar. Este cdigo
quita los objetos creados en esta demostracin.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 453

Prctica: Seguridad de SQL Server

Escenario El administrador de base de datos senior para Adventure Works le ha pedido que
implemente una solucin de seguridad que cumpla los requisitos de seguridad
siguientes para el SQL Server MIAMI:

Los grupos de Windows siguientes requieren inicios de sesin para tener acceso a
las bases de datos de SQL Server:
Grupo Windows Base de datos predeterminada
MIAMI\HREmployees AdventureWorks
MIAMI\ITEmployees principal

Los empleados del grupo ITEmployees sern los responsables de crear las nuevas
bases de datos.
Una aplicacin de nminas que se ejecuta en un equipo que no ejecuta Windows
debe tener acceso a la base de datos de SQL Server AdventureWorks. Esta
aplicacin requiere un inicio de sesin de SQL con la configuracin siguiente:
Nombre de inicio de sesin: HRApp
Contrasea: Pa$$w0rd
Directiva de contrasea: No habilitada
Directiva de caducidad de contrasea: No habilitada
El usuario debe cambiar su contrasea en el siguiente inicio de sesin:
No habilitado
Base de datos predeterminada: AdventureWorks
Idioma predeterminado: <predeterminado>
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
454 Mdulo 4: Administracin de la seguridad

El empleado responsable para la aplicacin de nminas debe poder administrar el


inicio de sesin HRApp para cambiar su contrasea si necesario. Debe crearse un
inicio de sesin de SQL con la configuracin siguiente para este usuario:
Nombre de inicio de sesin: HRAppAdmin
Contrasea: Pa$$w0rd
Directiva de contraseas: Habilitada
Directiva de caducidad de contrasea: Habilitada
El usuario debe cambiar la contrasea en el siguiente inicio de sesin:
No habilitado
Base de datos predeterminada: master
Idioma predeterminado: <predeterminado>
HRApp debe poder recuperar los datos en cualquier tabla de la base de datos
AdventureWorks.
Los miembros del grupo Windows HREmployees deben poder recuperar e
insertar datos en cualquier tabla de la base de datos AdventureWorks.
Los empleados senior del departamento de Recursos Humanos deben poder
recuperar, insertar y actualizar datos en cualquier tabla del esquema
HumanResources de la base de datos AdventureWorks. Para lograr esto,
debe crearse una funcin de base de datos denominada HRManager y deben
concedrsele los permisos necesarios. Elena, un miembro del grupo Windows
HREmployees, se debera agregar a esta funcin de la base de datos.
Arturo, un miembro del grupo Windows ITEmployees, debe poder realizar una
copia de seguridad de la base de datos AdventureWorks.

Informacin adicional Cuando realice tareas administrativas, puede ser til usar SQL Server Management
Studio para crear un proyecto de Secuencias de comandos de SQL Server y usarlo para
documentar el cdigo Transact-SQL necesario para volver a crear la solucin si es
necesario.

Use el procedimiento siguiente para crear un proyecto de secuencias de comandos de


SQL Server:

1. Abra SQL Server Management Studio y conctese al servidor que desea administrar.
2. En el men Archivo, seleccione Nuevo y, a continuacin, haga clic en Proyecto.
3. Seleccione la plantilla Secuencias de comandos de SQL Server y especifique un
nombre y una ubicacin vlidos para el proyecto. Tenga en cuenta que puede
crear una solucin que contenga varios proyectos, pero en muchos casos lo
apropiado es un nico proyecto por solucin.

Para agregar un archivo de consulta a un proyecto:

1. Haga clic en Nueva consulta en el men Proyecto, o bien haga clic con el botn
secundario en la carpeta Consultas en el Explorador de soluciones y seleccione
Nueva consulta. Si el Explorador de soluciones no est visible, puede mostrarlo
haciendo clic en Explorador de soluciones en el men Ver.
2. Cuando se le solicite, conctese al servidor en el que desea ejecutar la consulta.
De esta forma se agregar un objeto de conexin al proyecto.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 455

3. Cambie el nombre predeterminado del archivo de consulta (SQLQuery1.sql)


haciendo clic con el botn secundario en el Explorador de soluciones y eligiendo
a continuacin Cambiar nombre.

Aunque puede realizar todas las tareas administrativas ejecutando instrucciones


Transact-SQL, suele ser ms sencillo usar la interfaz grfica de usuario de SQL Server
Management Studio. Sin embargo, debera generar las secuencias de comandos de
Transact-SQL correspondientes y guardarlas en el proyecto como referencia para el
futuro.

A menudo, puede generar la secuencia de comandos de Transact-SQL para una accin


antes de hacer clic en Aceptar en el cuadro de dilogo Propiedades usado para realizar
la accin. Muchos cuadros de dilogo Propiedades incluyen una lista desplegable
Secuencia de comandos con la que puede generar una secuencia de comandos para la
accin en una nueva ventana de consulta, un archivo, el Portapapeles o un trabajo del
Agente SQL Server. Una tcnica comn consiste en agregar un archivo de consulta en
blanco a un proyecto, a continuacin generar una secuencia de comandos para cada
accin en el Portapapeles conforme se realiza y pegar la secuencia de comandos
generada en el archivo de consulta.

Tambin se pueden generar secuencias de comandos para muchos objetos existentes,


como bases de datos y tablas. Para generar una secuencia de comandos, haga clic con el
botn secundario en el objeto del Explorador de objetos y genere una secuencia de
comandos para la accin CREATE. Si el Explorador de objetos no est visible, puede
mostrarlo haciendo clic en Explorador de objetos en el men Ver.

Preparacin Asegrese de que la mquina virtual 5406A-MIA-SQL-04 se est ejecutando y de que ha


iniciado sesin como Alumno.

Si no se ha iniciado ninguna mquina virtual, siga estos pasos:

1. Cierre todas las dems mquinas virtuales que se estn ejecutando.


2. Inicie la mquina virtual.
3. En el cuadro de dilogo Iniciar sesin en Windows, realice el procedimiento de
inicio de sesin usando el nombre de usuario Alumno y la contrasea Pa$$w0rd.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
456 Mdulo 4: Administracin de la seguridad

Ejercicio 1: Crear inicios de sesin


Crear inicios de sesin y
asignar los permisos de
Tarea Informacin complementaria
mbito de servidor
Consulte los grupos y usuarios de 1. Inicie la herramienta administrativa
Windows existentes. Administracin de equipos.
2. Consulte los grupos definidos en el
equipo local.
3. Haga doble clic en el grupo
HREmployees y consulte los
miembros del grupo.
4. Consulte los miembros del grupo
ITEmployees.
5. Cierre la herramienta Administracin
de equipos.
Habilite la directiva de contraseas. 1. Inicie la herramienta administrativa
Directiva de seguridad local.
2. Expanda Directivas de cuenta y haga
clic en Directivas de contraseas.
3. Habilite la directiva La contrasea
debe cumplir con los requisitos de
complejidad. A continuacin, cierre
la ventana Configuracin de
seguridad local.
Establezca el modo de Autenticacin de 1. Inicie SQL Server Management
servidor de MIAMI en Autenticacin de Studio y conctese a MIAMI mediante
Windows y SQL Server. la autenticacin de Windows.
2. Cree un nuevo proyecto de
secuencias de comandos de SQL
Server denominado AW_Security en
la carpeta D:\Labfiles\Starter.
3. Agregue un nuevo archivo de
consulta al proyecto. Cuando se le
solicite, conctese a MIAMI.
4. Cambie el nombre del nuevo archivo
de consulta por el de CreateLogins.sql.
5. Use el Explorador de objetos para ver
las propiedades del servidor MIAMI.
6. Establezca el modo de autenticacin
en Autenticacin de Windows y
SQL Server. Copie la secuencia de
comandos de la accin en el
Portapapeles antes de hacer clic en
Aceptar.
7. Cuando se le indique, reinicie la
instancia de SQL Server MIAMI.
8. Pegue la secuencia de comandos para
la accin en el archivo de secuencia
de comandos CreateLogins.sql y,
a continuacin, guarde el archivo.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 457

Tarea Informacin complementaria


Cree inicios de sesin para los grupos 1. Use el Explorador de objetos para
HREmployees y ITEmployees. crear un nuevo inicio de sesin.
2. Especifique los detalles adecuados
para el grupo HREmployees. Copie la
secuencia de comandos de la accin
en el Portapapeles antes de hacer clic
en Aceptar.
3. Pegue la secuencia de comandos para
la accin en el archivo de secuencia
de comandos CreateLogins.sql
debajo del cdigo existente y,
a continuacin, guarde el archivo.
4. Repita el proceso para que el grupo
ITEmployees, copie y anexe la
secuencia de comandos al archivo
CreateLogins.sql.
Cree inicios de sesin de SQL para la 1. Haga clic con el botn secundario en
aplicacin de nminas y el administrador Inicios de sesin y, a continuacin,
de aplicacin de nminas. elija Nuevo inicio de sesin.
Especifique los detalles adecuados y
las opciones de contrasea para el
usuario HRApp; especifique una
contrasea inicial de Pa$$w0rd.
Copie la secuencia de comandos de la
accin en el Portapapeles antes de
hacer clic en Aceptar.
2. Pegue la secuencia de comandos para
la accin en el archivo de secuencia
de comandos CreateLogins.sql y,
a continuacin, guarde el archivo.
3. Cree un segundo inicio de sesin de
SQL denominado HRAppAdmin con
las opciones de contrasea
adecuadas. Copie la secuencia de
comandos de la accin y anexe la
secuencia de comandos al archivo
CreateLogins.sql.
Compruebe que la directiva de 1. Cree una nueva ventana de consulta.
contraseas de Windows se ha aplicado 2. Intente cambiar la contrasea para
a HRAppAdmin pero no a HRApp. HRAppAdmin a contrasea
mediante el comando ALTER LOGIN.
Observe el error que aparece.
3. Modifique la consulta para cambiar
la contrasea para el inicio de sesin
HRApp a contrasea.
4. Compruebe que puede establecerse
una contrasea simple para el inicio
de sesin HRApp.
5. Cierre la ventana de consulta sin
guardar el archivo.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
458 Mdulo 4: Administracin de la seguridad

Tarea Informacin complementaria


Asigne el inicio de sesin ITEmployees 1. En el Explorador de objetos, consulte
a una funcin de servidor adecuada. las propiedades de la funcin de
servidor dbcreator.
2. Agregue el inicio de sesin
MIAMI\ITEmployees como
miembro de la funcin dbcreator.
Copie la secuencia de comandos de
la accin en el Portapapeles antes de
hacer clic en Aceptar.
3. Pegue la secuencia de comandos para
la accin en el archivo de secuencia
de comandos CreateLogins.sql
debajo del cdigo existente y,
a continuacin, guarde el archivo.
Compruebe que el inicio de sesin 1. Haga clic en Inicio, seleccione Todos
MIAMI\ITEmployees puede crear bases los programas, seleccione
de datos. Accesorios, haga clic con el botn
secundario en Smbolo del sistema,
y, a continuacin, haga clic en
Ejecutar como para ejecutar un
smbolo del sistema como Arturo con
la contrasea Pa$$w0rd. (Arturo es
un miembro del grupo
ITEmployees).
2. En la ventana del smbolo del
sistema, escriba el comando sqlcmd.
3. En sqlcmd, escriba el siguiente
cdigo de Transact-SQL:

CREATE DATABASE IT_DB


GO

4. En sqlcmd, escriba el comando Exit


y, a continuacin, cierre la ventana
Smbolo del sistema.
5. En SQL Server Management Studio,
expanda la carpeta Bases de datos y
compruebe que se ha creado la base
de datos IT_DB. (Puede que tenga
que hacer clic con el botn
secundario en la carpeta Bases de
datos y, a continuacin, hacer clic en
Actualizar).
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 459

Tarea Informacin complementaria


Asigne permisos al inicio de sesin 1. En el Explorador de objetos, consulte
HRAppAdmin. las propiedades del inicio de sesin
HRAppAdmin.
2. En la pgina Elementos que pueden
protegerse, agregue HRApp y,
a continuacin, otorgue el permiso
Alter. Copie la secuencia de
comandos de la accin en el
Portapapeles antes de hacer clic en
Aceptar.
3. Pegue la secuencia de comandos para
la accin en el archivo de secuencia
de comandos CreateLogins.sql
debajo del cdigo existente y,
a continuacin, guarde el archivo.
Compruebe que el inicio de sesin 1. En el Explorador de objetos, haga
HRAppAdmin puede cambiar la clic en el botn Conectar y,
contrasea para el inicio de sesin HRApp. a continuacin, conctese a la base
de datos MIAMI mediante el inicio de
sesin SQL HRAppAdmin.
2. En el Explorador de objetos, consulte
las propiedades del inicio de sesin
HRApp en el rbol de servidor para la
conexin HRAppAdmin.
3. Cambie la contrasea del inicio de
sesin HRApp a Pa$$w0rd.
4. Haga clic con el botn secundario en
el servidor MIAMI para la conexin
HRAppAdmin y, a continuacin,
haga clic en Desconectar.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
460 Mdulo 4: Administracin de la seguridad

Ejercicio 2: Crear y administrar usuarios


Crear usuarios y asignar
permisos
Tarea Informacin complementaria
Agregue una nueva consulta al proyecto 1. Agregue un nuevo archivo de
AW_Security. consulta al proyecto. Cuando se le
solicite, conctese a MIAMI mediante
la autenticacin de Windows.
2. Cambie el nombre del nuevo archivo
de consulta por el de CreateUsers.sql.
Cree usuarios para inicios de sesin de 1. En el Explorador de objetos, expanda
Windows. la carpeta Seguridad de la base de
datos AdventureWorks.
2. Haga clic con el botn secundario en
la carpeta Usuarios y, a continuacin,
haga clic en Nuevo usuario.
3. Especifique los detalles adecuados
para agregar un usuario denominado
HREmployees para el inicio de sesin
MIAMI\HREmployees. Copie la
secuencia de comandos de la accin
en el Portapapeles antes de hacer clic
en Aceptar.
4. Pegue la secuencia de comandos para
la accin en el archivo de secuencia
de comandos CreateUsers.sql y,
a continuacin, guarde el archivo.
5. Repita el procedimiento para crear un
usuario denominado ITEmployees
para el inicio de sesin MIAMI\
ITEmployees, copie la secuencia de
comandos de la accin y anexe la
secuencia de comandos al archivo
CreateUsers.sql.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 461

Tarea Informacin complementaria


Cree usuarios para cuentas de usuario 1. Use el Explorador de objetos para
de Windows individuales. crear un nuevo usuario con los
detalles siguientes en la base de datos
AdventureWorks. Copie la secuencia
de comandos de la accin en el
Portapapeles antes de hacer clic en
Aceptar.
Nombre de usuario Elena
Nombre de inicio de sesin:
MIAMI\Elena
Esquema predeterminado:
HumanResources

Nota Este usuario no tiene un


inicio de sesin individual pero
puede tener acceso al servidor a
travs del inicio de sesin para el
grupo Windows HREmployees, del
que MIAMI\Elena es miembro.

2. Pegue la secuencia de comandos para


la accin en el archivo de secuencia
de comandos CreateUsers.sql, con el
cdigo existente, y, a continuacin,
guarde el archivo.
3. Agregue un usuario para Arturo con
los detalles siguientes, generando y
anexando la secuencia de comandos
Transact-SQL al archivo
CreateUsers.sql.
Nombre de usuario Arturo
Nombre de inicio de sesin:
MIAMI\Arturo
Esquema predeterminado:
dbo

Nota Este usuario no tiene un


inicio de sesin individual pero
puede tener acceso al servidor a
travs del inicio de sesin para el
grupo Windows ITEmployees,
sdel que MIAMI\Arturo es miembro.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
462 Mdulo 4: Administracin de la seguridad

Tarea Informacin complementaria


Cree un usuario para el inicio de sesin 1. Use el Explorador de objetos para
SQL HRApp. crear un nuevo usuario con los
detalles siguientes en la base de datos
AdventureWorks. Copie la secuencia
de comandos de la accin en el
Portapapeles antes de hacer clic en
Aceptar.
Nombre de usuario HRApp
Nombre de inicio de sesin:
HRApp
Esquema predeterminado:
HumanResources
2. Pegue la secuencia de comandos para
la accin en el archivo de secuencia
de comandos CreateUsers.sql, con el
cdigo existente, y, a continuacin,
guarde el archivo.
Agregue a Arturo a la funcin 1. En el Explorador de objetos, consulte
db_backupoperator. las propiedades del usuario Arturo.
(Si Arturo no est visible, haga clic
con el botn secundario en Usuarios
y, a continuacin, haga clic en
Actualizar).
2. Convierta a Arturo en un miembro
de la funcin db_backupoperator.
Copie la secuencia de comandos de la
accin en el Portapapeles antes de
hacer clic en Aceptar.
3. Pegue la secuencia de comandos para
la accin en el archivo de secuencia
de comandos CreateUsers.sql, con el
cdigo existente, y, a continuacin,
guarde el archivo.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 463

Tarea Informacin complementaria


Compruebe los permisos para HRApp. 1. En el men Proyecto, haga clic en
Agregar elemento existente y,
a continuacin, agregue el archivo
D:\Labfiles\Starter\
TestPermissions.sql al proyecto.
Cuando se le solicite, conctese al
servidor MIAMI mediante la
autenticacin de Windows.
2. Repase la secuencia de comandos.
Tenga en cuenta que la instruccin
EXECUTE AS se usa para seleccionar
e insertar datos, y para ejecutar un
procedimiento almacenado en un
contexto de seguridad concreto.
La instruccin REVERT vuelve al
contexto de seguridad
predeterminado para el usuario
registrado.
3. Modifique la secuencia de comandos
que se ejecuta como HRApp y,
a continuacin, ejecute la consulta.
Observe los errores devueltos.
Deberan producirse errores en todas
las instrucciones.
Agregue HRApp a la funcin 1. En el Explorador de objetos, consulte
db_datareader. las propiedades del usuario HRApp.
2. Convierta HRApp en un miembro de
la funcin db_datareader. Copie la
secuencia de comandos de la accin
en el Portapapeles antes de hacer clic
en Aceptar.
3. Pegue la secuencia de comandos para
la accin en el archivo de secuencia
de comandos CreateUsers.sql, con el
cdigo existente, y, a continuacin,
guarde el archivo.
Compruebe los permisos para HRApp. Ejecute de nuevo la secuencia de
comandos TestPermissions.sql y
tenga en cuenta los resultados. La
instruccin SELECT ha tenido xito;
se han producido errores en las
dems instrucciones.
Compruebe los permisos para Elena. 1. Modifique la secuencia de comandos
de prueba para ejecutar como Elena.
2. Ejecute la consulta.
3. Observe los errores devueltos.
Deberan producirse errores en todas
las instrucciones.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
464 Mdulo 4: Administracin de la seguridad

Tarea Informacin complementaria


Agregue HREmployees a las funciones 1. Use el Explorador de objetos para ver
db_datareader y db_datawriter. las propiedades del usuario
HREmployees.
2. Convierta HREmployees en miembro
de las funciones db_datareader y
db_datawriter. Copie la secuencia de
comandos de la accin en el
Portapapeles antes de hacer clic en
Aceptar.
3. Pegue la secuencia de comandos para
la accin en el archivo de secuencia
de comandos CreateUsers.sql, con el
cdigo existente, y, a continuacin,
guarde el archivo.
Compruebe los permisos para Elena. Vuelva a ejecutar la secuencia de
comandos de prueba como Elena y
observe los resultados. Las
instrucciones SELECT e INSERT
deberan ejecutarse correctamente,
pero deberan producirse errores en
la instruccin EXECUTE. Esto ocurre
porque Elena es un miembro del
grupo Windows
MIAMI\HREmployees, y por tanto,
hereda los permisos y la suscripcin a
funciones otorgados al usuario para
el inicio de sesin de ese grupo.
Cree una funcin personalizada 1. En el Explorador de objetos, expanda
denominada HRManager. Funciones.
2. Crear una nueva funcin de base de
datos personalizada denominada
HRManager. Copie la secuencia de
comandos de la accin en el
Portapapeles antes de hacer clic en
Aceptar.
3. Pegue la secuencia de comandos para
la accin en el archivo de secuencia
de comandos CreateUsers.sql, con el
cdigo existente, y, a continuacin,
guarde el archivo.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 465

Tarea Informacin complementaria


Conceda el permiso EXECUTE a la funcin 1. En el Explorador de objetos, consulte
HRManager en el esquema las propiedades del esquema
HumanResources. HumanResources.
2. En la pgina de permisos, otorgue el
permiso EXECUTE a la funcin
HRManager. Copie la secuencia de
comandos de la accin en el
Portapapeles antes de hacer clic en
Aceptar.
3. Pegue la secuencia de comandos para
la accin en el archivo de secuencia
de comandos CreateUsers.sql, con el
cdigo existente, y, a continuacin,
guarde el archivo.
Agregue a Elena a la funcin HRManager. 1. En el Explorador de objetos, consulte
las propiedades de la funcin
HRManager.
2. Agregue a Elena como un miembro
de la funcin. Copie la secuencia de
comandos de la accin en el
Portapapeles antes de hacer clic en
Aceptar.
3. Pegue la secuencia de comandos para
la accin en el archivo de secuencia
de comandos CreateUsers.sql, con el
cdigo existente, y, a continuacin,
guarde el archivo.
Compruebe los permisos para Elena. Vuelva a ejecutar la secuencia de
comandos de prueba como Elena y
observe los resultados. Las tres
instrucciones deberan tener xito.
Esto ocurre porque Elena recibe los
permisos SELECT e INSERT
mediante la suscripcin de usuario
HREmployees de las funciones de
base de datos db_datareader y
db_datawriter, y el permiso
EXECUTE en el esquema
HumanResources y su contenido
mediante la suscripcin de la funcin
de la base de datos HRManager.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
466 Mdulo 4: Administracin de la seguridad

Ejercicio 3: Usar un certificado para cifrar los datos


Escenario Al departamento de recursos humanos le gustara poder almacenar detalles de
reuniones de revisin del empleado. Las notas de cada reunin son extremadamente
confidenciales y deben almacenarse de manera que slo el usuario HRApp pueda
leerlas. Un desarrollador de bases de datos le ha proporcionado una secuencia de
comandos Transact-SQL para que pueda implementar y probar una solucin que cifre
las notas de revisin del empleado mediante una clave simtrica, que a su vez se cifra
mediante un certificado propiedad de HRApp.

Cifrar datos con


certificados y claves
Tarea Informacin complementaria
Agregue la secuencia de comandos 1. En el Explorador de soluciones,
EncryptData.sql al proyecto AW_Security. haga clic en Agregar elemento
existente en el men Proyecto y,
a continuacin, agregue la secuencia
de comandos desde la carpeta
D:\Labfiles\Starter.
2. Cuando se le solicite, conctese al
servidor MIAMI mediante la
autenticacin de Windows.
Cree la tabla EmployeeReview con los 1. En el men Consulta, seleccione
permisos necesarios para HRApp. Resultados en y, a continuacin,
haga clic en Resultados a texto.
2. Ejecute el cdigo bajo el comentario
Crea la tabla EmployeeReviews y
conceda los permisos para crear la
tabla y otorgar los permisos
necesarios para HRApp.
Cree una clave maestra de base de datos. Ejecute el cdigo bajo el comentario
Crea la clave principal de la base de
datos para crear una clave maestra de
base de datos si an no existe
ninguna.
Cree un certificado para el usuario HRApp. Ejecute el cdigo bajo el comentario
Crea el certificado para crear un
certificado que pertenezca a HRApp.
Este certificado est cifrado de forma
predeterminada con la clave maestra
de base de datos. SQL Server no podr
crear un certificado si la fecha del
equipo host es posterior a 31/10/09.
Cree una clave simtrica. Ejecute el cdigo bajo el comentario
Crea la clave simtrica para crear
una clave simtrica que est cifrada
por el certificado HRAppCert.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
Mdulo 4: Administracin de la seguridad 467

Tarea Informacin complementaria


Inserte datos cifrados. Ejecute el cdigo bajo el comentario
Inserta datos cifrados. Este cdigo
suplanta a HRApp y realiza las
acciones siguientes:
Abre la clave simtrica HRKey
con el certificado HRAppCert.
Cifre los datos con la clave
simtrica e insrtelos en la tabla
EmployeeReview.
Descifre los datos. Ejecute el cdigo bajo el comentario
Lee los datos descifrados como
HRApp. Este cdigo suplanta a
HRApp y realiza las acciones
siguientes:
Abre la clave simtrica HRKey
con el certificado HRAppCert.
Descifra los datos con la clave
simtrica.
Intente leer los datos como otro usuario. Ejecute el cdigo bajo el comentario
Intenta leer los datos como otro
usuario para intentar leer los datos
de la tabla EmployeeReview como
Elena. Observe que los datos estn
cifrados.
Intente descifrar los datos como otro Ejecute el cdigo bajo el comentario
usuario. Intenta descifrar los datos como
otro usuario para intentar usar el
certificado HRAppCert y la clave
simtrica HRKey para descifrar los
datos como Elena. Este cdigo genera
un error, porque Elena no tiene el
permiso para usar la clave simtrica
HRKey.

Lista de comprobacin Use la siguiente lista de comprobacin de resultados para comprobar que ha realizado
de resultados correctamente esta prctica:

Ha creado un nuevo proyecto de secuencias de comandos de SQL Server


denominado AW_Security.
Ha creado inicios de sesin para los grupos Windows MIAMI\HREmployees y
MIAMI\ITEmployees.
Ha creado inicios de sesin SQL denominados HRApp y HRAppAdmin.
Ha agregado el inicio de sesin MIAMI\ITEmployees para la funcin fija de
servidor dbcreator.
Ha otorgado al inicio de sesin HRAppAdmin el permiso ALTER LOGIN en el
inicio de sesin HRApp.
Ha creado usuarios en la base de datos AdventureWorks para los inicios de
sesin MIAMI\HREmployees, MIAMI\ITEmployees y HRApp.
Ha creado usuarios en la base de datos AdventureWorks para las cuentas
Windows individuales MIAMI\Elena y MIAMI\Arturo.
USO EXCLUSIVO DE INSTRUCTORES MCT. PROHIBIDO EL USO POR ALUMNOS
468 Mdulo 4: Administracin de la seguridad

Ha agregado a Arturo a la funcin de base de datos db_backupoperator.


Ha agregado HRApp a la funcin de base de datos db_datareader.
Ha agregado HREmployees a las funciones de base de datos db_datareader y
db_datawriter.
Ha creado una funcin de base de datos denominada HRManager.
Ha otorgado el permiso EXECUTE a la funcin HRManager en el esquema
HumanResources.
Ha agregado a Elena a la funcin HRManager.
Ha comprobado los permisos para HRApp y Elena.
Opcionalmente, ha usado un certificado y una clave simtrica para cifrar datos.

You might also like