將認證傳遞至 Azure DSCExtension 處理常式

本文涵蓋適用於 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 陳述式。 如果缺少此陳述式,將無法執行下列步驟。 也請務必納入 typecast [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 項目。

下一步