diff --git a/lib/check/check.py b/lib/check/check.py index 7c8089c2..921755c7 100644 --- a/lib/check/check.py +++ b/lib/check/check.py @@ -205,7 +205,9 @@ def run_check(check, audit_info, output_options): findings = check.execute() except Exception as error: print(f"Something went wrong in {check.checkID}, please use --log-level ERROR") - logger.error(f"{check.checkID} -- {error.__class__.__name__}: {error}") + logger.error( + f"{check.checkID} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) else: report(findings, output_options, audit_info) finally: diff --git a/providers/aws/services/accessanalyzer/accessanalyzer_service.py b/providers/aws/services/accessanalyzer/accessanalyzer_service.py index e77a4658..28bf6d24 100644 --- a/providers/aws/services/accessanalyzer/accessanalyzer_service.py +++ b/providers/aws/services/accessanalyzer/accessanalyzer_service.py @@ -84,9 +84,10 @@ class AccessAnalyzer: except Exception as error: logger.error( - f"{regional_client.region} -- {error.__class__.__name__}: {error}" + f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" ) + @dataclass class Analyzer: arn: str diff --git a/providers/aws/services/ec2/ec2_service.py b/providers/aws/services/ec2/ec2_service.py index aaed89f1..48389c90 100644 --- a/providers/aws/services/ec2/ec2_service.py +++ b/providers/aws/services/ec2/ec2_service.py @@ -78,7 +78,7 @@ class EC2: ) except Exception as error: logger.error( - f"{regional_client.region} -- {error.__class__.__name__}: {error}" + f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" ) def __describe_security_groups__(self, regional_client): @@ -100,7 +100,7 @@ class EC2: ) except Exception as error: logger.error( - f"{regional_client.region} -- {error.__class__.__name__}: {error}" + f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" ) def __describe_network_acls__(self, regional_client): @@ -120,7 +120,7 @@ class EC2: ) except Exception as error: logger.error( - f"{regional_client.region} -- {error.__class__.__name__}: {error}" + f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" ) def __describe_snapshots__(self, regional_client): @@ -143,7 +143,7 @@ class EC2: ) except Exception as error: logger.error( - f"{regional_client.region} -- {error.__class__.__name__}: {error}" + f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" ) def __get_snapshot_public__(self): @@ -159,7 +159,9 @@ class EC2: if permission["Group"] == "all": snapshot.public = True except Exception as error: - logger.error(f"{error.__class__.__name__}: {error}") + logger.error( + f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) def __describe_elastic_ips__(self, regional_client): logger.info("EC2 - Describing Security Groups...") @@ -181,7 +183,7 @@ class EC2: ) except Exception as error: logger.error( - f"{regional_client.region} -- {error.__class__.__name__}: {error}" + f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" ) diff --git a/providers/aws/services/iam/iam_service.py b/providers/aws/services/iam/iam_service.py index 0bbe80ac..b4d6959f 100644 --- a/providers/aws/services/iam/iam_service.py +++ b/providers/aws/services/iam/iam_service.py @@ -44,7 +44,9 @@ class IAM: try: get_roles_paginator = self.client.get_paginator("list_roles") except Exception as error: - logger.error(f"{self.region} -- {error.__class__.__name__}: {error}") + logger.error( + f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) else: roles = [] for page in get_roles_paginator.paginate(): @@ -59,7 +61,9 @@ class IAM: try: report_status = self.client.generate_credential_report() except Exception as error: - logger.error(f"{self.region} -- {error.__class__.__name__}: {error}") + logger.error( + f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) else: if report_status["State"] == "COMPLETE": report_is_completed = True @@ -75,7 +79,9 @@ class IAM: try: get_groups_paginator = self.client.get_paginator("list_groups") except Exception as error: - logger.error(f"{self.region} -- {error.__class__.__name__}: {error}") + logger.error( + f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) else: groups = [] for page in get_groups_paginator.paginate(): @@ -90,7 +96,9 @@ class IAM: "list_policies" ) except Exception as error: - logger.error(f"{self.region} -- {error.__class__.__name__}: {error}") + logger.error( + f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) else: customer_managed_policies = [] # Use --scope Local to list only Customer Managed Policies @@ -108,13 +116,17 @@ class IAM: ) policy["PolicyDocument"] = response["PolicyVersion"]["Document"] except Exception as error: - logger.error(f"{self.region} -- {error.__class__.__name__}: {error}") + logger.error( + f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) def __get_account_summary__(self): try: account_summary = self.client.get_account_summary() except Exception as error: - logger.error(f"{self.region} -- {error.__class__.__name__}: {error}") + logger.error( + f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) else: return account_summary @@ -135,7 +147,9 @@ class IAM: if "HardExpiry" in password_policy: hard_expiry = password_policy["HardExpiry"] except Exception as error: - logger.error(f"{self.region} -- {error.__class__.__name__}: {error}") + logger.error( + f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) # Password policy does not exist password_policy = None else: @@ -156,7 +170,9 @@ class IAM: try: get_users_paginator = self.client.get_paginator("list_users") except Exception as error: - logger.error(f"{self.region} -- {error.__class__.__name__}: {error}") + logger.error( + f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) else: users = [] for page in get_users_paginator.paginate(): @@ -178,7 +194,9 @@ class IAM: "list_virtual_mfa_devices" ) except Exception as error: - logger.error(f"{self.region} -- {error.__class__.__name__}: {error}") + logger.error( + f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) else: mfa_devices = [] for page in list_virtual_mfa_devices_paginator.paginate(): @@ -202,7 +220,9 @@ class IAM: group.attached_policies = attached_group_policies except Exception as error: - logger.error(f"{self.region} -- {error.__class__.__name__}: {error}") + logger.error( + f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) def __get_group_users__(self): try: @@ -225,7 +245,9 @@ class IAM: ) group.users = group_users except Exception as error: - logger.error(f"{self.region} -- {error.__class__.__name__}: {error}") + logger.error( + f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) def __list_mfa_devices__(self): try: @@ -243,7 +265,9 @@ class IAM: mfa_devices.append(MFADevice(mfa_serial_number, mfa_type)) user.mfa_devices = mfa_devices except Exception as error: - logger.error(f"{self.region} -- {error.__class__.__name__}: {error}") + logger.error( + f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) def __list_attached_user_policies__(self): try: @@ -261,7 +285,9 @@ class IAM: user.attached_policies = attached_user_policies except Exception as error: - logger.error(f"{self.region} -- {error.__class__.__name__}: {error}") + logger.error( + f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) def __list_inline_user_policies__(self): try: @@ -279,7 +305,9 @@ class IAM: user.inline_policies = inline_user_policies except Exception as error: - logger.error(f"{self.region} -- {error.__class__.__name__}: {error}") + logger.error( + f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) def __get_entities_attached_to_support_roles__(self): try: @@ -291,7 +319,9 @@ class IAM: PolicyArn=support_entry_policy_arn, EntityFilter="Role" )["PolicyRoles"] except Exception as error: - logger.error(f"{self.region} -- {error.__class__.__name__}: {error}") + logger.error( + f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) finally: return support_roles @@ -304,7 +334,9 @@ class IAM: for policy in page["Policies"]: policies.append(policy) except Exception as error: - logger.error(f"{self.region} -- {error.__class__.__name__}: {error}") + logger.error( + f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) finally: return policies @@ -318,21 +350,24 @@ class IAM: ) policies_version.append(policy_version["PolicyVersion"]["Document"]) except Exception as error: - logger.error(f"{self.region} -- {error.__class__.__name__}: {error}") + logger.error( + f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) finally: return policies_version - + def __list_saml_providers__(self): try: saml_providers = self.client.list_saml_providers()["SAMLProviderList"] except Exception as error: - logger.error(f"{self.region} -- {error.__class__.__name__}: {error}") + logger.error( + f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) finally: return saml_providers - @dataclass class MFADevice: serial_number: str diff --git a/providers/aws/services/s3/s3_service.py b/providers/aws/services/s3/s3_service.py index 56755128..7404a5d5 100644 --- a/providers/aws/services/s3/s3_service.py +++ b/providers/aws/services/s3/s3_service.py @@ -48,7 +48,9 @@ class S3: buckets.append(Bucket(bucket["Name"], bucket_region)) return buckets except Exception as error: - logger.error(f"{bucket_region} -- {error.__class__.__name__}: {error}") + logger.error( + f"{bucket_region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) def __get_bucket_versioning__(self, bucket): logger.info("S3 - Get buckets versioning...") @@ -61,7 +63,9 @@ class S3: if "Enabled" == bucket_versioning["Status"]: bucket.versioning = True except Exception as error: - logger.error(f"{bucket.region} -- {error.__class__.__name__}: {error}") + logger.error( + f"{bucket.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) def __get_bucket_logging__(self, bucket): logger.info("S3 - Get buckets logging...") @@ -72,7 +76,7 @@ class S3: bucket.logging = True except Exception as error: logger.error( - f"{regional_client.region} -- {error.__class__.__name__}: {error}" + f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" )