#python
#python
Вопрос:
У меня есть некоторый код на языке Lambda, и я хочу защитить пароль переменными среды Lambda.
Теперь код выглядит следующим образом:
command = ssm_client.send_command(
InstanceIds=[InstanceId],
DocumentName='AWS-RunPowerShellScript',
Parameters={
"commands":["
$pass = ConvertTo-SecureString superPassword123 -AsPlainText -Force;
$creds = New-Object System.Management.Automation.PSCredential -ArgumentList kagarlickijAdmin,$pass;
Remove-Computer -ComputerName $(hostname) -Credential $creds -Verbose -Restart -Force
"]} )`
Как я могу заменить superPassword123
на os.environ['DomainPassword']
с учетом всех этих скобок?
Комментарии:
1. Где бы вы переключились на ‘DomainPassword’. Это
$pass
в-ArgumentList
? Извините, я не знаю, достаточно ли у меня контекста для того, что вы делаете / PowerShell.2. Мне нужно заменить
superPassword123
наos.environ['DomainPassword']
Ответ №1:
Вы можете передать пароль (или любую другую жестко закодированную подстроку в python с форматированием строки:
"commands":["
$pass = ConvertTo-SecureString {pw} -AsPlainText -Force;
$creds = New-Object System.Management.Automation.PSCredential -ArgumentList kagarlickijAdmin,$pass;
Remove-Computer -ComputerName $(hostname) -Credential $creds -Verbose -Restart -Force
".format(pw = os.environ['DomainPassword'])
Комментарии:
1. Это приведет к отображению вашего пароля в командной оболочке, но если он все равно доступен в вашей среде, в большинстве случаев это не будет иметь значения.
2. Вы имеете в виду, что это переменная в скрипте PowerShell? Я думал, что это переменная среды. Как вы используете Python здесь?
3. да, я отправляю команду PowerShell экземпляру Windows с помощью AWS SSM. Мне нужен Python, потому что Lambda не поддерживает PowerShell (ядро PowerShell поддерживается, но оно не поддерживает работу с ActiveDirectory). И я использую Lambda как действие правила событий CloudWatch. Цель состоит в том, чтобы удалить сервер из домена, когда он завершается ASG.
4. Вы пробовали мой код? Это должно сработать при условии: 1) python может получить доступ к паролю из вашей среды и 2) python запускает PowerShell, поэтому он может жестко кодировать пароль (переменная не требуется). Если вы хотите, вы можете добавить команду в PowerShell для сохранения пароля для дальнейшего использования.
5. Или вы хотите сказать, что ваш пароль сгенерирован в PowerShell? Следовательно,
$pass = ConvertTo-SecureString superPassword123 -AsPlainText -Force
. В этом случае вы можете захотеть добавить команду Powershell, чтобы записать ее в переменную среды или даже в текстовый файл (если вы все равно уничтожаете компьютер).