mirror of
https://github.com/ghndrx/prowler.git
synced 2026-02-10 14:55:00 +00:00
feat(gcp_service): Parent class (#2641)
This commit is contained in:
0
prowler/providers/gcp/lib/service/__init__.py
Normal file
0
prowler/providers/gcp/lib/service/__init__.py
Normal file
18
prowler/providers/gcp/lib/service/service.py
Normal file
18
prowler/providers/gcp/lib/service/service.py
Normal file
@@ -0,0 +1,18 @@
|
||||
from prowler.providers.gcp.gcp_provider import generate_client
|
||||
|
||||
|
||||
class GCPService:
|
||||
def __init__(self, service, audit_info, region="global", api_version="v1"):
|
||||
# We receive the service using __class__.__name__ or the service name in lowercase
|
||||
# e.g.: APIKeys --> we need a lowercase string, so service.lower()
|
||||
self.service = service.lower() if not service.islower() else service
|
||||
|
||||
self.api_version = api_version
|
||||
self.project_ids = audit_info.project_ids
|
||||
self.default_project_id = audit_info.default_project_id
|
||||
|
||||
self.region = region
|
||||
self.client = generate_client(service, api_version, audit_info)
|
||||
|
||||
def __get_client__(self):
|
||||
return self.client
|
||||
@@ -1,18 +1,14 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
from prowler.lib.logger import logger
|
||||
from prowler.providers.gcp.gcp_provider import generate_client
|
||||
from prowler.providers.gcp.lib.service.service import GCPService
|
||||
|
||||
|
||||
################## API Keys
|
||||
class APIKeys:
|
||||
class APIKeys(GCPService):
|
||||
def __init__(self, audit_info):
|
||||
self.service = "apikeys"
|
||||
self.api_version = "v2"
|
||||
self.project_ids = audit_info.project_ids
|
||||
self.default_project_id = audit_info.default_project_id
|
||||
self.region = "global"
|
||||
self.client = generate_client(self.service, self.api_version, audit_info)
|
||||
super().__init__(__class__.__name__, audit_info, api_version="v2")
|
||||
|
||||
self.keys = []
|
||||
self.__get_keys__()
|
||||
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
from prowler.lib.logger import logger
|
||||
from prowler.providers.gcp.gcp_provider import generate_client
|
||||
from prowler.providers.gcp.lib.service.service import GCPService
|
||||
|
||||
|
||||
################## BigQuery
|
||||
class BigQuery:
|
||||
class BigQuery(GCPService):
|
||||
def __init__(self, audit_info):
|
||||
self.service = "bigquery"
|
||||
self.api_version = "v2"
|
||||
self.project_ids = audit_info.project_ids
|
||||
self.client = generate_client(self.service, self.api_version, audit_info)
|
||||
super().__init__(__class__.__name__, audit_info, api_version="v2")
|
||||
|
||||
self.datasets = []
|
||||
self.tables = []
|
||||
self.__get_datasets__()
|
||||
|
||||
@@ -1,26 +1,20 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
from prowler.lib.logger import logger
|
||||
from prowler.providers.gcp.gcp_provider import generate_client
|
||||
from prowler.providers.gcp.lib.service.service import GCPService
|
||||
|
||||
|
||||
################## CloudResourceManager
|
||||
class CloudResourceManager:
|
||||
class CloudResourceManager(GCPService):
|
||||
def __init__(self, audit_info):
|
||||
self.service = "cloudresourcemanager"
|
||||
self.api_version = "v1"
|
||||
self.region = "global"
|
||||
self.project_ids = audit_info.project_ids
|
||||
self.client = generate_client(self.service, self.api_version, audit_info)
|
||||
super().__init__(__class__.__name__, audit_info)
|
||||
|
||||
self.bindings = []
|
||||
self.projects = []
|
||||
self.organizations = []
|
||||
self.__get_iam_policy__()
|
||||
self.__get_organizations__()
|
||||
|
||||
def __get_client__(self):
|
||||
return self.client
|
||||
|
||||
def __get_iam_policy__(self):
|
||||
for project_id in self.project_ids:
|
||||
try:
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
from prowler.lib.logger import logger
|
||||
from prowler.providers.gcp.gcp_provider import generate_client
|
||||
from prowler.providers.gcp.lib.service.service import GCPService
|
||||
|
||||
|
||||
################## CloudSQL
|
||||
class CloudSQL:
|
||||
class CloudSQL(GCPService):
|
||||
def __init__(self, audit_info):
|
||||
self.service = "sqladmin"
|
||||
self.api_version = "v1"
|
||||
self.project_ids = audit_info.project_ids
|
||||
self.client = generate_client(self.service, self.api_version, audit_info)
|
||||
super().__init__("sqladmin", audit_info)
|
||||
self.instances = []
|
||||
self.__get_instances__()
|
||||
|
||||
|
||||
@@ -3,16 +3,13 @@ from typing import Optional
|
||||
from pydantic import BaseModel
|
||||
|
||||
from prowler.lib.logger import logger
|
||||
from prowler.providers.gcp.gcp_provider import generate_client
|
||||
from prowler.providers.gcp.lib.service.service import GCPService
|
||||
|
||||
|
||||
################## CloudStorage
|
||||
class CloudStorage:
|
||||
class CloudStorage(GCPService):
|
||||
def __init__(self, audit_info):
|
||||
self.service = "storage"
|
||||
self.api_version = "v1"
|
||||
self.project_ids = audit_info.project_ids
|
||||
self.client = generate_client(self.service, self.api_version, audit_info)
|
||||
super().__init__("storage", audit_info)
|
||||
self.buckets = []
|
||||
self.__get_buckets__()
|
||||
|
||||
|
||||
@@ -1,18 +1,13 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
from prowler.lib.logger import logger
|
||||
from prowler.providers.gcp.gcp_provider import generate_client
|
||||
from prowler.providers.gcp.lib.service.service import GCPService
|
||||
|
||||
|
||||
################## Compute
|
||||
class Compute:
|
||||
class Compute(GCPService):
|
||||
def __init__(self, audit_info):
|
||||
self.service = "compute"
|
||||
self.api_version = "v1"
|
||||
self.project_ids = audit_info.project_ids
|
||||
self.default_project_id = audit_info.default_project_id
|
||||
self.client = generate_client(self.service, self.api_version, audit_info)
|
||||
self.region = "global"
|
||||
super().__init__(__class__.__name__, audit_info)
|
||||
self.regions = set()
|
||||
self.zones = set()
|
||||
self.instances = []
|
||||
|
||||
@@ -1,18 +1,14 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
from prowler.lib.logger import logger
|
||||
from prowler.providers.gcp.gcp_provider import generate_client
|
||||
from prowler.providers.gcp.lib.service.service import GCPService
|
||||
from prowler.providers.gcp.services.compute.compute_client import compute_client
|
||||
|
||||
|
||||
################## Dataproc
|
||||
class Dataproc:
|
||||
class Dataproc(GCPService):
|
||||
def __init__(self, audit_info):
|
||||
self.service = "dataproc"
|
||||
self.api_version = "v1"
|
||||
self.project_ids = audit_info.project_ids
|
||||
self.default_project_id = audit_info.default_project_id
|
||||
self.client = generate_client(self.service, self.api_version, audit_info)
|
||||
super().__init__(__class__.__name__, audit_info)
|
||||
self.clusters = []
|
||||
self.__get_clusters__()
|
||||
|
||||
|
||||
@@ -1,18 +1,13 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
from prowler.lib.logger import logger
|
||||
from prowler.providers.gcp.gcp_provider import generate_client
|
||||
from prowler.providers.gcp.lib.service.service import GCPService
|
||||
|
||||
|
||||
################## DNS
|
||||
class DNS:
|
||||
class DNS(GCPService):
|
||||
def __init__(self, audit_info):
|
||||
self.service = "dns"
|
||||
self.api_version = "v1"
|
||||
self.project_ids = audit_info.project_ids
|
||||
self.default_project_id = audit_info.default_project_id
|
||||
self.client = generate_client(self.service, self.api_version, audit_info)
|
||||
self.region = "global"
|
||||
super().__init__(__class__.__name__, audit_info)
|
||||
self.managed_zones = []
|
||||
self.__get_managed_zones__()
|
||||
self.policies = []
|
||||
|
||||
@@ -3,27 +3,20 @@ from datetime import datetime
|
||||
from pydantic import BaseModel
|
||||
|
||||
from prowler.lib.logger import logger
|
||||
from prowler.providers.gcp.gcp_provider import generate_client
|
||||
from prowler.providers.gcp.lib.service.service import GCPService
|
||||
from prowler.providers.gcp.services.cloudresourcemanager.cloudresourcemanager_client import (
|
||||
cloudresourcemanager_client,
|
||||
)
|
||||
|
||||
|
||||
################## IAM
|
||||
class IAM:
|
||||
class IAM(GCPService):
|
||||
def __init__(self, audit_info):
|
||||
self.service = "iam"
|
||||
self.api_version = "v1"
|
||||
self.project_ids = audit_info.project_ids
|
||||
self.region = "global"
|
||||
self.client = generate_client(self.service, self.api_version, audit_info)
|
||||
super().__init__(__class__.__name__, audit_info)
|
||||
self.service_accounts = []
|
||||
self.__get_service_accounts__()
|
||||
self.__get_service_accounts_keys__()
|
||||
|
||||
def __get_client__(self):
|
||||
return self.client
|
||||
|
||||
def __get_service_accounts__(self):
|
||||
for project_id in self.project_ids:
|
||||
try:
|
||||
@@ -109,19 +102,12 @@ class ServiceAccount(BaseModel):
|
||||
|
||||
|
||||
################## AccessApproval
|
||||
class AccessApproval:
|
||||
class AccessApproval(GCPService):
|
||||
def __init__(self, audit_info):
|
||||
self.service = "accessapproval"
|
||||
self.api_version = "v1"
|
||||
self.project_ids = audit_info.project_ids
|
||||
self.region = "global"
|
||||
self.client = generate_client(self.service, self.api_version, audit_info)
|
||||
super().__init__(__class__.__name__, audit_info)
|
||||
self.settings = {}
|
||||
self.__get_settings__()
|
||||
|
||||
def __get_client__(self):
|
||||
return self.client
|
||||
|
||||
def __get_settings__(self):
|
||||
for project_id in self.project_ids:
|
||||
try:
|
||||
@@ -148,18 +134,12 @@ class Setting(BaseModel):
|
||||
|
||||
|
||||
################## EssentialContacts
|
||||
class EssentialContacts:
|
||||
class EssentialContacts(GCPService):
|
||||
def __init__(self, audit_info):
|
||||
self.service = "essentialcontacts"
|
||||
self.api_version = "v1"
|
||||
self.region = "global"
|
||||
self.client = generate_client(self.service, self.api_version, audit_info)
|
||||
super().__init__(__class__.__name__, audit_info)
|
||||
self.organizations = []
|
||||
self.__get_contacts__()
|
||||
|
||||
def __get_client__(self):
|
||||
return self.client
|
||||
|
||||
def __get_contacts__(self):
|
||||
for org in cloudresourcemanager_client.organizations:
|
||||
try:
|
||||
|
||||
@@ -3,17 +3,13 @@ from typing import Optional
|
||||
from pydantic import BaseModel
|
||||
|
||||
from prowler.lib.logger import logger
|
||||
from prowler.providers.gcp.gcp_provider import generate_client
|
||||
from prowler.providers.gcp.lib.service.service import GCPService
|
||||
|
||||
|
||||
################## KMS
|
||||
class KMS:
|
||||
class KMS(GCPService):
|
||||
def __init__(self, audit_info):
|
||||
self.service = "cloudkms"
|
||||
self.api_version = "v1"
|
||||
self.project_ids = audit_info.project_ids
|
||||
self.region = "global"
|
||||
self.client = generate_client(self.service, self.api_version, audit_info)
|
||||
super().__init__("cloudkms", audit_info)
|
||||
self.locations = []
|
||||
self.key_rings = []
|
||||
self.crypto_keys = []
|
||||
@@ -22,9 +18,6 @@ class KMS:
|
||||
self.__get_crypto_keys__()
|
||||
self.__get_crypto_keys_iam_policy__()
|
||||
|
||||
def __get_client__(self):
|
||||
return self.client
|
||||
|
||||
def __get_locations__(self):
|
||||
for project_id in self.project_ids:
|
||||
try:
|
||||
|
||||
@@ -1,18 +1,13 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
from prowler.lib.logger import logger
|
||||
from prowler.providers.gcp.gcp_provider import generate_client
|
||||
from prowler.providers.gcp.lib.service.service import GCPService
|
||||
|
||||
|
||||
################## Logging
|
||||
class Logging:
|
||||
class Logging(GCPService):
|
||||
def __init__(self, audit_info):
|
||||
self.service = "logging"
|
||||
self.api_version = "v2"
|
||||
self.region = "global"
|
||||
self.project_ids = audit_info.project_ids
|
||||
self.default_project_id = audit_info.default_project_id
|
||||
self.client = generate_client(self.service, self.api_version, audit_info)
|
||||
super().__init__(__class__.__name__, audit_info, api_version="v2")
|
||||
self.sinks = []
|
||||
self.metrics = []
|
||||
self.__get_sinks__()
|
||||
|
||||
@@ -1,17 +1,13 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
from prowler.lib.logger import logger
|
||||
from prowler.providers.gcp.gcp_provider import generate_client
|
||||
from prowler.providers.gcp.lib.service.service import GCPService
|
||||
|
||||
|
||||
################## Monitoring
|
||||
class Monitoring:
|
||||
class Monitoring(GCPService):
|
||||
def __init__(self, audit_info):
|
||||
self.service = "monitoring"
|
||||
self.api_version = "v3"
|
||||
self.region = "global"
|
||||
self.project_ids = audit_info.project_ids
|
||||
self.client = generate_client(self.service, self.api_version, audit_info)
|
||||
super().__init__(__class__.__name__, audit_info, api_version="v3")
|
||||
self.alert_policies = []
|
||||
self.__get_alert_policies__()
|
||||
|
||||
|
||||
@@ -1,23 +1,16 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
from prowler.lib.logger import logger
|
||||
from prowler.providers.gcp.gcp_provider import generate_client
|
||||
from prowler.providers.gcp.lib.service.service import GCPService
|
||||
|
||||
|
||||
################## ServiceUsage
|
||||
class ServiceUsage:
|
||||
class ServiceUsage(GCPService):
|
||||
def __init__(self, audit_info):
|
||||
self.service = "serviceusage"
|
||||
self.api_version = "v1"
|
||||
self.region = "global"
|
||||
self.project_ids = audit_info.project_ids
|
||||
self.client = generate_client(self.service, self.api_version, audit_info)
|
||||
super().__init__(__class__.__name__, audit_info)
|
||||
self.active_services = {}
|
||||
self.__get_active_services__()
|
||||
|
||||
def __get_client__(self):
|
||||
return self.client
|
||||
|
||||
def __get_active_services__(self):
|
||||
for project_id in self.project_ids:
|
||||
self.active_services[project_id] = []
|
||||
|
||||
Reference in New Issue
Block a user