@@ -127,36 +127,45 @@ This example sets the disk encryption settings on a virtual machine operating sy
127
127
128
128
### Example 5: Create a ConfidentialVM virtual machine with VM OS Disk encryption of DiskWithVMGuestState, and Disk Encryption Set encryption of ConfidentialVmEncryptedWithCustomerKey.
129
129
``` powershell
130
- # Create Resource Group
131
- $Location = 'northeurope';
132
- New-AzResourceGroup -Name $ResourceGroupName -Location $Location;
133
-
130
+ $keyVaultName="your keyvault name"
131
+ $keyName="your key name"
134
132
$vmSize = "Standard_DC2as_v5";
135
133
$identityType = "SystemAssigned";
136
134
$secureEncryptGuestState = "DiskWithVMGuestState";
137
135
$vmSecurityType = "ConfidentialVM";
138
- $securePassword = ConvertTo-SecureString -String "****" -AsPlainText -Force;
136
+ $user = "your user name";
137
+ $desName = "your disk encryption set name";
138
+ $vmname = "your vm name";
139
+ $computerName = "your computer name";
140
+ $ResourceGroupName = 'your resource group name'
141
+ $Location = 'northeurope'
142
+
143
+ # Create Resource Group
144
+ New-AzResourceGroup -Name $ResourceGroupName -Location $Location -force;
145
+
146
+ #create a credential object
147
+ $securePassword = ConvertTo-SecureString -String "Password to your virtual machine here" -AsPlainText -Force;
139
148
$cred = New-Object System.Management.Automation.PSCredential ($user, $securePassword);
140
149
141
150
# Create Key Vault
142
- New-AzKeyVault -Name $keyVaultName -Location $Location -ResourceGroupName $ResourceGroupName -Sku Premium -EnablePurgeProtection -EnabledForDiskEncryption ;
151
+ New-AzKeyVault -Name $keyVaultName -Location $Location -ResourceGroupName $ResourceGroupName -Sku Premium -EnabledForDiskEncryption -DisableRbacAuthorization -SoftDeleteRetentionInDays 10 -EnablePurgeProtection ;
143
152
144
- $cvmAgent = Get-AzADServicePrincipal -ApplicationId '00001111-aaaa-2222-bbbb-3333cccc4444';
153
+ $cvmAgent = Get-AzADServicePrincipal -ApplicationId 'bf7b6499-ff71-4aa2-97a4-f372087be7f0'; #AppID of CVM Agent, this is a constant value but locate the SP ID for your tenant
145
154
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ResourceGroupName $ResourceGroupName -ObjectId $cvmAgent.id -PermissionsToKeys get,release;
146
155
147
156
# Add Key vault Key
148
157
$KeyName = "keyname";
149
158
$KeySize = 3072;
150
159
151
- Add-AzKeyVaultKey -VaultName $kvname -Name $KeyName -Size $KeySize -KeyOps wrapKey,unwrapKey -KeyType RSA -Destination HSM -Exportable -UseDefaultCVMPolicy;
160
+ Add-AzKeyVaultKey -VaultName $keyVaultName -Name $KeyName -Size $KeySize -KeyOps wrapKey,unwrapKey -KeyType RSA -Destination HSM -Exportable -UseDefaultCVMPolicy;
152
161
153
162
# Capture Key Vault and Key details
154
163
$encryptionKeyVaultId = (Get-AzKeyVault -VaultName $keyVaultName -ResourceGroupName $ResourceGroupName).ResourceId;
155
164
$encryptionKeyURL = (Get-AzKeyVaultKey -VaultName $keyVaultName -KeyName $keyName).Key.Kid;
156
165
157
166
# Create new DES Config and Disk Encryption Set
158
167
$diskEncryptionType = "ConfidentialVmEncryptedWithCustomerKey";
159
- $desConfig = New-AzDiskEncryptionSetConfig -Location $loc -SourceVaultId $encryptionKeyVaultId -KeyUrl $encryptionKeyURL -IdentityType SystemAssigned -EncryptionType $diskEncryptionType;
168
+ $desConfig = New-AzDiskEncryptionSetConfig -Location $Location -SourceVaultId $encryptionKeyVaultId -KeyUrl $encryptionKeyURL -IdentityType SystemAssigned -EncryptionType $diskEncryptionType;
160
169
New-AzDiskEncryptionSet -ResourceGroupName $ResourceGroupName -Name $desName -DiskEncryptionSet $desConfig;
161
170
162
171
$diskencset = Get-AzDiskEncryptionSet -ResourceGroupName $rgname -Name $desName;
@@ -171,25 +180,27 @@ $VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Windows -Computer
171
180
$VirtualMachine = Set-AzVMSourceImage -VM $VirtualMachine -PublisherName 'MicrosoftWindowsServer' -Offer 'windowsserver' -Skus '2022-datacenter-smalldisk-g2' -Version "latest";
172
181
173
182
$subnet = New-AzVirtualNetworkSubnetConfig -Name ($subnetPrefix + $ResourceGroupName) -AddressPrefix "10.0.0.0/24";
174
- $vnet = New-AzVirtualNetwork -Force -Name ($vnetPrefix + $ResourceGroupName) -ResourceGroupName $ResourceGroupName -Location $loc -AddressPrefix "10.0.0.0/16" -Subnet $subnet;
183
+ $vnet = New-AzVirtualNetwork -Force -Name ($vnetPrefix + $ResourceGroupName) -ResourceGroupName $ResourceGroupName -Location $Location -AddressPrefix "10.0.0.0/16" -Subnet $subnet;
175
184
$vnet = Get-AzVirtualNetwork -Name ($vnetPrefix + $ResourceGroupName) -ResourceGroupName $ResourceGroupName;
176
185
$subnetId = $vnet.Subnets[0].Id;
177
- $pubip = New-AzPublicIpAddress -Force -Name ($pubIpPrefix + $ResourceGroupName) -ResourceGroupName $ResourceGroupName -Location $loc -AllocationMethod Dynamic -DomainNameLabel $domainNameLabel2;
186
+ $pubip = New-AzPublicIpAddress -Force -Name ($pubIpPrefix + $ResourceGroupName) -ResourceGroupName $ResourceGroupName -Location $Location -AllocationMethod Static -DomainNameLabel $domainNameLabel2;
178
187
$pubip = Get-AzPublicIpAddress -Name ($pubIpPrefix + $ResourceGroupName) -ResourceGroupName $ResourceGroupName;
179
188
$pubipId = $pubip.Id;
180
- $nic = New-AzNetworkInterface -Force -Name ($nicPrefix + $ResourceGroupName) -ResourceGroupName $ResourceGroupName -Location $loc -SubnetId $subnetId -PublicIpAddressId $pubip.Id;
189
+
190
+
191
+ $nic = New-AzNetworkInterface -Force -Name ($nicPrefix + $ResourceGroupName) -ResourceGroupName $ResourceGroupName -Location $Location -SubnetId $subnetId -PublicIpAddressId $pubip.Id;
181
192
$nic = Get-AzNetworkInterface -Name ($nicPrefix + $ResourceGroupName) -ResourceGroupName $ResourceGroupName;
182
193
$nicId = $nic.Id;
183
194
184
195
$VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $nicId;
185
196
186
197
# Set VM SecurityType and connect to DES
187
198
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -StorageAccountType "StandardSSD_LRS" -CreateOption "FromImage" -SecurityEncryptionType $secureEncryptGuestState -SecureVMDiskEncryptionSet $diskencset.Id;
188
- $VirtualMachine = Set-AzVmSecurityProfile -VM $VirtualMachine -SecurityType $vmSecurityType;
189
- $VirtualMachine = Set-AzVmUefi -VM $VirtualMachine -EnableVtpm $true -EnableSecureBoot $true;
199
+ $VirtualMachine = Set-AzVMSecurityProfile -VM $VirtualMachine -SecurityType $vmSecurityType;
200
+ $VirtualMachine = Set-AzVMUefi -VM $VirtualMachine -EnableVtpm $true -EnableSecureBoot $true;
190
201
191
- New-AzVM -ResourceGroupName $ResourceGroupName -Location $loc -Vm $VirtualMachine;
192
- $vm = Get-AzVm -ResourceGroupName $ResourceGroupName -Name $vmname;
202
+ New-AzVM -ResourceGroupName $ResourceGroupName -Location $Location -Vm $VirtualMachine;
203
+ $vm = Get-AzVM -ResourceGroupName $ResourceGroupName -Name $vmname;
193
204
194
205
# Verify the SecurityEncryptionType value on the disk.
195
206
# $vm.StorageProfile.OsDisk.ManagedDisk.SecurityProfile.SecurityEncryptionType == 'DiskWithVMGuestState';
0 commit comments