Windows BackupRead / BackupWrite и списки контроля доступа

Я пытался понять, каким должен быть правильный способ использования BackupRead и BackupWrite для резервного копирования данных на компьютере и особенно для их надежного восстановления.

Теперь я понимаю, как использовать API, и добился успеха. Однако меня беспокоит одна вещь. Вы можете создавать резервные копии, помимо самого содержимого файла, любых альтернативных потоков данных, а также информации о безопасности (ACL).

Теперь, если я буду хранить данные ACL для резервного копирования, а затем позже, когда данные нужно будет восстановить на другом компьютере ИЛИ на новом настроенном компьютере, что мне делать с идентификаторами безопасности, которые связаны с ACL? SID, скорее всего, больше не действителен для машины, и как выбрать правильного пользователя? Теперь я смотрю на это в большем масштабе, допустим, это компьютер с несколькими пользователями и сотнями или тысячами объектов с разными настройками, это было бы беспорядком, чтобы восстановить данные с настройками безопасности, примененными к ним снова.

Это что-то, если пользователь программного обеспечения желает сделать резервную копию настроек безопасности, что пользователь должен принять о себе и обновить их соответствующим образом или что?

Кроме того, BackupRead и BackupWrite предоставят мне необработанные двоичные данные этих элементов, которые не так уж сложно использовать, однако очевидно, что этот API даже не предназначен для решения этой проблемы.

Кто-нибудь знает, как приложение резервного копирования должно справиться с этой ситуацией? Что вы думаете или какие-либо указания по руководству по этой конкретной теме?

Большое спасибо.


person RecentDarkness    schedule 27.11.2010    source источник


Ответы (2)


Думаю, вы правильно понимаете проблемы с резервным копированием и восстановлением данных. Я считаю, что правильное понимание проблемы - это половина ее решения. Я полагаю, что вы, как и большинство пользователей сайта stackoverflow, в основном разработчик программного обеспечения, а не администратор большой сети. Таким образом, вы видите проблему с другой стороны разработчика программного обеспечения, а не со стороны администратора. Администратор знает ограничения резервного копирования и восстановления ACL и уже использует их.

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

В большинстве случаев резервные копии данных содержат идентификаторы безопасности групп домена, идентификаторы безопасности пользователей домена, известные идентификаторы безопасности или псевдонимы SID из домена BUILTIN в дескрипторах безопасности. В этом случае менять SID вообще не нужно. Если администратор внесет некоторые изменения в ACL, он сможет использовать различные существующие утилиты, например SubInACL.exe.

Если вы пишете программу резервного копирования / восстановления, которую хотите использовать для перемещения данных с информацией о безопасности, вы можете включить в резервную копию некоторую дополнительную метаинформацию о локальных SID учетных записей / групп, используемых в сохраненной безопасности. дескрипторы. В программе восстановления вы можете предоставить возможность замены идентификаторов безопасности из сохраненных дескрипторов безопасности. Много лет назад я написал для одного крупного клиента несколько утилит для очистки SID в SD в файловой системе, реестре и службах после миграции домена. Это было не так уж и сложно. Поэтому я предлагаю вам реализовать ту же функцию в своем программном обеспечении для резервного копирования / восстановления.

person Oleg    schedule 17.02.2011

Я действительно считаю, что API резервного копирования * в первую очередь предназначены для резервного копирования и восстановления на одной и той же машине, что сделает проблему SID несущественной. Однако, предполагая сценарий, в котором вам нужно восстановить резервную копию при новой установке, вот мои мысли о решениях.

Для известных идентификаторов безопасности, таких как «Все», «Владелец-создатель» и т. Д., Проблем нет.

Для идентификаторов безопасности, зависящих от домена, вы можете сохранить их как есть, а после восстановления вы можете исправить часть домена, если это необходимо. Вероятно, вам следует сохранить доменное имя для таких SID.

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

Большинство проблем, связанных с такими SID, можно (и, вероятно, обычно) можно решить автоматически. Я определенно был бы признателен за приложение резервного копирования, которое было бы достаточно умным, чтобы выполнить восстановление, о котором я его просил, и выяснить, что «Эрик» на старой машине должен быть «Эрик» на новой машине.

И побочное примечание: если вы все же решите использовать такое решение, помните, как раздражает запуск передачи данных в ночное время, чтобы вернуться к чему-то 5% -ному блокированию во всплывающем окне, которое можно так же легко отложить :)

person Erik    schedule 17.02.2011