Windows Live ID Добро пожаловать на IT Community 
Регистрация

Стань частью ИТ-сообщества

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

Присоединяйся к нам!

Кирилл Клёмин

Den K

Алексей Кибкало


Все участники

12 января 2009 г. - Posts

Просмотров: 991
Ответов: 0

Рекомендации по установкам для создания объектов баз данных Microsoft SQL Server

отправлено 12 января 2009 г. 14:13 участником gladchenko

    SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

    -- Если всё совсем уж плохо - UNCOMMITTED

    SET NOCOUNT -- меньше трафик

       ,QUOTED_IDENTIFIER -- стандартизация кавычек

       ,ANSI_NULLS -- стандартизация сравнения с NULL

       ,ANSI_WARNINGS -- вывод ошибок агрегации NULL и деления на 0

       ,ANSI_PADDING -- стандартизация оконечных пробелов и нулей

       ,ARITHABORT -- стандартизация отката транзакций

       ,XACT_ABORT -- стандартизация отката транзакций

       ,CONCAT_NULL_YIELDS_NULL -- сцепление с NULL

    ON;

    SET NUMERIC_ROUNDABORT OFF; -- стандартизация потери точности GO

    
    

     

NOCOUNT

Если инструкция принимает значение ON, то количество строк (которые обработаны инструкцией Transact-SQL) не возвращается. Запрещает всем инструкциям хранимой процедуры отправлять клиенту сообщения DONE_IN_PROC. Если запросы выполняются из программы, то в результирующем наборе таких инструкций Transact-SQL как: SELECT, INSERT, UPDATE и DELETE значение: "nn rows affected" (строк обработано: nn) отображаться не будет. Для хранимых процедур с несколькими инструкциями, не возвращающих большое количество строк данных, это может значительно повысить производительность за счет существенного снижения объема сетевого трафика. Инструкция SET NOCOUNT устанавливается во время исполнения, а не на этапе синтаксического анализа.

QUOTED_IDENTIFIER

ON по умолчанию. Идентификаторы можно заключать в двойные кавычки, а литералы должны быть разделены одинарными кавычками. Все строки, разделенные двойными кавычками, рассматриваются как идентификаторы объектов. Если в именах объектов базы данных используются зарезервированные ключевые слова, то параметру SET QUOTED_IDENTIFIER должно быть присвоено значение ON. При создании или изменении индексов в вычисляемых столбцах или индексированных представлениях параметру SET QUOTED_IDENTIFIER должно быть присвоено значение OFF. Драйвер ODBC и поставщик OLE DB для собственного клиента SQL Server при соединении автоматически присваивают параметру QUOTED_IDENTIFIER значение ON. По умолчанию параметр SET QUOTED_IDENTIFIER имеет значение OFF для соединений из приложений DB-Library. Когда создается хранимая процедура, параметры SET QUOTED_IDENTIFIER и SET ANSI_NULLS фиксируются и используются для последующих вызовов этой хранимой процедуры. При выполнении операций внутри хранимой процедуры значение SET QUOTED_IDENTIFIER не меняется. Если параметр SET ANSI_DEFAULTS имеет значение ON, параметр SET QUOTED_IDENTIFIER включается. Параметр SET QUOTED_IDENTIFIER устанавливается во время синтаксического анализа. Настройка на время синтаксического анализа означает, что если инструкция SET присутствует в пакете или хранимой процедуре, она выполняется вне зависимости от того, достигает ли выполнение кода фактически этой точки. Кроме того, инструкция SET выполняется до выполнения любых инструкций.

ANSI_NULLS

Стандарт SQL-92 требует, чтобы операторы "=" и "<>" при использовании со значениями NULL всегда возвращали FALSE. SQL Server интерпретирует пустую строку как один пробел или действительно пустую строку в зависимости от настройки уровня совместимости. Директива SET ANSI_NULLS ON влияет только на сравнения, где в качестве одного из операндов используется NULL в виде переменной или литеральной константы. Если оба операнда представляют собой столбцы или составные выражения, эта настройка не влияет на результат сравнения. Для хранимых процедур SQL Server использует значение настройки SET ANSI_NULLS, которое действовало в момент создания процедуры. Значение SET ANSI_NULLS должно быть равно ON при выполнении распределенных запросов. SET ANSI_NULLS также должно быть ON при создании или изменении индексов вычисляемых столбцов или индексированных представлений (это один из семи обязательных для этого параметров директивы SET: ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, QUOTED_IDENTIFIER и CONCAT_NULL_YIELDS_NULL должны иметь значение ON, а параметр NUMERIC_ROUNDABORT - значение OFF). Драйвер ODBC и поставщик OLE DB собственного клиента SQL Server при соединении автоматически устанавливают параметру ANSI_NULLS значение ON. Для соединений из приложений DB-Library значением по умолчанию для параметра SET ANSI_NULLS является OFF. Установка значения SET ANSI_NULLS происходит во время запуска или выполнения, но не во время синтаксического анализа.

