@@ -34,10 +34,13 @@ function Test-Disk
34
34
$access = ' Read' ;
35
35
36
36
# Config create test
37
- $diskconfig = New-AzDiskConfig - Location $loc - DiskSizeGB 500 - SkuName UltraSSD_LRS - OsType Windows - CreateOption Empty - DiskMBpsReadWrite 8 - DiskIOPSReadWrite 500 ;
37
+ $diskconfig = New-AzDiskConfig - Location $loc - DiskSizeGB 500 - SkuName UltraSSD_LRS - OsType Windows - CreateOption Empty `
38
+ - DiskMBpsReadWrite 8 - DiskIOPSReadWrite 500 - EncryptionType " EncryptionAtRestWithCustomerKey" - DiskEncryptionSetId $encSetId ;
38
39
Assert-AreEqual " UltraSSD_LRS" $diskconfig.Sku.Name ;
39
40
Assert-AreEqual 500 $diskconfig.DiskIOPSReadWrite ;
40
41
Assert-AreEqual 8 $diskconfig.DiskMBpsReadWrite ;
42
+ Assert-AreEqual $encSetId $diskconfig.Encryption.DiskEncryptionSetId ;
43
+ Assert-AreEqual " EncryptionAtRestWithCustomerKey" $diskconfig.Encryption.Type ;
41
44
42
45
$diskconfig = New-AzDiskConfig - Location $loc - Zone " 1" - DiskSizeGB 5 - AccountType Standard_LRS - OsType Windows - CreateOption Empty `
43
46
- EncryptionSettingsEnabled $true - HyperVGeneration " V1" ;
@@ -159,10 +162,14 @@ function Test-Disk
159
162
Verify- PSOperationStatusResponse $st ;
160
163
161
164
# Config update test
162
- $updateconfig = New-AzDiskUpdateConfig - DiskSizeGB 10 - AccountType UltraSSD_LRS - OsType Windows - DiskMBpsReadWrite 8 - DiskIOPSReadWrite 500 ;
165
+ $encSetId = " fakeid" ;
166
+ $updateconfig = New-AzDiskUpdateConfig - DiskSizeGB 10 - AccountType UltraSSD_LRS - OsType Windows - DiskMBpsReadWrite 8 - DiskIOPSReadWrite 500 `
167
+ - EncryptionType " EncryptionAtRestWithCustomerKey" - DiskEncryptionSetId $encSetId ;
163
168
Assert-AreEqual " UltraSSD_LRS" $updateconfig.Sku.Name ;
164
169
Assert-AreEqual 500 $updateconfig.DiskIOPSReadWrite ;
165
- Assert-AreEqual 8 $updateconfig.DiskMBpsReadWrite
170
+ Assert-AreEqual 8 $updateconfig.DiskMBpsReadWrite ;
171
+ Assert-AreEqual $encSetId $updateconfig.Encryption.DiskEncryptionSetId ;
172
+ Assert-AreEqual " EncryptionAtRestWithCustomerKey" $updateconfig.Encryption.Type ;
166
173
167
174
$updateconfig = New-AzDiskUpdateConfig - DiskSizeGB 10 - AccountType Premium_LRS - OsType Windows;
168
175
$job = Update-AzDisk - ResourceGroupName $rgname - DiskName $diskname - DiskUpdate $updateconfig - AsJob;
@@ -204,6 +211,12 @@ function Test-Snapshot
204
211
$access = ' Read' ;
205
212
206
213
# Config and create test
214
+ $snapshotconfig = New-AzSnapshotConfig - Location $loc - DiskSizeGB 500 - SkuName UltraSSD_LRS - OsType Windows - CreateOption Empty `
215
+ - EncryptionType " EncryptionAtRestWithCustomerKey" - DiskEncryptionSetId $encSetId ;
216
+ Assert-AreEqual " UltraSSD_LRS" $snapshotconfig.Sku.Name ;
217
+ Assert-AreEqual $encSetId $snapshotconfig.Encryption.DiskEncryptionSetId ;
218
+ Assert-AreEqual " EncryptionAtRestWithCustomerKey" $snapshotconfig.Encryption.Type ;
219
+
207
220
$snapshotconfig = New-AzSnapshotConfig - Location $loc - DiskSizeGB 5 - AccountType Standard_LRS - OsType Windows - CreateOption Empty `
208
221
- EncryptionSettingsEnabled $true - HyperVGeneration " V2" ;
209
222
@@ -315,6 +328,11 @@ function Test-Snapshot
315
328
Verify- PSOperationStatusResponse $st ;
316
329
317
330
# Config update test
331
+ $encSetId = " fakeid" ;
332
+ $updateconfig = New-AzSnapshotUpdateConfig - EncryptionType " EncryptionAtRestWithCustomerKey" - DiskEncryptionSetId $encSetId ;
333
+ Assert-AreEqual $encSetId $updateconfig.Encryption.DiskEncryptionSetId ;
334
+ Assert-AreEqual " EncryptionAtRestWithCustomerKey" $updateconfig.Encryption.Type ;
335
+
318
336
$updateconfig = New-AzSnapshotUpdateConfig - DiskSizeGB 10 - AccountType Premium_LRS - OsType Windows;
319
337
$job = Update-AzSnapshot - ResourceGroupName $rgname - SnapshotName $snapshotname - SnapshotUpdate $updateconfig - AsJob;
320
338
$result = $job | Wait-Job ;
@@ -799,30 +817,49 @@ function Test-DiskEncryptionSet
799
817
{
800
818
# Setup
801
819
$loc = " westcentralus" ;
802
- $rgname = " pstest " ;
820
+ $rgname = " psenctest " ;
803
821
$encryptionName = " enc" + $rgname ;
804
- $vaultName = ' kv' + $rgname ;
805
- $kekName = ' kek' + $rgname ;
822
+
823
+ $vaultName1 = ' kv1' + $rgname ;
824
+ $kekName1 = ' kek1' + $rgname ;
825
+ $secretname1 = ' mysecret1' ;
826
+ $secretdata1 = ' mysecretvalue1' ;
827
+ $securestring1 = ConvertTo-SecureString $secretdata1 - Force - AsPlainText;
828
+
829
+ $vaultName2 = ' kv2' + $rgname ;
830
+ $kekName2 = ' kek1' + $rgname ;
831
+ $secretname2 = ' mysecret2' ;
832
+ $secretdata2 = ' mysecretvalue2' ;
833
+ $securestring2 = ConvertTo-SecureString $secretdata1 - Force - AsPlainText;
806
834
807
835
try
808
836
{
809
837
#
810
838
# Note: In order to record this test, you need to run the following commands to create KeyValut key and KeyVault secret in a separate Powershell window.
811
839
#
812
840
# New-AzResourceGroup -Name $rgname -Location $loc -Force;
813
- # $vault = New-AzKeyVault -VaultName $vaultName -ResourceGroupName $rgname -Location $loc -Sku Standard;
841
+ # $vault1 = New-AzKeyVault -VaultName $vaultName1 -ResourceGroupName $rgname -Location $loc -Sku Standard;
842
+ # $vault2 = New-AzKeyVault -VaultName $vaultName2 -ResourceGroupName $rgname -Location $loc -Sku Standard;
843
+ # $mocksourcevault1 = $vault1.ResourceId;
844
+ # $mocksourcevault2 = $vault2.ResourceId;
814
845
# $userPrincipalName = (Get-AzContext).Account.Id;
815
- # Set-AzKeyVaultAccessPolicy -VaultName $vaultName -ResourceGroupName $rgname -EnabledForDiskEncryption;
816
- # Set-AzKeyVaultAccessPolicy -VaultName $vaultName -ResourceGroupName $rgname -ServicePrincipalName $userPrincipalName -PermissionsToKeys decrypt,encrypt,unwrapKey,wrapKey,verify,sign,get,list,update,create,import,delete,backup,restore,recover,purge;
817
- # $kek = Add-AzKeyVaultKey -VaultName $vaultName -Name $kekName -Destination "Software";
818
- # $secret = Set-AzKeyVaultSecret -VaultName $vaultName -Name $secretname -SecretValue $securestring;
819
- # $mockkey = $kek.Id
846
+ # Set-AzKeyVaultAccessPolicy -VaultName $vaultName1 -ResourceGroupName $rgname -EnabledForDiskEncryption;
847
+ # Set-AzKeyVaultAccessPolicy -VaultName $vaultName2 -ResourceGroupName $rgname -EnabledForDiskEncryption;
848
+ # $kek1 = Add-AzKeyVaultKey -VaultName $vaultName1 -Name $kekName1 -Destination "Software";
849
+ # $kek2 = Add-AzKeyVaultKey -VaultName $vaultName2 -Name $kekName2 -Destination "Software";
850
+ # $secret1 = Set-AzKeyVaultSecret -VaultName $vaultName1 -Name $secretname1 -SecretValue $securestring1;
851
+ # $secret2 = Set-AzKeyVaultSecret -VaultName $vaultName2 -Name $secretname2 -SecretValue $securestring2;
852
+ # $mockkey1 = $kek1.Id
853
+ # $mockkey2 = $kek2.Id
820
854
821
855
$subId = Get-SubscriptionIdFromResourceGroup $rgname ;
822
- $mockkey = " https://kvpstest.vault.azure.net:443/keys/kekpstest/bf109281146949a9b3ae234db1728493" ;
823
- $mocksourcevault = ' /subscriptions/' + $subId + ' /resourceGroups/' + $rgname + ' /providers/Microsoft.KeyVault/vaults/' + $vaultName ;
856
+ $mockkey1 = " https://kv1psenctest.vault.azure.net:443/keys/kek1psenctest/21571e3773bb4e6495c2d314a3f5de8b" ;
857
+ $mockkey2 = " https://kv2psenctest.vault.azure.net:443/keys/kek1psenctest/d4bae3704edb4d4da592360a756cd278" ;
858
+
859
+ $mocksourcevault1 = ' /subscriptions/' + $subId + ' /resourceGroups/' + $rgname + ' /providers/Microsoft.KeyVault/vaults/' + $vaultName1 ;
860
+ $mocksourcevault2 = ' /subscriptions/' + $subId + ' /resourceGroups/' + $rgname + ' /providers/Microsoft.KeyVault/vaults/' + $vaultName2 ;
824
861
825
- New-AzDiskEncryptionSetConfig - Location $loc - KeyUrl $mockkey - SourceVaultId $mocksourcevault - IdentityType " SystemAssigned" `
862
+ New-AzDiskEncryptionSetConfig - Location $loc - KeyUrl $mockkey1 - SourceVaultId $mocksourcevault1 - IdentityType " SystemAssigned" `
826
863
| New-AzDiskEncryptionSet - ResourceGroupName $rgname - Name $encryptionName ;
827
864
828
865
$encSet = Get-AzDiskEncryptionSet - ResourceGroupName $rgname - Name $encryptionName ;
@@ -831,14 +868,42 @@ function Test-DiskEncryptionSet
831
868
Assert-AreEqual " SystemAssigned" $encSet.Identity.Type ;
832
869
Assert-NotNull $encSet.Identity.PrincipalId ;
833
870
Assert-NotNull $encSet.Identity.TenantId ;
834
- Assert-AreEqual $mockkey $encSet.ActiveKey.KeyUrl ;
835
- Assert-AreEqual $mocksourcevault $encSet.ActiveKey.SourceVault.Id ;
871
+ Assert-AreEqual $mockkey1 $encSet.ActiveKey.KeyUrl ;
872
+ Assert-AreEqual $mocksourcevault1 $encSet.ActiveKey.SourceVault.Id ;
873
+ Assert-AreEqual 0 $encSet.Tags.Count ;
836
874
837
875
$encSets = Get-AzDiskEncryptionSet - ResourceGroupName $rgname ;
838
876
Assert-True {$encSets.Count -ge 1 };
839
877
840
878
$encSets = Get-AzDiskEncryptionSet ;
841
879
Assert-True {$encSets.Count -ge 1 };
880
+
881
+ $tags = @ {test1 = " testval1" ; test2 = " testval2" };
882
+ Assert-ThrowsContains { `
883
+ Update-AzDiskEncryptionSet - ResourceGroupName $rgname - Name $encryptionName - KeyUrl $mockkey2 - SourceVaultId $mocksourcevault2 - Tag $tags ; } `
884
+ " Key rotation in disk encryption set is not supported in this version."
885
+
886
+ Update-AzDiskEncryptionSet - ResourceId $encSet.Id - Tag $tags ;
887
+
888
+ $encSet = Get-AzDiskEncryptionSet - ResourceGroupName $rgname - Name $encryptionName ;
889
+ Assert-AreEqual 2 $encSet.Tags.Count ;
890
+ Assert-AreEqual " testval1" $encSet.Tags.test1 ;
891
+ Assert-AreEqual " testval2" $encSet.Tags.test2 ;
892
+
893
+ $tags = @ {test1 = " testval2" ; test2 = " testval1" };
894
+ $encSet | Update-AzDiskEncryptionSet - KeyUrl $mockkey1 - SourceVaultId $mocksourcevault1 - Tag $tags ;
895
+
896
+ $encSet = Get-AzDiskEncryptionSet - ResourceGroupName $rgname - Name $encryptionName ;
897
+ Assert-AreEqual $encryptionName $encSet.Name ;
898
+ Assert-AreEqual $loc $encSet.Location ;
899
+ Assert-AreEqual " SystemAssigned" $encSet.Identity.Type ;
900
+ Assert-NotNull $encSet.Identity.PrincipalId ;
901
+ Assert-NotNull $encSet.Identity.TenantId ;
902
+ Assert-AreEqual $mockkey1 $encSet.ActiveKey.KeyUrl ;
903
+ Assert-AreEqual $mocksourcevault1 $encSet.ActiveKey.SourceVault.Id ;
904
+ Assert-AreEqual 2 $encSet.Tags.Count ;
905
+ Assert-AreEqual " testval2" $encSet.Tags.test1 ;
906
+ Assert-AreEqual " testval1" $encSet.Tags.test2 ;
842
907
}
843
908
finally
844
909
{
0 commit comments