Skip to content

Commit b9817f1

Browse files
SandidoVeryEarly
andauthored
Remove GuestAttestation logic (#23338)
* remove guest attestation * remove from vm * remove disableintegritymonitoring * Update ChangeLog.md * missed a couple * Create BreakingChangeIssues.csv * remove param from md * handle breaking change error and weird param set errors * Update BreakingChangeIssues.csv * test added * removed old test --------- Co-authored-by: Yabo Hu <[email protected]>
1 parent 9d9a6eb commit b9817f1

File tree

13 files changed

+2911
-4902
lines changed

13 files changed

+2911
-4902
lines changed

src/Compute/Compute.Test/ScenarioTests/VirtualMachineScaleSetTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,13 @@ public void TestVirtualMachineScaleSetSecurityTypeDefaultingFromImage()
403403
TestRunner.RunTestScript("Test-VirtualMachineScaleSetSecurityTypeDefaultingFromImage");
404404
}
405405

406+
[Fact]
407+
[Trait(Category.AcceptanceType, Category.CheckIn)]
408+
public void TestVirtualMachineScaleSetSecurityTypeAndFlexDefaults()
409+
{
410+
TestRunner.RunTestScript("Test-VirtualMachineScaleSetSecurityTypeAndFlexDefaults");
411+
}
412+
406413
[Fact]
407414
[Trait(Category.AcceptanceType, Category.CheckIn)]
408415
public void TestVirtualMachineScaleSetSecurityTypeNoVMProfile()

src/Compute/Compute.Test/ScenarioTests/VirtualMachineScaleSetTests.ps1

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5228,12 +5228,12 @@ function Test-VirtualMachineScaleSetSecurityTypeNoVMProfile
52285228
# Common
52295229
New-AzResourceGroup -Name $rgname -Location $loc -Force;
52305230
$vmssName = 'vmss' + $rgname;
5231-
5231+
52325232
# Create TL Vmss
52335233
$vmssConfig = New-AzVmssConfig -loc $loc;
52345234
New-AzVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName -VirtualMachineScaleSet $vmssConfig;
52355235
$vmssGet = Get-AzVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName;
5236-
5236+
52375237
Assert-Null $vmssGet.VirtualMachineProfile;
52385238
Assert-AreEqual $vmssGet.OrchestrationMode "Flexible";
52395239
}
@@ -5242,4 +5242,45 @@ function Test-VirtualMachineScaleSetSecurityTypeNoVMProfile
52425242
# Cleanup
52435243
Clean-ResourceGroup $rgname;
52445244
}
5245+
}
5246+
5247+
<#
5248+
.SYNOPSIS
5249+
Test Virtual Machine Scale Set securityType TrustedLaunch is default
5250+
and also defaults in Vmss Flex.
5251+
#>
5252+
function Test-VirtualMachineScaleSetSecurityTypeAndFlexDefaults
5253+
{
5254+
# Setup
5255+
$rgname = Get-ComputeTestResourceName;
5256+
$loc = Get-ComputeVMLocation;
5257+
5258+
try
5259+
{
5260+
# Common
5261+
New-AzResourceGroup -Name $rgname -Location $loc -Force;
5262+
5263+
$vmssName1 = 'vmss1' + $rgname;
5264+
5265+
$domainNameLabel1 = "d1" + $rgname;
5266+
$enable = $true;
5267+
$securityType = "TrustedLaunch";
5268+
$adminUsername = Get-ComputeTestResourceName;
5269+
$password = Get-PasswordForVM;
5270+
$adminPassword = $password | ConvertTo-SecureString -AsPlainText -Force;
5271+
$cred = New-Object System.Management.Automation.PSCredential ($adminUsername, $adminPassword);
5272+
5273+
# Requirements for the TrustedLaunch default behavior.
5274+
$res = New-AzVmss -ResourceGroupName $rgname -Credential $cred -VMScaleSetName $vmssName1 -DomainNameLabel $domainNameLabel1;
5275+
5276+
Assert-AreEqual $res.VirtualMachineProfile.SecurityProfile.SecurityType $securityType;
5277+
Assert-AreEqual $res.VirtualMachineProfile.SecurityProfile.UefiSettings.VTpmEnabled $enable;
5278+
Assert-AreEqual $res.VirtualMachineProfile.SecurityProfile.UefiSettings.SecureBootEnabled $enable;
5279+
Assert-AreEqual $res.OrchestrationMode "Flexible";
5280+
}
5281+
finally
5282+
{
5283+
# Cleanup
5284+
Clean-ResourceGroup $rgname;
5285+
}
52455286
}

