Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вся метода 3 (2).doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
1.15 Mб
Скачать

Встроенные функции

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

Табл.2.12.

Часто используемые глобальные счетчики T-SQL

Счетчик

С момента запуска SQL Server показывает

@@CONNECTIONS

Число подключений (включая попытки подключения)

@@CPU_BUSY

Время работы процессора в миллисекундах

@@IDLE

Время простоя SQL Server в миллисекундах

@@IO_BUSY

Время в миллисекундах, затраченное SQL Server на выполнение операций ввода — вывода

@@PACK_RECEIVED

Число пакетов ввода, считанных из сети

@@PACK_SENT

Число пакетов вывода, переданных в сеть

@@PACKET_ERRORS

Число ошибок обработки сетевых пакетов для всехподключений

@@TOTAL_ERRORS

Число ошибок при выполнении операций чтения — записи на диск

@@TOTAL_READ

Число операций чтения с диска (исключая операции чтения из кэша)

@@TOTAL WRITE

Число операций записи на диск

Флаги трассировки

Флаги трассировки в SQL Server 2000 отключены, и, по-видимому, в будущих верси­ях этой СУБД поддерживаться не будут. Они позволяют временно включить/отключить определенные функции сервера. При использовании любого флага трассировки в журнал ошибок SQL Server заносится соответствующая запись, т. е. флаги полезны для отладки. Они применяются преимущественно разработчиками. О флагах упоми­нают в статьях Microsoft Knowledge Base, и включить нужный флаг можно с помощью команды DBCC TRACEON. Например, включив флаг 3205, вы запретите аппаратное сжатие данных на ленточных накопителях.

Использование snmp

Протокол упрощенного управления сетью (Simple Network Management Protocol, SNMP) позволяет передавать управляющие сведения, включая статистику производительно­сти и конфигурационную информацию, между платформами под управлением раз­личных ОС. Средствами SNMP можно вести мониторинг только экземпляра SQL Server по умолчанию. На компьютерах Windows NT 4.0/2000, поддерживающих SNMP, SQL Server 2000 будет автоматически поддерживать данный протокол.

2.9. Системы безопасности

SQL Server имеет шестиуровневую модель безопасности. Нижний уровень этой модели представлен физической системой безопасности. Она подразумевает защиту доступа к инфраструктуре, содержащей внутренние сетевые компо­ненты и серверное оборудование, поддерживающее работу SQL Server. На втором уровне обеспечивается безопасность сетевого протокола. Она включает такие компоненты, как изоляция транспортного протокола и шифрование пакетов. Третий уровень — доменная безопасность. Она реализуется в сетях Microsoft с помощью служб каталога Active Directory (AD) и самих доменов. На четвертом уровне обеспечивается безопасность локального ком­пьютера. Это означает аудит средствами ОС, поддержка прав доступа к файлам и реестру, а также служб шифрования. Пятый уровень — система безопасности SQL Server, которая включает аутентификацию, авторизацию, шифрование и службы аудита. Наконец, шестой уровень занимает безопасность приложений. Приложение может расширять возможности системы безопасности SQL Server, дополняя ее собственными функциями безопасности.

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

Данные, передаваемые с клиента на SQL Server, могут быть зашифрованы. Таким обра­зом, даже перехватив пакеты при передаче их по сети, злоумышленник не сможет прочи­тать их содержимое. Шифрование пакетов реализовано на промежуточном уровне между клиентом и SQL Server (шифрование на прикладном уровне) с помощью протокола SSL (Secure Socket Layer) или шифрования при вызове удаленных процедур (RPC). При обме­не данными между двумя компьютерами под управлением Windows 2000 шифрование пакетов реализуется с помощью безопасности IP (IP Security, IPSec). IPSec также поддержи­вается многими современными маршрутизаторами. Утилита Client Network Utility позво­ляет сконфигурировать SSL для Net-Libraries в SQL Server 2000.

Шифрование снижает сетевую производительность SQL Server. Прежде чем включать шифрование, следует провести эталонное измерение производительности сети. После включения шифрования следует измерить снижение производительности в сети, чтобы определить, стоит ли использовать эту функцию. Некоторые протоколы SQL Server содер­жат собственные функции безопасности. Например, Multiprotocol Net-Library использует RFC и API шифрования RPC. Таким образом, SSL-шифрование пакетов для этого прото­кола излишне.

Кроме того, существует ряд особенностей для каждого конкретного протокола. На­пример, вместо порта по умолчанию 1433 для протокола TCP/IP следует использовать уникальный порт, а в качестве базового протокола безопасности — IPSec. Следует отклю­чить оповещения сервера именованных каналов, чтобы сервер не фигурировал в списке графического интерфейса Query Analyzer. Также следует отключить широковещательную передачу для почтовых ящиков, чтобы NetBIOS-имя сервера не появлялось в сети.

Другая распространенная методика обеспечения безопасности сетевого протокола — применение брандмауэра на основе Microsoft Internet Security and Acceleration Server или специализированного оборудования. Простым решением является использование разных протоколов во внутренней и внешней сети. Например, во внутренней сети можно исполь­зовать IPX/SPX, а во внешней — TCP/IP. Чтобы получить доступ к внутренней сети из внеш­ней, достаточно подключиться к виртуальной частной сети (virtual private network, VPN).

Если компьютер, на котором работает SQL Server 2000, является сервером — членом до­мена Windows NT или Windows 2000, можно проверить пользователя с помощью его иден­тификатора безопасности (security identifier, SID). Для выполнения аутентификации сред­ствами Windows администратор БД наделяет учетную запись пользователя или группы при­вилегиями для доступа к SQL Server и выполнения на нем определенных действий. До­менные учетные записи пользователей Windows обеспечивают надежную проверку и бло­кировку учетных записей. Доменные пароли Windows шифруют во избежание их перехва­та при передаче по сети. Они чувствительны к регистру символов, что затрудняет их под­бор. Кроме того, используют такие приемы, как определение минимальной длины пароля и срока его действия. Если при установке SQL Server задан чувствительный к регистру порядок сортировки, то пароль, назначенный пользователю, также окажется чувствитель­ным к регистру. При входе в систему с клиента Windows NT или Windows 2000 доменные пароли Windows всегда чувствительны к регистру. Механизм SQL Server, позволяющий доменным учетным записям Windows устанавливать соединения с SQL Server, обсуждает­ся далее в разделе «Безопасность SQL Server».

Другая мощная возможность защиты сетей Windows 2000, работающих под управлени­ем служб каталога Active Directory и протокола взаимной аутентификации Kerberos, — делегирование учетных записей системы безопасности. Она позволяет проверять иденти­фикационные данные пользователя при подключении одного компьютера к другому в сети, при этом пользователь проходит регистрацию лишь однажды (на первом компьютере).

SQL Server 2000 может работать под управлением Windows 98, Windows Millennium Edition (ME), Windows NT и Windows 2000. Windows NT Server, Windows 2000 Server и более по­здние редакции этих ОС обеспечивают наивысший уровень безопасности локального ком­пьютера, доступный SQL Server 2000. Поэтому ОС, минимально необходимой для SQL Server 2000 Enterprise Edition, является Windows NT Server или Windows 2000 Server. Эти ОС поддерживают аудит системы безопасности посредством службы Event Log, позволяя отслеживать такие события, как вход пользователей в систему и попытки обращения к файловым объектам (например, к файлам БД). Аудит файловых объектов доступен в лю­бом разделе NTFS (New Technology File System). NTFS необходима для работы SQL Server 2000 в Windows NT или Windows 2000. Эта файловая система поддерживает дополнитель­ные функции безопасности, в том числе поддержку прав доступа к локальным каталогам и файлам, а также сервисы шифрования. Наконец, программа SQL Server Setup автомати­чески конфигурирует ограничения доступа к уязвимым настройкам реестра, связанным с SQL Server. После изменения системы безопасности ОС необходимо тщательно проверять ра­боту SQL Server, чтобы убедиться в сохранении должной производительности и в том, что сконфигурированные ограничения не заблокировали никаких функций SQL Server.

SQL Server предоставляет обширный набор служб безопасности для защиты обслуживае­мых им баз данных. Средства безопасности SQL Server можно разделить на четыре катего­рии: аутентификация, авторизация, аудит и шифрование. Процесс предоставления досту­па к БД состоит из двух фаз: сначала выполняется подключение к SQL Server (аутентифи­кация), а затем открывается доступ к базе данных с ее объектами (авторизация). Разреше­ния на работу с объектами (object permissions) позволяют или запрещают пользователю выполнять действия над объектами БД, например таблицами и представлениями. Разре­шения на выполнение SQL-операторов (statement permissions) позволяют или запрещают пользователям создавать объекты, делать копии БД и файлов журнала. Действия, выпол­няемые в БД, отслеживаются с помощью аудита SQL Server. Механизм аудита SQL Server, в отличие от службы Event Log в Windows NT и Windows 2000, создан специально для аудита объектов БД. Некоторые объекты БД, например хранимые процедуры, разрешает­ся зашифровать, чтобы защитить их содержимое.

SQL Server 2000 поддерживает два режима аутентификации: средствами Windows и сред­ствами SQL Server. Первая позволяет локальным или доменным учетным записям Windows (Windows NT или Windows 2000) подключаться к SQL Server. Вторая дает пользователям возможность подключаться к SQL Server с помощью идентификатора SQL Server. Допусти­мо сконфигурировать метод аутентификации на сервере во время установки SQL Server или позже с помощью диалогового окна SQL Server Properties (Configure) в Enterprise Manager (рис. 13-2).

Параметры режима аутентификации позволяют использовать аутентификацию средства­ми Windows и SQL Server одновременно или только аутентификацию средствами Windows. Режим, в котором применяются оба метода аутентификации, называется смешанный ре­жим (Mixed Mode).

Использование аутентификации средствами Windows позволяет создать интегрирован­ную систему регистрации пользователя, поскольку SQL Server использует ОС локального компьютера или контролера домена для проверки и сопровождения учетной записи пользователя. Например, если UserOl — локальная пользовательская учетная запись, со­зданная на автономном сервере SQL с именем ServerOl, можно предоставить учетной за­писи SERVER01 \User01 право на подключение к SQL Server или отобрать у нее это право. Если User02 — доменная учетная запись, созданная на контроллере домена DomainOl, можно дать или отобрать право на подключение к SQL Server у записи DOMAIN01\User02.

Также разрешено наделять привилегиями и лишать их группы Windows NT и Windows 2000. Привилегии, предоставленные группе или отобранные у нее, наследуют все ее чле­ны. Явный отказ в предоставлении доступа (deny) заменяет все другие привилегии, назна­ченные пользователю или любым группам, членом которых он может быть. В Windows NT и Windows 2000 предусмотрены два типа групп, которым могут быть предоставлены права на подключение к серверу: группы на локальном компьютере и доменные группы. Пер­вые хранятся в ОС компьютера, на котором работает SQL Server, и подразделяются на два типа: встроенные и пользовательские. Доменные группы хранятся на контроллерах доме­на Windows, они бывают трех типов: локальные для домена, глобальные и универсальные.

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

Случаи, когда аутентификация средствами SQL Server является единственным спосо­бом подключения к SQL Server, перечислены ниже:

  • когда клиент и сервер относятся к разным пространствам имен идентификаторов. Если компьютер с SQL Server является автономным сервером, то клиент, зарегистриро­ванный в домене, должен использовать аутентификацию средствами SQL Server. Кли­ент может использовать аутентификацию средствами Windows, если он зарегистриро­вался локально, SQL Server сконфигурирован как автономный сервер, а также на кли­енте и сервере существуют одинаковые комбинации «учетная запись — пароль»;

  • когда SQL Server работает в Windows 98 или Windows ME.

SQL Server, установленный в Windows 98 или Windows ME, поддерживает только аутен­тификацию средствами SQL Server;

• если приложение написано специально для использования аутентификации средства­ ми SQL Server.

Некоторые учетные имена SQL Server (SQL Server account objects) создаются во время установки SQL Server, например системный администратор SQL Server (sa). Это учет­ное имя приписывается фиксированной роли на уровне сервера (серверной роли) Sys-Admin, и его нельзя удалить или модифицировать. Идентификатору sa соответствует особое пользовательское учетное имя: владелец базы данных (dbo), которое создается в каждой БД. Помимо прочего, это соответствие делает dbo членом группы SysAdmin. О серверных ролях рассказано в следующем разделе этого занятия. Другое специаль­ное учетное имя — guest — открывает доступ к БД любому пользователю, проверенно­му SQL Server.

