Страницы

вторник, 3 сентября 2019 г.

Идентификаторы безопасности машины (Machine SID) и идентификаторы безопасности домена (Domain SID)


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

Машинный и доменный идентификаторы безопасности (SID) состоят из базового идентификатора безопасности (SID) и относительного идентификатор безопасности (RID), который добавляется к базовому SID. Базовый SID можно представить, как идентификатор удостоверяющего центра, в котором могут быть определены учетные записи и группы. Компьютер имеет идентификатор безопасности машины (Machine SID), в свою очередь локальные учетные записи и группы имеют свои идентификаторы безопасности (SID), которые состоят из идентификатора безопасности машины (Machine SID) и относительного идентификатора (RID).

Пример:

Компьютер PSPC01 S-1-5-21-3710404310-1819468805-1764988232
PSPC01\Администратор S-1-5-21-3710404310-1819468805-1764988232-500
PSPC01\Гость S-1-5-21-3710404310-1819468805-1764988232-501
PSPC01\User S-1-5-21-3710404310-1819468805-1764988232-1003

Чтобы увидеть идентификатор безопасности машины (Machine SID), можно воспользоваться утилитой PsGetSid из набора Sysinternals:

.\PsGetsid.exe

PsGetSid v1.45 - Translates SIDs to names and vice versa
Copyright (C) 1999-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

SID for \\PSPC01:
S-1-5-21-3710404310-1819468805-1764988232

Для получения идентификатора безопасности (SID) локального пользователя можно воспользоваться командлетом Get-LocalUser:

Get-LocalUser администратор | `
Select-Object -Property name,sid

Name          SID
----          ---
Администратор S-1-5-21-3710404310-1819468805-1764988232-500

Идентификатор безопасности (не имя) – это то, что сохраняется в ключах доступа, связанных с защищаемым объектом и то, что сравнивается подсистемой безопасности при выполнении проверки доступа.

На системах в рабочих группах локальные учетные записи и группы – это все что у них есть. Утверждение отметок (Mark’s Assertion) – механизм аутентификации на удаленных системах с использованием локальных учетных записей требует, чтобы имя пользователя и пароль были известны удаленной системе, при этом идентификаторы безопасности (SID) не используются. Единственный путь сделать нечто подобное на единый вход (SSO) при помощи локальных учетных записей – это создать на удаленной системе пользователя с таким же именем учётной записи и паролем, как и на системе, с которой инициируется вызов. Идентификаторы безопасности (SID) не передаются и не используются для удаленной аутентификации.

Если компьютер подключен к домену, тогда другой SID вступает в игру. Компьютер продолжает иметь свой собственный идентификатор безопасности машины (Machine SID) и его собственные локальные учетные записи и группы. Но также он является членом домена, и имеет SID представляющий его учетную запись в домене. Домен – это удостоверяющий центр, в котором могут быть определены учетные записи, группы и прочие сущности – в том числе учётная запись компьютера:

Домен seele.local S-1-5-21-1903168476-3267560051-2806442713
seele\pspc01$ S-1-5-21-1903168476-3267560051-2806442713-2262
seele\Administrator S-1-5-21-1903168476-3267560051-2806442713-500
seele\Urlik S-1-5-21-1903168476-3267560051-2806442713-1602

Чтобы увидеть идентификатор безопасности (SID) для учетной записи компьютера в домене, можно воспользоваться утилитой PsGetSid из набора Sysinternals:

.\PsGetsid.exe pspc01$

PsGetSid v1.45 - Translates SIDs to names and vice versa
Copyright (C) 1999-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

SID for SEELE\pspc01$:
S-1-5-21-1903168476-3267560051-2806442713-2262

Я же для получения идентификаторов безопасности из доменных служб Active Directory (AD DS) предпочитаю использовать командлеты Windows PowerShell из модуля ActiveDirectory.

Для получения идентификатора безопасности домена (Domain SID) можно воспользоваться командлетом Get-ADDomain:

Get-ADDomain -Identity seele.local | `
Select-Object -Property name,Domainsid

name  Domainsid
----  ---------
seele S-1-5-21-1903168476-3267560051-2806442713

Для получения идентификатора безопасности (SID) учетной записи компьютера можно воспользоваться командлетом Get-ADComputer:

Get-ADComputer -Identity pspc01 | `
Select-Object -Property name,sid

name   sid
----   ---
PSPC01 S-1-5-21-1903168476-3267560051-2806442713-2262

Для получения идентификаторов безопасности (SID) учетных записей пользователей можно воспользоваться командлетом Get-ADUser:

'Administrator','Urlik' | Get-ADUser | `
Select-Object -Property name,sid

name          sid
----          ---
Administrator S-1-5-21-1903168476-3267560051-2806442713-500
Yuriy Lebedev S-1-5-21-1903168476-3267560051-2806442713-1602

Теперь PSCP01 имеет два отдельных идентификатора безопасности:
  • Идентификатор безопасности машины (Machine SID), который определяет ее (локально) как удостоверяющий центр, позволяющий создавать учетные записи пользователей и группы.
  • Идентификатор безопасности учётной записи компьютера (Computer Account SID) в домене SEELE.LOCAL.

Нужно отметить главное – идентификаторы безопасности (SID) должны быть уникальными в рамках удостоверяющего центра в котором они используются. Таким образом PSCP01 должн иметь только одну локальную учётную запись с идентификатором безопасности (SID): S-1-5-21-3710404310-1819468805-1764988232, и не имеет значение если другой компьютер использует такой же идентификатор безопасности (SID) относящийся к его системе. Однако, в рамках домена SEELE.LOCAL должна быть только одна учётная запись с идентификатором безопасности (SID): S-1-5-21-1903168476-3267560051-2806442713-2262. Если несколько компьютеров в домене попробуют совместно использовать один идентификатор безопасности (SID), то это станет причиной различных проблем идентификации.

Комментариев нет:

Отправить комментарий