Red de conocimiento informático - Material del sitio web - Utilizar de forma segura la información de contraseña en scripts de Powershell

Utilizar de forma segura la información de contraseña en scripts de Powershell

Cuando se utilizan scripts basados ​​en la automatización de Powershell, en la mayoría de los escenarios es necesario pasar credenciales sin el script para que el enlace de verificación funcione correctamente. Muchos administradores están acostumbrados a usar contraseñas de texto sin cifrar en sus scripts, pero si. El script de prueba es irrelevante. Si se trata de un script utilizado en un entorno de producción, este comportamiento no solo es malo, sino que también es terrible. Los camaradas con malas intenciones lo obtendrán feliz y fácilmente y causarán algún daño leve o grave. Sin embargo, si utiliza correctamente la función de cifrado de contraseña proporcionada por PowerShell, puede resolver este problema fácilmente.

En PowerShell, se proporcionan dos formas de generar credenciales: Get-Credential y Read-Host

Get-Credential

El comando Get-Credential se utiliza para cree un objeto PSCredential y guárdelo en una variable, y asegúrese de que no se muestre en la pantalla de la siguiente manera

El comando anterior guarda la información de la credencial en la variable $crd, que se puede usar fácilmente para acceder los cmdlets requeridos que especifican las credenciales

Read-Host

El uso de Read-Host también puede proteger la visualización de contraseñas de texto sin formato de la siguiente manera: -AsSecureString puede almacenar contraseñas de texto sin formato en una cadena de contraseña cifrada objetos, los objetos SecureString se pueden usar con comandos que aceptan parámetros de este tipo, y el objeto se puede pasar al comando definiendo variables y canalizando la salida.

ConvertTo-SecureString

ConvertTo-SecureString se usa para cifrar contraseñas y otras cadenas. Puede aceptar cadenas y luego generarlas como objetos SecureString que se pueden usar para aceptar este tipo. Parámetros de un comando, este objeto se puede pasar al comando definiendo variables y canalizando la salida.

La sintaxis es la siguiente:

Cuando el parámetro -Key o -SecureKey no es aplicable, PowerShell llamará a la API de protección de datos de Windows (DPAPI) para cifrar/descifrar la cadena. Pero esto hará que el objeto SecureString generado se utilice en otras computadoras.

Lo siguiente convertirá "Contraseña" de texto sin formato en SecureString

Aunque este método puede convertir caracteres de texto sin formato en objetos SecureString, no se puede almacenar como un archivo para su uso posterior. Debe convertirse en una cadena cifrada estándar. Para lograr este propósito, utilice el comando ConvertFrom-SecureString.

ConvertFrom-SecureString

Utilice el comando ConvertFrom-SecureString para almacenar el objeto SecureString como una cadena cifrada estándar. Esto se puede lograr pasando el objeto SecureString o el objeto SecureString generado por. comando a través de una tubería

Sintaxis:

El objeto SecureString generado por el ejemplo anterior se puede utilizar aquí para convertirlo en una cadena cifrada estándar

Combinando Con los comandos anteriores, podemos hacer que los siguientes métodos conviertan SecureString en una cadena cifrada estándar y la almacenen en un archivo txt mediante el comando Out-File

Exportar el objeto SecureString generado en modo de texto sin formato

Exportar el generado por el objeto Get-Credential SecureString

Exportar el objeto SecureString generado por Read-Host

Convertir el archivo de cadena cifrado estándar almacenado anteriormente nuevamente a SecureString y usarlo para crear PSCredential

Como se mencionó anteriormente Cuando se usa ConvertTo-SecureString y ConvertFrom-SecureString para cifrar credenciales, si no se usa -Key o -SecureKey, PowerShell llamará a DPAPI para cifrar y descifrar, porque no se puede usar en máquinas distintas a la creada, de la siguiente manera

El mismo host

Utilice el mismo archivo de texto anterior en diferentes hosts

Utilice Key o SecureKey para implementar cifrado archivos entre máquinas

Utilice el parámetro -Key Cree un archivo que guarde la cadena cifrada estándar. La clase de Windows "System.Security.Cryptography.RNGCryptoServiceProvider" se utilizará a continuación para crear datos aleatorios para llenar la matriz. es el valor del parámetro de -Key

Usar datos aleatorios para crear una clave AES y exportar a un archivo

Crear un objeto SecureString

Crear credenciales

En otra máquina

El contenido anterior está completo. Puede ayudarnos a cifrar contraseñas en scripts de PowerShell. Si tiene alguna otra pregunta, deje un mensaje.