Смекни!
smekni.com

работа (стр. 3 из 5)

Подписание модулей с помощью сертификатов

Подписание модулей с помощью сертификатов в SQL Server дает возможность подписывать модули в базе данных, например хранимые процедуры, функции, триггеры и сборки. Это позволяет временно повышать уровень привилегий без переключения контекста пользователя. Кроме того, фальсифицировать или изменить сертификат нельзя (в противном случае он станет недействительным).

Безопасность в SQL Server 2008

В SQL Server 2008 появилось немало новых функций и возможностей, повышающих общий уровень безопасности баз данных. Среди них ключевые возможности шифрования и проверки подлинности, а также новая система аудита, позволяющая составлять отчеты по действиям пользователей и обеспечивать соблюдение всех норм и требований.[2]

Первое, на что обращаешь внимание, — это отсутствие средства «Настройка контактной зоны», которое присутствовало в SQL Server 2005. Параметры протокола, которые раньше были доступны в этом средстве, теперь перенесены в диспетчер конфигураций. Включение и выключение функций теперь выполняется через новую среду управления на основе политик, реализованную в SQL Server 2008.

Усовершенствования в области шифрования

В системе шифрования были сделаны два серьезных изменения. Во-первых, ключи теперь могут храниться на внешних аппаратных модулях сторонних разработчиков. Во-вторых, данные, хранящиеся в SQL Server, можно шифровать с использованием метода, понятного для приложений, подключающихся к базе данных. Это означает, что администратор может зашифровать все содержимое базы данных, не меняя при этом код приложения.

Первое нововведение стало возможным благодаря функции расширенного управления ключами (EKM) — она имеется в SQL Server 2008 Enterprise, Developer и Evaluation. EKM зарегистрировать в SQL Server системы управления корпоративными ключами и аппаратные модули безопасности (HSM), разработанные сторонними компаниями. После регистрации устройства пользователь может хранить ключи на этом модуле.

Кроме того, производитель модуля может добавить дополнительные возможности шифрования (например, задать правила устаревания и замены ключей). В некоторых конфигурациях это позволяет закрыть доступ к данным тем администраторам, которые не являются членами группы администраторов системы. Криптографические инструкции T-SQL выполняют шифрование и расшифровку данных с применением ключей, хранящихся на внешнем EKM-устройстве.

Еще одна новая функция, прозрачное шифрование, позволяет шифровать файлы баз данных, не меняя код приложений. Шифрование и расшифровка входных и выходных данных и журналов происходит в режиме реального времени. При этом используется ключ шифрования баз данных (DEK), хранящийся в загрузочной записи базы данных: так его можно использовать при восстановлении. Ключ DEK защищен сертификатом, которых находится в основной базе данных сервера. Схема на рис. 1 демонстрирует архитектуру, обеспечивающую прозрачное шифрование данных.

Рисунок 1 Архитектура прозрачного шифрования данных

Все описанное помогает защитить статические данные. Существуют различные способы повышения безопасности баз данных: шифрование, настройка брандмауэра на серверах баз данных. Но дело в том, что физический носитель, на котором хранятся базы данных (в том числе и ленты с резервными копиями) подвергаются опасностям еще и другого характера. Злоумышленник может украсть сам носитель, а это, возможно, позволит ему получить доступ к информации, имеющейся на нем.

Используя прозрачное шифрование, можно зашифровать конфиденциальные данные и защитить ключи при помощи сертификата. Тем самым будет обеспечено соблюдение многих законодательных требований и отраслевых рекомендаций по обеспечению безопасности данных.

Функции прозрачного шифрования данных позволяют применять алгоритмы AES и 3DES. Шифрование файла базы данных выполняется на уровне страницы, причем страница шифруется перед записью на диск, а потом расшифровывается во время считывания в память. Для шифрования резервных файлов тоже используется ключ шифрования базы данных.

Для расшифровки базы данных необходимо иметь доступ к сертификату или асимметричному ключу, использованному при шифровании. В противном случает базу данных восстановить не удастся. Ключи следует хранить, пока резервная копия не перестанет использоваться.

Инструкции по шифрованию

А. Обычное симметричное шифрование

В следующем коде показано, как зашифровать столбец с помощью симметричного ключа.[3]

USE AdventureWorks;

GO

--If there is no master key, create one now.

IF NOT EXISTS

(SELECT * FROM sys.symmetric_keys WHERE symmetric_key_id = 101)

CREATE MASTER KEY ENCRYPTION BY

PASSWORD = '23987hxJKL969#ghf0%94467GRkjg5k3fd117r$$#1946kcj$n44nhdlj'

GO

CREATE CERTIFICATE HumanResources037

WITH SUBJECT = 'Employee Social Security Numbers';

GO

CREATE SYMMETRIC KEY SSN_Key_01

WITH ALGORITHM = AES_256

ENCRYPTION BY CERTIFICATE HumanResources037;

GO

USE [AdventureWorks];

GO

-- Create a column in which to store the encrypted data.

ALTER TABLE HumanResources.Employee

ADD EncryptedNationalIDNumber varbinary(128);

GO

-- Open the symmetric key with which to encrypt the data.

OPEN SYMMETRIC KEY SSN_Key_01

DECRYPTION BY CERTIFICATE HumanResources037;

-- Encrypt the value in column NationalIDNumber with symmetric

-- key SSN_Key_01. Save the result in column EncryptedNationalIDNumber.

UPDATE HumanResources.Employee

SET EncryptedNationalIDNumber = EncryptByKey(Key_GUID('SSN_Key_01'), NationalIDNumber);

GO

-- Verify the encryption.

