Вы находитесь на странице: 1из 26

Seguridad de SQL Server

Practica 1 Cambiando el Modo de Autenticacin desde Management Studio


Para cambiar el modo de autenticacin desde el Management Studio, siga los siguientes pasos: 1. Iniciar el SQL Server Management Studio. 2. En el explorador de objetos seleccione el Servidor. 3. Clic derecho en el servidor y seleccione Propiedades.

4. En el panel Select a page seleccione Seguridad. En Autenticacin del servidor, seleccione o revise el modo de autenticacin

Practicas captulo 6

Seguridad de SQL Server


Practica 1 Cambiar el modo de autenticacin de Windows a SQL Server y Windows
--Practica 1 USE master EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', REG_DWORD, 2 --Tambin se puede cambiar el modo de autenticacin a modo de autenticacin de Windows, cambiando el valor de DWORD a 1, como se muestra en este ejemplo: USE master EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', REG_DWORD, 1

Practica 2 inicios de sesin preestablecida

1. En el men Inicio, haga clic derecho en Mi PC y seleccione Administrar. 2. En la ventana Administrador del servidor, expanda Configuracin, y despus "Usuarios y grupos locales" (ver Figura 6-2).

3. 4. 5. 6.

Clic derecho en la carpeta Usuarios y seleccione Usuario Nuevo. En el Nombre de usuario, ingrese Bob. En el password y confirmacin de password ingrese P@ssw0rd. Desactive el check "El usuario debe cambiar la contrasea en el siguiente inicio de sesin 7. Clic en Crear. 8. En el Nombre de usuario ingrese CarolStreet. 9. En el password y confirmacin de password ingrese P@ssw0rd. 10. Desactive el check "El usuario debe cambiar la contrasea en el siguiente inicio de sesin 11. Clic en Crear. 12. En el Nombre de usuario ingrese Alice. 13. En el password y confirmacin de password ingrese P@ssw0rd.

Practicas captulo 6

Seguridad de SQL Server


14. Desactive el check "El usuario debe cambiar la contrasea en el siguiente inicio de sesin 15. Clic en Crear. 16. Clic en Cerrar. 17. Clic derecho en la carpeta Grupos y seleccione Grupo Nuevo. 18. En el nombre de Grupo ingrese G North West Sales. 19. Clic en Crear. 20. Clic en Cerrar. 21. Cierre la ventana del Server Manager.
Practica 3

Creando inicios de sesin en el Management Studio. Para crear inicios de sesin en el management studio siga los siguientes pasos: 1. 2. 3. 4. En el Explorador de objetos expanda su servidor. Expanda la carpeta Security. Clic derecho en logins y seleccione New Login. En el cuadro de dialogo Login-New (ver figura 6-3), escriba el nombre del login que desea agregar o haga clic en el botn Buscar para buscar una cuenta de Windows. 5. Si va a crear un inicio de sesin de SQL, seleccione el radiobutton con la opcin "autenticacin de SQL Server". 6. Adems, cuando se selecciona "autenticacin de SQL Server" puede optar por no hacer cumplir las polticas de contraseas. 7. Tambin es posible que desee cambiar la base de datos predeterminada del usuario y el lenguaje.

Practicas captulo 6

Seguridad de SQL Server

Figura 6-3 Caja de Dialogo New Login.


Practica 4

Practica: Creando un Nuevo Login para Alice. Para crear un nuevo login para Alice siga los siguientes pasos. 1. 2. 3. 4. 5. 6. 7. En el explorador de objetos expanda el servidor. Expanda la Carpeta Security. Clic derecho en Logins y seleccione New Login. En el cuadro de dialogo New Login haga clic en Search. En el cuadro de dialogo Select User or Group, tecle Alice y clic en Ok. Seleccione master como la base de datos predeterminada. Clic en Ok.

Practicas captulo 6

Seguridad de SQL Server


PRACTICA 5 HASH
CREATE LOGIN Bill WITH PASSWORD = 'P@ssw0rd' HASHED

PRACTICA 6
SELECT LOGINPROPERTY('bill', 'passwordhash') CREATE LOGIN sofia WITH PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED ; GO SELECT LOGINPROPERTY('sofia','passwordhash')

