Слайд 1Сравнительный анализ моделей безопасности в
SQL Server 2000 и SQL
Server 2005
Андрей Синкин
Системный инженер
Microsoft
Мартин Рахманов
Старший инженер-программист
Рексофт
Слайд 2Компоненты SQL Server
Реляционный сервер
Внутризапросный параллелизм
Распределенные фрагментированные представления
Службы тиражирования
Средства создания
резервных копий БД
Механизмы отказоустойчивости (Log Shipping, MSCS)
Графические средства администрирования и
отладки
Утилиты настройки и оптимизации
Службы репликации
Службы формирования отчетов (Reporting Services)
Cлужбы оповещения (Notification Services)
Службы анализа данных (OLAP, DataMining)
Инструменты управления (Management tools)
Программные интерфейсы доступа и разработки
ODBC, OLE DB, ADO, OLE DB for OLAP, ADO MD, ADOX, интерфейсы дистрибутора и согласования, SQL DMO, DSO, …
Слайд 3По своей природе веб-приложения электронной коммерции чувствительны к защите информации.
Это послужило причиной внесения в сервер SQL Server 2000 новых значительных
улучшений системы безопасности, не только обеспечивающих наиболее высокий в отрасли уровень безопасности, но также упрощающих применение средств, необходимых для достижения этого уровня. Прежде всего, SQL Server 2000 устанавливается по умолчанию с более высоким уровнем безопасности, при этом используются средства, встроенные в новейшую интегрированную систему безопасности операционной системы Windows 2000. Это упрощает и ускоряет изоляцию сервера в производственной среде.
SQL Server 2000 также включает в себя набор новых средств обеспечения безопасности: мощную и гибкую систему безопасности сервера на ролевой основе, профили БД и приложений, интегрированные средства аудита безопасности (отслеживающие 18 различных видов событий и дополнительные события), поддержку шифрования файлов и сетевых сообщений (включая SSL), а также поддержку протокола Kerberos и возможность делегирования полномочий. SQL Server 2000 прошел проверку в рамках программы правительства США Trusted Product Evaluation Program и Агентство национальной безопасности подтвердило его соответствие уровню безопасности C2
Слайд 4Редакции SQL Server
SQL Server 2005 Enterprise Edition
SQL Server 2005
Standart Edition
SQL Server 2005 Workgroup Edition
SQL Server 2005 Express Edition
(Free)
SQL Server 2005 Developer Edition
Слайд 5Безопасность
SQL Profiler - мониторинг событий класса безопасности
Add/drop SQL login, Add/remove
database user, Add/remove database role member, Password change, GRD -
statement perms, GRD – object perms, ...
Для каждого записывается время, пользователь, хост, успех/неудача и т.д.
Шифрация трафика для всех сетевых библиотек при помощи SSL / TLS
Поддержка делегирования на основе Kerberos, интеграция с Active Directory
Слайд 6Кластеризация
Cluster Service
(до 8-х узлов)
SQL Server 2005 EE
SQL Server 2005
EE
SQL Server 2005 EE
SQL Server 2005 EE
Общий дисковый массив
Fiber Channel
Слайд 7Передача журналов (Log Shipping)
Основной сервер
Резервные серверы (1..n)
1. BACKUP T-LOG
T-Log
Dump
3.
RESTORE
T-LOG
WITH STANDBY
T-Log
Dump
Сервер мониторинга
2. Log COPY (“Pulled”)
Запланированные по расписанию работы
в SQL Agent
Слайд 8Расширенный список параллельных операций
Операция создания индекса выполняется одновременно на нескольких
потоках
Линейная масштабируемость в зависимости от числа процессоров
Каждый поток получает свой
диапазон значений
На основе известной статистики распределения индексных ключей поддерживается баланс нагрузки между потоками
На заключительном этапе поддеревья объединяются в единый индекс
Параллельное сканирование по диапазонам
A-H
I-R
S-Z
A-Z
Поток
Слайд 9Индексированные представления
Обычное представление – всего лишь удобная форма записи сложного
оператора SELECT
Чтобы обращаться к нему как к якобы таблице
Хранится только
определение SQL-запроса, который выполняется всякий раз при обращении к представлению
Как только над представлением создается индекс, его результаты «материализуются»
И обновляются при модификации данных в исходных таблицах
Т.е. ведут себя как все приличные индексы
Представление может содержать агрегаты, операторы связывания таблиц или их комбинацию
Первый индекс над представлением должен быть
Кластерным -> для сохранения представления как таблицы
Уникальным -> для поддержки индекса актуальным при внесении изменений в таблицы
Кто выигрывает от индексированных представлений
Приложения, изобилующие запросами с многочисленными операторами связывания, группировки, агрегации
Т.е. OLAP-приложения
Оптимизатор может использовать индекс над представлением, даже если оно явно не фигурирует в запросе
Кто не выигрывает
Приложения, для которых характерны постоянные обновления в БД
Т.е. OLTP-приложения
Т.к. частая коррекция представлений снижает производительность
Группировки по высокоселективным полям
Т.к. размер представления будет ненамного меньше самой таблицы
Слайд 10Поддержка XML
SQL -> XML
SELECT … FOR XML
XML ->
SQL
OpenXML в T-SQL
UpdateGrams
XML-описание операций INSERT, UPDATE, DELETE
Bulk Load XML-файлов
в БД
XML View Mapper
Отображение XML-документа на таблицу
Слайд 11Содержание
Обзор модели безопасности SQL Server 2000
Ограничения модели безопасности и способы
их устранения
Рекомендации по настройке
Что нового в SQL Server 2005?
Новая модель
разрешений
Безопасность метаданных
Более гранулярные разрешения
Покрывающие разрешения
Разделение схемы и владельца
Контекст выполнения хранимого кода
Слайд 12Составляющие модели безопасности SQL Server 2000
Аутентификация
Учётные записи Windows и SQL
Server
Авторизация
Проверки разрешений на доступ к объектам и на выполнение операций
Аудит
Трассировка,
журналы сервера и системы
Слайд 13Модель безопасности SQL Server 2000
Запрос на сетевое подключение
Запрос на подключение
к SQL Server
Переход к БД и проверка прав
Попытка выполнить действия
Слайд 14Режимы доступа к SQL Server
Windows® Authentication
Доступ разрешен только с использованием
бюджета Windows NT®/ Windows 2000/2003
Обеспечивает единую регистрацию
Mixed security
Принимает доступ под
бюджетом Windows
Принимает доступ через авторизацию на SQL Server
Сложнее поддается защите
Слайд 15Учётная запись и Пользователь
Учётная запись (login) дает право на подключение
Хранится
в БД master
Относится к серверу в целом
Сама по себе не
дает прав
Исключение: Членство в фиксированной серверной роли
Пользователь (user) БД ассоциируется с правами
С ним ассоциируется схема (коллекция объектов БД)
Права назначаются пользователям БД
Действует в рамках конкретной БД
Слайд 16Роли SQL Server
Фиксированные роли сервера
Гибкое администрирование сервера
Фиксированные роли БД
Гибкое администрирование
БД
Пользовательские роли БД
Пользовательские комбинации прав
Прикладные роли
Ассоциация прав с приложением, а
не с пользователем
Слайд 17Разрешения
SQL Server поддерживает три команды для работы с разрешениями (Data
Control Language - DCL):
GRANT назначает разрешение
DENY запрещает разрешение
REVOKE отзывает сделанное
ранее при помощи GRANT или DENY действие
Слайд 18Содержание
Обзор модели безопасности SQL Server 2000
Ограничения модели безопасности и способы
их устранения
Рекомендации по настройке
Что нового в SQL Server 2005?
Новая модель
разрешений
Безопасность метаданных
Более гранулярные разрешения
Покрывающие разрешения
Разделение схемы и владельца
Контекст выполнения хранимого кода
Слайд 19Ограничения модели безопасности
SQL Server 2000 и способы их устранения
1.
Неограничен доступ к метаданным для любого пользователя БД. Решение: разрабатывать
приложение так, чтобы доступ к хранимому коду на стороне SQL Server не позволил злоумышленнику нанести существенный ущерб
2. Невозможно назначить пользователю БД разрешения на выполнение определённых команд без повышения уровня его привилегий. Решение: в SQL2k решение отсутствует
3. По умолчанию непривилегированный пользователь может выполнить ряд расширенных хранимых процедур, предоставляющих доступ к важной информации. Решение: отозвать разрешения на выполнение ряда хранимых процедур для встроенной группы public
4. Отсутствуют встроенные средства шифрования данных. Решение: использовать средства сторонних производителей
5. Нет возможности ограничить количество попыток соединения с сервером при указании неверной пары учётная запись/пароль для учётных записей SQL Server. Решение: использовать для соединения с сервером только учётные записи Windows, либо использовать средства сторонних производителей
Слайд 20Есть db_datareader и db_datawriter, а db_executor нет..
Слайд 21Содержание
Обзор модели безопасности SQL Server 2000
Ограничения модели безопасности и способы
их устранения
Рекомендации по настройке
Что нового в SQL Server 2005?
Новая модель
разрешений
Безопасность метаданных
Более гранулярные разрешения
Покрывающие разрешения
Разделение схемы и владельца
Контекст выполнения хранимого кода
Слайд 22Рекомендации по настройке
Установить самые свежие пакеты обновлений и исправлений
Отключить ненужные
сетевые протоколы
Включить протоколирование (аудит) неудачных попыток подключения
Разместить файлы данных на
файловой системе NTFS и настроить доступ к ним
Использовать только аутентификацию Windows
Указать сложные пароли для учётных записей SQL Server
Использовать непривилегированные (не административные, как минимум) учётные записи для запуска службы mssqlserver и службы SQL Server Agent.
Подробнее в разделе “SQLSecurity Checklist” на сайте www.sqlsecurity.com
Слайд 23Рекомендации по настройке
Microsoft Baseline Security Analyzer
Слишком много пользователей входят в
роль sysadmin
Права на выполнение CmdExec дано не только роли sysadmin
Пустой
или простой пароль
Администраторы Windows входят в роль sysadmin?
Некорректные разрешения (ACLs) на папки данных SQL Server
В логах установки остается пароль sa (sqlstp.log и др.)
Пользователь guest по умолчанию наделен излишними правами
SQL Server запущен на контроллере домена
Доступ на чтение определенных ключей реестра для группы Everyone
Наделение учетной записи для запуска SQL Server излишними полномочиями
Отсутствие пакетов исправлений и обновлений
http://www.microsoft.com/technet/security/tools/mbsahome.mspx
Service Pack Installation May Save Standard Security Password in File
Слайд 24Содержание
Обзор модели безопасности SQL Server 2000
Ограничения модели безопасности и способы
их устранения
Рекомендации по настройке
Что нового в SQL Server 2005?
Новая модель
разрешений
Безопасность метаданных
Более гранулярные разрешения
Покрывающие разрешения
Разделение схемы и владельца
Контекст выполнения хранимого кода
Слайд 25Database Maintenance
Backup and Restore Enhancements
Checksum Integrity Checks
Dedicated Administrator Connection
Dynamic AWE
Fast
Recovery
Highly-available Upgrade
Online Index Operations
Online Restore
Parallel DBCC
Parallel Index Operations
Management Tools
MDX Query
Editor
MDX Intellisense
T-SQL Intellisense
Version Control Support
XML/A
SQLCMD Command Line Tool
Performance Tuning
Profiler Enhancements
Profiling Analysis Services
Exportable Showplan
Exportable Deadlock Traces
Full-text Search
Indexing of XML Datatype
MDAC
Side by Side installation
Microsoft Installer base setup
Support for Active Directory Deployment
SQL Client .NET Data Provider
Server Cursor Support
Asynch
Security
All Permissions Grantable
Fine Grain Administration Rights
Separation of Users and Schema
SQL Server 2005
.NET Framework
Common Language Runtime Integration
User-defined Aggregates
User-defined Data Types
User-defined Functions
SQL Server In-Proc Data Provider
Extended Triggers
Data Types
File Stream Storage Attribute
Managed SQL Types
New XML Datatype
SQL Server Engine
New Message Service Broker
HTTP Support (Native HTTP)
Database Tuning Advisor
Enhanced Read ahead & scan
Extended Indexes
Multiple Active Result Sets
Persisted Computed Columns
Queuing Support
Snapshot Isolation Level
Scale Up Partitioning
VIA support
NUMA support
Database Failure and Redundancy
Fail-over Clustering (up to 8 node)
Enhanced Multi-instance Support
Database Mirroring
Database Viewpoints
XML
XQUERY Support (Server & Mid Tier)
XML Data Manipulation Language
FOR XML Enhancements
XML Schema (XSD) Support
MSXML 6.0 (Native)
XQuery Designer
Replication
Auto-tuning Replication Agents
Oracle Publication
Improved Blob Change Tracking
OLAP and Data Mining
Analysis Management Objects
Windows Integrated Backup and Restore
Web Services/XML for Analysis
DTS and DM Integration
Eight new DM algorithms
Auto Packaging and Deployment
Data Transformation Services
New Architecture (DTR + DTP)
Complex Control Flows
Control Flow Debugging
For Each Enumerations
Property Mappings
Full Data Flow Designer
Full DTS Control Flow Designer
Graphical Presentation of Pkg Execution
Immediate Mode and Project Mode
Package (Advanced) Deployment Tools
Custom Tasks and Transformations
Reporting Services
Multiple Output Formats
Parameters (Static, Dynamic, Hierarchical)
Bulk Delivery of Personalized Content
Support Multiple Data Sources
Sharepoint Support
Visual Design Tool
Charting, Sorting, Filtering, Drill-Through
Scheduling, Caching
Complete Scripting Engine
Scale Out architecture
XML Report Definition
Слайд 26Что нового в модели безопасности SQL Server 2005
Более жесткие настройки
по умолчанию
Сокрытие метаданных
Парольная политика
Новые разрешения и уровни разрешений
Разделение схемы и
владельца
Контекст выполнения хранимого кода
Безопасность .NET кода
Встроенное шифрование данных
Триггеры на DDL
Слайд 27Настройки по умолчанию
Требуется явное включение дополнительной функциональности
Microsoft .NET Framework
SQL
Service Broker Network Connectivity
Analysis Services http connectivity
Следующие службы находятся в
режиме запуска Manual
SQL Server Agent
full-text search
Новый сервис Data Transformation Services
При установке требуется задание пароля учётной записи sa
даже если сервер будет применять исключительно режим
аутентификации Windows
Слайд 28Сокрытие метаданных
Системные объекты теперь находятся в скрытой базе mssqlsystemresource
Catalog Views
– замена и расширение системных таблиц, данные из Catalog Views
фильтруются в зависимости от того, кто делает запрос
Разрешение VIEW DEFINITION позволяет обойти сокрытие метаданных и его можно выдать на трех уровнях: базы, схемы, объекта
Шифрование хранимого кода стало надёжным
Слайд 29Парольная политика
Для учётной записи SQL Server можно указать следующие параметры
команды CREATE/ALTER LOGIN:
Необходимость сменить пароль при первом соединении с сервером
(MUST_CHANGE)
Необходимость проверки срока действия пароля (CHECK_EXPIRATION)
Необходимость применения локальной парольной политики Windows (CHECK_POLICY)
CHECK_EXPIRATION и CHECK_POLICY работают полноценно на Windows 2003 Server и более новых системах, а на Windows 2000 это сводится к проверке жестко зашитых правил
Слайд 31Новые разрешения
Разрешения можно выдавать на четырех уровнях:
Сервера
Базы
Схемы
Объекта
Выданные разрешения уровня
сервера и уровня базы данных можно получить через опрос представлений
sys.server_permissions и sys.database_permissions
Слайд 32Содержание
Обзор модели безопасности SQL Server 2000
Ограничения модели безопасности и способы
их устранения
Рекомендации по настройке
Что нового в SQL Server 2005?
Новая модель
разрешений
Безопасность метаданных
Более гранулярные разрешения
Покрывающие разрешения
Разделение схемы и владельца
Контекст выполнения хранимого кода
Слайд 33Проблема неразделения схемы и пользователя
User
Database Object
управляется
User 2
Удаление пользователей может привести
к необходимости изменения кода приложения!
Слайд 34Удаление пользователя => изменение кода приложения
App1
App2
SELECT custID FROM User1.OrdersTable
Изменение App1
Изменение
App2
OrdersTable
InsertOrderProc
SELECT custID FROM User2.OrdersTable
Exec User1.InsertOrderProc (@orderid)
Exec User2.InsertOrderProc (@orderid)
Пользователь = User1
SCHEMA = User1
Пользователь = User2
SCHEMA = User2
Слайд 35Разделение схемы и владельца
База данных может содержать множество схем
Каждая схема
имеет только одного владельца – пользователя или роль
Каждый пользователь имеет
схему по умолчанию
Большинство объектов БД находятся в схемах
Создание объекта внутри схемы требует полномочий CREATE и полномочий ALTER или CONTROL на эту схему
Цепочка владения по-прежнему основана на владельцах, а не на схемах
владеет
имеет схему по умолчанию
владеет
владеет
Схема 3
База данных
Слайд 36Разделение схемы и владельца
User
Database Object
Schema
содержится в
управляется
управляется
User 2
управляется
Удаление пользователя не потребует
изменения кода приложения
Слайд 37Удаление пользователя не
приводит к изменению кода приложения
App1
App2
SELECT custID FROM
User1.OrdersTable
OrdersTable
InsertOrderProc
Exec User1.InsertOrderProc (@orderid)
Владелец = User1
SCHEMA = User1
Владелец = User2
SCHEMA = User1
Слайд 38Разделение схемы и владельца
Разделение владельцев (principals) и схем
Владелец (Principal)
Сущность от
которой защищают объекты
Доступны через представление sys.database_principals
Схема (Schema)
Контейнер объектов; 3-я часть
полного наименования
Доступны через представление sys.schemas
Понятие схемы по умолчанию
Присуще пользователю или роли приложения
Используется при разрешении имен; механизм для поиска объектов
Содержится в представлении sys.database_principals
Удаление пользователя не требует изменения кода приложения
Слайд 39
Schema
содержится в
User 2
управляется
Default Schema
User1
Default Schema S1
User2
User3
Разделение схемы и владельца
Схема по
умолчанию дает дополнительный контроль над разрешением имен
Слайд 40Схема по умолчанию
Используется для разрешения имен
Не всем пользователям нужно управлять
схемами
Один и тот же процесс разрешения имён для нескольких пользователей
Схема
dbo может является не обязательно единственной общей схемой в плане разрешения имен
Зачем это нужно?
для того, чтобы объект мог быть доступен из любого контекста, его не обязательно создавать в схеме dbo
Разрешение создания объектов в схеме dbo может привести к некоторому риску безопасности при использовании цепочек владения
Слайд 41Содержание
Обзор модели безопасности SQL Server 2000
Ограничения модели безопасности и способы
их устранения
Рекомендации по настройке
Что нового в SQL Server 2005?
Новая модель
разрешений
Безопасность метаданных
Более гранулярные разрешения
Покрывающие разрешения
Разделение схемы и владельца
Контекст выполнения хранимого кода
Слайд 42
User 3
Select Perms
проверяются для User3
Execute Perms проверяются для User3
User1.Proc1
User1.T1
Execute
Perms проверяются для User3
Нет проверки Perms
для User3
‘EXECUTE AS ‘X’
’
Execute Perms проверяются для User3
Select Perms проверяются для ‘X’.
а не для User3
SQL 2005
SQL 2000
Контекст выполнения хранимого кода
Слайд 43Возможность указывать контекст выполнения
процедуры, функции, триггеры
Цепочка владения теперь не является
единственным механизмом упрощающим назначение прав
Правила цепочек владения по-прежнему применимы
Разрешения проверяются
для тек.контекста
В отличие от цепочек владения применимо и к командам DDL
Применимо и к динамическому SQL
Контекст выполнения хранимого кода
Слайд 44Контекст выполнения хранимого кода
Для хранимых процедур и определяемых пользователем функций
(кроме inline table-valued) предусмотрено четыре выражения для указания контекста выполнения,
т.е. пользователя, который будет использоваться при проверке разрешений на объекты, на которые ссылается процедура или функция.
CALLER – выполнять под вызвавшим пользователем
SELF – под создавшим процедуру
USER = username - под указанным пользователем
OWNER – под текущим владельцем процедуры
Слайд 45По умолчанию – EXECUTE AS CALLER. Для указания имени пользователя
username (отличного от своего) необходимо выполнение одного из условий:
Входить в
фиксированную серверную роль sysadmin
Входить в фиксированную роль базы данных db_owner
Обладать разрешением на имперсонализацию учетной записи, соответствующей пользователю username.
Можно использовать EXECUTE AS USER = username в качестве “обертки” команд, разрешения на которые нельзя передавать. Например так можно делегировать TRUNCATE.
Контекст выполнения хранимого кода
Слайд 46Создание набора разрешений с помощью EXECUTE AS
Сценарий:
Database Admin хочет дать
возможность делать усечение (truncate) ряда таблиц каждую ночь.
Проблема:
Truncate непередаваемое разрешение
Минимальное
покрывающее разрешение - ALTER, но оно дает больше прав чем нужно
Решение: нам поможет EXECUTE AS!
Создать процедуру, которая усекает нужные таблицы
Указать в строке execute as пользователя с правами ALTER
Дать разрешение на выполнение процедуры нужному пользователю
Результат:
Мы только что сделали Truncate назначаемым разрешением!
Слайд 47Безопасность .NET кода
Для .NET сборок предусмотрено указание одного из трех
уровней безопасности при загрузке в SQL Server командой CREATE ASSEMBLY:
SAFE
- доступ ко внешним ресурсам не допускается
EXTERNAL_ACCESS – допускается доступ к файлам, сетевым ресурсам, реестру, переменным окружения
UNSAFE - доступ ко всем ресурсам, в том числе к неуправляемому коду
Если сборка в процессе работы выйдет за указанные при ее загрузке пределы, то CLR сгенерирует исключение и выполнение прекратится.
Слайд 48Поддержка криптографии
В SQL Server 2005 есть встроенные средства шифрования, цифровой
подписи и верификации
Поддерживаемые типы ключей:
Симметричные ключи
RC4, RC2, DES, AES
Асимметричные ключи
Rivest-Shamir-Adelman
Encryption (RSA)
Слайд 50Триггеры на DDL
Появилась возможность создавать триггеры для DDL, что
позволяет
вести расширенный аудит. Создаются на базу
или сервер, не могут
быть INSTEAD OF.
Слайд 51Конечные точки (Endpoints)
Абстракция номера порта, транспортного протокола и принципала
Как происходит
соединение:
Клиент указывает номер порта
Сервер вычисляет Endpoint, который соответствует указанному порту
Сервер
проверят, что этот Endpoint правильно сконфигурирован
Сервер проверят, что указанные принципал имеет разрешение на соединение с данным Endpoint
Слайд 52Человеку свойственно ошибаться
SQL Injection
Как избежать:
Отказаться от динамических запросов в
пользу хранимых процедур или параметризованных запросов.
Использовать регулярные выражения для проверки
пользовательского ввода до того, как он будет отправлен в СУБД.
Использовать функции для экранирования специальных символов
Проверка пользовательского ввода
Соответствие типов
Никогда не строить T-SQL команды непосредственно из введенных пользователем данных
Использовать процедуры для проверки ввода либо вынести проверку на уровень приложения
Никогда не принимать строки, участвующие в создании имени файла и содержащие: AUX, CLOCK$, COM1, .., COM8, CON, CONFIG$, LPT1, .., LPT8, NUL и PRN
Слайд 53Подведение итогов
SQL Server 2000 – промышленная СУБД с надежным механизмом
контроля доступа к информации
SQL Server 2005 – упростит жизнь разработчикам
и администраторам при создании и поддержке надежных и безопасных приложений
Слайд 54Ресурсы
Для разработчиков и профессионалов в IT
Официальная страница о SQL
Server 2005
http://www.microsoft.com/sql/2005
Один из самых интересных сайтов, посвященных безопасности SQL Server
http://www.sqlsecurity.com
Российское
сообщество по SQL Server
http://www.sql.ru
Каждый месяц в Microsoft Russia проводится семинар, посвященный SQL Server (уже 18 - в Москве, 4 – в Питере, до 70 участников)
Слайд 55© 2004 Microsoft Corporation. All rights reserved.
This presentation is for
informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED,
IN THIS SUMMARY.