ANSI_WARNINGS

Формирует предупреждающее сообщение, если значения NULL появляются в статистических функциях: SUM, AVG, MAX, MIN, STDEV, STDEVP, VAR, VARP или COUNT. Инструкции INSERT или UPDATE, выполнение которой привело к ошибке деления на ноль или арифметического переполнения, в соответствии со стандартом SQL-92 будут откачены и сформировано сообщение об ошибке. Конечные пробелы игнорируются для символьных столбцов, а конечные значения NULL игнорируются для бинарных столбцов. Значение ANSI_WARNINGS игнорируется при передаче аргументов хранимой процедуре или пользовательской функции, а также при объявлении и настройке переменных в инструкции пакетных заданий. Например, если объявить переменную как char(3), а затем присвоить ей значение длиннее трех символов, данные будут усечены до размера переменной, а инструкция INSERT или UPDATE завершится без ошибок. Параметр SET ANSI_WARNINGS должен иметь значение ON при создании или изменении индексов, основанных на вычисляемых столбцах или индексированных представлениях. Параметр ANSI_WARNINGS должен быть установлен в ON для выполнения распределенных запросов. Драйвер ODBC собственного клиента и поставщик OLE DB для собственного клиента SQL для SQL Server при соединении автоматически устанавливает параметр ANSI_WARNINGS в значение ON. Параметр SET ANSI_WARNINGS устанавливается во время выполнения, а не во время синтаксического анализа. Если значение параметра SET ARITHABORT или SET ARITHIGNORE установлено в OFF, а значение параметра SET ANSI_WARNINGS установлено в ON, то SQL Server возвращает сообщение об ошибке при обнаружении ошибок деления на ноль и переполнения.

ANSI_PADDING

Контролирует способ хранения значений, которые короче, чем заданный размер поля, а также способ хранения в полях типов: char, varchar, binary и varbinary таких значений, которые имеют оконечные пробелы. Производитель рекомендует ON. Значение параметра инструкции SET ANSI_PADDING не оказывает влияния на значения типа nchar, nvarchar, ntext, text, image, а также на большие значения, для которых SET ANSI_PADDING всегда ON. Это означает, что оконечные пробелы и нули не отбрасываются. SET ANSI_PADDING ON необходимо при создании или изменении индексов по вычисляемым столбцам или индексированным представлениям. Драйвер ODBC и поставщик OLE DB для собственного клиента SQL Server при соединении автоматически устанавливают параметр ANSI_WARNINGS в значение ON. Значение параметра SET ANSI_PADDING устанавливается во время выполнения или запуска, а не во время синтаксического анализа.

ARITHABORT

Ошибка в транзакции приведёт к её откату, а не к предупреждению. Если параметры SET ARITHABORT и SET ANSI WARNINGS установлены в ON, ошибка приведёт к завершению запроса. Если SET ARITHABORT ON а SET ANSI WARNINGS OFF, ошибка прервёт пакет. Установка параметра SET ARITHABORT происходит при запуске или во время исполнения, но не во время синтаксического анализа. SET ARITHABORT ON необходимо при создании или изменении индексов по вычисляемым столбцам или индексированным представлениям.

XACT_ABORT

Если произошла ошибка при исполнении инструкции Transact-SQL, транзакция будет откачена целиком. Инструкция SET XACT_ABORT не влияет на компиляцию ошибок (например, синтаксических). Параметр XACT_ABORT должен иметь значение ON для инструкций изменения данных в явных или неявных транзакциях, применяющихся к большинству поставщиков OLE DB, включая SQL Server. Единственным случаем, когда этот параметр не требуется, является поддержка поставщиком вложенных транзакций. Дополнительные сведения см. в разделе Распределенные запросы и распределенные транзакции. Значение параметра XACT_ABORT устанавливается во время выполнения, а не во время синтаксического анализа. Включение этого параметра позволяет не заботиться об обработке ошибок при вставках и изменениях.

CONCAT_NULL_YIELDS_NULL

При этой установке, сцепление значения NULL со строкой дает в результате NULL. Настройка SET CONCAT_NULL_YIELDS_NULL устанавливается во время выполнения или запуска, но не во время синтаксического анализа. SET CONCAT_NULL_YIELDS_NULL ON необходимо при создании или изменении индексов по вычисляемым столбцам или индексированным представлениям.

NUMERIC_ROUNDABORT

Потеря точности не приводят к формированию сообщений об ошибках, а результат округляется с точностью столбца или переменной, в которых будет сохранен. Потеря точности происходит, когда выполняется попытка сохранения значения с фиксированной точностью в столбце или переменной с меньшей точностью. Если параметру SET NUMERIC_ROUNDABORT присвоено значение ON, параметр SET ARITHABORT определяет серьезность формируемой ошибки. В следующей таблице показано влияние этих двух параметров на сообщения об ошибках при потере точности. Значение параметра SET NUMERIC_ROUNDABORT задается на этапе выполнения или запуска, но не на этапе синтаксического анализа. При создании или изменении индексов вычисляемых столбцов или индексированных представлений параметр SET NUMERIC_ROUNDABORT должен принимать значение OFF.

Общие рекомендации

    
    

     

    1. Избегите использования звёздочки (*) в SELECT, всегда перечисляйте только необходимые столбцы.
    2. В инструкции INSERT всегда указывайте имена столбцов.
    3. Всегда присваивайте таблицам (а при необходимости и столбцам) псевдонимы - это позволяет избежать путаницы. При использовании псевдонима столбца обязательно добавляйте ключевое слово AS.
    4. При ссылке на объект всегда указывайте схему (владельца).
    5. Избегите использования non-SARGable предикатов ("IS NULL", "<>", "!=", "!>", "!<", "NOT", "NOT EXISTS", "NOT IN", "NOT LIKE", "LIKE '%500'", CONVERT и CAST, Строковые функции: LEFT(Column,2) = 'GR' , Функции даты/времени: DATEPART (mm, Datecolumn) = 5, Математические операции со столбцом: qty+1> 100 ).
    6. Для сокращения числа итераций старайтесь по возможности использовать строчный оператор CASE. Например:

    select sum(case when e.age < 20 then 1 else 0 end) as under_20

           , sum(case when e.age >= 20 and age <= 40 then 1 else 0 end) as between_20_40

          , sum(case when e.age > 40 then 1 else 0 end) as over_40

    from dbo.employee e

    7. Используйте индексы. Что бы понять, работает ли индекс, всегда проверяйте планы исполнения разрабатываемых запросов.
    8. Используйте формат даты по стандарту ISO - yyyymmdd или ODBC - yyyy-mm-dd hh:mi:ss
    9. Используйте ANSI стиль соединений. Для левых соединений опускайте ключевое слово OUTER.
    10. Для форматирования кода используйте стандартный размер табуляции - четыре символа, и отделяйте логически независимые модули кода пустой строкой.
    11. Старайтесь не использовать недокументированные средства.
    12. Если важна безопасность, не используйте динамический SQL.
    13. Порядок сортировки задавайте только предложением ORDER BY.
    14. Старайтесь хранить скрипты объектов схемы и серверного кода в системе управления версиями (например: VSS или CVS), и включать теги редакций в блок описания назначения скрипта.
    15. Всегда располагайте все DLL команды в начале кода, дабы избежать лишних компиляций.
    16. Избегите использования триггеров и курсоров, оставьте эти инструменты на крайний случай, когда по-другому задачу решить невозможно. Если пришлось писать курсор, предпочтение отдавайте локальным, в режиме: FAST_FORWARD, они самые диетические из всех остальных.
    17. Для повышения производительности соединений, когда ничего другого уже не помогает, используйте индексированные представления соединяемых точно таким же образом таблиц (в не Enterprise редакциях нужно добавлять подсказку NOEXPAND).
    18. Следует помнить, что представления могут маскировать необходимые для оптимизации метаданные, например, когда они скрывают соединения/объединения таблиц из разных баз данных, или когда не задействованы используемые для внутреннего соединения столбцы. В подобных случаях, всегда проверяйте план исполнения запроса, что бы вовремя принять меры по исправлению ситуаций с не оптимальным планом запроса.
    19. Старайтесь делать определяемые пользователем функции детерминированными, они дают более эффективные планы исполнения.
    20. Никогда не используйте в именах процедур префикс "sp_", он зарезервирован для системных процедур, которые вначале ищутся в базе master.

Неявное преобразование типов

Если оператор связывает два выражения различных типов данных, то по правилам приоритета типов данных определяется, какой тип данных имеет меньший приоритет и будет преобразован в тип данных с большим приоритетом. Если неявное преобразование не поддерживается, возвращается ошибка. Если оба операнда выражения имеют одинаковый тип данных, результат операции будет иметь тот же тип данных. В SQL Server 2005 используется следующий приоритет типов данных:

    1. определяемые пользователем типы данных (высший приоритет);
    2. sql_variant;
    3. xml;
    4. datetime;
    5. smalldatetime;
    6. float;
    7. real;
    8. decimal;
    9. money;
    10. smallmoney;
    11. bigint;
    12. int;
    13. smallint;
    14. tinyint;
    15. bit;
    16. ntext;
    17. text;
    18. image;
    19. timestamp;
    20. uniqueidentifier;
    21. nvarchar;
    22. nchar;
    23. varchar;
    24. char;
    25. varbinary;
    26. binary (низший приоритет).