src/Compute/Compute.Test/ScenarioTests/VirtualMachineTests.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -514,13 +514,6 @@ public void TestVirtualMachinePlatformFaultDomain()
514514
{
515515
TestRunner.RunTestScript("Test-VirtualMachinePlatformFaultDomain");
516516
}
517-
518-
[Fact]
519-
[Trait(Category.AcceptanceType, Category.LiveOnly)]
520-
public void TestVirtualMachineGuestAttestation()
521-
{
522-
TestRunner.RunTestScript("Test-VirtualMachineGuestAttestation");
523-
}
524517

525518
[Fact]
526519
[Trait(Category.AcceptanceType, Category.CheckIn)]

src/Compute/Compute.Test/ScenarioTests/VirtualMachineTests.ps1

Lines changed: 0 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -6061,93 +6061,6 @@ function Test-VirtualMachinePlatformFaultDomain
60616061
}
60626062
}
60636063

6064-
<#
6065-
.SYNOPSIS
6066-
Test GuestAttestation defaulting behavior.
6067-
1) SecurityType is TrustedLaunch.
6068-
2) EnableVtpm is true.
6069-
3) EnabledSecureBoot is true.
6070-
4) DisableIntegrityMonitoring is not true.
6071-
Then this test removes the VM and recreates it with -DisableIntegrityMonitoring set to true so the
6072-
Guest Attestation extension is not installed.
6073-
6074-
This test has been moved to LiveOnly. The GuestAttestation defaulting logic has been removed as per the feature team informing
6075-
us that it was pulled back from other clients due to perf concerns but we were not informed of that at the time.
6076-
#>
6077-
function Test-VirtualMachineGuestAttestation
6078-
{
6079-
# Setup
6080-
$rgname = Get-ComputeTestResourceName;
6081-
$loc = Get-ComputeVMLocation;
6082-
6083-
try
6084-
{
6085-
New-AzResourceGroup -Name $rgname -Location $loc -Force;
6086-
6087-
# VM Profile & Hardware
6088-
$vmname = 'vm' + $rgname;
6089-
$domainNameLabel = "d1" + $rgname;
6090-
6091-
$vnetname = "myVnet";
6092-
$vnetAddress = "10.0.0.0/16";
6093-
$subnetname = "slb" + $rgname;
6094-
$subnetAddress = "10.0.2.0/24";
6095-
$OSDiskName = $vmname + "-osdisk";
6096-
$NICName = $vmname+ "-nic";
6097-
$NSGName = $vmname + "-NSG";
6098-
$OSDiskSizeinGB = 128;
6099-
$VMSize = "Standard_DS2_v2";
6100-
$PublisherName = "MicrosoftWindowsServer";
6101-
$Offer = "WindowsServer";
6102-
$SKU = "2022-datacenter-smalldisk-g2";
6103-
$securityType = "TrustedLaunch";
6104-
$secureboot = $true;
6105-
$vtpm = $true;
6106-
$extDefaultName = "GuestAttestation";
6107-
$vmGADefaultIDentity = "SystemAssigned";
6108-
6109-
# Creating a VM using Simple parameterset
6110-
$password = Get-PasswordForVM;
6111-
$securePassword = $password | ConvertTo-SecureString -AsPlainText -Force;
6112-
$user = "admin01";
6113-
$cred = New-Object System.Management.Automation.PSCredential ($user, $securePassword);
6114-
6115-
$frontendSubnet = New-AzVirtualNetworkSubnetConfig -Name $subnetname -AddressPrefix $subnetAddress;
6116-
6117-
$vnet = New-AzVirtualNetwork -Name $vnetname -ResourceGroupName $rgname -Location $loc -AddressPrefix $vnetAddress -Subnet $frontendSubnet;
6118-
6119-
$nsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name RDP -Protocol Tcp -Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow;
6120-
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $RGName -Location $loc -Name $NSGName -SecurityRules $nsgRuleRDP;
6121-
$nic = New-AzNetworkInterface -Name $NICName -ResourceGroupName $RGName -Location $loc -SubnetId $vnet.Subnets[0].Id -NetworkSecurityGroupId $nsg.Id -EnableAcceleratedNetworking;
6122-
6123-
# VM
6124-
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize $VMSize;
6125-
Set-AzVMOperatingSystem -VM $vmConfig -Windows -ComputerName $vmName -Credential $cred;
6126-
Set-AzVMSourceImage -VM $vmConfig -PublisherName $PublisherName -Offer $Offer -Skus $SKU -Version latest ;
6127-
Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id;
6128-
$vmConfig = Set-AzVMSecurityProfile -VM $vmConfig -SecurityType $securityType;
6129-
$vmConfig = Set-AzVmUefi -VM $vmConfig -EnableVtpm $vtpm -EnableSecureBoot $secureboot;
6130-
6131-
New-AzVM -ResourceGroupName $RGName -Location $loc -VM $vmConfig ;
6132-
$vm = Get-AzVm -ResourceGroupName $rgname -Name $vmName;
6133-
$vmExt = Get-AzVMExtension -ResourceGroupName $rgname -VMName $vmName -Name $extDefaultName;
6134-
6135-
# Assert the default extension has been installed, and the Identity.Type defaulted to SystemAssigned.
6136-
Assert-AreEqual $vmExt.Name $extDefaultName;
6137-
Assert-AreEqual $vm.Identity.Type $vmGADefaultIDentity;
6138-
6139-
Remove-AzVm -ResourceGroupName $rgname -Name $vmname -Force;
6140-
New-AzVM -ResourceGroupName $RGName -Location $loc -VM $vmConfig -DisableIntegrityMonitoring;
6141-
Assert-ThrowsContains {
6142-
$vmExtError = Get-AzVMExtension -ResourceGroupName $rgname -VMName $vmName -Name $extDefaultName; } "For more details please go to https://aka.ms/ARMResourceNotFoundFix";
6143-
}
6144-
finally
6145-
{
6146-
# Cleanup
6147-
Clean-ResourceGroup $rgname;
6148-
}
6149-
}
6150-
61516064
<#
61526065
.SYNOPSIS
61536066
Test to ensure the TimeCreated property is returned in the VM and VMSS models.

src/Compute/Compute.Test/SessionRecords/Microsoft.Azure.Commands.Compute.Test.ScenarioTests.VirtualMachineScaleSetTests/TestVirtualMachineScaleSetSecurityTypeAndFlexDefaults.json

Lines changed: 2842 additions & 0 deletions
Large diffs are not rendered by default.

src/Compute/Compute.Test/SessionRecords/Microsoft.Azure.Commands.Compute.Test.ScenarioTests.VirtualMachineTests/TestVirtualMachineGuestAttestation.json

Lines changed: 0 additions & 4267 deletions
This file was deleted.

src/Compute/Compute/ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
* Added new parameter `-VirtualMachineScaleSetId` to `Update-AzVm` cmdlet.
3434
* Fixed `New-AzVmss` and `New-Azvm` to use `SharedGalleryImageId` parameter.
3535
* Reducing File Permissions from 0644 to 0600 for SSH Private Key File in `New-AzVm`.
36+
* Remove GuestAttestaion vm extension installation for Vmss and Vm creation cmdlets.
3637

3738

3839
## Version 6.3.0

src/Compute/Compute/Generated/VirtualMachineScaleSet/VirtualMachineScaleSetCreateOrUpdateMethod.cs

Lines changed: 0 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -154,12 +154,6 @@ public override void ExecuteCmdlet()
154154
}
155155
}
156156
// END: For Cross-tenant RBAC sharing
157-
// GuestAttestation install scenario
158-
if (shouldGuestAttestationExtBeInstalled(parameters) &&
159-
parameters.Identity == null)
160-
{
161-
parameters.Identity = new VirtualMachineScaleSetIdentity(null, null, Microsoft.Azure.Management.Compute.Models.ResourceIdentityType.SystemAssigned, null);
162-
}
163157

