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

本文涵蓋適用於 Azure 的期望狀態設定 (DSC) 擴充功能。 如需 DSC 擴充處理常式的概觀,請參閱 Azure 期望狀態設定擴充功能處理常式簡介

注意

啟用 DSC 延伸模組之前,我們希望您知道現在已正式推出較新版本的 DSC,由名為機器設定的 Azure Automange 功能所管理,。 機器設定功能結合 Desired State Configuration (DSC) 延伸模組處理常式、Azure 自動化狀態設定,以及客戶意見反應最常要求的功能。 機器設定也包含混合機器支援 (透過已啟用 Arc 的伺服器提供)。

傳入認證

您可能需要設定過程中,於使用者內容中設定使用者帳戶、存取服務,或安裝程式。 若要執行這些動作,您需要提供認證。

您可以使用 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 項目。

下一步