Читать далее...
Читать далее
Категория:
Просмотров: 1089
Ответов: 0

Регламент защиты приложений баз данных SQL Server

отправлено 12 января 2009 г. 10:54 участником gladchenko

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

Основные цели защиты приложений баз данных SQL Server

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

Основной целью регламентируемых задач является устранение угроз информационной безопасности Приложений. Полный список возможных рисков и угроз, а также способов их предотвращения можно найти в документе Майкрософт: Таблица угроз и уязвимостей (компонент Database Engine).

Задача 1. Бизнес-требования к безопасности баз данных

Перед развертыванием SQL Server необходимо спланировать политику безопасности баз данных. Базовым принципом такого планирования должно быть обеспечение полной безопасности данных на уровне сервера, а затем смягчение этих тре­бований к безопасности в отдельных областях в соответствии с потребностями бизнеса. Кроме того, перед развертыванием следует также выбрать способы снижения рисков, связанных с сетевыми атаками на сервер.

Реализация Политики должна обеспечивать исполнение следующих требований:

  • Гарантия согласованность мероприятий по безопасности по всей IT-инфраструктуре.
  • Отражать потребности бизнеса в информационной безопасности.
  • Снижать юридическую ответственность за счет реализации адекватных мер безопасности для клиентов и деловых партнеров.
  • Определять для каждого работника меру ответственности за безопасность, а также давать определения нарушениям безопасности.
  • Предлагать набора правил, на основе которых создаются упрощенные инструкции по безопасности.

 

Реализация Политики в Приложении должна обеспечивать безопасность по умолчанию, т.е. необхо­димо реализовать в Приложении максимально строгие требования Политики, прежде чем начать раз­работку специальных требований и отступлений для нужд Приложения. Только после реализации этой строгой политики следует приступать к разработке адаптированной (менее жесткой) политики, соответствующей потребностям Приложения.

Перед настройкой Политики в Приложении необходимо собрать требова­ния к безопасности баз данных заинтересованных в работе Приложения подразделений Заказчика. Затем нужно оценить риски, связанные с безопасностью. Далее следует выработать общие требования Политики, указав все допустимые исключения из нее.

Сбор требований

До формирования Политики Приложения необходимо собрать требования к безопасности, руководствуясь следующими рекомендациями:

  • Проведите интервью с руководством заинтересованных подразделений Заказчика.

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

  • Учёт требования законодательства.

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

  • Фиксация всех необходимых отклонения от базовой Политики.

При сборе требований к безопасности необходимо выявить все отклонения от Поли­тики (когда привилегии некоторых пользователей или групп отличаются от приви­легий большинства пользователей).

  • Упрощайте бизнес-требования к безопасности.

Принятие мер к тому, чтобы список сформулированных бизнес-требований к безопасности был как мож­но более простым. Слишком большое количество бизнес-требований потребует бо­лее длинного списка исключений и сделает политику безопасности трудно управля­емой.

 

Оценка требований

Собрав все требования к безопасности, необходимо выполнить их оценку, рассмотрев различные способы их реализации. Для реализации избирается такой метод, который бы удовлетворял этим требованиям и в то же время не отнимал слишком много админист­ративных ресурсов. Затем необходимо оценить риски, связанные с не исполнением требований безопасности.

Базовая Политика и исключения

После сбора и оценки требований к безопасности следует определить базовую Политику безопасности и зафиксировать её в документе по безопасности. Эта Политика может включать список серверов баз данных, для которых необходимо шифрование, или список прав доступа к базе данных, предоставляемых через встроенную роль базы данных public.

В документе по безопасности необходимо также указать все исключения из базовой Полити­ки. При этом следует придерживаться следующих рекомендаций:

  • Количество исключений должно быть минимальным.

Исключения усложняют политику безопасности и, как следствие, затрудняют ее вне­дрение и управление. Поэтому количество исключений следует минимизировать.

  • Необходимо учитывать последствия исключений из политики безопасности.

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

  • Документация по всем исключениям из политики безопасности.

Каждое исключение следует документировать вместе с тем бизнес-процессом, которым оно вызвано. Следует наладить процесс периодического мониторинга каждого исключения с целью выяснение, есть ли еще в нем необходимость.

 

Задача 2. Защита SQL Server от сетевых атак

 

Для разработки эффективной Политики необходимо получить информацию о наиболее распространенных угрозах для Приложения. Базовая Политика должна включать три основные угрозы Приложений, а также меры по снижению рисков и ущерба от атак на Приложения. Ниже представлены рекомендации по трём основным угрозам.

Атаки вирусов и червей

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