passwordhash es de tipo varbinary, saldr NULL si el login de SQL Server no es vlido. PRACTICA 7
CREATE LOGIN [AughtEight\Bob] from Windows; GO

7.1
CREATE LOGIN [AughtEight\G NorthWest Sales] from Windows; GO

7.2
CREATE LOGIN Carol WITH PASSWORD = 'Th1sI$MyP@ssw0rd'; GO

7.3
ALTER LOGIN Carol WITH PASSWORD = 'newpassword', CHECK_POLICY=OFF; GO

Practica 8

Creacin de una nueva credencial Al crear una nueva credencial, siga estos pasos: 1. En el Object Explorer, expanda su servidor. 2. Expanda la carpeta Security. 3. Haga click en el botn derecho del ratn y seleccione New Credential(ver Figura 6-4).

Practicas captulo 6

Seguridad de SQL Server

4. Escriba un nombre para la credencial. 5. En la seccin de Identity (Identidad), escriba el nombre de una cuenta de Windows o haga click en el botn para buscar una cuenta. 6. Introduzca la contrasea de la cuenta. 7. Vuelva a introducir la contrasea para confirmar. 8. Habilite el uso de proveedor de cifrado (si se desea). 9. Seleccione un proveedor External Key Management (administrador Externo de Claves) (si la opcin anterior est activada).nuevanueva 10. Haga clic en OK.
PRACTICA 9
CREATE CREDENTIAL name WITH IDENTITY = 'identity_name' [, SECRET = 'secret'] [FOR CRYPTOGRAPHIC_PROVIDER provider_name]

PRACTICA 10
USE master CREATE CREDENTIAL StreetCred WITH IDENTITY = 'AughtEight\CarolStreet', SECRET = 'P@ssw0rd'; GO

Practicas captulo 6

Seguridad de SQL Server


10.1
ALTER LOGIN Carol WITH CREDENTIAL = StreetCred; GO

PRACTICA 11

USE master CREATE LOGIN Ted WITH PASSWORD = 'P@ssw0rd'; GO EXEC sp_addsrvrolemember 'Ted', 'securityadmin'; GO
11.1

USE master EXEC sp_dropsrvrolemember 'Ted', 'securityadmin'; GO

Practica 12

Crear un nuevo usuario y esquema predeterminado

Para este ejemplo, crear un nuevo usuario de base de datos en la base de datos AdventureWorks2008R2 para Carol y establecer su esquema de default el esquema Sales. 1. En el Explorador de objetos, expanda Databases. 2. Expanda AdventureWorks2008R2 (ver Figura 6-6). 3. Expanda Security. 4. Haga clic derecho en Users y seleccione New User. 5. Escriba Carol en el cuadro User Name. 6. Escriba Carol en Login name, o seleccione su login con el botn''...''. 7. Escriba Sales en el cuadro Default schema. 8. Haga clic en Aceptar.

Practicas captulo 6

Seguridad de SQL Server

Ahora que Carol tiene una cuenta de usuario de base de datos en la base de datos AdventureWorks2008R2, ella ha heredado los permisos concedidos al rol pblico de base de datos. Los roles de base de datos y permisos son cubiertos despus en este captulo.

Practicas captulo 6

Seguridad de SQL Server

Practicas captulo 6

Seguridad de SQL Server


Practica 13

En un ejemplo anterior, usted ha creado un nuevo login de SQL Server llamado Carol y un usuario asociado en la base de datos AdventureWorks2008R2. Si desea crear un usuario para Carol en la base de datos tempdb, puede ejecutar la siguiente declaracin:
USE tempdb; CREATE USER Carol; GO

Practica 14

Si ha ejecutado la instruccin anterior DROP LOGIN [AughtEight \ Bob], tendr que volver a crear el login. En este ejemplo, vamos a crear un usuario base de datos llamado BillyBob que se asignar al login de Bob, y se asignar el esquema por defecto al esquema Sales:
USE master; CREATE LOGIN [AughtEight\Bob] FROM WINDOWS; USE AdventureWorks; CREATE USER BillyBob FOR LOGIN [AughtEight\Bob] WITH DEFAULT_SCHEMA = sales;

Practica 15

