feat(line_no): Add line number to errors (#1422)

This commit is contained in:
Sergio Garcia
2022-10-20 14:32:35 +02:00
committed by GitHub
parent 44ce95979b
commit 5c78e6b171
5 changed files with 75 additions and 31 deletions

View File

@@ -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:

View File

@@ -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

View File

@@ -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}"
)

View File

@@ -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

View File

@@ -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}"
)