Поделиться через


Концепции безопасности в SQL Server 2005 и SQL Server 2008 (ru-RU)

 

SQL Server Технические статьи

Предложенная статья является машинным переводом оригинала.

Автор: Майкл Редман

Технические рецензенты: Санджей Мишра, Юрген Томас, Джимми мая, Burzin Патель, Глена Берри (SQL Server MVP), Прем Мехра, Линдси Аллен, Томас Kejser, Джозеф мешок, Ванда он, Шэрон Bjeletich

Опубликовано: ноября 2008

Применимо к: SQL Server 2008 и SQL Server 2005

Резюме: SQL Server 2005 реализуется концепция объекта схемы базы данных. Схема — отдельное пространство имен для облегчения разделения, управления и права собственности на объекты базы данных. Он удален тесной связи владельцев для совершенствования процесса управления безопасности объектов базы данных и объектов базы данных. Схемы объекта базы данных предлагают функциональные возможности для управления и помогают объекты безопасности приложений в среде базы данных, не доступны в предыдущих версиях SQL Server.

Введение

Microsoft SQL Server 2005 вводится понятие схемы объекта базы данных. Схемы аналогичны для разделения пространства имен или контейнеры, используемые для хранения объектов базы данных. Разрешения безопасности применяются к схемам, что делает их важным средство для разделения и защиты объектов базы данных на основе права доступа. Схемы снижения требующейся работы и повысить гибкость, связанных с обеспечением безопасности администрирования базы данных.

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

  • Защита объектов базы данных от несанкционированного изменения пользователями без ведома владельца базы данных
  • В частности, предотвращение базовых объектов базы данных, программного обеспечения независимых поставщиков баз данных от доступа пользователей ad hoc или неправильные, ведущих к производительности бедных приложения
  • Объединяя связанные группы объектов (логические сущности) в одной физической базе данных для сокращения административных накладных расходов физической структуры базы данных

Обзор

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

Способность защищать объекты базы данных таким образом имеет множество практических приложений. Одним из примеров отношение является защита объектов базы данных в сред разработки приложений, где разработчики и тестеры доля же набор объектов базы данных. Еще один пример защиты объектов базы данных находится в ISV такие продукты, как Siebel или SAP. Неуправляемые доступа нерегламентированных запросов или плохо настраиваемых запросов базовые объекты будут негативно сказаться на производительности приложения. Кроме того использование схем может помочь объединить сущностей из отдельных приложений или функциональных областей или логические группы, в одной физической базе данных.

Что такое отделение пользователей от схем?

До SQL Server 2005 пользователь принадлежит объект базы данных (например, таблица). Этот пользователь может быть DBO или какой-либо действительной учетной записи пользователя. Теперь эта таблица непосредственно связан с этой user–, пользователь н�� может быть удален без удаление таблица или изменение владельца таблица. В таблица может при��адлежать только когда-либо одного пользователя.

Отделение пользователей от схем, в SQL Server 2005 года, означает, что таблица больше не принадлежит любого пользователя; он принадлежит к схеме. В свою очередь схема принадлежит пользователь.

Схема — это отдельные сущность в базе данных. Он создается с помощью инструкции CREATE SCHEMA. Схема может принадлежать пользователю, роли или группы (дополнительные сведения о возможных схемы владельцев, см. в разделе «Принципалами» в настоящем документе). Пользователю, выполняющему CREATE SCHEMA может быть владельцем схемы, или он может выделить другого пользователя как владельца схемы (с соответствующими разрешениями IMPERSONATE). Схема имеет только одного владельца, но пользователь может владеть многих схем. Схемы владения включены.

Объекты базы данных создаются и содержащихся в пределах схемы. Например, когда выполняется следующее заявление, таблица MyTable создается в пределах MySchema схемы:

 

MySchema.MyTable CREATE TABLE (col1 int, col2 int)

 

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

Примечание: схема не может быть удален, если он содержит любые объекты. Если инструкции DROP SCHEMA выполняется в то время как он содержит объекты, не операция перетаскивания.

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

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

Схема по умолчанию

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

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

Концепции безопасности в SQL Server 2005 и SQL Server 2008

SQL Server 2005 года представил несколько новых концепций, которые касаются новых объектов схемы.

Участники

Когда создается схема, она является собственностью участника. Участник является любой сущность или объект, имеющий доступ к ресурсам SQL Server . К ним относятся:

  • Логины Windows домен
  • Местные логины Windows
  • имена входа SQL Server
  • Группы Windows
  • Роли базы данных
  • роли сервера;
  • Роли приложений

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

A защищаемого — это любой сущность базы данных или объекта, который может быть обеспечено или с разрешения. На самом высоком уровеньэто будет сам сервер. Защищаемые объекты включают в себя базы данных и все связанные объекты. Некоторые защищаемые объекты могут быть вложены в другие. Это создает иерархию, именуемые защищаемых объектов область. В следующей таблица подробно защищаемые объекты и их область, в SQL Server:

областьзащищаемых объектов

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

Сервера

Конечная точка

 

Вход

 

Базы данных

Базы данных

Пользователь

 

Роль

 

Роль приложения

 

Сборка

 

Тип сообщений

 

Маршрут

 

Служба

 

Привязки удаленных служб

 

Полнотекстовый каталог

 

Сертификат

 

Асимметричный ключ

 

Симметричный ключ

 

Контракт

 

Схема

Схема

Тип

 

Коллекция XML-схем

 

Объект

Объекты

Статистическое выражение

 

Ограничение

 

Функция

 

Процедура

 

Очередь

 

Статистика

 

Синоним

 

Таблица

 

Вид

Таблица 1: SQL Server защищаемой сущности и область

Разрешения

Доступ к любой защищаемый управляется разрешения. набор определенных уровней доступа к защищаемому объекту и разрешения применяются индивидуально или коллективно к защищаемому объекту. Разрешения предоставляются с участником. Общие разрешения предоставляется являются:

  • Управление: Предоставляет возможности владения как на получатель разрешения. Имеющий это разрешение получает все установленные разрешения на защищаемую сущность.
  • ALTER: Предоставляет возможность изменить свойства, за исключением собственности, определенного защищаемого объекта. Разрешение ALTER на схему включает возможность создавать, изменять и удалять объекты из схемы.
  • ALTER ANY < защищаемого сервера >: Предоставляет возможность создавать, изменять или удалять отдельные экземпляры защищаемой сущности сервера. Например, разрешение ALTER ANY LOGIN предоставляет возможность создания, изменения и удаления любого имени входа в экземпляре.
  • ALTER ANY < защищаемого объекта базы данных >: Предоставляет возможность создавать, изменять или удалять отдельные экземпляры защищаемой сущности базы данных. Например, разрешение ALTER ANY SCHEMA предоставляет возможность создания, изменения и удаления любой схемы в базе данных.
  • ВЗЯТЬ в свои руки: Позволяет стать владельцем защищаемого объекта, на котором он предоставляется.
  • ОЛИЦЕТВОРЯТЬ <Login>: Позволяет олицетворять имя входа.
  • ОЛИЦЕТВОРЯТЬ <User>: Позволяет олицетворять пользователя.
  • Создание < защищаемого сервера >: Предоставляет возможность создавать защищаемую сущность сервера.
  • Создание < защищаемого объекта базы данных >: Предоставляет возможность создавать защищаемую сущность базы данных.
  • Создание < содержащиеся в схеме Securable >: Предоставляет возможность создания, содержащуюся в схеме защищаемой сущности. Однако для создания защищаемой сущности в той или иной схеме на эту схему требуется разрешение ALTER.
  • VIEW DEFINITION: Позволяет получить доступ к метаданные.

Для полного списка разрешений и защищаемых сущностей, к которому они могут быть предоставлены смотрите SQL Server электронной документации. Существует также очень удобно таблица-стоимостью функция , вызываемой функция sys.fn_builtin_permissions, возвращающий все разрешения или защищаемые объекты в табличном формате или для конкретного защищаемого объекта. Чтобы вернуть все разрешения для всех защищаемых объектов, выполните следующую инструкцию:

Выберите * от sys.fn_builtin_permissions(DEFAULT)

Использование схем в SQL Server

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

Этот сценарий является гармоничный с использование схем для защиты таблиц базы данных. Таблицы базы данных приложения (защищаемые объекты) создаются в схеме. Это позволит доступ к таблицам необходимо контролировать разрешения. Схема может быть в схеме dbo или любой другой.

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

Наконец создается роль базы данных под названием что-то вроде Developer_Role. Участники безопасности (разработчики) добавляются к Developer_Role. Developer_Role предоставляется выбор, ссылки, INSERT, UPDATE, DELETE и (необязательно) определения представления разрешения на схему dbo. Developer_Role не предоставляется разрешения ALTER или CONTROL на схему dbo. Developer_Role обладает разрешениями ALTER и управления на Developer_Schema. Это явное набор разрешений позволит разработчику для выполнения любых действие на таблицы базы данных, за исключением изменения или удаления таблица в любом случае. Разработчики (участникам) настраиваются со схемой по умолчанию Developer_Schema, позволяя им создавать объекты в Developer_Schema по умолчанию.