El ltimo ejemplo muestra la creacin de un nuevo usuario desde un certificado existente. Los certificados se tratan ms adelante en este captulo, pero para este ejemplo, creamos el certificado primero, y luego creamos el usuario:
USE AdventureWorks; CREATE CERTIFICATE SalesCert ENCRYPTION BY PASSWORD = 'P@ssw0rd' WITH SUBJECT = 'Sales Schema Certificate', EXPIRY_DATE = '12/31/2012'; GO CREATE USER SalesSecurity FOR CERTIFICATE SalesCert; GO

Practica 16

Tambin puede utilizar la sentencia ALTER USER para realizar cambios en una cuenta de usuario. Este es otro ejemplo donde Transact-SQL permite una mayor flexibilidad que el Management Studio. ALTER SCHEMA permite modificar tanto la propiedad name y la propiedad DEFAULT_SCHEMA. Si desea cambiar el login de Windows o SQL con la que la cuenta est asociada, tambin puede utilizar la opcin LOGIN = . Tenga en cuenta que la opcin LOGIN slo se puede utilizar para asociar un usuario a un login que es del mismo tipo que el que se cre originalmente. Esto no funcionar para los usuarios creados como certificado o claves. Estas opciones se muestran en los ejemplos siguientes:

Practicas captulo 6

Seguridad de SQL Server


USE AdventureWorks ALTER USER SalesSecurity WITH NAME = SalesSchemaSecurity; GO USE AdventureWorks ALTER USER BillyBob WITH DEFAULT_SCHEMA = Production; GO --Create a new login USE master CREATE LOGIN TempCarol WITH PASSWORD = 'MyPassword', CHECK_POLICY = OFF; GO USE tempdb ALTER USER Carol WITH Login = TempCarol; GO

Finalmente, una vez que un usuario ha dejado de ser til, utilice la instruccin DROP USER para eliminarlo de la base de datos. El comando DROP USER es sencillo, como se ve en el siguiente ejemplo:
USE AdventureWorks DROP USER BillyBob; GO

Practica 17

El siguiente ejemplo agrega al usuario de base de datos Carol al rol db_datareader con el cual permite que se puedan leer los datos de todas las tablas de usuario
USE AdventureWorks EXEC sp_addrolemember 'db_datareader', 'Carol'; GO

Para eliminar a Carol del rol db_datareader, use el siguiente procedimiento almacenado:
USE AdventureWorks EXEC sp_droprolemember 'db_datareader', 'Carol'; GO

Practica 18

Creacin de un Nuevo Rol Definido por el usuario de Base de datos en Management Estudio En la cuadro de dilogo New Role, le solicitan proporcionar un nombre para el rol, as como identificar un propietario para el mismo. El propietario del rol puede modificarlo en

Practicas captulo 6

Seguridad de SQL Server


cualquier momento. Usted tambin puede seleccionar esquemas existentes que sern propiedad de este rol y aadir usuarios como miembros de este rol. Adems de la pestaa Propiedades Generales, usted tambin tiene la pgina de Asegurables y la pgina de Propiedades Extendidas, las cuales usted puede utilizar para asignar permisos o establecer atributos adicionales, respectivamente. En este ejemplo, usted puede crear un nuevo rol de base de datos llamado ProductionRole y luego aadir a Carol como un miembro: 1. En el Explorador de Objetos, expanda Databases. 2. Expanda AdventureWorks2008R2 y seleccione Security. 3. Expanda Roles y entonces expanda DataBase Roles. 4. Click derecho en Database Roles y seleccione New Database Role 5. En el cuadro Role Name, escriba ProductionRole (ver la Figura 6-7). 6. Bajo la lista de los miembros de este rol (que debera estar vaca), de click en Add (agregar). 7. Ingrese Carol en la ventana y de click Check Names. Esto debera resolver su nombre. Se da click en OK 8. En la ventana Database Role-New, pulse Ok.

Practica 19

Practicas captulo 6

Seguridad de SQL Server


CREATE ROLE es el equivalente de Transact-SQL para crear una nuevo rol de base de datos definido por el usuario. Cuando se utiliza la sentencia CREATE ROLE, tambin se puede especificar el propietario del rol. La siguiente sentencia crea un rol denominado SalesStaff, designando a Carol como el propietario:
USE AdventureWorks CREATE ROLE SalesStaff AUTHORIZATION Carol; GO

La sentencia ALTER ROLE es bastante limitada, permitiendo cambiar slo el nombre del rol: Practica 19.1
USE AdventureWorks ALTER ROLE SalesStaff WITH NAME = SalesStaffRole; GO

El estatuto DROP ROLE permitir eliminar un rol de la base de datos una vez que ya no se necesita:
USE AdventureWorks DROP ROLE SalesStaffRole; GO

Practica 20 Try It Out Crear un Application Role En este ejemplo, se crea una nuevo rol de aplicacin llamado PurchasingOrderEntry, con una contrasea de POEpass1: 1. En el Explorador de objetos, expanda Bases de datos. 2. Expandir AdventureWorks2008R2 y, a continuacin, expanda seguridad. 3. Expandir Roles a continuacin, expanda Roles de aplicacin. 4. Clic derecho en Roles de aplicacin y seleccione Nuevo rol de aplicacin. 5. Escriba PurchasingOrderEntry para el nombre de rol (vea la Figura 6-8).

Practicas captulo 6

Seguridad de SQL Server

6. Establecer el esquema predeterminado Purchasing. 7. Introduzca POEpass1 en las cuadros Contrasea y Confirmar contrasea. 8. Haga clic en Aceptar.

Practica 21 La sentencia CREATE APPLICATION ROLE hace lo que su nombre indica. Cuando se utiliza esta sentencia, se debe especificar el nombre del rol de aplicacin, una contrasea para el rol de aplicacin, y, opcionalmente, un esquema predeterminado para el rol de aplicacin. El siguiente ejemplo crea un rol de aplicacin llamado SalesApp:
USE AdventureWorks CREATE APPLICATION ROLE SalesApp WITH PASSWORD = 'P@ssw0rd', DEFAULT_SCHEMA = Sales; GO

Practica 22

Practicas captulo 6

Seguridad de SQL Server


Para utilizar un rol de aplicacin, se puede ejecutar el procedimiento almacenado sp_setapprole. Este puede ser llamado desde una aplicacin, o se puede probar desde la ventana de consultas. El procedimiento almacenado incluye opciones para activar el rol de aplicacin proporcionando una contrasea encriptada, creando una cookie, y estableciendo informacin en la cookie. El siguiente comando activa el rol de aplicacin SalesApp y devuelve el nombre de usuario:
USE AdventureWorks GO DECLARE @cookie varbinary(8000); EXEC sp_setapprole 'SalesApp', 'P@ssw0rd' , @fCreateCookie = true, @cookie = @cookie OUTPUT; GO SELECT USER_NAME();

Practica 23 Con la sentencia ALTER APPLICATION ROLE, puede cambiar el nombre del rol de aplicacin, la contrasea y el esquema predeterminado. En el siguiente ejemplo se cambia el nombre del rol de SalesApp a OrderEntry y establece una nueva contrasea:
USE AdventureWorks ALTER APPLICATION ROLE SalesApp WITH NAME = OrderEntry, PASSWORD = 'newP@ssw0rd'; GO

----DROP APPLICATION ROLE rolename eliminar un rol de aplicacin de la base de datos. ---USE AdventureWorks DROP APPLICATION ROLE OrderEntry; GO

Practica 24

Practicas captulo 6

Seguridad de SQL Server


El permiso aplicado a una clase especfica de objetos a un nivel alto en la jerarqua permite la herencia de permisos. Por ejemplo, si quiere que Ted sea capaz de actualizar cualquiera de las filas en cada tabla en el esquema de Sales, puede simplemente utilizar el siguiente comando
USE AdventureWorks --First, create the user CREATE USER Ted WITH DEFAULT_SCHEMA = Sales; -- Next, Grant Ted update permissions on the Sales Schema GRANT UPDATE ON SCHEMA :: Sales to Ted; GO

Practica 25 Alternativamente, si desea que Ted tenga la capacidad de actualizar cualquier objeto en la base de datos, puede utilizar lo siguiente:
Use AdventureWorks GRANT UPDATE TO Ted; GO

Practica 26 Por ejemplo, para conceder permisos para crear bases de datos al login de Ted, se puede utilizar la siguiente sentencia:
USE master GRANT CREATE ANY DATABASE TO Ted; GO

Practica 27 Si tambin quiere que Ted sea capaz de tener los permisos para modificar los inicios de sesin y permitir que otros puedan modificar los inicios de sesin, puede utilizar la siguiente sentencia:
USE Master GRANT ALTER ANY LOGIN TO Ted WITH GRANT OPTION; GO

Para eliminar la capacidad de Ted para modificar los inicios de sesin, puede utilizar la siguiente sentencia:------

Practicas captulo 6

Seguridad de SQL Server


USE master REVOKE ALTER ANY LOGIN TO Ted CASCADE; GO

Practica 28

Ahora bien, si desea prohibir a Ted ser capaz de crear una nueva base de datos, puede utilizar la instruccin DENY de la siguiente manera:
USE master DENY CREATE ANY DATABASE TO Ted; GO

Practica 29 En el siguiente ejemplo se crea un endpoint llamado ServiceBroker que ser utilizado para una aplicacin de Service Broker y luego otorga el permiso ALTER para ese endpoint a Ted:
CREATE ENDPOINT ServiceBroker STATE = STARTED AS TCP( LISTENER_PORT = 5162 ) FOR SERVICE_BROKER (AUTHENTICATION=WINDOWS); GO USE master GRANT ALTER ON ENDPOINT :: ServiceBroker TO Ted; GO

Practica 30 El siguiente objeto de nivel de servidor al que se le puede establecer permisos son los inicios de sesin. La sintaxis para la configuracin de permisos para los inicios de sesin es similar a la sintaxis para establecer permisos en los endpoints. Por ejemplo, para dar a Carol la capacidad de alterar el inicio de sesin de Ted, se utilizara la siguiente declaracin:
USE master GRANT ALTER ON LOGIN :: Ted TO Carol WITH GRANT OPTION; GO

Practica 31 En el siguiente ejemplo, se puede conceder el permiso CONTROL para el esquema de Sales al usuario Alice:

Practicas captulo 6

Seguridad de SQL Server

USE AdventureWorks CREATE USER Alice FOR LOGIN [AughtEight\Alice] WITH DEFAULT_SCHEMA = SALES; GO GRANT CONTROL ON SCHEMA :: Sales TO Alice; GO

Practica 32 Hay permisos adicionales que se pueden asignar a los objetos, los tipos de datos y colecciones de esquemas XML. Para otorgar permisos a los objetos de nivel de esquema, la sintaxis es similar a lo que vimos antes: {GRANT | REVOKE | DENY} action ON class :: securable TO principal Cuando la clase es un OBJECT, puede omitir OBJECT :: siempre y cuando el nombre de esquema se incluye con el nombre del objeto, como en el ejemplo siguiente:
Use AdventureWorks GRANT SELECT, UPDATE ON Person.Person to Alice; GO

Practica 33 Para el siguiente ejemplo, se crear un nuevo inicio de sesin, un usuario de base de datos para la base de datos AdventureWorks2008R2, a continuacin, se concedern permisos de control para el esquema de Sales para este nuevo usuario. Utilize el siguiente cdigo:
USE master CREATE LOGIN Chris WITH PASSWORD = 'P@ssw0rd', DEFAULT_DATABASE = AdventureWorks; GO USE AdventureWorks CREATE USER Chris WITH DEFAULT_SCHEMA = Sales; GO GRANT CONTROL ON SCHEMA :: SALES TO Chris; GO

Practica 34 Ahora, utilice el Explorador de objetos para ver qu permisos se han concedido a Chris. En primer lugar, mire la propia base de datos:

Practicas captulo 6

Seguridad de SQL Server


1. Expanda el servidor. 2. Expanda Bases de Datos. 3. Clic derecho en AdventureWorks2008R2 y seleccione propiedades. 4. Seleccione permisos. 5. En el panel usuarios o roles, seleccione Chris.

Practica 35 Debido a que usted le otorg el control del esquema Sales a Chris, hay que ver que permisos en realidad se le han asignado a ese esquema y los objetos dentro de l. Para ello, se abre la hoja de propiedades para la cuenta de usuario de Chris en la base de datos AdventureWorks2008R2.

1. Cierre la ventana Propiedades de base de datos AdventureWorks2008-haciendo clic en Aceptar o Cancelar. 2. En el Explorador de objetos, expanda AdventureWorks2008