Для снижения риска заражения вирусами и червями, следует придерживаться следующих рекомендаций:

  • В технических заданиях на разработку новых Приложений должна закладываться необходимость реализации адекватных мер по препятствию заражения файлов приложения вирусами.
  • В технических заданиях на разработку новых Приложений должна закладываться необходимость реализации адекватных мер предотвращению заражения систем Приложения червями, через интерфейсы Приложения.
  • Новое Приложение должно допускать установку на серверах баз данных антивирусного ПО.
  • Новое Приложение должно адекватно реагировать на установку в системах свежих сервисных пакетов и обновлений SQL Server и Microsoft Windows.
  • Приложение не должно использовать и предоставлять клиентский доступ к компонентам DatabaseMail и SQL Mail.
  • Приложение не должно работать напрямую с Интернетом. Должны использоваться межсетевые экраны, в настройках которых нужно разрешать входящий трафик только на необходимые порты.
  • У всех учетных записей пользователей и групп, создаваемых для доступа к данным Приложения, должны быть надежные пароли.

Атаки типа «отказ в обслуживании»

Необходимо принять меры, предотвращающие использование разрабатываемого Приложений для организации или в качестве вспомогательного средства атаки типа «отказ в обслуживании» (Denial of Service, DoS).

Атаки с внедрением SQL-кода

Приложение должно препятствовать организацию атак с внедрением SQL-кода (SQL Injection). Входные данные должны проходить проверку правильности входных запросов Приложения. Запросы, не прошедшие проверку, должны отвергаться.

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

Не желательно использование динамических SQL-запросов. Динамические запросы очень часто являются причиной атак с внедрением SQL-кода. Если необходим динамический код, предпочтительно использовать параметрические за­просы или хранимые процедуры, поскольку они гораздо безопаснее, чем нерегла­ментированные динамические запросы.

Задача 3. Обеспечение безопасности SQL Server

Модель безопасности Приложения должна включать участников безопасности и защищае­мые объекты на различных уровнях. Участники безопасности должны проходить аутентификацию в Active Directory, либо встроенную аутентификацию SQL Server. В качестве основного документа, помогающего наметить конкретные направления работ по обеспечению безопасности обслуживаемых SQL Server данных, следует использовать следующий публичный документ Майкрософт: Рекомендации по безопасности SQL Server 2005 – задачи эксплуатации и администрирования. В качестве средства проверки и контроля безопасности SQL Server необходимо на регулярной основе использовать специализированное средство Майкрософт, программу: Microsoft Baseline Security Analyzer 2.1 (for IT Professionals)

Участники системы безопасности

Под участниками безопасности Приложения - это такие сущности, как пользователи, учет­ные записи, группы и роли, которые могут обращаться к базе данных, серверу или к схеме. Группы и роли известны также как коллекции, поскольку могут включать в себя других участников безопасности.

В модели безопасности Приложения существование участников безопасности допускается на трех уровнях: уровне Windows (Active Directory), уровне SQL Server и уровне базы данных.

Уровень Windows

Участники безопасности на уровне Windows - это доменные имена входа Windows и ло­кальные группы Windows. Для простоты управления и лучшей безопасности желательно везде, где только воз­можно, использовать в Приложении участников безопасности Windows.

Уровень SQL Server

На уровне SQL Server участниками безопасности являются имена входа SQL Server и серверные роли. Имена входа SQL Server использовать в Приложениях не рекомендуется, они допустимы только после предоставления Заказчику подробного обоснования этой необходимости, которое в обязательном порядке согласуется со службой безопасности Заказчика.

Имена входа SQL Server обычно используются для внешних пользователей компа­нии, например для тех, кто подключается к базе данных через веб-сайт. Кроме того, у каждого экземпляра SQL Server есть встроенное имя входа «sa» и могут также быть имена входа NETWORK SERVICE и SYSTEM (в зависимости от конфигурации экземпляра), которые не должны использоваться Приложением.

Уровень базы данных

На уровне базы данных участниками безопасности являются пользователи базы дан­ных, роли приложения и роли базы данных.

Пользователи базы данных - это сущности, связанные с именами входа Windows или SQL Server, которым назначен определенный набор разрешений и привилегий к отдельным объектам (например, к таблицам) базы данных. Стан­дартные (встроенные) пользователи баз данных SQL Server: guest, dbo, INFORMATION_SCHEMA и sys не должны использоваться Приложением. Guest - это специальный пользователь, который добавляется к базе данных, чтобы дать возможность любому обладателю имени входа SQL Server получить доступ к базе дан­ных, и, как правило, он заблокирован. Владелец базы данных (или dbo) - это специальный тип пользователя базы дан­ных (обычно создатель базы данных), которому предоставлены все разрешения и при­вилегии доступа к базе данных, включая право назначать разрешения другим пользова­телям. Владельца БД могут олицетворять другие пользователи, если это предусматривается логикой работы Приложения. Желательно не предоставлять набор прав dbo подключающимся через Приложение пользователям, оставив подобные задачи администратору баз данных. Пользователи INFORMATION_SCHEMA и sys предназначены только для внутрисистемного использования (для обращения к представлениям метаданных).

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

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

