Passare credenziali al gestore estensione DSC di AzurePass credentials to the Azure DSCExtension handler

Nota

Azure offre due modelli di distribuzione per creare e usare le risorse: Gestione risorse e la distribuzione classica.Azure has two different deployment models for creating and working with resources: Resource Manager and classic. In questo articolo viene illustrato l'utilizzo di entrambi i modelli, ma Microsoft indica che le distribuzioni più nuove utilizzano il modello di gestione delle risorse.This article covers using both models, but Microsoft recommends that most new deployments use the Resource Manager model.

Questo articolo illustra l'estensione DSC (Desired State Configuration) per Azure.This article covers the Desired State Configuration (DSC) extension for Azure. Per una panoramica del gestore estensione DSC, vedere Introduzione al gestore dell'estensione DSC (Desired State Configuration) di Azure.For an overview of the DSC extension handler, see Introduction to the Azure Desired State Configuration extension handler.

Passare le credenzialiPass in credentials

Nell'ambito del processo di configurazione, potrebbe essere necessario configurare account utente, servizi di accesso o installare un programma in un contesto utente.As part of the configuration process, you might need to set up user accounts, access services, or install a program in a user context. Per eseguire queste operazioni, è necessario fornire le credenziali.To do these things, you need to provide credentials.

DSC consente di impostare le configurazioni con parametri.You can use DSC to set up parameterized configurations. In una configurazione con parametri, le credenziali vengono passate nella configurazione e archiviate in modo sicuro in file .mof.In a parameterized configuration, credentials are passed into the configuration and securely stored in .mof files. Per semplificare la gestione delle credenziali, il gestore estensione di Azure offre la gestione automatica dei certificati.The Azure extension handler simplifies credential management by providing automatic management of certificates.

Lo script di configurazione DSC seguente che crea un account utente locale con la password specificata:The following DSC configuration script creates a local user account with the specified password:

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
        }
    }
}

È importante includere node localhost come parte della configurazione.It's important to include node localhost as part of the configuration. Il gestore estensione cerca specificatamente l'estensione localhost nodo.The extension handler specifically looks for the node localhost statement. Se l'istruzione manca, la procedura seguente non funziona.If this statement is missing, the following steps don't work. È anche importante includere il cast di tipo [PsCredential].It's also important to include the typecast [PsCredential]. Questo tipo specifico attiva l'estensione per crittografare le credenziali.This specific type triggers the extension to encrypt the credential.

Pubblicare questo script nell'archivio BLOB di Azure:To publish this script to Azure Blob storage:

Publish-AzureVMDscConfiguration -ConfigurationPath .\user_configuration.ps1

Impostare l'estensione DSC di Azure e specificare la credenziale:To set the Azure DSC extension and provide the credential:

$configurationName = "Main"
$configurationArguments = @{ Credential = Get-Credential }
$configurationArchive = "user_configuration.ps1.zip"
$vm = Get-AzureVM "example-1"

$vm = Set-AzureVMDSCExtension -VM $vm -ConfigurationArchive $configurationArchive 
-ConfigurationName $configurationName -ConfigurationArgument @configurationArguments

$vm | Update-AzureVM

Modalità di protezione della credenzialeHow a credential is secured

Durante l'esecuzione del codice viene chiesta una credenziale.Running this code prompts for a credential. Dopo che la credenziale viene fornita, viene archiviata per un breve periodo di tempo in memoria.After the credential is provided, it's briefly stored in memory. Quando la credenziale viene pubblicata tramite il cmdlet Set-AzureVmDscExtension cmdlet, la credenziale viene trasmessa tramite HTTPS alla macchina virtuale.When the credential is published by using the Set-AzureVmDscExtension cmdlet, the credential is transmitted over HTTPS to the VM. Nella macchina virtuale, Azure archivia le credenziali crittografate su disco usando il certificato della macchina virtuale locale.In the VM, Azure stores the credential encrypted on disk by using the local VM certificate. La credenziale viene brevemente decrittografata nella memoria e quindi nuovamente crittografata per essere passata a DSC.The credential is briefly decrypted in memory, and then it's re-encrypted to pass it to DSC.

Questo processo è diverso dall' uso di configurazioni sicure senza il gestore dell'estensione.This process is different than using secure configurations without the extension handler. L'ambiente di Azure offre un modo per trasmettere i dati di configurazione in maniera sicura tramite certificati.The Azure environment gives you a way to transmit configuration data securely via certificates. Quando si usa il gestore dell'estensione DSC, non è necessario fornire $CertificatePath o una voce $CertificateID/ $Thumbprint in ConfigurationData.When you use the DSC extension handler, you don't need to provide $CertificatePath or a $CertificateID/ $Thumbprint entry in ConfigurationData.

Passaggi successiviNext steps