Как удалить sIDHistory у объектов Active Directory

Обновлено 26.09.2023

sIDHistory logo

Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы с вами разобрали ситуацию, когда мне пришлось вытаскивать свои данные с жесткого диска на котором было повреждение в структуре файловой системы на томе. Данные вытащить удалось, поэтому можно двигаться дальше. Сегодня я хочу вам рассказать, о том как вы можете удалить содержимое атрибута sIDHistory у объектов Active Directory, я вам приведу примеры когда это необходимо и без этого просто никак не выкрутится. Думаю, что данный материал будет полезен тем кто более глубоко хочет изучить активный каталог.

Что такое sIDHistory?

sIDHistory (Security Identifier History) - это функция, предоставляемая операционной системой Windows, которая отслеживает и хранит историю учетных записей пользователей и групп в Active Directory. Каждый пользователь или группа в Active Directory имеет уникальный идентификатор безопасности (SID), который используется для управления доступом к ресурсам системы.

sIDHistory предназначена для решения проблемы с доступом к ресурсам, возникающих при перемещении пользователей или групп между доменами Active Directory. При перемещении учетной записи пользователя или группы из одного домена в другой, новый домен может не распознавать идентификатор безопасности (SID), который был назначен в предыдущем домене. Это может привести к потере доступа к ресурсам, таким как файлы, папки или разрешения.

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

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

Однако необходимо учитывать некоторые ограничения и риски при использовании sIDHistory.

  • ✅Во-первых, использование sIDHistory может увеличить размер базы данных Active Directory и повлиять на производительность системы. Каждый сохраненный SID занимает дополнительное место в базе данных, поэтому необходимо внимательно управлять использованием sIDHistory.
  • ✅Кроме того, sIDHistory может быть использован злоумышленниками для получения несанкционированного доступа к ресурсам. Если злоумышленники получат доступ к учетной записи с атрибутом sIDHistory, они могут использовать предыдущие SID для получения доступа к ресурсам, на которые учетная запись больше не имеет права доступа. Поэтому необходимо обеспечить безопасность и контроль доступа к атрибуту sIDHistory.
  • ✅В третьих после завершения миграции домена рекомендуется очистить sIDHistory от учетных записей пользователей или групп, чтобы избежать возможных проблем с размером токена (MaxTokenSize).

Как удалить sIDHistory у пользователя AD

Существует два варианта удаления sIDHistory, первый это графический вариант через оснастку ADUC. Для этого зайдите в свойства учетной записи на вкладку Attribute Editor.  Через кнопку Edit произведите удаление. Если у вас возникнет вот такая ошибка, даже при условии наличия прав, то переходите ко второму методу:

Operation failed. Error code 0x5. Access is denied. 00000005: SecErr DSID-031A11CF, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0

Operation failed. Error code 0x5. Access is denied. 00000005: SecErr DSID-031A11CF, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0

Запустите Powershell в повышенном режиме. Для этого используйте учетные данные администратора домена и введите следующую команду:

Get-ADUser USERNAME -properties sidhistory | foreach {Set-ADUser $_ -remove @{sidhistory=$_.sidhistory.value}}

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

Как удалить sIDHistory для группы Active Directory

Запустите Powershell в повышенном режиме и введите следующую команду:

Get-ADGroup GROUPNAME -properties sidhistory | foreach {Set-ADGroup $_ -remove @{sidhistory=$_.sidhistory.value}}

Замените атрибут GROUPNAME именем группы Active Directory. Если вы получаете "Set-ADGroup: Cannot validate argument on parameter ‘Remove’. The argument is null or an element of the argument collection contains a null value", это означает, что sIDHistory не был установлен для этой группы AD.

Как удалить sIDHistory для всех пользователей в организационном подразделении Active Directory

Запустите Powershell в повышенном режиме  и введите следующую команду:

Get-ADUser -SearchBase "OU=Accounts,DC=Pyatilistnik,DC=org" -Filter {sidhistory -like '*'} -properties sidhistory | foreach {Set-ADUser $_ -remove @{sidhistory=$_.sidhistory.value}}

Замените параметр -SearchBase на отличительное имя организационной единицы и нажмите Enter.

После того как вы выполнили очистку SSID, вы можете проверить, есть ли еще учетные записи AD со значением sIDhistory. Для этого можно использовать следующую команду PowerShell:

Get-aduser -filter * -properties sidhistory | Where sidhistory -ne $null

или такой скрипт:

# Установка пути к модулю Active Directory
Import-Module ActiveDirectory

# Получение списка пользователей с заполненным атрибутом SIDHistory
$users = Get-ADUser -Filter {SIDHistory -like "*"} -Properties SIDHistory

# Вывод списка пользователей
foreach ($user in $users) {
Write-Host "Имя пользователя: $($user.Name)"
Write-Host "SIDHistory: $($user.SIDHistory)"
Write-Host "--------------------------"
}

Вывод SIDHistory powershell

Надеюсь, что это руководство поможет вам удалить sIDHistory из объектов AD. С вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.

Автор - Сёмин Иван

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *