将凭据传递给 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 条目。
后续步骤
- 获取 Azure DSC 扩展处理程序简介。
- 检查适用于 DSC 扩展的 Azure 资源管理器模板。
- 有关 PowerShell DSC 的详细信息,请转到 PowerShell 文档中心。
- 若要了解可以使用 PowerShell DSC 管理的其他功能并获取更多 DSC 资源,请浏览 PowerShell 库。