Чтобы пользовательское учетное имя получило доступ к БД, одной аутентификации недо­статочно. Кроме этого, у учетного имени, группы или роли, прошедшей аутентификацию, должно быть разрешение на исполнение SQL-выражений или на работу с объектами. Как правило, авторизация осуществляется в контексте БД. Таким образом ограничивается область видимости пользовательского доступа. Например, разрешение на доступ к табли­це из БД Pubs не дает пользователю права на доступ к объектам БД Master. Однако есть особые административные разрешения, область видимости которых распространяется на весь SQL Server.

Назначение разрешений каждому пользователю в отдельности занимает много времени при сопровождении БД со средним и большим числом пользователей; Для облегчения рутинных административных операций по назначению разрешений пользователям SQL Server 2000 поддерживает группы Windows и роли SQL Server. Все группы, прошедшие аутентификацию, также подлежат авторизации. Например, глобальной доменной группе GlobalGroupO 1 в домене DomainOl назначен ряд привилегий для подключения к SQL Server (аутентификации) и исполнения оператора SELECT для некоторой таблицы или пред­ставления в этой БД. В этом случае любые пользователи из домена — члены группы GlobalGroupO 1 — смогут исполнить оператор SELECT (если где-либо еще для этого раз­решения не задано состояние Deny, о котором мы расскажем чуть позже).

Роли похожи на группы, но создаются и сопровождаются в рамках SQL Server. Суще­ствует два типа ролей: стандартные и прикладные. Стандартным ролям (standard roles) назначаются привилегии, которые могут наследоваться пользователями, получающими членство в роли. Членами групп могут быть пользователи Windows и (в зависимости от типа группы) группы Windows. В отличие от групп стандартные роли могут содержать все типы учетных имен: учетные записи пользователей и групп Windows, идентификаторы SQL Server и другие стандартные роли.

П оскольку привилегии являются кумулятивными, то с помощью вложенных групп и стандартных ролей (групп, содержащих другие группы и роли, которые тоже содержат группы и роли) можно построить иерархию привилегий. Например, если пользователю UserOl назначена роль Role02, а сама она входит в RoleOI, то роль Role02 является вложен­ной для RoleOl. Если назначить ролям RoleOI и Role02 разные привилегии, то пользователь UserOl будет обладать всеми привилегиями, назначенными для обеих ролей.

Рис.2.7. Схема иерархических отношений, иллюстрирующая

наследование пользователем привилегий, назначенных ролям RoleOl и RoleOZ

Привилегии

Для упрощения администрирования БД и самого сервера в SQL Server предусмотрен ряд стандартных предопределенных ролей. В основном их можно разделить на две катего­рии: фиксированные роли на уровне сервера, или серверные роли (fixed server role), и фиксиро­ванные роли на уровне БД (fixed database role). Членство в фиксированных ролях на уровне сервера дает возможность администрирования сервера. Например, если сделать пользова­теля членом фиксированной серверной роли ServerAdmin, то он сможет настраивать об­щесерверные параметры. Программа SQL Server Setup приписывает группу администра­торов Windows (BUILTIN\Administrators) к фиксированной серверной роли SysAdmin. Чле­ны фиксированных ролей на уровне БД могут администрировать некоторые БД. Например, если сделать пользователя членом фиксированной роли на уровне БД db_BackupOperator, он сможет создавать резервные копии этой БД. Чтобы просмотреть привилегии, назначен­ные для каждой фиксированной серверной роли, исполните команду sp_srvrolepermission имя_фиксированной_серверной_роли, где sp_srvrolepermission — имя системной хранимой процедуры.

Все пользователи, группы и роли автоматически являются членами роли Public. Эта специальная роль похожа на специальную группу Everyone в Windows NT и Windows 2000. Добавлять или удалять членов этой роли, как и саму роль, нельзя. Роль Public есть в каж­дой БД, где по умолчанию для нее назначен ряд разрешений. Для защиты БД можно ото­брать эти разрешения у роли Public. Если группы Windows не соответствуют администра­тивным потребностям, можно создать стандартные роли на уровне базы данных.

