Шифрование таблиц базы данных в SQL Server 2008 - PullRequest
4 голосов
/ 08 декабря 2011

У меня есть приложение Windows, использующее базу данных в SQL Server 2008.

Я не хочу, чтобы пользователи видели таблицы базы данных.

Как можно шифровать таблицыв моей базе данных?

Ответы [ 3 ]

7 голосов
/ 08 декабря 2011

У вас есть разные варианты здесь.

  • Вы можете использовать симметричное шифрование для ваших данных:

    CREATE TABLE sales ( ... )

Создать симметричный ключ:

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

Шифрование данных:

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;

Расшифровка данных:

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;
  • Вы можете использовать асимметричное шифрование для ваших данных
  • Вы можете использовать Transparrent Data Encryption для шифрования всех файлов базы данных:

Создать мастер-ключ:

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

Создать сертификат:

CREATE CERTIFICATE DEK_EncCert WITH SUBJECT = 'DEK Encryption Certificate'

Создать DEK:

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

Включить шифрование:

ALTER DATABASE MySecretDB SET ENCRYPTION ON
  • Вы можете использовать BitLocker - полное шифрование тома
3 голосов
/ 08 декабря 2011

Шифрование не поможет - шифрование файлов выполняется на уровне SQL Server. Данные видны после входа в систему.

Единственное правильное решение называется «программирование». В основном, клиент / сервер и пользователи не подключаются к базе данных.

В качестве альтернативы вы можете использовать разрешения для таблиц + пароль приложения для повышения прав для приложения (не пользователя), но это тоже небезопасно (потому что вам нужно где-то поместить пароль).

0 голосов
/ 08 декабря 2011

Пользователи не увидят содержимое таблиц, если вы не предоставите им разрешение SELECT. Это означает, что они НЕ должны подключаться как члены группы dbo. Вместо этого создайте одну или несколько групп для различных групп безопасности пользователей и назначьте разрешения для объектов базы данных, к которым вы хотите, чтобы они имели доступ к этим группам.

Обратите внимание, что если у вас есть группа объектов, которые будут коллективно предоставлены одной или нескольким группам пользователей, вы можете создать эти группы в отдельной схеме , а затем предоставить группе пользователей разрешение на доступ ко всему схемы. Это делает разрешение одноразовым делом при добавлении объектов базы данных в схему.

...