Какова цель владельца базы данных?

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

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

Мой (очень элементарный) вопрос: что такое владелец базы данных и какова его цель?

40 голосов | спросил 8kb 31 Mayam12 2012, 10:01:51

2 ответа


49

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

Теория такова: все, на что могут быть предоставлены разрешения, - это 'защищаемый' . У всех товаров длительного пользования есть владелец. Владелец защищаемого имеет абсолютный контроль над защищаемыми и не может быть отказано в каких-либо привилегиях. Хранилища уровня экземпляра принадлежат серверу принципалам ( логины). Обеспечение безопасности на уровне базы данных принадлежит принципалам баз данных (пользователям). Принципал состоит из двух вариантов: первичный (идентичность) и вторичный (членство). Запоры на уровне сервера по умолчанию принадлежат главному серверному серверу, зарегистрированному в настоящее время. Устройства безопасности уровня базы данных по умолчанию принадлежат текущему основному объекту базы данных, за исключением связанных с схемой объектов, которые по умолчанию принадлежат владельцу схемы. Все обеспеченные продукты поддерживают предложение AUTHORIZATION во время создания, чтобы обеспечить соблюдение другого владельца. ALTER AUTHORIZATION можно позже использовать для изменения владельцем любого защищаемого.

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

Итак, ваш вопрос действительно « Зачем нужен защитникам? ». Потому что владелец является корнем доверия. Это владелец, который предоставляет, отрицает и отменяет разрешение на объект. Может ли система безопасности быть разработана без владельцев продуктов питания? Наверное, да, но должен был быть какой-то механизм для замены владельцев ролей в текущей модели. Например, считайте, что у пассивных обеспеченных нет владельца (например, вместо того, чтобы иметь защищаемое, оригинальному создателю просто предоставляется CONTROL над ним), можно было бы создать безопасный и отменить доступ к нему everyone , включая самого себя. Требование владельца обходит эту проблему, поскольку владелец не может заблокировать себя.

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

  • другие продукты уровня сервера (конечная точка, роль сервера, логин) используются редко, перемещаются и т. д.
  • уровень безопасности на уровне базы данных обычно заканчивается тем, что принадлежит dbo (основной принцип базы данных) или какой-либо другой основной принцип базы данных, и, следовательно, владелец содержится в базе данных
  • Владение базой данных по умолчанию для основного принципала NT создает проблему сдерживания (владелец - это SID SID, управляемый AD и не перемещающийся с файлами базы данных, учетная запись NT может быть удалена с экрана и т. д. и т. д.).
  • Самое главное: у владельца базы данных есть важные побочные эффекты, а именно EXECUTE AS context . Эта более поздняя проблема - это то, что горит большинство пользователей. Поскольку Service Broker широко использует EXECUTE AS (доставка сообщений имеет неявный контекст EXECUTE AS, а также активацию очереди, которая имеет явный), как правило, это пользователи Service Broker, которые сначала открывают эту проблему.

BTW, Kudos для изучения и исправления исходной проблемы:)

ответил Remus Rusanu 31 Maypm12 2012, 13:05:39
12

Владелец базы данных owner - это немного отброшен до момента, когда (надлежащая) схема была введена в SQL Sever 2005.

В основном владелец базы данных является стандартным dbo (владельцем базы данных) базы данных, причем сама база данных является объектом базы данных .

В SQL Server 2000 docs ...

  

dbo - это пользователь, который подразумевает разрешения для выполнения всех   деятельности в базе данных.

В более ранних версиях SQL Server, когда схема не могла «владеть» объектом ( или, скорее, было указано, что все объекты, таблицы, представления и т. д. принадлежат dbo и не было других схем ), необходимо, чтобы «пользователь» владел им ... должно быть, само собой разумеется, почему something должен владеть базой данных (или же разрешениями в целом было бы довольно сложно.)

Итак, технически в более старых версиях SQL Server (или обновленных базах данных) это была не таблица «Foo», это была таблица «dbo.Foo» ... с dbo владелец.

С появлением SQL Server 2005 вы могли бы иметь объекты базы данных, принадлежащие схеме, например, у вас есть схема с именем «bar» и таблица с именем «Foo» ... это становится bar.Foo, как в ...

SELECT * FROM bar.Foo WHERE etc = 'blah`;

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

Поэтому лучше всего либо изменить это на учетную запись sa, либо, возможно, (по моему опыту) на учетную запись домена, которую можно администрировать операционными /ИТ-подразделениями организации.

Эта статья дает перерыв уменьшите разницу между старшим «владельцем» способом выполнения вещей и более новой системой собственности на основе «схемы».

  

Чтобы понять разницу между владельцами и схемой, letâ € ™ s потратить   некоторое время рассмотрения собственности объекта. Когда объект создается в SQL   Server 2000 или ранее, объект должен иметь владельца. Большинство из   время, владелец â € œdboâ €, также известный как владелец базы данных.

ответил Justin Jenkins 31 Mayam12 2012, 11:25:08

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132