Что такое SID виртуальной машины?


Что такое SID (Security IDentifier) в общем понимает каждый, кто имел дело с администрированием Windows. Какие объекты имеют SID? С этим немного сложнее, попробуем разобраться. С понятием SID пользователя или группы мы сталкиваемся постоянно, предоставляя права доступа к папкам и файлам NTFS. С SID компьютера мы встречаемся, делегируя права учетным записям компьютеров в домене на выполнение неких операций или чтения политик безопасности. Понятие SID домена тоже довольно понятно интуитивно, но что же дальше?


В Windows Vista было введено понятие SID службы. Теперь каждой службе ОС можно предоставлять собственные права, вне зависимости от того, что большая часть служб работают в контексте Local Service. Действительно, SID служб S1 и S2 в ACL Windows Vista выглядят как NT SERVICE\S1 и NT SERVICE\S2. Это сделано для изоляции служб, то есть чтобы одна служба не могла писать в файлы и память, выделенные в личное пользование другой службе. Примером из жизни является служба Trusted Installer, которая имеет полные права на системные файлы в каталоге Windows. По умолчанию только эта служба может заменять системные файлы. Даже администраторам или другим службам при необходимости такие права приходится делегировать явным образом.



С появлением виртуализации Hyper-V в составе Windows Server 2008 встает вопрос изоляции файлов и памяти одной виртуальной машины от других ВМ. Ведь очевидно, что все виртуальные машины работают в контексте службы Hyper-V Virtual Machine Management в рамках процесса Virtual Machine Worker Process (vmwp.exe). Так как же давать раздельные права объектам, работающим внутри одной службы? Для этого и было введено понятие SID виртуальной машины. Если взглянуть на ACL файлов ВМ, мы увидим там SID вида NT VIRTUAL MACHINE\<GUID>, где GUID — это идентификатор виртуальной машины, настройки которой по умолчанию хранятся в C:\ProgramData\Microsoft\Windows\Hyper-V\<GUID>.xml.



Запустим Process Explorer и посмотрим на свойства процесса Virtual Machine Worker Process (vmwp.exe) для конкретной виртуальной машины:



Здесь мы видим, что процесс запускает виртуальную машину именно по ее GUID. А в свойствах безопасности данного процесса видим, что запущенной ВМ даются отдельные от остальных права:



Что можно сказать по результатам этого небольшого исследования?



  • Процесс vmwp.exe работает в контексте Network Service и имеет права на чтение и запись в файл виртуального диска ВМ в формате VHD, но не имеет прав на удаление файла.

  • Другие процессы, и даже другие ВМ, запущенные в контексте процесса vmwp.exe, не имеют таких прав.

  • Обратим внимание, что и icacls.exe, и Process Explorer показывают нам SID не в традиционном представлении вида S-1-5-83-1-151595173-1205986706-4119140776-3488306278…, а более удобное для понимания отображаемое имя. Оно включает название службы и GUID виртуальной машины.

Надеюсь, что теперь заявления Microsoft об изоляции процессов и виртуальных машин станут звучать более весомо, ибо мы только что посмотрели, как это реализуется.

Comments (3)

  1. Anonymous says:

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

  2. Alex A says:

    Не понял о чем вы.

    Я рассказывал о SID виртуальной машины, а не ОС.

    Тот SID, что есть и ДО установки ОС, и при установке не Windows ОС.

    Его сменить нельзя. Никак.

    SID ОС Windows внутри ВМ (также как и просто SID Windows машины на физическом оборудовании) это совсем другой SID. Его, кстати, тоже нельзя сменить произвольно руками. При заведении ОС в домен SID ОС автоматически изменится (станет в виде SID домена + RID аккаунта компьютера в домене). Данный процесс также вы не контроллируете, никак сами вручную на него не влияете. Имя ОС никак на SID не влияет, переименовывайте сколько угодно, он останется неизменен.

    Если я не ответил на ваш вопрос, давайте уточняйте его, отвечу.

  3. Clevelus says:

    Начало интересное, но про SID в общем ничего (только немного про безопасность и изоляцию).

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

    ЗЫ: а вот про эти иззменения в Viste не знал (ибо не интересовался), за что спасибо.

Skip to main content