From 1a11f5777a808b2feba98783f275ec9458c3b793 Mon Sep 17 00:00:00 2001 From: Pepe Fagoaga Date: Wed, 23 Nov 2022 17:53:49 +0100 Subject: [PATCH] fix(compliance): List Compliance Requirements (#1514) --- lib/check/check.py | 21 ++++++++++++++++----- prowler | 5 ++++- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/lib/check/check.py b/lib/check/check.py index 2a3308a3..76ee2dd8 100644 --- a/lib/check/check.py +++ b/lib/check/check.py @@ -128,7 +128,9 @@ def print_services(service_list: set): print(f"- {service}") -def print_compliance_frameworks(bulk_compliance_frameworks: dict): +def print_compliance_frameworks( + bulk_compliance_frameworks: dict, +): print( f"There are {Fore.YELLOW}{len(bulk_compliance_frameworks.keys())}{Style.RESET_ALL} available Compliance Frameworks: \n" ) @@ -136,10 +138,19 @@ def print_compliance_frameworks(bulk_compliance_frameworks: dict): print(f"\t- {Fore.YELLOW}{framework}{Style.RESET_ALL}") -def print_compliance_requirements(bulk_compliance_frameworks: dict): - if bulk_compliance_frameworks and "ens_rd2022_aws" in bulk_compliance_frameworks: - print("Listing ENS RD2022 AWS Compliance Requirements:\n") - for compliance in bulk_compliance_frameworks.values(): +def print_compliance_requirements( + bulk_compliance_frameworks: dict, compliance_framework: str +): + for compliance in bulk_compliance_frameworks.values(): + # Workaround until we have more Compliance Frameworks + split_compliance = compliance_framework.split("_") + framework = split_compliance[0].upper() + version = split_compliance[1].upper() + provider = split_compliance[2].upper() + if compliance.Framework == framework and compliance.Version == version: + print( + f"Listing {framework} {version} {provider} Compliance Requirements:\n" + ) for requirement in compliance.Requirements: checks = "" for check in requirement.Checks: diff --git a/prowler b/prowler index f304a17c..cedfde03 100755 --- a/prowler +++ b/prowler @@ -94,6 +94,7 @@ if __name__ == "__main__": "--list-compliance-requirements", nargs="?", help="List compliance requirements for a given requirement", + choices=["ens_rd2022_aws"], ) parser.add_argument( "-b", "--no-banner", action="store_false", help="Hide Prowler banner" @@ -294,7 +295,9 @@ if __name__ == "__main__": print_compliance_frameworks(bulk_compliance_frameworks) sys.exit() if args.list_compliance_requirements: - print_compliance_requirements(bulk_compliance_frameworks) + print_compliance_requirements( + bulk_compliance_frameworks, args.list_compliance_requirements + ) sys.exit() # Load checks to execute