164158
// Standard securityType is currently not supported in API, jsut used on client side for now,
165159
// so removing it here before API call is made.
@@ -194,93 +188,6 @@ public override void ExecuteCmdlet()
194188
result = VirtualMachineScaleSetsClient.CreateOrUpdate(resourceGroupName, vmScaleSetName, parameters);
195189
}
196190

197-
//Guest Attestation extension defaulting behavior check.
198-
if (shouldGuestAttestationExtBeInstalled(parameters))
199-
{
200-
string extensionNameGA = "GuestAttestation";
201-
var extensionDirect = new VirtualMachineScaleSetExtension();
202-
if (this.VirtualMachineScaleSet.VirtualMachineProfile == null)
203-
{
204-
this.VirtualMachineScaleSet.VirtualMachineProfile = new PSVirtualMachineScaleSetVMProfile();
205-
}
206-
// ExtensionProfile
207-
if (this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile == null)
208-
{
209-
this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile = new PSVirtualMachineScaleSetExtensionProfile();
210-
}
211-
// Extensions
212-
if (this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions == null)
213-
{
214-
this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions = new List<PSVirtualMachineScaleSetExtension>();
215-
}
216-
if (parameters.VirtualMachineProfile.OsProfile != null)
217-
{
218-
if (parameters.VirtualMachineProfile.OsProfile.LinuxConfiguration != null)
219-
{
220-
extensionDirect.Name = extensionNameGA;
221-
extensionDirect.Publisher = "Microsoft.Azure.Security.LinuxAttestation";
222-
extensionDirect.Type1 = extensionNameGA;
223-
extensionDirect.TypeHandlerVersion = "1.0";
224-
extensionDirect.EnableAutomaticUpgrade = true;
225-
}
226-
else
227-
{
228-
extensionDirect.Name = extensionNameGA;
229-
extensionDirect.Publisher = "Microsoft.Azure.Security.WindowsAttestation";
230-
extensionDirect.Type1 = extensionNameGA;
231-
extensionDirect.TypeHandlerVersion = "1.0";
232-
extensionDirect.EnableAutomaticUpgrade = true;
233-
}
234-
}
235-
VirtualMachineScaleSetUpdate parametersupdate = new VirtualMachineScaleSetUpdate();
236-
parametersupdate.VirtualMachineProfile = new VirtualMachineScaleSetUpdateVMProfile();
237-
parametersupdate.VirtualMachineProfile.ExtensionProfile = new VirtualMachineScaleSetExtensionProfile();
238-
parametersupdate.VirtualMachineProfile.ExtensionProfile.Extensions = new List<VirtualMachineScaleSetExtension>();
239-
parametersupdate.VirtualMachineProfile.ExtensionProfile.Extensions.Add(extensionDirect);
240-
result = VirtualMachineScaleSetsClient.Update(resourceGroupName, vmScaleSetName, parametersupdate);
241-
var vmssVmExtParams = new VirtualMachineScaleSetVMExtension();
242-
var resultVmssVm = VirtualMachineScaleSetVMsClient.List(resourceGroupName, vmScaleSetName);
243-
var resultList = resultVmssVm.ToList();
244-
var nextPageLink = resultVmssVm.NextPageLink;
245-
while (!string.IsNullOrEmpty(nextPageLink))
246-
{
247-
var pageResult = VirtualMachineScaleSetVMsClient.ListNext(nextPageLink);
248-
foreach (var pageItem in pageResult)
249-
{
250-
resultList.Add(pageItem);
251-
}
252-
nextPageLink = pageResult.NextPageLink;
253-
}
254-
foreach (var currentVmssVm in resultList)
255-
{
256-
if (currentVmssVm.StorageProfile != null &&
257-
currentVmssVm.StorageProfile.OsDisk != null)
258-
{
259-
if (currentVmssVm.StorageProfile.OsDisk.OsType == OperatingSystemTypes.Linux)
260-
{
261-
vmssVmExtParams = new VirtualMachineScaleSetVMExtension
262-
{
263-
Publisher = "Microsoft.Azure.Security.LinuxAttestation",
264-
Type1 = extensionNameGA,
265-
TypeHandlerVersion = "1.0",
266-
EnableAutomaticUpgrade = true
267-
};
268-
}
269-
else
270-
{
271-
vmssVmExtParams = new VirtualMachineScaleSetVMExtension
272-
{
273-
Publisher = "Microsoft.Azure.Security.WindowsAttestation",
274-
Type1 = extensionNameGA,
275-
TypeHandlerVersion = "1.0",
276-
EnableAutomaticUpgrade = true
277-
};
278-
}
279-
var opt = this.VirtualMachineScaleSetVMExtensionsClient.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, vmScaleSetName, currentVmssVm.InstanceId, extensionNameGA, vmssVmExtParams);
280-
}
281-
}
282-
}
283-
284191
var psObject = new PSVirtualMachineScaleSet();
285192
ComputeAutomationAutoMapperProfile.Mapper.Map<VirtualMachineScaleSet, PSVirtualMachineScaleSet>(result, psObject);
286193
WriteObject(psObject);
@@ -419,36 +326,6 @@ private void trustedLaunchDefaultingImageValues()
419326