Наконец Database_Role назначаются необходимые разрешения на базу данных уровень, например, разрешения DROP TABLE или CREATE TABLE. Это делается с помощью инструкции GRANT.

Ниже приведен код для примера:

--Создание тестовой базы данных

Создание базы данных [SecurityTest]

GO

ИСПОЛЬЗОВАНИЕ SecurityTest

GO

CREATE TABLE [dbo].[«Таблица1»](

       [pkcol] [int] IDENTITY(1,1) НЕ NULL,

       [col1] [int] ЗНАЧЕНИЕ NULL,

ПЕРВИЧНОГО ключа КЛАСТЕРИЗОВАННОГО ([pkcol])

)

GO

--Создание тестового входа пользователя в систему

Создайте имя ВХОДА [User1] С PASSWORD=N'p@55w0rd'

GO

--создать пользователя в тестовой базе данных

Создайте пользователя [User1] для ВХОДА [User1] С DEFAULT_SCHEMA = [Developer_Schema]

GO

--создать роль

СОЗДАТЬ роль авторизации [dbo] [Developer_Role]

GO

--создать схему

Создание схемы [Developer_Schema] авторизации [User1]

GO

--применения разрешений схемы

Грант ALTER на СХЕМУ:: [Developer_Schema] К [Developer_Role]

GO

Грант управления по схеме:: [Developer_Schema] К [Developer_Role]

GO

Грант SELECT на СХЕМУ:: [Developer_Schema] К [Developer_Role]

GO

СХЕМЫ ON DELETE Грант:: [dbo] К [Developer_Role]

GO

Грант Вставка ON схемы:: [dbo] К [Developer_Role]

GO

Грант выберите схемы:: [dbo] К [Developer_Role]

GO

Грант на обновление схемы:: [dbo] К [Developer_Role]

GO

Грант ссылается на СХЕМУ:: [dbo] К [Developer_Role]

GO

--обеспечить членство в роли

Sp_addrolemember EXEC N «developer_role» N «User1»

GO

--позволяют пользователям для создания таблиц в Developer_Schema

Грант создать ТАБЛИЦУ для [Developer_Role]

GO

--Позволяют пользователю подключиться к базе данных

Предоставьте подключение К [User1]

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

Примечание: этот объект защиты не применяются к пользователям, которые являются членами из sysadmin роль сервера. Членом sysadmin серверная роль имеет разрешение на осуществление любой деятельности, в рамках SQL Server экземпляр.

Как разрешения проверяются

Защищаемому объекту имеет четырехкомпонентное имя (полное имя): server.database.schema.object. Объект будет также иметь разрешения на него. Таким образом следующие проверка выполняется на объекте:

  • Доступ предоставлен или запрещен непосредственно на объекте.
  • Доступ предоставленные или запрещенные на схемы, содержащей объект.
  • Доступ предоставленные или запрещенные на базы данных, содержащей схемы.
  • Доступ предоставленные или запрещенные на сервер, содержащий базу данных.

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

Са и членам группы sysadmin всегда предоставляется доступ.

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

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

Как использовать ссылки на объекты

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

Выберите * от HumanResources.Employee

Для ссылки на объект, расположенный в удаленной базе данных, имя полное имя объекта содержит имя сервера и имя базы данных. Например, для выбора записей из сотрудников таблица в схеме HumanResources в AdventureWorks базы данных на MyServer будет выглядеть следующим образом:

Выберите * от MyServer.AdventureWorks.HumanResources.Employee

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

Выберите * от «Таблица1»

Сначала будет проведена оценка следующее заявление:

Выберите * от <defaultschema>.«Таблица1»

Если не удается найти объект, сервер будет оценивать следующее заявление:

Выберите * от dbo.«Таблица1».

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

Для получения дополнительных сведений о DEFAULT_SCHEMA и соображения производительности, когда не используется полностью уточненных имен объектов, см. обновление до SQL Server 2005 и схемы по умолчанию.

Синонимы

A синоним представляет собой объект базы данных, который позволяет пользователю создать другое имя для некоторых объектов базы данных. Синоним предоставляет два преимущества:

  • Это упрощает процесс именования объектов полные базы данных с помощью альтернативных, обычно проще, имя.
  • Он реализует уровень абстракции осуществление таблиц и схем.

