Pasar credenciales al controlador de extensiones DSC de Azure

En este artículo se trata la extensión Desired State Configuration (DSC) de Azure. Para ver información general sobre el controlador de extensiones de DSC, consulte Introducción al controlador de extensiones de configuración de Azure Desired State.

Nota:

Antes de habilitar la extensión DSC, debe saber que ahora hay una versión más reciente de DSC disponible con carácter general, administrada mediante una característica de Azure Automanage denominada configuración de máquina. La característica de configuración de máquina combina características de la extensión Desired State Configuration (DSC) del controlador, State Configuration de Azure Automation y las características que más solicitan los clientes en sus comentarios. La configuración de máquina también incluye compatibilidad con las máquinas híbridas mediante servidores habilitados para Arc.

Pase de credenciales

Como parte del proceso de configuración, es posible que deba configurar las cuentas de usuario, obtener acceso a los servicios o instalar un programa en un contexto de usuario. Para llevar a cabo estas acciones, debe proporcionar las credenciales.

Puede usar DSC para establecer configuraciones parametrizadas. En una configuración parametrizada, las credenciales se pasan a la configuración y se almacenan de forma segura en archivos .mof. El controlador de extensiones de Azure simplifica la administración de credenciales, ya que administra los certificados de forma automática.

El siguiente script de configuración de DSC crea una cuenta de usuario local con la contraseña especificada:

configuration Main
{
    param(
        [Parameter(Mandatory=$true)]
        [ValidateNotNullorEmpty()]
        [PSCredential]
        $Credential
    )
    Node localhost {
        User LocalUserAccount
        {
            Username = $Credential.UserName
            Password = $Credential
            Disabled = $false
            Ensure = "Present"
            FullName = "Local User Account"
            Description = "Local User Account"
            PasswordNeverExpires = $true
        }
    }
}

Es importante incluir node localhost como parte de la configuración. El controlador de extensiones busca específicamente la instrucción node localhost. Si falta esta instrucción, los siguientes pasos no funcionarán. También es importante incluir la conversión de tipo [PsCredential]. Este tipo específico desencadena la extensión para cifrar la credencial.

Para publicar este script en Azure Blob Storage:

Publish-AzVMDscConfiguration -ConfigurationPath .\user_configuration.ps1

Para establecer la extensión DSC de Azure y proporcionar la credencial:

$configurationName = 'Main'
$configurationArguments = @{ Credential = Get-Credential }
$configurationArchive = 'user_configuration.ps1.zip'
$vm = Get-AzVM -Name 'example-1'

$vm = Set-AzVMDscExtension -VMName $vm -ConfigurationArchive $configurationArchive -ConfigurationName $configurationName -ConfigurationArgument @configurationArguments

$vm | Update-AzVM

Cómo se protege una credencial

Al ejecutar este código, se solicita una credencial. Después de proporcionar la credencial, se almacena brevemente en la memoria. Cuando la credencial se publica usando el cmdlet Set-AzVMDscExtension, esta se transmite a través de HTTPS a la VM. En la máquina virtual, Azure almacena la credencial cifrada en el disco mediante el certificado de máquina virtual local. La credencial se descifra brevemente en la memoria y se vuelve a cifrar para pasarla a DSC.

Este proceso no es el mismo que cuando se usan configuraciones seguras sin el controlador de extensiones. El entorno de Azure ofrece una manera de transmitir datos de configuración de forma segura mediante certificados. Cuando utiliza el controlador de la extensión DSC, no es necesario proporcionar $CertificatePath o una entrada $CertificateID/ $Thumbprint en ConfigurationData.

Pasos siguientes