Set-AzureRmVMDiskEncryptionExtension

Aktiviert die Verschlüsselung auf einem virtuellen IaaS-Computer in Azure.

Wichtig

Die Az PowerShell-Module bieten nun die gleichen Funktionen wie AzureRM PowerShell-Module und weitere Funktionen, daher werden die AzureRM PowerShell-Module am 29 Februar 2024 ausgemustert.

Um Dienstunterbrechungen zu vermeiden, müssen Sie bis zum 29. Februar 2024 die Skripts aktualisieren, die AzureRM PowerShell-Module verwenden. Befolgen Sie zum automatischen Aktualisieren Ihrer Skripts die Schnellstartanleitung.

Syntax

Set-AzureRmVMDiskEncryptionExtension
   [-ResourceGroupName] <String>
   [-VMName] <String>
   [-DiskEncryptionKeyVaultUrl] <String>
   [-DiskEncryptionKeyVaultId] <String>
   [[-KeyEncryptionKeyUrl] <String>]
   [[-KeyEncryptionKeyVaultId] <String>]
   [[-KeyEncryptionAlgorithm] <String>]
   [[-VolumeType] <String>]
   [[-SequenceVersion] <String>]
   [[-TypeHandlerVersion] <String>]
   [[-Name] <String>]
   [[-Passphrase] <String>]
   [-Force]
   [-DisableAutoUpgradeMinorVersion]
   [-SkipVmBackup]
   [-ExtensionType <String>]
   [-ExtensionPublisherName <String>]
   [-EncryptFormatAll]
   [-DefaultProfile <IAzureContextContainer>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-AzureRmVMDiskEncryptionExtension
   [-ResourceGroupName] <String>
   [-VMName] <String>
   [-AadClientID] <String>
   [-AadClientSecret] <String>
   [-DiskEncryptionKeyVaultUrl] <String>
   [-DiskEncryptionKeyVaultId] <String>
   [[-KeyEncryptionKeyUrl] <String>]
   [[-KeyEncryptionKeyVaultId] <String>]
   [[-KeyEncryptionAlgorithm] <String>]
   [[-VolumeType] <String>]
   [[-SequenceVersion] <String>]
   [[-TypeHandlerVersion] <String>]
   [[-Name] <String>]
   [[-Passphrase] <String>]
   [-Force]
   [-DisableAutoUpgradeMinorVersion]
   [-SkipVmBackup]
   [-ExtensionType <String>]
   [-ExtensionPublisherName <String>]
   [-EncryptFormatAll]
   [-DefaultProfile <IAzureContextContainer>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-AzureRmVMDiskEncryptionExtension
   [-ResourceGroupName] <String>
   [-VMName] <String>
   [-AadClientID] <String>
   [-AadClientCertThumbprint] <String>
   [-DiskEncryptionKeyVaultUrl] <String>
   [-DiskEncryptionKeyVaultId] <String>
   [[-KeyEncryptionKeyUrl] <String>]
   [[-KeyEncryptionKeyVaultId] <String>]
   [[-KeyEncryptionAlgorithm] <String>]
   [[-VolumeType] <String>]
   [[-SequenceVersion] <String>]
   [[-TypeHandlerVersion] <String>]
   [[-Name] <String>]
   [[-Passphrase] <String>]
   [-Force]
   [-DisableAutoUpgradeMinorVersion]
   [-SkipVmBackup]
   [-ExtensionType <String>]
   [-ExtensionPublisherName <String>]
   [-EncryptFormatAll]
   [-DefaultProfile <IAzureContextContainer>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Beschreibung

Das Cmdlet "Set-AzureRmVMDiskEncryptionExtension " ermöglicht die Verschlüsselung auf einem virtuellen Computer mit ausgeführter Infrastruktur (IaaS) in Azure. Dieses Cmdlet ermöglicht die Verschlüsselung, indem die Datenträgerverschlüsselungserweiterung auf dem virtuellen Computer installiert wird. Wenn kein Name-Parameter angegeben ist, werden eine Erweiterung mit dem Standardnamen AzureDiskEncryption für virtuelle Computer, die das Windows-Betriebssystem ausführen, oder AzureDiskEncryptionForLinux für virtuelle Linux-Computer installiert. Dieses Cmdlet erfordert eine Bestätigung der Benutzer als eines der Schritte zum Aktivieren der Verschlüsselung, dass ein Neustart des virtuellen Computers erforderlich ist. Es wird empfohlen, Ihre Arbeit auf dem virtuellen Computer zu speichern, bevor Sie dieses Cmdlet ausführen.

Beispiele

Beispiel 1: Aktivieren der Verschlüsselung

$RGName = "MyResourceGroup"
$VMName = "MyTestVM"
$VaultName= "MyKeyVault"
$KeyVault = Get-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $RGName
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId
Set-AzureRmVMDiskEncryptionExtension -ResourceGroupName $RGName -VMName $VMName -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId

In diesem Beispiel wird die Aktivierung der Verschlüsselung ohne Angabe von AD-Anmeldeinformationen veranschaulicht.

Beispiel 2: Aktivieren der Verschlüsselung mit weitergeleiteter Eingabe

$params = New-Object PSObject -Property @{
    ResourceGroupName = "[resource-group-name]"
    VMName = "[vm-name]"
    DiskEncryptionKeyVaultId = "/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]"
    DiskEncryptionKeyVaultUrl = "https://[keyvault-name].vault.azure.net"
    KeyEncryptionKeyVaultId = "/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]"
    KeyEncryptionKeyUrl = "https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]"
    VolumeType = "All"
}

$params | Set-AzureRmVmDiskEncryptionExtension

In diesem Beispiel wird das Senden von Parametern mithilfe von weitergeleiteten Eingaben veranschaulicht, um die Verschlüsselung ohne Angabe von AD-Anmeldeinformationen zu aktivieren.

Beispiel 3: Aktivieren der Verschlüsselung mithilfe der Azure AD-Client-ID und des geheimen Clientschlüssels

$RGName = "MyResourceGroup"
$VMName = "MyTestVM"
$AADClientID = "<clientID of your Azure AD app>"
$AADClientSecret = "<clientSecret of your Azure AD app>"
$VaultName= "MyKeyVault"
$KeyVault = Get-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $RGName
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId
Set-AzureRmVMDiskEncryptionExtension -ResourceGroupName $RGName -VMName $VMName -AadClientID $AADClientID -AadClientSecret $AADClientSecret -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId

In diesem Beispiel wird die Verschlüsselung mithilfe der Azure AD-Client-ID und des geheimen Clientschlüssels aktiviert.

Beispiel 4: Aktivieren der Verschlüsselung mithilfe der Azure AD-Client-ID und des Clientzertifizierungs-Fingerabdrucks

$RGName = "MyResourceGroup"
$VMName = "MyTestVM"
#The KeyVault must have enabledForDiskEncryption property set on it
$VaultName= "MyKeyVault"
$KeyVault = Get-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $RGName
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId

# create Azure AD application and associate the certificate
$CertPath = "C:\certificates\examplecert.pfx"
$CertPassword = "Password"
$Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
$CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())
$AzureAdApplication = New-AzureRmADApplication -DisplayName "<Your Application Display Name>" -HomePage "<https://YourApplicationHomePage>" -IdentifierUris "<https://YouApplicationUri>" -CertValue $CertValue
$ServicePrincipal = New-AzureRmADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId

$AADClientID = $AzureAdApplication.ApplicationId
$aadClientCertThumbprint= $cert.Thumbprint

#Upload pfx to KeyVault
$KeyVaultSecretName = "MyAADCert"
$FileContentBytes = get-content $CertPath -Encoding Byte
$FileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
$JSONObject = @"
    {
        "data" : "$filecontentencoded",
        "dataType" : "pfx",
        "password" : "$CertPassword"
    }
"@
$JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
$JSONEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)

$Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
Set-AzureKeyVaultSecret -VaultName $VaultName -Name $KeyVaultSecretName -SecretValue $Secret
Set-AzureRmKeyVaultAccessPolicy -VaultName $VaultName -ResourceGroupName $RGName -EnabledForDeployment

#deploy cert to VM
$CertUrl = (Get-AzureKeyVaultSecret -VaultName $VaultName -Name $KeyVaultSecretName).Id
$SourceVaultId = (Get-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $RGName).ResourceId
$VM = Get-AzureRmVM -ResourceGroupName $RGName -Name $VMName
$VM = Add-AzureRmVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
Update-AzureRmVM -VM $VM -ResourceGroupName $RGName

#Enable encryption on the virtual machine using Azure AD client ID and client cert thumbprint
Set-AzureRmVMDiskEncryptionExtension -ResourceGroupName $RGName -VMName $VMName -AadClientID $AADClientID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId

In diesem Beispiel wird die Verschlüsselung mithilfe von Azure AD-Client-ID und Clientzertifizierungs-Fingerabdrucks aktiviert.

Beispiel 5: Aktivieren der Verschlüsselung mithilfe der Azure AD-Client-ID, des geheimen Clientschlüssels und umschließen des Datenträgerverschlüsselungsschlüssels mithilfe des Schlüsselverschlüsselungsschlüssels

$RGName = "MyResourceGroup"
$VMName = "MyTestVM"

$AADClientID = "<clientID of your Azure AD app>"
$AADClientSecret = "<clientSecret of your Azure AD app>"

$VaultName= "MyKeyVault"
$KeyVault = Get-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $RGName
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId

$KEKName = "MyKeyEncryptionKey"
$KEK = Add-AzureKeyVaultKey -VaultName $VaultName -Name $KEKName -Destination "Software"
$KeyEncryptionKeyUrl = $KEK.Key.kid

Set-AzureRmVMDiskEncryptionExtension -ResourceGroupName $RGName -VMName $VMName -AadClientID $AADClientID -AadClientSecret $AADClientSecret -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $KeyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId

In diesem Beispiel wird die Verschlüsselung mithilfe der Azure AD-Client-ID, des geheimen Clientschlüssels und des Umbruchs des Datenträgerverschlüsselungsschlüssels mithilfe des Schlüsselverschlüsselungsschlüssels aktiviert.

Beispiel 6: Aktivieren der Verschlüsselung mithilfe von Azure AD-Client-ID, Clientzertifikat-Fingerabdruck und Umbruch des Datenträgerverschlüsselungsschlüssels mithilfe des Schlüsselverschlüsselungsschlüssels

$RGName = "MyResourceGroup"
$VMName = "MyTestVM"
#The KeyVault must have enabledForDiskEncryption property set on it
$VaultName= "MyKeyVault"
$KeyVault = Get-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $RGName
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId
$KEKName = "MyKeyEncryptionKey"
$KEK = Add-AzureKeyVaultKey -VaultName $VaultName -Name $KEKName -Destination "Software"
$KeyEncryptionKeyUrl = $KEK.Key.kid

# create Azure AD application and associate the certificate
$CertPath = "C:\certificates\examplecert.pfx"
$CertPassword = "Password"
$Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
$CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())
$AzureAdApplication = New-AzureRmADApplication -DisplayName "<Your Application Display Name>" -HomePage "<https://YourApplicationHomePage>" -IdentifierUris "<https://YouApplicationUri>" -CertValue $CertValue
$ServicePrincipal = New-AzureRmADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId

$AADClientID = $AzureAdApplication.ApplicationId
$AADClientCertThumbprint= $Cert.Thumbprint

#Upload pfx to KeyVault
$KeyVaultSecretName = "MyAADCert"
$FileContentBytes = get-content $CertPath -Encoding Byte
$FileContentEncoded = [System.Convert]::ToBase64String($FileContentBytes)
$JSONObject = @"
    {
        "data" : "$filecontentencoded",
        "dataType" : "pfx",
        "password" : "$CertPassword"
    }
"@
$JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($JSONObject)
$JsonEncoded = [System.Convert]::ToBase64String($JSONObjectBytes)
$Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
Set-AzureKeyVaultSecret -VaultName $VaultName-Name $KeyVaultSecretName -SecretValue $Secret
Set-AzureRmKeyVaultAccessPolicy -VaultName $VaultName -ResourceGroupName $RGName -EnabledForDeployment

#deploy cert to VM
$CertUrl = (Get-AzureKeyVaultSecret -VaultName $VaultName -Name $KeyVaultSecretName).Id
$SourceVaultId = (Get-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $RGName).ResourceId
$VM = Get-AzureRmVM -ResourceGroupName $RGName -Name $VMName
$VM = Add-AzureRmVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
Update-AzureRmVM -VM $VM -ResourceGroupName $RGName