Иногда приложению и пользователю требуются разные разрешения. В этом случае непрактично конфигурировать безопасность приложения с помощью разрешений SQL Server. В SQL Server предусмотрены прикладные роли (application roles), обеспечивающие поддержку разрешений только для приложения. Прикладные роли не содержат членов и должны передавать пароль. Эти особые роли разработаны для управления привилегиями пользователей, обращающихся к БД через некоторое приложение. Прикладным ролям назначаются разрешения на уровне базы данных. После проверки пользователя приклад­ная роль активируется с помощью системной хранимой процедуры sp_setapprole, которая позволяет зашифровать пароль прикладной роли перед передачей его на сервер. Когда активна прикладная роль, пользователь теряет все свои разрешения до конца сеанса или работы приложения. Если приложение должно обратиться к другой БД в период активно­сти прикладной роли, оно сможет получить для этой БД лишь те разрешения, которые назначены учетному имени guest.

Разрешение может быть предоставлено (Grant), снято (Revoke) или в нем может быть от­казано (Deny). При предоставлении разрешения пользователю, группе или роли (любому учетному имени) командой Grant разрешение назначается явно. При снятии разрешения с учетного имени (командой Revoke) последнее теряет соответствующее разрешение. Нако­нец, при отказе в предоставлении разрешения (с помощью команды Deny) на получение этого разрешения налагается явный запрет. Пользовательские разрешения представляют собой сумму всех разрешений, назначенных непосредственно этому пользователю или его группе. Сначала SQL Server обрабатывает состояние Deny, которое отнимает разрешение — независимо от способа его получения. Поэтому, если пользователь наследует это состо­яние или получает его явно, оно исключает все другие разрешения. Допустим, пользо­вателю UserOl дано разрешение на исполнение оператора SELECT для таблицы TableOl. Этот пользователь является членом группы GroupO 1, обладающей разрешением на испол­нение оператора INSERT для той же самой таблицы. В результате учетное имя этого пользователя получает права на исполнение операторов SELECT и INSERT для таблицы TableOl. Однако если группа GroupO 1 является членом роли RoIeOl, у которой разрешения SELECT и INSERT находятся в состоянии Deny, пользователь не сможет ни извлечь дан­ные из таблицы TableOl, ни добавить в нее данные.

В SQL Server предусмотрены разрешения трех типов: разрешения на работу с объектами (object permissions), разрешения на выполнение SQL-операторов (statement permissions) и предполагаемые разрешения (implied permissions). Разрешения на работу с объектами отно­сятся к объектам БД и могут различаться для разных объектов. Например, для хранимой процедуры допустимо назначить разрешение EXECUTE, а для таблицы — SELECT. Раз­решения на выполнение SQL-операторов применяются к операторам Transact-SQL CREA­TE и BACKUP, исполняемым в БД. Например, разрешение CREATE TABLE дает пользователю возможность создавать таблицы в БД. Далее перечислены разрешения на работу с объектами и выполнение SQL-операторов для различных объектов БД.

Табл. 2.13.

Разрешения на работу с объектами и выполнение SQL - операторов

Разрешение

Разрешаемое действие

CREATE (разрешение на выполнение SQL-оператора)

Создание БД, таблиц, представлений, хранимых процедур, определений умолчания, правил и функций

BACKUP (разрешение на выполнение SQL-оператора)

Резервное копирование БД и файла журнала

SELECT и UPDATE (разрешение на работу с объектом)

Запросы и модификация таблиц, представлений и их столбцов

INSERT и DELETE (разрешение на работу с объектом)

Добавление и удаление таблиц, представлений и их записей

EXECUTE (разрешение на работу с объектом)

Выполнение хранимых процедур

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

Служба Event Log обеспечивает общий аудит ОС Windows NT и Windows 2000. SQL Server поддерживает аудит идентификаторов и событий системы безопасности. Успех или неуда­ча аутентификации того или иного пользователя — это серверный параметр, который раз­решается сконфигурировать на вкладке Security диалогового окна SQL Server Properties.

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