diff --git a/prowler/providers/azure/services/entra/entra_service.py b/prowler/providers/azure/services/entra/entra_service.py index eac1e4f660..134065b3a1 100644 --- a/prowler/providers/azure/services/entra/entra_service.py +++ b/prowler/providers/azure/services/entra/entra_service.py @@ -1,4 +1,4 @@ -import asyncio +from asyncio import gather, get_event_loop from dataclasses import dataclass from typing import Any, List, Optional from uuid import UUID @@ -19,26 +19,30 @@ from prowler.providers.azure.lib.service.service import AzureService class Entra(AzureService): def __init__(self, provider: AzureProvider): super().__init__(GraphServiceClient, provider) - self.users = asyncio.get_event_loop().run_until_complete(self.__get_users__()) - self.authorization_policy = asyncio.get_event_loop().run_until_complete( - self.__get_authorization_policy__() - ) - self.group_settings = asyncio.get_event_loop().run_until_complete( - self.__get_group_settings__() - ) - self.security_default = asyncio.get_event_loop().run_until_complete( - self.__get_security_default__() - ) - self.named_locations = asyncio.get_event_loop().run_until_complete( - self.__get_named_locations__() - ) - self.directory_roles = asyncio.get_event_loop().run_until_complete( - self.__get_directory_roles__() - ) - self.conditional_access_policy = asyncio.get_event_loop().run_until_complete( - self.__get_conditional_access_policy__() + + loop = get_event_loop() + + # Get users first alone because it is a dependency for other attributes + self.users = loop.run_until_complete(self.__get_users__()) + + attributes = loop.run_until_complete( + gather( + self.__get_authorization_policy__(), + self.__get_group_settings__(), + self.__get_security_default__(), + self.__get_named_locations__(), + self.__get_directory_roles__(), + self.__get_conditional_access_policy__(), + ) ) + self.authorization_policy = attributes[0] + self.group_settings = attributes[1] + self.security_default = attributes[2] + self.named_locations = attributes[3] + self.directory_roles = attributes[4] + self.conditional_access_policy = attributes[5] + async def __get_users__(self): logger.info("Entra - Getting users...") users = {}