3. Expanda Security 4. Expanda Users. 5. Click derecho en Chris y seleccione Properties.

Practicas captulo 6

Seguridad de SQL Server


6. 7. 8. 9. Seleccione la pgina Securables y de click en Search. Seleccione All objects belonging to the schema. De la lista desplegable Schema name seleccione Sales. Click en OK.

Practica 36 Ahora tenemos un usuario con acceso completo al esquema Sales, pero no tiene acceso a los recursos fuera de l. Cualquier intento para consultar una vista en otro esquema resultar en el error siguiente:
SELECT * FROM HumanResources.Employee

Practica 37 Uno de los primeros pasos que se debe tomar es la creacin de la database master key. Hay que recordar que la database master key es una clave simtrica que cifra todos los datos privados clave (private key data) dentro de la base de datos. Esto es til si se estn usando las claves asimtricas o certificados, en los que se pueden crear sin tener que proporcionar una contrasea u otro mecanismo para proteger las claves privadas asociadas con los dos. Para crear una nueva clave maestra para la base de datos AdventureWorks2008R2,puede ejecutar el siguiente comando:
USE AdventureWorks CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'P@ssw0rd'; GO

Practica 38

El siguiente ejemplo guardar una copia de seguridad de la service master key en una carpeta llamada H:\KeyBackups (Esta carpeta debe existir):
BACKUP SERVICE MASTER KEY TO FILE = 'H:\KeyBackups\ServiceMasterKey' ENCRYPTION BY PASSWORD = 'c@MplexP@ssw0rd'; GO

Practica 39

Si se necesita restaurar la clave maestra de servicio, puede emitir la siguiente declaracin


RESTORE SERVICE MASTER KEY FROM FILE = 'H:\KeyBackups\ServiceMasterKey' DECRYPTION BY PASSWORD = 'c@MplexP@ssw0rd'; GO

Practica 40

Practicas captulo 6

Seguridad de SQL Server


Para realizar una copia de seguridad y restaurar una clave maestra de base de datos, se utilizan los siguientes ejemplos:
--Backup the database master key USE AdventureWorks; OPEN MASTER KEY DECRYPTION BY PASSWORD = 'P@ssw0rd' BACKUP MASTER KEY TO FILE = 'H:\KeyBackups\AWorksMasterKey' ENCRYPTION BY PASSWORD = 'dn9e8h93ndwjKJD'; GO --Restore the database master key USE AdventureWorks; RESTORE MASTER KEY FROM FILE = 'H:\KeyBackups\AWorksMasterKey' DECRYPTION BY PASSWORD = 'dn9e8h93ndwjKJD' ENCRYPTION BY PASSWORD = 'P@ssw0rd' GO

Practica 41 Para utilizar EKM, primero se debe habilitar en el servidor. Esta funcin est desactivada por defecto, pero puede ser activado con el comando sp_configure. Debido a que habilitar EKM se considera una caracterstica avanzada, la configuracin show advance, tambin se debe especificar. El siguiente ejemplo muestra cmo activar EKM para su servidor:
sp_configure 'show advanced', 1; GO RECONFIGURE GO sp_configure 'EKM provider enabled', 1; GO RECONFIGURE GO

Practica 42 El siguiente ejemplo crea una nueva clave simtrica denominada SalesKey1, que utiliza el algoritmo 192-bit Triple DES 3-Key:
USE AdventureWorks GO --Create Symmetric Key CREATE SYMMETRIC KEY SalesKey1 WITH ALGORITHM = TRIPLE_DES_3KEY, KEY_SOURCE = 'The quick brown fox jumped over the lazy dog', IDENTITY_VALUE = 'FoxAndHound' ENCRYPTION BY PASSWORD = '9348hsxasnA@B'; GO

Practica 43

Practicas captulo 6

Seguridad de SQL Server


En este ejemplo, se utiliza el certificado SalesCert creado en la seccin anterior, Database Users, para cifrar la clave simtrica y quitar el cifrado de la contrasea del ejemplo anterior:
--Open the symmetric key OPEN SYMMETRIC KEY SalesKey1 DECRYPTION BY PASSWORD = '9348hsxasnA@B' --Add encryption using the certificate created earlier ALTER SYMMETRIC KEY SalesKey1 ADD ENCRYPTION BY CERTIFICATE SalesCert --Remove the password encryption ALTER SYMMETRIC KEY SalesKey1 DROP ENCRYPTION BY PASSWORD = '9348hsxasnA@B' --Close the symmetric key CLOSE SYMMETRIC KEY SalesKey1

Practica 44
USE AdventureWorks CREATE ASYMMETRIC KEY HumanResources WITH ALGORITHM = RSA_2048; GO

Practica 45 En el ejemplo siguiente, se utiliza el siguiente cdigo para cifrar la clave privada del par claves HumanResources creado en el ejemplo anterior, mediante una contrasea
USE AdventureWorks ALTER ASYMMETRIC KEY HumanResources WITH PRIVATE KEY ( ENCRYPTION BY PASSWORD = 'P@ssw0rd'); GO

Practica 46 En el siguiente ejemplo, puede cambiar la contrasea utilizada para cifrar la clave privada, esto, primero descifrndolo, y luego volver a cifrar con la nueva contrasea:
USE AdventureWorks ALTER ASYMMETRIC KEY HumanResources WITH PRIVATE KEY ( DECRYPTION BY PASSWORD = 'P@ssw0rd', ENCRYPTION BY PASSWORD = '48ufdsjEHF@*hda'); GO

Practica 47

Practicas captulo 6

Seguridad de SQL Server


En el siguiente ejemplo, se creara un nuevo certificado llamado PersonnelDataCert, que se utilizar ms adelante para encriptar datos. Despus de la creacin de este certificado, se har una copia de seguridad del certificado al sistema de archivos (se puede cambiar la ruta en el ejemplo o crear una nueva carpeta en la unidad C: llamada CERT). Una vez hecho esto, el ltimo paso es importar el certificado en la base de datos tempdb.
-- Crea el Certificado Personal de datos USE AdventureWorks; CREATE CERTIFICATE PersonnelDataCert ENCRYPTION BY PASSWORD = 'HRcertific@te' WITH SUBJECT = 'Personnel Data Encryption Certificate', EXPIRY_DATE = '12/31/2013'; GO -- Copia de seguridad del certificado y la llave privada al sistema de archivos Use AdventureWorks BACKUP CERTIFICATE PersonnelDataCert TO FILE = 'c:\certs\Personnel.cer' WITH PRIVATE KEY (DECRYPTION BY PASSWORD = 'HRcertific@te', FILE = 'c:\certs\Personnelkey.pvk' , ENCRYPTION BY PASSWORD = '@notherPassword' ); GO --Importar el certificado y la llave privada a la base de datos TempDB USE tempdb CREATE CERTIFICATE PersonnelDataCert FROM FILE = 'c:\certs\Personnel.cer' WITH PRIVATE KEY (FILE = 'c:\certs\Personnelkey.pvk', DECRYPTION BY PASSWORD = '@notherPassword', ENCRYPTION BY PASSWORD = 'TempDBKey1'); GO --En el siguiente ejemplo, se cambia el password usado para encriptar la llave privada usando la sentencia ALTER CERTIFICATE: Use tempdb ALTER CERTIFICATE PersonnelDataCert WITH PRIVATE KEY (ENCRYPTION BY PASSWORD = 'P@ssw0rd789', DECRYPTION BY PASSWORD = 'TempDBKey1'); go --Ahora se puede eliminar la llave privada de la base de datos AdventureWorks2008R2. Porque el certificado y la llave privada estn respaldados, se puede hacer esto de forma segura. Use AdventureWorks ALTER CERTIFICATE PersonnelDataCert REMOVE PRIVATE KEY GO --Finalmente, limpia la base de datos tempdb: USE tempdb DROP CERTIFICATE PersonnelDataCert; GO

Practica 48

Practicas captulo 6

Seguridad de SQL Server


Utilice el siguiente cdigo de ejemplo para crear una columna cifrada en la tabla Sales.CreditCard. En este ejemplo, utilice la clave simtrica SalesKey1 y el certificado SalesCert, ambos creados anteriormente en este captulo:

