diff --git a/ScoutSuite/providers/aws/resources/base.py b/ScoutSuite/providers/aws/resources/base.py index 9f3ae6228..ba4f1a765 100644 --- a/ScoutSuite/providers/aws/resources/base.py +++ b/ScoutSuite/providers/aws/resources/base.py @@ -3,7 +3,7 @@ import abc import asyncio -from ScoutSuite.providers.base.configs.resources import Resources, CompositeResources +from ScoutSuite.providers.base.resources.base import Resources, CompositeResources class AWSResources(Resources, metaclass=abc.ABCMeta): diff --git a/ScoutSuite/providers/aws/services.py b/ScoutSuite/providers/aws/services.py index d6c879e3d..55f0843aa 100644 --- a/ScoutSuite/providers/aws/services.py +++ b/ScoutSuite/providers/aws/services.py @@ -19,7 +19,7 @@ from ScoutSuite.providers.aws.resources.sns.base import SNS from ScoutSuite.providers.aws.resources.sqs.base import SQS from ScoutSuite.providers.aws.resources.vpc.base import VPC -from ScoutSuite.providers.base.configs.services import BaseServicesConfig +from ScoutSuite.providers.base.services import BaseServicesConfig # Try to import proprietary services try: diff --git a/ScoutSuite/providers/azure/resources/base.py b/ScoutSuite/providers/azure/resources/base.py index 6ae4a8a84..672b2a9fb 100644 --- a/ScoutSuite/providers/azure/resources/base.py +++ b/ScoutSuite/providers/azure/resources/base.py @@ -3,7 +3,7 @@ import abc import asyncio -from ScoutSuite.providers.base.configs.resources import Resources, CompositeResources +from ScoutSuite.providers.base.resources.base import Resources, CompositeResources from ScoutSuite.providers.azure.facade.base import AzureFacade diff --git a/ScoutSuite/providers/azure/services.py b/ScoutSuite/providers/azure/services.py index 19ebb1c9a..cc4590daf 100644 --- a/ScoutSuite/providers/azure/services.py +++ b/ScoutSuite/providers/azure/services.py @@ -5,7 +5,7 @@ from ScoutSuite.providers.azure.resources.securitycenter.base import SecurityCenter from ScoutSuite.providers.azure.resources.sqldatabase.base import Servers from ScoutSuite.providers.azure.resources.storageaccounts.base import StorageAccounts -from ScoutSuite.providers.base.configs.services import BaseServicesConfig +from ScoutSuite.providers.base.services import BaseServicesConfig # Try to import proprietary services try: diff --git a/ScoutSuite/providers/base/configs/__init__.py b/ScoutSuite/providers/base/configs/__init__.py index 0af8a16a8..e69de29bb 100644 --- a/ScoutSuite/providers/base/configs/__init__.py +++ b/ScoutSuite/providers/base/configs/__init__.py @@ -1,7 +0,0 @@ - -resource_id_map = { - 'network_interfaces': 'NetworkInterfaceId', - 'peering_connections': 'VpcPeeringConnectionId', - 'subnet_groups': 'DBSubnetGroupName' -} - diff --git a/ScoutSuite/providers/base/configs/browser.py b/ScoutSuite/providers/base/configs/browser.py index 64db64434..4fe282c8a 100644 --- a/ScoutSuite/providers/base/configs/browser.py +++ b/ScoutSuite/providers/base/configs/browser.py @@ -19,21 +19,6 @@ def combine_paths(path1, path2): return path -def get_attribute_at(config, target_path, key, default_value=None): - """ - Return attribute value at a given path. - - :param config: - :param target_path: - :param key: - :param default_value: - :return: - """ - for target in target_path: - config = config[target] - return config[key] if key in config else default_value - - def get_object_at(object, path, attribute_name=None): """ Get arbitrary object given a dictionary and path (list of keys). diff --git a/ScoutSuite/providers/base/configs/resources.py b/ScoutSuite/providers/base/resources/base.py similarity index 90% rename from ScoutSuite/providers/base/configs/resources.py rename to ScoutSuite/providers/base/resources/base.py index 7ad8f6b95..134331ecb 100644 --- a/ScoutSuite/providers/base/configs/resources.py +++ b/ScoutSuite/providers/base/resources/base.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- """ This module provides some abstract classes for representing a hierarchical structure. Especially since all cloud providers (AWS, Azure and GCP for now) organize their resources (virtual machines, @@ -34,6 +33,9 @@ class CompositeResources(Resources, metaclass=abc.ABCMeta): referred to as its 'children'. """ + def __init__(self, facade): + self.facade = facade + @property @abc.abstractmethod def _children(self): @@ -57,7 +59,8 @@ async def _fetch_children_of_all_resources(self, resources: dict, scopes: dict): tasks = { asyncio.ensure_future( - self._fetch_children(resource_parent=resource_parent, scope=scopes[resource_parent_key]) + self._fetch_children( + resource_parent=resource_parent, scope=scopes[resource_parent_key]) ) for (resource_parent_key, resource_parent) in resources.items() } await asyncio.wait(tasks) @@ -70,10 +73,12 @@ async def _fetch_children(self, resource_parent: object, scope: dict): :param resource_parent: The resource in which the children will be stored. :param scope: The scope passed to the children constructors. """ - children = [(child_class(self.facade, **scope), child_name) for (child_class, child_name) in self._children] + children = [(child_class(self.facade, **scope), child_name) + for (child_class, child_name) in self._children] # Fetch all children concurrently: await asyncio.wait( - {asyncio.ensure_future(child.fetch_all()) for (child, _) in children} + {asyncio.ensure_future(child.fetch_all()) + for (child, _) in children} ) # Update parent content: for child, child_name in children: diff --git a/ScoutSuite/providers/base/configs/services.py b/ScoutSuite/providers/base/services.py similarity index 100% rename from ScoutSuite/providers/base/configs/services.py rename to ScoutSuite/providers/base/services.py diff --git a/ScoutSuite/providers/gcp/resources/base.py b/ScoutSuite/providers/gcp/resources/base.py index ea8aa052d..988d65c28 100644 --- a/ScoutSuite/providers/gcp/resources/base.py +++ b/ScoutSuite/providers/gcp/resources/base.py @@ -1,7 +1,7 @@ """This module provides implementations for CompositeResources for GCP.""" import asyncio -from ScoutSuite.providers.base.configs.resources import CompositeResources +from ScoutSuite.providers.base.resources.base import CompositeResources class GCPCompositeResources(CompositeResources): diff --git a/ScoutSuite/providers/gcp/resources/cloudresourcemanager/bindings.py b/ScoutSuite/providers/gcp/resources/cloudresourcemanager/bindings.py index fee0e6622..c525f0ee2 100644 --- a/ScoutSuite/providers/gcp/resources/cloudresourcemanager/bindings.py +++ b/ScoutSuite/providers/gcp/resources/cloudresourcemanager/bindings.py @@ -1,5 +1,5 @@ from ScoutSuite.core.console import print_exception -from ScoutSuite.providers.base.configs.resources import Resources +from ScoutSuite.providers.base.resources.base import Resources from ScoutSuite.providers.gcp.facade.gcp import GCPFacade from ScoutSuite.providers.utils import get_non_provider_id diff --git a/ScoutSuite/providers/gcp/resources/cloudsql/backups.py b/ScoutSuite/providers/gcp/resources/cloudsql/backups.py index d5da79ecc..5e915e804 100644 --- a/ScoutSuite/providers/gcp/resources/cloudsql/backups.py +++ b/ScoutSuite/providers/gcp/resources/cloudsql/backups.py @@ -1,5 +1,5 @@ from ScoutSuite.providers.gcp.facade.gcp import GCPFacade -from ScoutSuite.providers.base.configs.resources import Resources +from ScoutSuite.providers.base.resources.base import Resources class Backups(Resources): def __init__(self, facade: GCPFacade, project_id: str, instance_name: str): diff --git a/ScoutSuite/providers/gcp/resources/cloudsql/users.py b/ScoutSuite/providers/gcp/resources/cloudsql/users.py index 9e08189df..d0bd88679 100644 --- a/ScoutSuite/providers/gcp/resources/cloudsql/users.py +++ b/ScoutSuite/providers/gcp/resources/cloudsql/users.py @@ -1,5 +1,5 @@ from ScoutSuite.providers.gcp.facade.gcp import GCPFacade -from ScoutSuite.providers.base.configs.resources import Resources +from ScoutSuite.providers.base.resources.base import Resources class Users(Resources): def __init__(self, facade: GCPFacade, project_id: str, instance_name: str): diff --git a/ScoutSuite/providers/gcp/resources/cloudstorage/buckets.py b/ScoutSuite/providers/gcp/resources/cloudstorage/buckets.py index f52d35ce8..1712ff3f2 100644 --- a/ScoutSuite/providers/gcp/resources/cloudstorage/buckets.py +++ b/ScoutSuite/providers/gcp/resources/cloudstorage/buckets.py @@ -1,4 +1,4 @@ -from ScoutSuite.providers.base.configs.resources import Resources +from ScoutSuite.providers.base.resources.base import Resources from ScoutSuite.providers.gcp.facade.gcp import GCPFacade from ScoutSuite.providers.utils import get_non_provider_id diff --git a/ScoutSuite/providers/gcp/resources/gce/disks.py b/ScoutSuite/providers/gcp/resources/gce/disks.py index 977997bf2..ba3454efa 100644 --- a/ScoutSuite/providers/gcp/resources/gce/disks.py +++ b/ScoutSuite/providers/gcp/resources/gce/disks.py @@ -1,4 +1,4 @@ -from ScoutSuite.providers.base.configs.resources import Resources +from ScoutSuite.providers.base.resources.base import Resources from ScoutSuite.providers.utils import get_non_provider_id class Disks(Resources): diff --git a/ScoutSuite/providers/gcp/resources/gce/firewalls.py b/ScoutSuite/providers/gcp/resources/gce/firewalls.py index ffd5bf69b..73133bf84 100644 --- a/ScoutSuite/providers/gcp/resources/gce/firewalls.py +++ b/ScoutSuite/providers/gcp/resources/gce/firewalls.py @@ -1,4 +1,4 @@ -from ScoutSuite.providers.base.configs.resources import Resources +from ScoutSuite.providers.base.resources.base import Resources from ScoutSuite.providers.gcp.facade.gcp import GCPFacade class Firewalls(Resources): diff --git a/ScoutSuite/providers/gcp/resources/gce/networks.py b/ScoutSuite/providers/gcp/resources/gce/networks.py index b238fbf4a..4a66a1d58 100644 --- a/ScoutSuite/providers/gcp/resources/gce/networks.py +++ b/ScoutSuite/providers/gcp/resources/gce/networks.py @@ -1,4 +1,4 @@ -from ScoutSuite.providers.base.configs.resources import Resources +from ScoutSuite.providers.base.resources.base import Resources from ScoutSuite.providers.gcp.facade.gcp import GCPFacade from ScoutSuite.providers.gcp.resources.projects import Projects diff --git a/ScoutSuite/providers/gcp/resources/gce/snapshots.py b/ScoutSuite/providers/gcp/resources/gce/snapshots.py index e5b183a1e..ebff58f26 100644 --- a/ScoutSuite/providers/gcp/resources/gce/snapshots.py +++ b/ScoutSuite/providers/gcp/resources/gce/snapshots.py @@ -1,4 +1,4 @@ -from ScoutSuite.providers.base.configs.resources import Resources +from ScoutSuite.providers.base.resources.base import Resources from ScoutSuite.providers.gcp.facade.gcp import GCPFacade from ScoutSuite.providers.gcp.resources.projects import Projects diff --git a/ScoutSuite/providers/gcp/resources/gce/subnetworks.py b/ScoutSuite/providers/gcp/resources/gce/subnetworks.py index 666c1c8d7..e90d480b2 100644 --- a/ScoutSuite/providers/gcp/resources/gce/subnetworks.py +++ b/ScoutSuite/providers/gcp/resources/gce/subnetworks.py @@ -1,4 +1,4 @@ -from ScoutSuite.providers.base.configs.resources import Resources +from ScoutSuite.providers.base.resources.base import Resources from ScoutSuite.providers.gcp.facade.gcp import GCPFacade class Subnetworks(Resources): diff --git a/ScoutSuite/providers/gcp/resources/iam/bindings.py b/ScoutSuite/providers/gcp/resources/iam/bindings.py index db262381e..6f2894878 100644 --- a/ScoutSuite/providers/gcp/resources/iam/bindings.py +++ b/ScoutSuite/providers/gcp/resources/iam/bindings.py @@ -1,5 +1,5 @@ from ScoutSuite.providers.gcp.facade.gcp import GCPFacade -from ScoutSuite.providers.base.configs.resources import Resources +from ScoutSuite.providers.base.resources.base import Resources class Bindings(Resources): def __init__(self, facade: GCPFacade, project_id: str, service_account_email: str): diff --git a/ScoutSuite/providers/gcp/resources/iam/keys.py b/ScoutSuite/providers/gcp/resources/iam/keys.py index e641cdd64..222399611 100644 --- a/ScoutSuite/providers/gcp/resources/iam/keys.py +++ b/ScoutSuite/providers/gcp/resources/iam/keys.py @@ -1,5 +1,5 @@ from ScoutSuite.providers.gcp.facade.gcp import GCPFacade -from ScoutSuite.providers.base.configs.resources import Resources +from ScoutSuite.providers.base.resources.base import Resources class Keys(Resources): def __init__(self, facade: GCPFacade, project_id: str, service_account_email: str): diff --git a/ScoutSuite/providers/gcp/resources/stackdriverlogging/sinks.py b/ScoutSuite/providers/gcp/resources/stackdriverlogging/sinks.py index c04562608..25880f2ed 100644 --- a/ScoutSuite/providers/gcp/resources/stackdriverlogging/sinks.py +++ b/ScoutSuite/providers/gcp/resources/stackdriverlogging/sinks.py @@ -1,4 +1,4 @@ -from ScoutSuite.providers.base.configs.resources import Resources +from ScoutSuite.providers.base.resources.base import Resources from ScoutSuite.providers.gcp.facade.gcp import GCPFacade class Sinks(Resources): diff --git a/ScoutSuite/providers/gcp/services.py b/ScoutSuite/providers/gcp/services.py index 7adde475a..c47fcd909 100644 --- a/ScoutSuite/providers/gcp/services.py +++ b/ScoutSuite/providers/gcp/services.py @@ -1,4 +1,4 @@ -from ScoutSuite.providers.base.configs.services import BaseServicesConfig +from ScoutSuite.providers.base.services import BaseServicesConfig from ScoutSuite.providers.gcp.facade.gcp import GCPFacade from ScoutSuite.providers.gcp.resources.cloudresourcemanager.base import CloudResourceManager from ScoutSuite.providers.gcp.resources.cloudsql.base import CloudSQL diff --git a/tests/test-resources.py b/tests/test-resources.py index 5121d0b07..76b054b1d 100644 --- a/tests/test-resources.py +++ b/tests/test-resources.py @@ -1,5 +1,5 @@ from unittest import TestCase -from ScoutSuite.providers.base.configs.resources import ( +from ScoutSuite.providers.base.resources.base import ( Resources, CompositeResources) import asyncio import json @@ -27,7 +27,7 @@ class DummyComposite(CompositeResources): def __init__(self): self.facade = None - async def fetch_all(self, **kwargs): + async def fetch_all(self): for key in range(2): self[str(key)] = {}