-- First, open the symmetric key with which to decrypt the data.

OPEN SYMMETRIC KEY SSN_Key_01

DECRYPTION BY CERTIFICATE HumanResources037;

GO

-- Now list the original ID, the encrypted ID, and the

-- decrypted ciphertext. If the decryption worked, the original

-- and the decrypted ID will match.

SELECT NationalIDNumber, EncryptedNationalIDNumber

AS 'Encrypted ID Number',

CONVERT(nvarchar, DecryptByKey(EncryptedNationalIDNumber))

AS 'Decrypted ID Number'

FROM HumanResources.Employee;

GO

Б. Симметричное шифрование со средством проверки подлинности

В следующем коде показано, как зашифровать столбец с помощью симметричного шифрования со средством проверки подлинности.

USE AdventureWorks;

--If there is no master key, create one now.

IF NOT EXISTS

(SELECT * FROM sys.symmetric_keys WHERE symmetric_key_id = 101)

CREATE MASTER KEY ENCRYPTION BY

PASSWORD = '23987hxJKL95QYV4369#ghf0%lekjg5k3fd117r$$#1946kcj$n44ncjhdlj'

GO

CREATE CERTIFICATE Sales09

WITH SUBJECT = 'Customer Credit Card Numbers';

GO

CREATE SYMMETRIC KEY CreditCards_Key11

WITH ALGORITHM = AES_256

ENCRYPTION BY CERTIFICATE Sales09;

GO

-- Create a column in which to store the encrypted data.

ALTER TABLE Sales.CreditCard

ADD CardNumber_Encrypted varbinary(128);

GO

-- Open the symmetric key with which to encrypt the data.

OPEN SYMMETRIC KEY CreditCards_Key11

DECRYPTION BY CERTIFICATE Sales09;

-- Encrypt the value in column CardNumber using the

-- symmetric key CreditCards_Key11.

-- Save the result in column CardNumber_Encrypted.

UPDATE Sales.CreditCard

SET CardNumber_Encrypted = EncryptByKey(Key_GUID('CreditCards_Key11')

, CardNumber, 1, HashBytes('SHA1', CONVERT( varbinary

, CreditCardID)));

GO

-- Verify the encryption.

-- First, open the symmetric key with which to decrypt the data.

OPEN SYMMETRIC KEY CreditCards_Key11

DECRYPTION BY CERTIFICATE Sales09;

GO

-- Now list the original card number, the encrypted card number,

-- and the decrypted ciphertext. If the decryption worked,

-- the original number will match the decrypted number.

SELECT CardNumber, CardNumber_Encrypted

AS 'Encrypted card number', CONVERT(nvarchar,

DecryptByKey(CardNumber_Encrypted, 1 ,

HashBytes('SHA1', CONVERT(varbinary, CreditCardID))))

AS 'Decrypted card number' FROM Sales.CreditCard;

GO

Усовершенствования в области проверки подлинности

Kerberos — это сетевой протокол, предоставляющий высоконадежное средство взаимной проверки подлинности между клиентом и сервером (или двумя участниками системы безопасности). Kerberos помогает снизить число уязвимостей в случае атак с приманкой и попыток перехвата «посредником». Этот протокол имеет отношение к проверке подлинности Windows® NTLM, но он надежнее и производительнее.[4]

Чтобы использовать Kerberos для взаимной проверки подлинности, необходимо, чтобы экземпляр SPN, относящийся к SQL Server, был зарегистрирован в Active Directory®, а драйвер клиента при подключении должен предоставить зарегистрированный SPN. В SQL Server 2008 проверка подлинности Kerberos была распространена на все сетевые протоколы, включая TCP, именованные каналы, общую память и адаптеры VIA. По умолчанию драйвер клиента выводит нужный SPN из экземпляра SQL Server, к которому он подключается. SPN можно также указать явным образом в параметрах строки подключения: это повышает уровень безопасности и контроля, упрощает поиск и устранение неполадок.

Службы IIS перестали использоваться для доступа к веб-службам ASP.NET, диспетчеру отчетов и серверу отчетов. В SQL Server 2008 службы отчетов обрабатывают все запросы на проверку подлинности, проводя их через новую специальную подсистему, поддерживающую как проверку подлинности Windows, так и нестандартные варианты проверки.

Службы отчетов теперь размещают Microsoft® .NET Framework и технологии ASP.NET, встроенные в среду CLR SQL Server, кроме того, они используют возможности HTTP.SYS, предлагаемые в операционной системе. Сервер отчетов включает в себя прослушиватель HTTP, который принимает запросы, направленные на URL-адрес и порт, указанные во время настройки сервера. Резервированием и регистрацией URL теперь управляет непосредственно сервер отчетов (через HTTP.SYS).

Аудит системы безопасности

Подсистема аудита — это новая функция SQL Server, позволяющая проверять события ядра базы данных и настраивать параметры проверки. Для записи данных аудита используются расширенные события. В подсистеме имеются средства и процессы, которые необходимы для того, чтобы проводить, сохранять и просматривать конфигурации аудита для различных серверов и объектов баз данных.[5]

Подсистема аудита SQL Server работает быстрее, чем функция трассировки, а среда SQL Server Management Studio упрощает создание и контроль журналов аудита. Теперь можно проводить более подробные проверки: отслеживать инструкции SELECT, INSERT, UPDATE, DELETE, REFERENCES и EXECUTE для отдельных пользователей. Более того, подсистема аудита польностью поддерживает инструкции T-SQL CREATE SERVER AUDIT и CREATE SERVER AUDIT SPECIFICATION, а также связанные с ними инструкции ALTER и DROP.