From 00e491415f9ba7b2cecfc7f3f78d21d65149a66b Mon Sep 17 00:00:00 2001 From: Daniel Barranquero Date: Wed, 4 Jun 2025 12:51:39 +0200 Subject: [PATCH] chore(app): new version of the fixer --- ...function_ftps_deployment_disabled_fixer.py | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/prowler/providers/azure/services/app/app_function_ftps_deployment_disabled/app_function_ftps_deployment_disabled_fixer.py b/prowler/providers/azure/services/app/app_function_ftps_deployment_disabled/app_function_ftps_deployment_disabled_fixer.py index ad69194da0..558af1992c 100644 --- a/prowler/providers/azure/services/app/app_function_ftps_deployment_disabled/app_function_ftps_deployment_disabled_fixer.py +++ b/prowler/providers/azure/services/app/app_function_ftps_deployment_disabled/app_function_ftps_deployment_disabled_fixer.py @@ -19,6 +19,9 @@ class AppFunctionFtpsDeploymentDisabledFixer(AzureFixer): service="app", cost_impact=False, cost_description=None, + permissions_required={ + "Microsoft.Web/sites/config/write": "Write access to the site configuration", + }, ) def fix(self, finding: Optional[Check_Report_Azure] = None, **kwargs) -> bool: @@ -33,35 +36,33 @@ class AppFunctionFtpsDeploymentDisabledFixer(AzureFixer): bool: True if FTP/FTPS is disabled, False otherwise """ try: - # First call parent fix method to handle common Azure fix operations - if not super().fix(finding, **kwargs): - return False - - # Get values either from finding or kwargs if finding: resource_group = finding.resource.get("resource_group_name") - app_name = finding.resource_name - suscription_name = finding.subscription + resource_id = finding.resource_name + suscription_id = finding.subscription else: resource_group = kwargs.get("resource_group") - app_name = kwargs.get("resource_id") - suscription_name = kwargs.get("subscription_id") + resource_id = kwargs.get("resource_id") + suscription_id = kwargs.get("subscription_id") - if not resource_group or not app_name or not suscription_name: + if not resource_group or not resource_id or not suscription_id: raise ValueError( "Resource group, app name and subscription name are required" ) - # Get the Azure client for this subscription - client = app_client.clients[suscription_name] + super().fix( + resource_group=resource_group, + resource_id=resource_id, + suscription_id=suscription_id, + ) + + client = app_client.clients[suscription_id] - # Create the SiteConfigResource object site_config = SiteConfigResource(ftps_state="Disabled") - # Update the function configuration to disable FTP/FTPS client.web_apps.update_configuration( resource_group_name=resource_group, - name=app_name, + name=resource_id, site_config=site_config, )