Роли базы данных можно использовать для назначения разрешений на уровне базы данных. Например, вы можете создать роль Users, которая позволяет пользователям применять операторы EXECUTE, SELECT, INSERT и UPDATE к определенным таблицам базы данных. Затем можно назначить эту роль некоторым пользователям, вместо того чтобы назначать разрешения каждому из них по отдельности.

Ниже приведен список предопределенных ролей SQL Server, которые есть в каждой базе данных:

      public

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

      db_accessadmin

Предназначена для пользователей, которым необходимо добавлять или удалять име­на входа в базе данных.

      db_backupoperator

Предназначена для пользователей, которым необходимо выполнять резервное копи­рование базы данных.

      db_datareader

Предназначена для пользователей, которым необходимо просматривать данные в базе данных. Члены этой роли могут выбирать все данные из любой пользовательс­кой таблицы базы данных. Для пользователей Приложения предоставление прав через эту роль нежелательно.

      db_datawriter

Предназначена для пользователей, которым необходимо добавлять или изменять любые данные в любой пользовательской таблице базы данных. Члены этой роли могут выполнять следующие задачи: DELETE, INSERT и UPDATE. Для пользователей Приложения предоставление прав через эту роль нежелательно.

      db_ddladmin

Предназначена для пользователей, которым необходимо выполнять задачи, связан­ные с языком определения данных (DDL) SQL Server. Члены этой роли могут вы­полнять любые операторы DDL, за исключением GRANT, REVOKE и DENY

     db_dеnуdаtаrеаdеr

Предназначена для ограничения доступа к данным в базе данных. Члены этой роли не могут читать никакие данные пользовательских таблиц базы данных.

     db_denydatawriter

Предназначена для ограничения прав на модификацию базы данных. Члены этой роли не могут добавлять, изменять или удалять данные пользовательских таблиц базы данных.

     db_owner

Предназначена для пользователей, которым необходим полный контроль над всей базой данных. Для пользователей Приложения предоставление прав через эту роль нежелательно.

     db_sесuritуаdmin

Предназначена для пользователей, которым необходимо управлять разрешениями, принадлежностью объектов и ролями.

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

Защищаемые объекты SQL Server

Защищаемые объекты - это сущности SQL Server, к которым назначаются раз­решения. Есть три защищаемых объекта верхнего уровня: сервер, база данных и схема. Каждый из этих объектов содержит другие защищаемые объекты, которые, в свою оче­редь, также могут содержать другие защищаемые объекты. Эти вложенные иерархии называются областями действия. Область действия сервера включает такие защищае­мые объекты, как экземпляры сервера, базы данных, конечные точки, имена входа и серверные роли. Примерами защищаемых объектов области действия базы данных яв­ляются роли приложения, роли базы данных, схемы и пользователи. Защищаемые объек­ты области действия схемы - функции, процедуры, таблицы и представления.

Проверка разрешений и привилегий участников безопасности

Для проверки разрешений и привилегий защищаемых объектов в SQL Server 2005 в Приложениях допускается использование функций Transact-SQL: IS_SRVROLEMEMBER и HAS_PERMS_BY_NAME.

Функция IS_SRVROLEMEMBER возвращает значение 1, если текущее имя входа является членом указанной фиксированной серверной роли.

Функция HAS_PERMS_BY_NAME определяет действующие разрешения текущего пользователя на доступ к защищаемому объекту.

Режимы аутентификации SQL Server 2005

SQL Server 2005 можно настроить на использование одного из двух режимов аутентифи­кации. В режиме аутентификации Windows вы назначаете пользователям разрешения и привилегии доступа к ресурсам SQL Server только через учетные записи Windows (или группы Windows). В режиме аутентификации SQL Server и Windows (известен и как сме­шанный режим защиты) пользователи могут также подключаться к SQL Server с помо­щью отдельного имени входа SQL Server и получать через него разрешения и привиле­гии.

Режим аутентификации Windows

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

SQL Server в режиме аутентификации Windows аутентифицирует пользователей на основе их учетных записей Windows и членства в группах Windows. Администратор баз данных может назна­чать разрешения баз данных любой учетной записи пользователя или группы Windows. Доменные учетные записи являются лучшим способом управления пользователями, которые об­ращаются к базе данных из внутренней сети организации. Объединение пользователей в доменные группы с последующей настройкой прав доступа для этих групп в SQL Server существенно сокращает накладные расходы на администрирование.

