Обновление SID для входа в SQL Server 2008 - PullRequest
3 голосов
/ 07 марта 2012

Если идентификатор безопасности Active Directory не совпадает с SQL Server 2008 идентификатором входа в систему (sys.server_principal), похоже, нет способа изменить это значение.ALTER USER позволит вам переназначить ПОЛЬЗОВАТЕЛЯ на ЛОГИН, но ALTER LOGIN не позволит вам переназначить ЛОГИН в Active Directory, поэтому на мой вопрос ...

Есть ли какой-либо способ, задокументированный или иным образом, чтобыобновить логин SID с помощью AD SID помимо удаления и повторного входа в систему?Я использую OPENROWSET для получения значения AD SID, но я не могу найти способ обновить SID LOGIN (в основном потому, что не думаю, что это возможно)

Кстати, яЯ знаю, что специальные запросы к системным таблицам запрещены (потому что я уже пробовал).

Ответы [ 2 ]

3 голосов
/ 26 октября 2012

Ответ 1 правильный, он был бы неясным.

Один из преимуществ переопределения SID входа в систему в другой AD SID - это позволит администратору реализовать аутентификацию на основе ролей. Пользователь базы данных может быть определен как user = "financial_officer" (FO) в нескольких базах данных и / или нескольких серверах, затем размещен в нескольких группах, и затем могут быть созданы представления, которые присоединяются к таблицам поиска, чтобы обеспечить соответствующую безопасность на уровне строк. Затем, когда FO удаляется или выходит из системы, SID логина «financial_officer» может быть заменен, чтобы немедленно предоставить привилегии старого FO новому FO.

Я надеялся, что User_Created_Server_Level_Roles & UCSRL / SLR) (что я предложил MS) включит эту возможность, и может, но только если в UCSLR можно добавить один логин. Затем потребуется функция TSQL для возврата SLR, как теперь делают «USER» и «SYSTEM_USER».

Если SQLServer предоставил Server_Level_Position_Role, чистая аутентификация на основе ролей может быть реализована в SQLServer. В этом случае изменение SID входа в систему - это все, что потребуется для обратной засыпки позиции другим человеком.

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

3 голосов
/ 08 марта 2012

Я уверен, что нет. Вы можете использовать sp_change_users_login , чтобы переназначить SID между «пользователем» и «логином» - но, читая ваш вопрос, звучит так, как будто вы уже это знаете.

Хотя вы можете использовать sp_validatelogins , чтобы выяснить, есть ли какие-либо учетные записи sql, которые осиротели (не сопоставлены с действительной учетной записью Windows), единственный процесс, который предлагает Micorsoft, - это то, что вы уже догадались ... drop осиротевший логин и создание нового. Вся документация, которая у меня есть для разрешения осиротевших входов в систему после того, как они были идентифицированы, заключается в «отбрасывании имени входа».

Отсутствие этой способности для меня, вероятно, является скорее проблемой безопасности, чем отсутствующей «функцией». Я могу представить себе множество сценариев, в которых изменение идентификаторов безопасности SID будет восприниматься как очень сомнительное поведение. Представьте, что я хотел что-то сделать и сделать так, чтобы это был другой пользователь. Измените SID ... сделайте мое гнусное поведение ... поменяйте их обратно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...