Текстовый файл должен быть доступен только из командного файла и конкретного пользователя - PullRequest
0 голосов
/ 29 октября 2019

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

script.bat:

@ECHO OFF

SET credentialsFile=.\SomeFile.txt:username.txt
SET anotherFile=.\SomeFile.txt:password.txt

SET /p username=<%credentialsFile%
SET /p password=<%anotherFile%

Script here that needs to use %username% and %password% for execution

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

** Обратите внимание, что этот сценарий должен запускаться при запуске, поэтому цель состоит в том, чтобы не требовать ввода данных пользователем при выполнении в случае отказа серверапосреди ночи

1 Ответ

0 голосов
/ 29 октября 2019

Я согласен, что PSCredential объекты могут быть хорошим решением для вашего случая использования. Чтобы помочь вам, вот пример сценария, который может хранить имя пользователя и пароль в файлах .txt, а затем использовать их для создания объекта PSCredential.

Пароль хранится как SecureString - нечитаемыйесли вы просто откроете файл .txt. Защищенная строка используется для создания объекта PSCredentia l. SecureString может быть прочитано только той же учетной записью на том же компьютере, на котором он был создан.

# This method will encrypt using the Windows Data Protection API, which 
# we are only able to access the password file with one account and only 
# on the same device that created the password file.

# Get the UserName and store it in a file
$UserName = Read-Host -Prompt "Enter username for script" | Tee-Object "UserName.txt"

# Get the Password and store it as a secure string in a file
#  e.g. abc123
Read-Host -Prompt "Enter password for $Credential" -AsSecureString | ConvertFrom-SecureString | Out-File "Password.txt"

# Get our password from the secure string we stored on disk
$Password = Get-Content "Password.txt" | ConvertTo-SecureString

# Create a PS credential object using the username and password we've gathered
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $UserName,$Password

# This yields the plain text password.  
#  e.g. abc123
$Credential.GetNetworkCredential().Password
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...