Если для SQL Server выбрана аутентификация Windows в домене Active Directory, то в сети обязательно должен быть контроллер домена. Если контроллер домена недоступен, то любые попытки регистрации пользователей потер­пят неудачу. Поэтому при использовании в SQL Server режима аутентификации Windows в домене Active Directory должны быть приняты дополнительные меры по обеспечению высокой готовности контроллера домена.

Смешанный режим аутентификации SQL Server и Windows

При смешанном режиме аутентификации (режим аутентификации SQL Server и Windows) пользователь соединяется с SQL Server, используя имя входа SQL Server или учетную запись Windows. Одно из преимуществ аутентификации SQL Server (в отличие от аутентификации Windows) в том, что аутентификация SQL Server не зависит от работоспособности ка­ких-либо внешних служб. Использование смешанного режима аутентификации нежелательно и допускается в Приложении только с предоставлением подробного обоснования невозможности аутентификации Windows. Решение о приемлемости использования смешанного режима аутентификации принимает служба безопасности Заказчика.

Задача 4. Защита SQL Server от внутренних угроз

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

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

Размещение серверов баз данных

К сервера баз данных, которые обслуживают защищаемые от внутренних угроз Приложения, должны предъявляться особые требования к их физическому размещению. Это могут быть отдельные серверные комнаты или зоны в общих серверных комнатах, доступ к которым осуществляется по собственным правилам и открыт для отдельного списка сотрудников. Например, в общей серверной комнате это может быть отдельная, запираемая стойка, ключи от которой выдаются только тем сотрудникам, которые включены в список доступа, составленный и актуализируемый сотрудниками безопасности Заказчика.

Сервера, содержащие защищаемую от внутренних угроз информацию не должны располагаться в зонах DMZ. Подключения к портам служб таких серверов должны осуществляться через межсетевые экраны, и кроме мер аутентификации и авторизации домена, предусматривать листы доступа. Операционная система сервера баз данных должна обеспечиваться встроенным брандмауэром, который должен обеспечивать разграничение доступа к портам служб для подключений из ближайшего сетевого окружения сервера. Политики разграничения такого доступа регламентируются сотрудниками безопасности и реализуются системными администраторами Заказчика. Разработчики Приложения обязаны предоставить Заказчику полное и подробное описание «Контактной Зоны» Приложения и сервера баз данных.

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

Требования к аудиту приложения баз данных

Требования к аудиту приложения баз данных, оперирующего защищаемой от внутренних угроз информацией, должны соответствовать рекомендациям Майкрософт, изложенным в электронной документации BOL: Соответствие стандартам безопасности (Common Criteria и/или FIPS 140-2).

Включение подробного аудита действий пользователей Приложения может существенно повысить нагрузку на сервер, сети и персональные компьютеры. При разработке технических заданий на создание программно – аппаратных комплексов Приложения необходимо учитывать технические требования для обеспечения необходимого уровня производительности с включённым аудитом. Включение аудита не должно существенно влиять на работу пользователей Приложения и других, задействованных в программно – аппаратном комплексе систем.

Детализация каждого из возможных уровней аудита Приложения должна отражать бизнес – требования и текущий уровень внешних и внутренних угроз. Конкретный состав уровней аудита предлагается разработчиком Приложения и утверждается в подразделении безопасности Заказчика.

Шифрация защищаемой от внешних угроз информации

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

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

Основным руководством при планировании шифрования защищаемых от внутренних угроз данных является документ Майкрософт: Шифрование SQL Server.

 

Читать далее...
Читать далее
Категория:
Просмотров: 382
Ответов: 0

Бизнес - требования к мониторингу работы приложений баз данных

отправлено 12 января 2009 г. 7:41 участником gladchenko

В повседневной работе администратора баз данных важной задачей является мониторинг работы его подопечных серверов и систем. Ниже представлен пример регламента мониторинга баз данных, который объединяет в виде таблицы наиболее типичные требования к отслеживанию работы и предупреждению проблем приложений баз данных.

№ п/п Частота Задача Средства реализации мониторинга Ресурсы реагирования на проблемы
1 На этапе установки Конфигурация системуы DBA, регламент установки. DBA.
2 На этапе установки Установка и настройка Database Mail или SQL Mail. DBA, шаблоны сценариев. DBA.
3 На этапе установки Автоматизация обслуживания и журналирования. DBA, планы обслуживания и аварийные планы. DBA.
4 На этапе установки Документировние системы. MS VSTS 2008 for Database Professional DBA.
5 Ежедневно. Проверка резервного копирования. SCOM2007 DBA.
6 Ежедневно. Анализ системных журналов. SCOM2007 DBA, системные администраторы.
7 Ежедневно. Анализ журналов ошибок SQL Server. SCOM2007 DBA, автоматическая реакция на ошибки.
8 Ежедневно. Анализ дискового пространства. SCOM2007 DBA, системные администраторы.
9 Ежедневно. Анализ производительности. DBA, SCOM2007, SQL Server 2005 Best Practices Analyzer DBA, системные администраторы, разработчики приложений баз данных.
10 Ежедневно. Анализ истории работы заданий по расписанию. Отслеживание заданий с чрезмерной продолжительностью. Idera SQL Job Manager, SCOM2007 DBA, системные администраторы, разработчики приложений баз данных.
11 Ежедневно. Анализ журналов ошибок SQL Server Agent, Database Mail и планов обслуживания. DBA. DBA.
12 Ежедневно. Проверка доступности серверов. SCOM2007 DBA.
13 Ежедневно. Анализ журналов аппаратных средств. SCOM2007 DBA.
14 Ежедневно. Анализ безопасности и точек доступа. DBA, регламенты безопасности, Microsoft Baseline Security Analuzer DBA, системные администраторы, разработчики приложений баз данных.
15 Ежемесячно. Анализ эффективности индексов. DBA, регламент, MS Performance Dashboard. DBA.
16 Ежемесячно. Анализ файловой фрагментации. DBA. DBA.
17 Ежемесячно. Анализ тенденций изменения параметров мониторинга. SCOM2007 DBA.
18 Ежеквартально. Тестирование восстановления резервных копий. DBA, новые тестируются сразу, остальные раз в месяц или после изменений схемы. DBA.
19 Аварийный план. Резервное копирование баз данных. DBA, аварийный план. DBA.
20 Регламент. Внешнее архивирование резервных копий. DBA, регламент. DBA, системные администраторы.
21 Регламент. Дефрагментация индексов и актуализация статистики. DBA, регламент. DBA.
22 Регламент. Архивирование данных. DBA, регламент. DBA, разработчики приложений баз данных.
23 По требованию. Анализ блокировок и ожиданий. DBA, SQLBlocks, Profiler DBA.
24 По требованию. Профилирование запросов. Profiler, DTA DBA.
25 По требованию. Установка обновленией. DBA. DBA, системные администраторы.
26 По требованию. Пересмотр аварийных планов. DBA. DBA, системные администраторы.
27 По требованию. Пересмотр регламентов обслуживания. DBA, регламент. DBA.
Читать далее...
Читать далее
Категория:
Просмотров: 722
Ответов: 1

Бизнес - требования к администрированию базы данных

отправлено 12 января 2009 г. 7:10 участником gladchenko

Когда вводится в эксплуатация новая база данных, для её будущего администратора возникает задача сбора требований, помогающих правильно настроить обслуживание этой базы данных. Ниже представлен образец Анкеты, который мной успешно использовался для этих целей.

                                                           Анкета

Бизнес - требования к администрированию базы данных: ____________________________________
Сервер базирования: ______________________ Краткое назначение базы данных: ______________
_________________________________________________________________________________________
_________________________________________________________________________________________
После аварии, нужно ли восстанавливать данные максимально полно (на предшествующий аварии
момент времени), либо данные быстрее восполнить другими способами? Да / Нет
Необходимо ли хранить хронологию резервных копий? Нет / __ дней / __ недель / __ месяцев
Восполнима ли потеря вводимых и изменяемых данных за рабочий день (без восстановления из
копии) ? Да / Нет
Нужен ли резервный сервер? Да / Нет
Период времени, когда база данных должна быть доступна: с _____ до _____ ; с ____ до ____
Время для технологических окон: с _____ до _____
Период активной работы с данными в течение суток: с ______ до ______ ; с ______ до ______
Время, отводимое на восстановление работоспособности после аварии? ______________________
Число пользователей базы данных: _______ чел.
Ожидаемый прирост данных в месяц: _____ Гб
Список основных приложений, работающих с базой данных: __________________________________
_________________________________________________________________________________________
_________________________________________________________________________________________
Число программ автоматизации, работающих с БД (роботы, репликация, др.):_________________
Критично ли время исполнения запросов к базе? Да / Нет
Ожидаемое время исполнения запроса (простая выборка): _____ сек.
Ожидаемое время исполнения аналитического запроса: ______ мин.
Требования к информационной безопасности: Низкие / Средние / Высокие
Ответственные разработчики приложений: __________________________________________________
_________________________________________________________________________________________
Ответственные от бизнеса: _______________________________________________________________
Подразделение, с которого списываются затраты на обслуживание:___________________________

Читать далее...
Читать далее
Категория:

Блог

Календарь

«Январь 2009 г.»
ПнВтСрЧтПтСбВс
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

Категории

Синдикация

Виртуальные сообщества

Сообщества сайтов (тэгами)