Cifrado de tablas de database en SQL Server 2008

Tengo una aplicación de Windows que usa una database en SQL Server 2008.

No quiero que los usuarios vean las tablas de la database.

¿Cómo puedo encriptar tablas en mi database?

Tienes diferentes opciones aquí.

  • Puede usar encriptación simétrica para sus datos:

    CREAR VENTAS DE MESA (…)

Crear key simétrica:

CREATE CERTIFICATE cert_sales WITH SUBJECT = N'Sales certificate', START_DATE = N'2009-01-01', EXPIRY_DATE = N'2018-12-31'; CREATE SYMMETRIC KEY symkey_sales WITH ALGORITHM = AES_256, ENCRYPTION BY CERTIFICATE cert_sales 

Cifrar datos:

 TRUNCATE TABLE sales; OPEN SYMMETRIC KEY symkey_sales DECRYPTION BY CERTIFICATE cert_sales; INSERT INTO sales() SELECT a, ENCRYPTBYKEY(Key_Guid(N'symkey_sales'), B) FROM T2; CLOSE SYMMETRIC KEY symkey_sales; 

Descifrar datos:

 OPEN SYMMETRIC KEY symkey_sales DECRYPTION BY CERTIFICATE cert_sales; SELECT a, CAST(DecryptByKey(B) as nvarchar(100)) FROM sales; CLOSE SYMMETRIC KEY symkey_sales; 
  • Puede usar encriptación asimétrica para sus datos
  • Puede usar Transparrent Data Encryption para cifrar todos los files de la database:

Crear key maestra:

 USE master go CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'My$Strong$Password$123' 

Crear certificate:

 CREATE CERTIFICATE DEK_EncCert WITH SUBJECT = 'DEK Encryption Certificate' 

Crear DEK:

 USE MySecretDB go CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE DEK_EncCert 

Encienda el encryption:

 ALTER DATABASE MySecretDB SET ENCRYPTION ON 
  • Puede usar BitLocker: completar el encryption de volumen

El encryption no es útil: el encryption a nivel de SQL Server encripta los files. Los datos son visibles una vez que inicie session.

La única solución adecuada se llama "progtwigción". Básicamente, vaya al cliente / server y no haga que los usuarios se conecten a la database.

Alternativamente, podría usar permissions en las tablas + una contraseña de aplicación para elevar los derechos de la aplicación (no del usuario), pero eso tampoco es seguro (porque debe colocar la contraseña en algún lugar).

Los usuarios no verán el contenido de las tablas si no les otorgas el permiso SELECT. Esto significa que NO deben conectarse como miembros del grupo dbo. En su lugar, cree uno o más grupos para los diversos grupos de security de usuarios y asigne permissions a los objects de la database para que pueda acceder a esos grupos.

Tenga en count que si tiene un grupo de objects que tendrán permissions colectivos para uno o más grupos de usuarios, puede crear estos grupos en un esquema separado y otorgar permiso al grupo de usuarios para acceder al esquema completo. Esto hace que la autorización sea un asunto único al agregar objects de database al esquema.