420327
}
421328

422-
/// <summary>
423-
/// Check to see if the Guest Attestation extension should be installed and Identity set to SystemAssigned.
424-
/// Requirements for this scenario to be true:
425-
/// 1) DisableIntegrityMonitoring is not true.
426-
/// 2) SecurityType is TrustedLaunch.
427-
/// 3) SecureBootEnabled is true.
428-
/// 4) VTpmEnabled is true.
429-
/// </summary>
430-
/// <param name="vmssParameters"></param>
431-
/// <returns></returns>
432-
private bool shouldGuestAttestationExtBeInstalled(VirtualMachineScaleSet vmssParameters)
433-
{
434-
if (this.DisableIntegrityMonitoring != true &&
435-
vmssParameters != null &&
436-
vmssParameters.OrchestrationMode != "Flexible" &&
437-
vmssParameters.VirtualMachineProfile != null &&
438-
vmssParameters.VirtualMachineProfile.SecurityProfile != null &&
439-
vmssParameters.VirtualMachineProfile.SecurityProfile.SecurityType?.ToLower() == ConstantValues.TrustedLaunchSecurityType &&
440-
vmssParameters.VirtualMachineProfile.SecurityProfile.UefiSettings != null &&
441-
vmssParameters.VirtualMachineProfile.SecurityProfile.UefiSettings.SecureBootEnabled == true &&
442-
vmssParameters.VirtualMachineProfile.SecurityProfile.UefiSettings.VTpmEnabled == true)
443-
{
444-
return true;
445-
}
446-
else
447-
{
448-
return false;
449-
}
450-
}
451-
452329
/// This somewhat contradicts with the above behavior that sets UpgradePolicy to null.
453330
/// There is some concern with the above behavior being correct or not, and requires additional testing before changing.
454331
private void checkFlexibleOrchestrationModeParamsDefaultParamSet(VirtualMachineScaleSet parameters)
@@ -520,11 +397,5 @@ private int convertAPIVersionToInt(string networkAPIVersion)
520397
HelpMessage = "UserData for the Vmss, which will be Base64 encoded. Customer should not pass any secrets in here.",
521398
ValueFromPipelineByPropertyName = true)]
522399
public string UserData { get; set; }
523-
524-
[Parameter(
525-
Mandatory = false,
526-
ValueFromPipelineByPropertyName = true,
527-
HelpMessage = "This flag disables the default behavior to install the Guest Attestation extension to the virtual machine if: 1) SecurityType is TrustedLaunch, 2) SecureBootEnabled on the SecurityProfile is true, 3) VTpmEnabled on the SecurityProfile is true.")]
528-
public SwitchParameter DisableIntegrityMonitoring { get; set; }
529400
}
530401
}

0 commit comments

Comments
 (0)