C# Самый безопасный способ загрузить пароль в метод Process с помощью службы

У меня есть служба C#, которая должна запускать процесс от имени другого пользователя (интерактивный режим). Этот пользователь является пользователем уровня администратора, и я знаю, что НЕ должен хранить пароль в виде строки в коде.

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

Требуется ли хранить хэшированный PW в файле конфигурации? Могу ли я сохранить хешированный PW прямо в коде, и кто-нибудь передаст его в защищенную строку? Я чувствую себя немного потерянным здесь и мог бы использовать некоторые указания.

1 ответ

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

1) Наверное, самое безопасное, что вы можете сделать - это запрашивать пароль при каждом запуске службы. Служба может хранить пароль в памяти, пока служба работает.

  • Таким образом, вам не нужно хранить пароль на жестком диске.
  • Недостатком является, конечно, то, что пароль должен быть введен при запуске службы.

2) Если вам необходимо сохранить пароль, не существует абсолютно безопасного способа, но Windows предлагает API для этой проблемы, API защиты данных (DPAPI). Это решает проблему, состоящую в том, что невозможно зашифровать пароль, не храня ключ где-то (что поднимает вопрос о том, где хранить ключ...).

using System.Security.Cryptography;

byte[] passwordBytes = Encoding.UTF8.GetBytes(plaintextPassword);
byte[] encryptedPassword = ProtectedData.Protect(passwordBytes, optionalEntropy, DataProtectionScope.LocalMachine);

С помощью этого кода Windows зашифрует пароль, используя информацию о работающем компьютере. Только ваш процесс, работающий на этом компьютере, сможет расшифровать пароль.

Другие вопросы по тегам