将凭据传递给 Azure DSC 扩展处理程序

本文介绍了 Azure 的所需状态配置 (DSC) 扩展。 有关 DSC 扩展处理程序的概述,请参阅 Azure 所需状态配置扩展处理程序

传入凭据

在配置过程中,可能需要在用户上下文中设置用户帐户、访问服务或安装程序。 若要执行这些操作,需提供凭据。

可以使用 DSC 来设置参数化配置。 在参数化配置中,凭据将传递到配置并安全地存储在 .mof 文件中。 Azure 扩展处理程序提供证书的自动管理功能,以此简化凭据管理。

以下 DSC 配置脚本创建具有指定密码的本地用户帐户:

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

必须将 node localhost 包含为配置的一部分。 扩展处理程序会特意查找 node localhost 语句。 如果缺少此语句,则以下步骤不起作用。 还必须包含类型强制转换 [PsCredential]。 此特定类型触发扩展对凭据进行加密。

将此脚本发布到 Azure Blob 存储:

Publish-AzVMDscConfiguration -ConfigurationPath .\user_configuration.ps1

设置 Azure DSC 扩展并提供凭据:

$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

如何保护凭据

运行此代码时会出现输入凭据的提示。 提供凭据后,它短暂地存储在内存中。 使用 Set-AzVMDscExtension cmdlet 发布凭据时,会通过 HTTPS 将凭据传输到 VM。 在 VM 中,Azure 使用本地 VM 证书将加密的凭据存储在磁盘上。 若要将凭据传递给 DSC,将在内存中短暂地将其解密,然后将其重新加密。

此过程不同于使用不带扩展处理程序的安全配置。 Azure 环境提供了通过证书安全地传输配置数据的方法。 使用 DSC 扩展处理程序时,无需在 ConfigurationData 中提供 $CertificatePath$CertificateID/ $Thumbprint 条目。

后续步骤