ALTER TABLE Sales.CreditCard ADD EncryptedCardNumber varbinary(128); GO OPEN SYMMETRIC KEY SalesKey1 DECRYPTION BY CERTIFICATE SalesCert WITH PASSWORD = 'P@ssw0rd' UPDATE Sales.CreditCard SET EncryptedCardNumber = EncryptByKey(Key_GUID('SalesKey1'), CardNumber); GO CLOSE SYMMETRIC KEY SalesKey1; GO

Practica 49 Debido a que la clave simtrica se utiliz para encriptar los datos, tambin se utilizar para el desencriptado. Utilizando el ejemplo anterior como plantilla, puede usar los siguientes comandos para crear otra nueva columna que almacena los datos descifrados. Una instruccin SELECT est incluido que permitir ver los datos originales, los datos encriptados, y las columnas de datos desencriptados:

ALTER TABLE Sales.CreditCard ADD DecryptedCardNumber NVARCHAR(25); GO OPEN SYMMETRIC KEY SalesKey1 DECRYPTION BY CERTIFICATE SalesCert WITH PASSWORD = 'P@ssw0rd'; GO UPDATE Sales.CreditCard SET DecryptedCardNumber = DecryptByKey(EncryptedCardNumber); GO CLOSE SYMMETRIC KEY SalesKey1; GO Select TOP (10) CreditCardID, CardNumber AS Original, EncryptedCardNumber AS Encrypted, DecryptedCardNumber AS Decrypted FROM Sales.CreditCard; GO

Practica 50

Practicas captulo 6

Seguridad de SQL Server


No se tiene que crear una columna nueva para ver los datos desencriptados. La funcin de DecryptByKey puede ser ejecutado en una instruccin SELECT para ver los datos sin encriptar. El siguiente ejemplo muestra cmo:

OPEN SYMMETRIC KEY SalesKey1 DECRYPTION BY CERTIFICATE SalesCert WITH PASSWORD = 'P@ssw0rd'; GO SELECT CreditCardID, CardNumber,EncryptedCardNumber AS 'Encrypted Card Number', CONVERT(nvarchar, DecryptByKey(EncryptedCardNumber)) AS 'Decrypted Card Number' FROM Sales.CreditCard; GO CLOSE SYMMETRIC KEY SalesKey1; GO

Practica 51 Configuracin de TDE es un poco ms complejo que otros mtodos de cifrado, ya que hay ciertas dependencias que debe estar en su lugar antes de poder activarla. 1. En primer lugar, una clave maestra de base de datos debe existir en la base de datos master. 2. Por otra parte, se debe crear un certificado o instalar un certificado en la base de datos master que puede ser usado para encriptar el DEK, o usted puede utilizar una clave asimtrica de un proveedor de EKM. 3. Entonces se tendr que crear el DEK en la base de datos que ser encriptada. Por ltimo, habilitar la encriptacin en la base de datos. El siguiente script es un ejemplo de estos pasos:
USE master CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MyStrongP@ssw0rd'; GO CREATE CERTIFICATE AughtEightTDE WITH SUBJECT = 'TDE Certificate for the AUGHTEIGHT Server'; GO USE AdventureWorks CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = TRIPLE_DES_3KEY ENCRYPTION BY SERVER CERTIFICATE AughtEightTDE; GO ALTER DATABASE AdventureWorks SET ENCRYPTION ON; GO

Practica 52

Practicas captulo 6

Seguridad de SQL Server


La clave privada necesita ser desencriptada para firmar digitalmente el procedimiento almacenado.
CREATE PROCEDURE Sales.DisplaySomeVendors AS SELECT TOP (20) * FROM Purchasing.Vendor; GO USE AdventureWorks; ADD SIGNATURE TO Sales.DisplaySomeVendors BY CERTIFICATE SalesCert WITH PASSWORD = 'P@ssw0rd'; GO

Practica 53 En el ejemplo siguiente, se consulta la vista sys.crypt_properties para ver la firma digital asignado al procedimiento almacenado Sales.DisplaySomeVendors. A continuacin, puede modificar el procedimiento, consulte la vista de nuevo, y nota que el procedimiento ya no est firmado digitalmente.

SELECT * FROM sys.crypt_properties GO ALTER PROCEDURE Sales.DisplaySomeVendors AS SELECT TOP (10) * FROM Purchasing.Vendor GO SELECT * FROM sys.crypt_properties

Practicas captulo 6