El concepto detrás de las contraseñas seguras es que en los scripts de producción no debemos pasar contraseñas importantes como simples. Se trata de una grave falta de seguridad. Por lo tanto, con PowerShell podemos proteger una contraseña o, al menos, reducir su visibilidad. En primer lugar, analizaremos los aspectos generales de la cadena segura y, luego, cómo Dell Command PowerShell Provider (DCPP) aprovecha la característica innata de PowerShell para proteger la contraseña.
Tenga en cuenta que deseamos leer el nombre de usuario y la contraseña del usuario en la consola. Sabemos que el nombre de usuario generalmente no requiere ninguna seguridad y puede ser visible para todos. Pero para la contraseña no debemos permitir que extraños conozcan la contraseña del usuario. Podemos facilitar este requisito con los comandos que se indican a continuación:
$user = Read-Host "Enter Username" $pass = Read-Host "Enter Password" -AsSecureString
Lo anterior es una visión general de cómo podemos agregar más seguridad cuando debemos proteger información importante como una contraseña. En el ejemplo anterior, la variable $pass es del tipo System.Security.SecureString
. Obtenemos una introducción a otros dos cmdlets ampliamente utilizados que PowerShell proporciona para facilitar la protección de los campos antes de abordar aspectos de DCPP.
Los dos comandos son los siguientes: ConvertTo-SecureString
y ConvertFrom-SecureString
. ConvertTo-SecureString
Convierte un texto sin formato en texto System.Security.SecureString
. A continuación, se muestra un ejemplo:
"P@ssword1" | ConvertTo-SecureString -AsPlainText -Force
En el ejemplo anterior, el texto sin formato P@assword1
se convierte en el tipo System.Security.SecureString
. Esto es más información y puede o no ser ampliamente utilizado.
El siguiente cmdlet ConvertFrom-SecureString
es un cmdlet más utilizado que se utiliza para convertir cadenas seguras en cadenas estándar cifradas. La principal limitación de la ConvertTo-SecureString
es que su salida no se puede escribir directamente en un archivo para su uso futuro. Tenemos que usar ConvertFrom-SecureString
que convierte System.Security.SecureString
en una cadena estándar cifrada que se puede guardar convenientemente en un archivo, para superar esta limitación.
Estamos convirtiendo texto sin formato P@ssword1
para asegurar la cadena y luego canalizar su salida a ConvertFrom-SecureString
para obtener una cadena cifrada que se puede guardar de manera segura y conveniente en un archivo.
Como ejemplo, digamos en una computadora si se ha establecido la contraseña de administrador y debemos guardarla en un archivo. Podemos hacer esto usando:
Read-Host "Enter Admin Password" -AsSecureString | ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt"
Podemos recuperar esta contraseña de administrador en una variable como un objeto seguro como:
$pass = Get-Content "C:\Scripts\AdminPassword.txt" | ConvertTo-SecureString
Ahora consideremos cómo aprovechar una contraseña segura para DCPP. En DCPP, si la computadora del usuario tiene configurada una contraseña de administrador o de sistema, entonces para todos set
comandos que tenemos para pasar la contraseña respectiva. Por lo tanto, proporcionar esta contraseña como texto sin formato infringe la seguridad. Tenemos que pasar la contraseña como System.Security.SecureString
. Además, cuando pasamos un SecureString
contraseña tenemos que pasarla con un -PasswordSecure
switch y no el normal –Password
interruptor. A continuación, se muestra un ejemplo en el que el usuario intenta establecer AdvancedBatteryChargeCfg
to Disabled
y pasando SecureString
contraseña:
Set-item AdvancedBatteryChargeCfg disabled –PasswordSecure $pass
Aquí$pass contiene la contraseña del sistema y de administrador, y es del tipo System.Security.SecureString
. De manera similar a la discusión anterior, podemos leer: $pass
como:
$pass = Read-Host "Enter system/admin password" –AsSecureString
Podemos ahorrar $pass
a un archivo, si es necesario, como:
$pass| ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt
Artículos relacionados: