O conceito por trás de senhas seguras é que, em scripts de produção, não devemos passar senhas importantes como visualização simples. Trata-se de uma grave falta de segurança. Usando o PowerShell, podemos proteger uma senha ou, pelo menos, reduzir a visibilidade dela. Primeiro, discutimos aspectos gerais da string segura e, em seguida, discutimos como o Dell Command PowerShell Provider (DCPP) aproveita o recurso inato do PowerShell para proteger a senha.
Considere que queremos ler o nome de usuário e a senha do usuário no console. Sabemos que o nome de usuário geralmente não requer nenhuma segurança e pode ser visível para todos. Mas para senha, não devemos deixar estranhos saberem a senha do usuário. Podemos facilitar esse requisito com os comandos abaixo:
$user = Read-Host "Enter Username" $pass = Read-Host "Enter Password" -AsSecureString
O texto acima traz uma visão geral de como podemos aumentar a segurança quando precisamos proteger informações críticas, como uma senha. No exemplo acima, a variável $pass é do tipo System.Security.SecureString
. Temos uma introdução a dois outros cmdlets amplamente usados que o PowerShell fornece para facilitar campos seguros antes de abordar aspectos do DCPP.
Os dois comandos são ConvertTo-SecureString
e ConvertFrom-SecureString
. ConvertTo-SecureString
Converte um texto sem formatação para digitar System.Security.SecureString
. Um exemplo é mostrado abaixo:
"P@ssword1" | ConvertTo-SecureString -AsPlainText -Force
No exemplo acima, o texto sem formatação P@assword1
é convertido em tipo System.Security.SecureString
. Esta é mais uma informação e pode ou não ser amplamente utilizada.
O próximo cmdlet ConvertFrom-SecureString
é um cmdlet mais amplamente usado que é usado para converter cadeias de caracteres seguras em cadeias de caracteres padrão criptografadas. A principal limitação do ConvertTo-SecureString
é que sua saída não pode ser gravada diretamente em um arquivo para uso futuro. Temos que usar ConvertFrom-SecureString
que converte System.Security.SecureString
em uma string padrão criptografada que pode ser convenientemente salva em um arquivo, para superar essa limitação.
Estamos convertendo texto sem formatação P@ssword1
para prender a string e, em seguida, canalizar sua saída para ConvertFrom-SecureString
para obter uma cadeia de caracteres criptografada que pode ser salva com segurança e conveniência em um arquivo.
Por exemplo, digamos que em um computador se a senha de administrador foi definida e devemos salvá-la em um arquivo. Podemos fazer isso usando:
Read-Host "Enter Admin Password" -AsSecureString | ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt"
Podemos recuperar essa senha de administrador em uma variável como um objeto seguro como:
$pass = Get-Content "C:\Scripts\AdminPassword.txt" | ConvertTo-SecureString
Agora, vamos considerar como aproveitar uma senha segura para DCPP. No DCPP, se o computador do usuário tiver a senha do sistema ou de administrador definida, para todos set
comandos temos que passar a respectiva senha. Portanto, fornecer essa senha como texto sem formatação viola a segurança. Temos que passar a senha como System.Security.SecureString
. Além disso, quando passamos por um SecureString
senha temos que passá-lo com um -PasswordSecure
switch e não o normal –Password
interruptor. Um exemplo é exibido abaixo em que o usuário está tentando definir AdvancedBatteryChargeCfg
para Disabled
e de passagem SecureString
senha:
Set-item AdvancedBatteryChargeCfg disabled –PasswordSecure $pass
Aqui $pass contém a senha do sistema e de administrador e é do tipo System.Security.SecureString
. Semelhante à discussão acima, podemos ler $pass
como:
$pass = Read-Host "Enter system/admin password" –AsSecureString
Podemos economizar $pass
para um arquivo, se necessário, como:
$pass| ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt
Artigos relacionados: