PowerShell - Encriptar credenciales

Hola a todo@s, en la siguiente entrada quiero dejar un script de PowerShell que está destinado a crear un fichero que contiene la contraseña encriptada para conectarse a SharePoint.

El script tiene el nombre de Create-PasswordTextFile.ps1 y a su vez este script tiene una dependencia del script Utilities.ps1.

El objetivo principal de este script de PowerShell es agilizar los procesos de desarrollo e implantación, evitando escribir esas tediosas contraseñas, cada vez que hay que ejecutar un script de SharePoint PnP.

El script crea un fichero de texto en la carpeta Credentials donde se ejecuta el script con las siguientes características:

  • El nombre del fichero de texto se genera encriptado para dificultar la identificación del usuario de conexión.

  • El nombre del fichero de texto se encripta con SHA256, que no es reversible, y así se ofrece mayor seguridad.

  • El contenido del fichero de texto este encriptado, para dificultar la identificación de la contraseña del usuario de conexión.

Ejemplo de ficheros y contenido encriptados para establecer las credenciales

Aviso importante: El contenido de esta entrada, es una sugerencia que se da a la hora de gestionar usuarios y contraseñas, pero nadie está obligado a usarla y el blog no se hace responsable de lo que pueda pasar al usar este código.

<# 
    Create a text file with the encrypted name and the password is encrypted.
    The file will be created in the following folder:
        {Current directory}\Credentials
    The name of the file will be:
        {Encrypted user token}.txt
#>

#region Parameters
    [CmdletBinding()]
    Param(
        [Parameter(Mandatory = $True, Position = 1)]
        [ValidateNotNullOrEmpty()]
        [string]$UserName,
        [Parameter(Mandatory = $True, Position = 2)]
        [ValidateNotNullOrEmpty()]
        [string]$Password
    )
#endregion

. ".\Utilities.ps1"

Write-Host "Process begins ..." -ForegroundColor DarkMagenta

#region create folder Credentials
    $global:path = get-location
    $outputFolder = -join($path, "\Credentials");
    if(!(Test-Path -Path $outputFolder )){
        New-Item -ItemType directory -Path $outputFolder
    }
#endregion

#region Encrypt Password
    $SecurePwd = ConvertTo-SecureString -String $Password -AsPlainText -Force;
    $EncryptedPwd = ConvertFrom-SecureString -SecureString $SecurePwd -key (1..16);
#endregion

#region Write to File
    $CredentialsPath = -join($outputFolder, "\")
    $FilePath = $CredentialsPath + (EncryptToken $UserName) + ".txt";
    $EncryptedPwd | Set-Content $FilePath;
#endregion

Write-Host "Process finished" -ForegroundColor DarkMagenta

Entradas populares de este blog

Cargar archivos desde PowerApps a bibliotecas de SharePoint

Menús desplegables relacionados en SharePoint Online

Generar contenido para páginas modernas con JSON