#Enable encryption on the virtual machine using Azure AD client ID and client cert thumbprint
Set-AzureRmVMDiskEncryptionExtension -ResourceGroupName $RGname -VMName $VMName -AadClientID $AADClientID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $KeyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId

In diesem Beispiel wird die Verschlüsselung mithilfe der Azure AD-Client-ID, des Clientzertifikat-Fingerabdrucks und des Umbruchs des Datenträgerverschlüsselungsschlüssels mithilfe des Schlüsselverschlüsselungsschlüssels aktiviert.

Parameter

-AadClientCertThumbprint

Gibt den Fingerabdruck des AzureActive Directory (Azure AD)-Anwendungsclientzertifikats an, das über Berechtigungen zum Schreiben von Geheimschlüsseln in KeyVault verfügt. Als Voraussetzung muss das Azure AD-Clientzertifikat zuvor im lokalen Computerzertifikatspeicher des virtuellen Computers my bereitgestellt werden. Das Cmdlet Add-AzureRmVMSecret kann verwendet werden, um ein Zertifikat auf einem virtuellen Computer in Azure bereitzustellen. Weitere Informationen finden Sie in der Hilfe zum Add-AzureRmVMSecret-Cmdlet . Das Zertifikat muss zuvor auf dem lokalen Computer bereitgestellt werden, auf dem mein Zertifikatspeicher gespeichert ist.

Type:String
Position:3
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-AadClientID

Gibt die Client-ID der Azure AD-Anwendung an, die über Berechtigungen zum Schreiben von Geheimschlüsseln in KeyVault verfügt.

Type:String
Position:2
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-AadClientSecret

Gibt den geheimen Clientschlüssel der Azure AD-Anwendung an, der über Berechtigungen zum Schreiben von Geheimschlüsseln in KeyVault verfügt.

Type:String
Position:3
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-Confirm

Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False
-DefaultProfile

Anmeldeinformationen, Konto, Mandant und Abonnement für die Kommunikation mit Azure

Type:IAzureContextContainer
Aliases:AzureRmContext, AzureCredential
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-DisableAutoUpgradeMinorVersion

Gibt an, dass dieses Cmdlet das automatische Upgrade der Nebenversion der Erweiterung deaktiviert.

Type:SwitchParameter
Position:14
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-DiskEncryptionKeyVaultId

Gibt die Ressourcen-ID der KeyVault an, auf die die Verschlüsselungsschlüssel des virtuellen Computers hochgeladen werden sollen.

Type:String
Position:5
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-DiskEncryptionKeyVaultUrl

Gibt die KeyVault-URL an, auf die die Verschlüsselungsschlüssel des virtuellen Computers hochgeladen werden sollen.

Type:String
Position:4
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-EncryptFormatAll