Использование синонимов, администратор базы данных можно скрыть имя схемы или имя полное объекта из базы данных потребителей. Это значительно упрощает реализацию схем — особенно для тех, кто новичок концепции схемы. Он также позволяет объектам перемещаться между схемами, не влияя на приложения, используя синонимы.

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

USE AdventureWorks

GO

--из схемы продаж

CREATE SYNONYM dbo.Sales.SalesPerson для продавца

GO

--из схеме HumanResources

CREATE SYNONYM dbo.HumanResources.Employee для работника

GO

--объединить объекты из различных схем «»

ВЫБЕРИТЕ * ОТ

 dbo.Продавец INNER JOIN dbo.Сотрудник

 НА dbo.SalesPerson.SalesPersonID = dbo.Employee.EmployeeI

Синоним принадлежит схеме. Синоним могут быть созданы для следующих объектов:

  • Таблица
  • Вид
  • Хранимая процедура
  • Функция
  • Возвращающая табличное значение функция CLR
  • CLR, хранимая процедура
  • Скалярная функция CLS
  • агрегатфункцияCLR
  • Расширенная хранимая процедура

Синоним создается с использованием следующего синтаксиса:

Создание Mydb.dbo.table1 FOR СИНОНИМ NewSyn

Синоним может быть потреблен в следующих инструкциях:

  • ВЫБЕРИТЕ
  • ВСТАВКА
  • ОБНОВЛЕНИЕ
  • УДАЛИТЬ
  • ВЫПОЛНЕНИЕ
  • Подзапросы выборки

К примеру синоним, создали выше может использоваться следующим образом:

Выберите * от NewSyn

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

Следующие разрешения могут применяться к синоним:

  • УПРАВЛЕНИЯ
  • УДАЛИТЬ
  • ВЫПОЛНЕНИЕ
  • ВСТАВКА
  • ВЫБЕРИТЕ
  • ОБНОВЛЕНИЕ
  • TAKE OWNERSHIP
  • VIEW DEFINITION

Проверка разрешения синоним является в соответствии с цепочки описанные выше понятия безопасности владения.

Управление ISV базы данных базового доступа К объектам

SecurityTest сценария, описанного в разделе "Использование схем в SQL Serverнастоящей статьи демонстрируется использование объекта схемы базы данных для защиты объектов базовой таблица от изменены или удалены из схемы базы данных.

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

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

Администраторы могут воспользоваться функциональность схемы защиты следующие базы данных:

  • Удалено или изменено у себя объекты базы данных в схеме, защищены соответствующими разрешениями, чтобы запретить объекты базы данных. Использование схем таким образом уменьшает количество задач администрирования безопасности, требуется на базовые объекты.
  • Запретить любой прямой доступ к таблицам нерегламентированных запросов, установив разрешения на схему, чтобы запретить доступ SELECT. Неуправляемые инструкции SELECT для таблиц с многие миллионы строк являются распространенными причинами проблем производительности приложений в этих типов приложений. Решение этой проблемы может заключаться в предоставлении пользователи с доступом на схему, содержащую хранимые процедуры и так далее, которые позволяют доступ к данным в оптимизированный подход для доступа к данным.

Управление логическим объектам в одной физической базе данных

Схемы дают возможность упростить администрирование безопасности, резервного копирования /восстановлениеи управления базами данных, позволяя база данных объектов, или юридических лиц, чтобы быть логически сгруппированы вместе. Такой подход является особенно эффективным, если эти логическим объектам должны оставаться синхронизированным в некотором роде при потреблении приложением. С помощью AdventureWorks например, есть концептуально пять логических записей: HumanResources, лицо, производства, закупок и продаж. Эти сущности могут храниться как пять отдельных физических баз данных или с помощью схем, быть объединены как пять логических записей в одной физической базе данных. Это уменьшает сложность администрирования управления пять баз данных по отношению к одной базе данных. Схемы позволяют управлять безопасностью логической сущность отдельно друг от друга, но по-прежнему позволяют объекты совместной работы при необходимости.

Заключение

Следующие рекомендации следует использовать при работе с схем в SQL Server 2005 и SQL Server 2008:

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

 

Для получения дополнительной информации:

http://www.Microsoft.com/SQLServer/: SQL Server веб-сайт

http://TechNet.Microsoft.com/en-US/SQLServer/: SQL Server TechCenter

http://MSDN.Microsoft.com/en-US/SQLServer/: SQL Server DevCenter