2012-03-07 3 views
2

Если Active Directory SID не соответствует SQL Server 2008 Войти SID (sys.server_principal) там не появляется, чтобы быть способ ALTER/UPDATE, что значение. ALTER USER позволит перераспределить пользователя к LOGIN, но ALTER LOGIN не позволит переназначить вход в систему в Active Directory, так на мой вопрос ...Обновление SQL Server 2008 LOGIN SID

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

Кстати, я знаю, что объявление -hoc запросы к системным таблицам не разрешены (потому что я уже это пробовал).

ответ

2

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

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

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

3

Ответ 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 как «ПОЛЬЗОВАТЕЛЬ» и «SYSTEM_USER».

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

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

Смежные вопросы