Encrypt-Format alle Datenlaufwerke, die noch nicht verschlüsselt sind

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-ExtensionPublisherName

Der Name des Erweiterungsverausgebers. Geben Sie diesen Parameter nur an, um den Standardwert von "Microsoft.Azure.Security" außer Kraft zu setzen.

Type:String
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-ExtensionType

Der Typ der Erweiterung. Geben Sie diesen Parameter an, um den Standardwert von "AzureDiskEncryption" für Windows-VMs und "AzureDiskEncryptionForLinux" für Linux-VMs außer Kraft zu setzen.

Type:String
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-Force

Erzwingt die Ausführung des Befehls ohne Aufforderung zur Bestätigung durch den Benutzer.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-KeyEncryptionAlgorithm

Gibt den Algorithmus an, der zum Umbrechen und Aufheben des Schlüsselverschlüsselungsschlüssels des virtuellen Computers verwendet wird. Der Standardwert ist RSA-OAEP.

Type:String
Accepted values:RSA-OAEP, RSA1_5
Position:8
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-KeyEncryptionKeyUrl

Gibt die URL des Schlüsselverschlüsselungsschlüssels an, der zum Umbrechen und Aufheben des Verschlüsselungsschlüssels des virtuellen Computers verwendet wird. Dies muss die vollversionierte URL sein.

Type:String
Position:6
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-KeyEncryptionKeyVaultId

Gibt die Ressourcen-ID des KeyVault-Werts an, der schlüsselverschlüsselungsschlüssel enthält, der zum Umbrechen und Aufheben des Verschlüsselungsschlüssels des virtuellen Computers verwendet wird. Dies muss eine vollversionierte URL sein.

Type:String
Position:7
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-Name

Gibt den Namen der Azure Resource Manager-Ressource an, die die Erweiterung darstellt. Der Standardwert ist AzureDiskEncryption für virtuelle Computer, die das Windows-Betriebssystem oder AzureDiskEncryptionForLinux für virtuelle Linux-Computer ausführen.

Type:String
Aliases:ExtensionName
Position:12
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-Passphrase

Gibt die Passphrase an, die nur zum Verschlüsseln virtueller Linux-Computer verwendet wird. Dieser Parameter wird nicht für virtuelle Computer verwendet, die das Windows-Betriebssystem ausführen.

Type:String
Position:13
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-ResourceGroupName

Gibt den Namen der Ressourcengruppe des virtuellen Computers an.

Type:String
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-SequenceVersion

Gibt die Sequenznummer der Verschlüsselungsvorgänge für einen virtuellen Computer an. Dies ist pro jedem Verschlüsselungsvorgang, der auf demselben virtuellen Computer ausgeführt wird, eindeutig. Das Cmdlet Get-AzureRmVMExtension kann verwendet werden, um die vorherige Sequenznummer abzurufen, die verwendet wurde.

Type:String
Position:10
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-SkipVmBackup

Erstellen von Sicherungen für Linux-VMs überspringen

Type:SwitchParameter
Position:15
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-TypeHandlerVersion

Gibt die Version der Verschlüsselungserweiterung an.

Type:String
Aliases:HandlerVersion, Version
Position:11
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-VMName

Gibt den Namen des virtuellen Computers an.

Type:String
Aliases:ResourceName
Position:1
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-VolumeType

Gibt den Typ der virtuellen Computervolumes an, um den Verschlüsselungsvorgang auszuführen. Zulässige Werte für virtuelle Computer, die das Windows-Betriebssystem ausführen, sind wie folgt: Alle, Betriebssystem und Daten. Die zulässigen Werte für virtuelle Linux-Computer sind wie folgt: Alle, Betriebssystem und Daten, wenn die Linux-Verteilung unterstützt wird.

Type:String
Accepted values:OS, Data, All
Position:9
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-WhatIf

Zeigt, was geschieht, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

Eingaben

String

SwitchParameter

Ausgaben

PSAzureOperationResponse