From c056d39775760211018dc5330cfe47a5f10f5b60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20De=20la=20Torre=20Vico?= Date: Tue, 14 Jan 2025 18:37:01 +0100 Subject: [PATCH] feat(aisearch): use Check_Report_Azure constructor properly in AISearch checks (#6506) --- .../azure/services/aisearch/aisearch_service.py | 8 ++++---- .../aisearch_service_not_publicly_accessible.py | 9 ++++----- ...earch_service_public_access_level_is_disabled_test.py | 4 ++++ .../azure/services/aisearch/aisearch_service_test.py | 1 + 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/prowler/providers/azure/services/aisearch/aisearch_service.py b/prowler/providers/azure/services/aisearch/aisearch_service.py index 23c968e33b..c1d530798c 100644 --- a/prowler/providers/azure/services/aisearch/aisearch_service.py +++ b/prowler/providers/azure/services/aisearch/aisearch_service.py @@ -1,6 +1,5 @@ -from dataclasses import dataclass - from azure.mgmt.search import SearchManagementClient +from pydantic import BaseModel from prowler.lib.logger import logger from prowler.providers.azure.azure_provider import AzureProvider @@ -23,6 +22,7 @@ class AISearch(AzureService): aisearch_services[subscription].update( { aisearch_service.id: AISearchService( + id=aisearch_service.id, name=aisearch_service.name, location=aisearch_service.location, public_network_access=( @@ -41,8 +41,8 @@ class AISearch(AzureService): return aisearch_services -@dataclass -class AISearchService: +class AISearchService(BaseModel): + id: str name: str location: str public_network_access: bool diff --git a/prowler/providers/azure/services/aisearch/aisearch_service_not_publicly_accessible/aisearch_service_not_publicly_accessible.py b/prowler/providers/azure/services/aisearch/aisearch_service_not_publicly_accessible/aisearch_service_not_publicly_accessible.py index 0a8b16fcab..f22e147138 100644 --- a/prowler/providers/azure/services/aisearch/aisearch_service_not_publicly_accessible/aisearch_service_not_publicly_accessible.py +++ b/prowler/providers/azure/services/aisearch/aisearch_service_not_publicly_accessible/aisearch_service_not_publicly_accessible.py @@ -12,12 +12,11 @@ class aisearch_service_not_publicly_accessible(Check): subscription_name, aisearch_services, ) in aisearch_client.aisearch_services.items(): - for aisearch_service_id, aisearch_service in aisearch_services.items(): - report = Check_Report_Azure(self.metadata()) + for aisearch_service in aisearch_services.values(): + report = Check_Report_Azure( + metadata=self.metadata(), resource_metadata=aisearch_service + ) report.subscription = subscription_name - report.resource_name = aisearch_service.name - report.resource_id = aisearch_service_id - report.location = aisearch_service.location report.status = "FAIL" report.status_extended = f"AISearch Service {aisearch_service.name} from subscription {subscription_name} allows public access." diff --git a/tests/providers/azure/services/aisearch/aisearch_service_public_access_level_is_disabled/aisearch_service_public_access_level_is_disabled_test.py b/tests/providers/azure/services/aisearch/aisearch_service_public_access_level_is_disabled/aisearch_service_public_access_level_is_disabled_test.py index 88c5ecbc1e..c1cac0546e 100644 --- a/tests/providers/azure/services/aisearch/aisearch_service_public_access_level_is_disabled/aisearch_service_public_access_level_is_disabled_test.py +++ b/tests/providers/azure/services/aisearch/aisearch_service_public_access_level_is_disabled/aisearch_service_public_access_level_is_disabled_test.py @@ -35,6 +35,7 @@ class Test_AISearch_service_not_publicly_accessible: aisearch_client.aisearch_services = { AZURE_SUBSCRIPTION_ID: { aisearch_service_id: AISearchService( + id=aisearch_service_id, name=aisearch_service_name, location="westeurope", public_network_access=True, @@ -61,6 +62,7 @@ class Test_AISearch_service_not_publicly_accessible: result[0].status_extended == f"AISearch Service {aisearch_service_name} from subscription {AZURE_SUBSCRIPTION_ID} allows public access." ) + assert result[0].resource_id == aisearch_service_id assert result[0].subscription == AZURE_SUBSCRIPTION_ID assert result[0].resource_name == aisearch_service_name assert result[0].location == "westeurope" @@ -72,6 +74,7 @@ class Test_AISearch_service_not_publicly_accessible: aisearch_client.aisearch_services = { AZURE_SUBSCRIPTION_ID: { aisearch_service_id: AISearchService( + id=aisearch_service_id, name=aisearch_service_name, location="westeurope", public_network_access=False, @@ -98,6 +101,7 @@ class Test_AISearch_service_not_publicly_accessible: result[0].status_extended == f"AISearch Service {aisearch_service_name} from subscription {AZURE_SUBSCRIPTION_ID} does not allows public access." ) + assert result[0].resource_id == aisearch_service_id assert result[0].subscription == AZURE_SUBSCRIPTION_ID assert result[0].resource_name == aisearch_service_name assert result[0].resource_id == aisearch_service_id diff --git a/tests/providers/azure/services/aisearch/aisearch_service_test.py b/tests/providers/azure/services/aisearch/aisearch_service_test.py index dd29039d1b..ff041e7eab 100644 --- a/tests/providers/azure/services/aisearch/aisearch_service_test.py +++ b/tests/providers/azure/services/aisearch/aisearch_service_test.py @@ -14,6 +14,7 @@ def mock_storage_get_aisearch_services(_): return { AZURE_SUBSCRIPTION_ID: { "aisearch_service_id-1": AISearchService( + id="aisearch_service_id-1", name="name", location="westeurope", public_network_access=True,