| title | Configuration File |
|---|
Several Prowler's checks have user configurable variables that can be modified in a common configuration file. This file can be found in the following path:
prowler/config/config.yaml
Additionally, you can input a custom configuration file using the --config-file argument.
The following list includes all the AWS checks with configurable variables that can be changed in the configuration yaml file:
| Check Name | Value | Type |
|---|---|---|
acm_certificates_expiration_check |
days_to_expire_threshold |
Integer |
appstream_fleet_maximum_session_duration |
max_session_duration_seconds |
Integer |
appstream_fleet_session_disconnect_timeout |
max_disconnect_timeout_in_seconds |
Integer |
appstream_fleet_session_idle_disconnect_timeout |
max_idle_disconnect_timeout_in_seconds |
Integer |
autoscaling_find_secrets_ec2_launch_configuration |
secrets_ignore_patterns |
List of Strings |
awslambda_function_no_secrets_in_code |
secrets_ignore_patterns |
List of Strings |
awslambda_function_no_secrets_in_variables |
secrets_ignore_patterns |
List of Strings |
awslambda_function_using_supported_runtimes |
obsolete_lambda_runtimes |
Integer |
awslambda_function_vpc_is_in_multi_azs |
lambda_min_azs |
Integer |
cloudformation_stack_outputs_find_secrets |
secrets_ignore_patterns |
List of Strings |
cloudtrail_threat_detection_enumeration |
threat_detection_enumeration_actions |
List of Strings |
cloudtrail_threat_detection_enumeration |
threat_detection_enumeration_entropy |
Integer |
cloudtrail_threat_detection_enumeration |
threat_detection_enumeration_minutes |
Integer |
cloudtrail_threat_detection_privilege_escalation |
threat_detection_privilege_escalation_actions |
List of Strings |
cloudtrail_threat_detection_privilege_escalation |
threat_detection_privilege_escalation_entropy |
Integer |
cloudtrail_threat_detection_privilege_escalation |
threat_detection_privilege_escalation_minutes |
Integer |
cloudwatch_log_group_no_secrets_in_logs |
secrets_ignore_patterns |
List of Strings |
cloudwatch_log_group_retention_policy_specific_days_enabled |
log_group_retention_days |
Integer |
codebuild_github_allowed_organizations |
github_allowed_organizations |
List of Strings |
codebuild_project_no_secrets_in_variables |
excluded_sensitive_environment_variables |
List of Strings |
codebuild_project_no_secrets_in_variables |
secrets_ignore_patterns |
List of Strings |
config_recorder_all_regions_enabled |
mute_non_default_regions |
Boolean |
drs_job_exist |
mute_non_default_regions |
Boolean |
ec2_elastic_ip_shodan |
shodan_api_key |
String |
ec2_instance_older_than_specific_days |
max_ec2_instance_age_in_days |
Integer |
ec2_instance_secrets_user_data |
secrets_ignore_patterns |
List of Strings |
ec2_launch_template_no_secrets |
secrets_ignore_patterns |
List of Strings |
ec2_securitygroup_allow_ingress_from_internet_to_any_port |
ec2_allowed_instance_owners |
List of Strings |
ec2_securitygroup_allow_ingress_from_internet_to_any_port |
ec2_allowed_interface_types |
List of Strings |
ec2_securitygroup_allow_ingress_from_internet_to_high_risk_tcp_ports |
ec2_high_risk_ports |
List of Integer |
ec2_securitygroup_with_many_ingress_egress_rules |
max_security_group_rules |
Integer |
ecs_task_definitions_no_environment_secrets |
secrets_ignore_patterns |
List of Strings |
ecr_repositories_scan_vulnerabilities_in_latest_image |
ecr_repository_vulnerability_minimum_severity |
String |
eks_cluster_uses_a_supported_version |
eks_cluster_oldest_version_supported |
String |
eks_control_plane_logging_all_types_enabled |
eks_required_log_types |
List of Strings |
elasticache_redis_cluster_backup_enabled |
minimum_snapshot_retention_period |
Integer |
elb_is_in_multiple_az |
elb_min_azs |
Integer |
elbv2_is_in_multiple_az |
elbv2_min_azs |
Integer |
acmpca_certificate_authority_pqc_key_algorithm |
acmpca_pqc_key_algorithms |
List of Strings |
guardduty_is_enabled |
mute_non_default_regions |
Boolean |
iam_user_access_not_stale_to_sagemaker |
max_unused_sagemaker_access_days |
Integer |
iam_user_accesskey_unused |
max_unused_access_keys_days |
Integer |
iam_user_console_access_unused |
max_console_access_days |
Integer |
organizations_delegated_administrators |
organizations_trusted_delegated_administrators |
List of Strings |
organizations_scp_check_deny_regions |
organizations_enabled_regions |
List of Strings |
rds_instance_backup_enabled |
check_rds_instance_replicas |
Boolean |
securityhub_enabled |
mute_non_default_regions |
Boolean |
secretsmanager_secret_unused |
max_days_secret_unused |
Integer |
secretsmanager_secret_rotated_periodically |
max_days_secret_unrotated |
Integer |
ssm_document_secrets |
secrets_ignore_patterns |
List of Strings |
trustedadvisor_premium_support_plan_subscribed |
verify_premium_support_plans |
Boolean |
dynamodb_table_cross_account_access |
trusted_account_ids |
List of Strings |
eventbridge_bus_cross_account_access |
trusted_account_ids |
List of Strings |
eventbridge_schema_registry_cross_account_access |
trusted_account_ids |
List of Strings |
s3_bucket_cross_account_access |
trusted_account_ids |
List of Strings |
ssm_documents_set_as_public |
trusted_account_ids |
List of Strings |
vpc_endpoint_connections_trust_boundaries |
trusted_account_ids |
List of Strings |
vpc_endpoint_services_allowed_principals_trust_boundaries |
trusted_account_ids |
List of Strings |
opensearch_service_domains_not_publicly_accessible |
trusted_ips |
List of Strings |
The following list includes all the Azure checks with configurable variables that can be changed in the configuration yaml file:
| Check Name | Value | Type |
|---|---|---|
network_public_ip_shodan |
shodan_api_key |
String |
app_ensure_php_version_is_latest |
php_latest_version |
String |
app_ensure_python_version_is_latest |
python_latest_version |
String |
app_ensure_java_version_is_latest |
java_latest_version |
String |
sqlserver_recommended_minimal_tls_version |
recommended_minimal_tls_versions |
List of Strings |
vm_sufficient_daily_backup_retention_period |
vm_backup_min_daily_retention_days |
Integer |
vm_desired_sku_size |
desired_vm_sku_sizes |
List of Strings |
defender_attack_path_notifications_properly_configured |
defender_attack_path_minimal_risk_level |
String |
apim_threat_detection_llm_jacking |
apim_threat_detection_llm_jacking_threshold |
Float |
apim_threat_detection_llm_jacking |
apim_threat_detection_llm_jacking_minutes |
Integer |
apim_threat_detection_llm_jacking |
apim_threat_detection_llm_jacking_actions |
List of Strings |
The following list includes all the GCP checks with configurable variables that can be changed in the configuration yaml file:
| Check Name | Value | Type |
|---|---|---|
compute_configuration_changes |
compute_audit_log_lookback_days |
Integer |
compute_instance_group_multiple_zones |
mig_min_zones |
Integer |
The following list includes all the Kubernetes checks with configurable variables that can be changed in the configuration yaml file:
| Check Name | Value | Type |
|---|---|---|
audit_log_maxbackup |
audit_log_maxbackup |
String |
audit_log_maxsize |
audit_log_maxsize |
String |
audit_log_maxage |
audit_log_maxage |
String |
apiserver_strong_ciphers |
apiserver_strong_ciphers |
String |
kubelet_strong_ciphers_only |
kubelet_strong_ciphers |
String |
The following list includes all the Microsoft 365 checks with configurable variables that can be changed in the configuration yaml file:
| Check Name | Value | Type |
|---|---|---|
entra_admin_users_sign_in_frequency_enabled |
sign_in_frequency |
Integer |
teams_external_file_sharing_restricted |
allowed_cloud_storage_services |
List of Strings |
exchange_organization_mailtips_enabled |
recommended_mailtips_large_audience_threshold |
Integer |
The following list includes all the GitHub checks with configurable variables that can be changed in the configuration yaml file:
| Check Name | Value | Type |
|---|---|---|
repository_inactive_not_archived |
inactive_not_archived_days_threshold |
Integer |
The following list includes all the Vercel checks with configurable variables that can be changed in the configuration YAML file:
| Check Name | Value | Type |
|---|---|---|
authentication_no_stale_tokens |
stale_token_threshold_days |
Integer |
authentication_token_not_expired |
days_to_expire_threshold |
Integer |
deployment_production_uses_stable_target |
stable_branches |
List of Strings |
domain_ssl_certificate_valid |
days_to_expire_threshold |
Integer |
project_environment_no_secrets_in_plain_type |
secret_suffixes |
List of Strings |
team_member_role_least_privilege |
max_owner_percentage |
Integer |
team_member_role_least_privilege |
max_owners |
Integer |
team_no_stale_invitations |
stale_invitation_threshold_days |
Integer |
The following list includes all the Okta checks with configurable variables that can be changed in the configuration YAML file:
| Check Name | Value | Type |
|---|---|---|
signon_global_session_idle_timeout_15min |
okta_max_session_idle_minutes |
Integer |
# AWS IAM Configuration
max_unused_access_keys_days: 45
max_console_access_days: 45
max_unused_sagemaker_access_days: 90
# AWS EC2 Configuration
shodan_api_key: null
max_security_group_rules: 50
max_ec2_instance_age_in_days: 180
ec2_allowed_interface_types: [ "api_gateway_managed", "vpc_endpoint", ]
ec2_allowed_instance_owners: [ "amazon-elb" ]
ec2_high_risk_ports: [ 25, 110, 135, 143, 445, 3000, 4333, 5000, 5500, 8080, 8088, ]
AWS VPC Configuration (vpc_endpoint_connections_trust_boundaries, vpc_endpoint_services_allowed_principals_trust_boundaries)
AWS EventBridge Configuration (eventbridge_schema_registry_cross_account_access, eventbridge_bus_cross_account_access)
Single account environment: No action required. The AWS account number will be automatically added by the checks.
Multi account environment: Any additional trusted account number should be added as a space separated list, e.g.
trusted_account_ids: []
# AWS Cloudwatch Configuration
log_group_retention_days: 365
max_idle_disconnect_timeout_in_seconds: 600 # 10 Minutes
max_disconnect_timeout_in_seconds: 300 # 5 Minutes
max_session_duration_seconds: 36000 # 10 Hours
# AWS Lambda Configuration
obsolete_lambda_runtimes: [ "java8", "go1.x", "provided", "python3.6", "python2.7", "python3.7", "nodejs4.3", "nodejs4.3-edge", "nodejs6.10", "nodejs", "nodejs8.10", "nodejs10.x", "nodejs12.x", "nodejs14.x", "dotnet5.0", "dotnetcore1.0", "dotnetcore2.0", "dotnetcore2.1", "dotnetcore3.1", "ruby2.5", "ruby2.7", ]
# AWS Organizations
organizations_enabled_regions: [] organizations_trusted_delegated_administrators: []
ecr_repository_vulnerability_minimum_severity: "MEDIUM"
verify_premium_support_plans: True
threat_detection_privilege_escalation_threshold: 0.2 # Percentage of actions found to decide if it is an privilege_escalation attack event, by default is 0.2 (20%) threat_detection_privilege_escalation_minutes: 1440 # Past minutes to search from now for privilege_escalation attacks, by default is 1440 minutes (24 hours) threat_detection_privilege_escalation_actions: [ "AddPermission", "AddRoleToInstanceProfile", "AddUserToGroup", "AssociateAccessPolicy", "AssumeRole", "AttachGroupPolicy", "AttachRolePolicy", "AttachUserPolicy", "ChangePassword", "CreateAccessEntry", "CreateAccessKey", "CreateDevEndpoint", "CreateEventSourceMapping", "CreateFunction", "CreateGroup", "CreateJob", "CreateKeyPair", "CreateLoginProfile", "CreatePipeline", "CreatePolicyVersion", "CreateRole", "CreateStack", "DeleteRolePermissionsBoundary", "DeleteRolePolicy", "DeleteUserPermissionsBoundary", "DeleteUserPolicy", "DetachRolePolicy", "DetachUserPolicy", "GetCredentialsForIdentity", "GetId", "GetPolicyVersion", "GetUserPolicy", "Invoke", "ModifyInstanceAttribute", "PassRole", "PutGroupPolicy", "PutPipelineDefinition", "PutRolePermissionsBoundary", "PutRolePolicy", "PutUserPermissionsBoundary", "PutUserPolicy", "ReplaceIamInstanceProfileAssociation", "RunInstances", "SetDefaultPolicyVersion", "UpdateAccessKey", "UpdateAssumeRolePolicy", "UpdateDevEndpoint", "UpdateEventSourceMapping", "UpdateFunctionCode", "UpdateJob", "UpdateLoginProfile", ]
threat_detection_enumeration_threshold: 0.3 # Percentage of actions found to decide if it is an enumeration attack event, by default is 0.3 (30%) threat_detection_enumeration_minutes: 1440 # Past minutes to search from now for enumeration attacks, by default is 1440 minutes (24 hours) threat_detection_enumeration_actions: [ "DescribeAccessEntry", "DescribeAccountAttributes", "DescribeAvailabilityZones", "DescribeBundleTasks", "DescribeCarrierGateways", "DescribeClientVpnRoutes", "DescribeCluster", "DescribeDhcpOptions", "DescribeFlowLogs", "DescribeImages", "DescribeInstanceAttribute", "DescribeInstanceInformation", "DescribeInstanceTypes", "DescribeInstances", "DescribeInstances", "DescribeKeyPairs", "DescribeLogGroups", "DescribeLogStreams", "DescribeOrganization", "DescribeRegions", "DescribeSecurityGroups", "DescribeSnapshotAttribute", "DescribeSnapshotTierStatus", "DescribeSubscriptionFilters", "DescribeTransitGatewayMulticastDomains", "DescribeVolumes", "DescribeVolumesModifications", "DescribeVpcEndpointConnectionNotifications", "DescribeVpcs", "GetAccount", "GetAccountAuthorizationDetails", "GetAccountSendingEnabled", "GetBucketAcl", "GetBucketLogging", "GetBucketPolicy", "GetBucketReplication", "GetBucketVersioning", "GetCallerIdentity", "GetCertificate", "GetConsoleScreenshot", "GetCostAndUsage", "GetDetector", "GetEbsDefaultKmsKeyId", "GetEbsEncryptionByDefault", "GetFindings", "GetFlowLogsIntegrationTemplate", "GetIdentityVerificationAttributes", "GetInstances", "GetIntrospectionSchema", "GetLaunchTemplateData", "GetLaunchTemplateData", "GetLogRecord", "GetParameters", "GetPolicyVersion", "GetPublicAccessBlock", "GetQueryResults", "GetRegions", "GetSMSAttributes", "GetSMSSandboxAccountStatus", "GetSendQuota", "GetTransitGatewayRouteTableAssociations", "GetUserPolicy", "HeadObject", "ListAccessKeys", "ListAccounts", "ListAllMyBuckets", "ListAssociatedAccessPolicies", "ListAttachedUserPolicies", "ListClusters", "ListDetectors", "ListDomains", "ListFindings", "ListHostedZones", "ListIPSets", "ListIdentities", "ListInstanceProfiles", "ListObjects", "ListOrganizationalUnitsForParent", "ListOriginationNumbers", "ListPolicyVersions", "ListRoles", "ListRoles", "ListRules", "ListServiceQuotas", "ListSubscriptions", "ListTargetsByRule", "ListTopics", "ListUsers", "LookupEvents", "Search", ]
threat_detection_llm_jacking_threshold: 0.4 # Percentage of actions found to decide if it is an LLM Jacking attack event, by default is 0.4 (40%) threat_detection_llm_jacking_minutes: 1440 # Past minutes to search from now for LLM Jacking attacks, by default is 1440 minutes (24 hours) threat_detection_llm_jacking_actions: [ "PutUseCaseForModelAccess", # Submits a use case for model access, providing justification (Write). "PutFoundationModelEntitlement", # Grants entitlement for accessing a foundation model (Write). "PutModelInvocationLoggingConfiguration", # Configures logging for model invocations (Write). "CreateFoundationModelAgreement", # Creates a new agreement to use a foundation model (Write). "InvokeModel", # Invokes a specified Bedrock model for inference using provided prompt and parameters (Read). "InvokeModelWithResponseStream", # Invokes a Bedrock model for inference with real-time token streaming (Read). "GetUseCaseForModelAccess", # Retrieves an existing use case for model access (Read). "GetModelInvocationLoggingConfiguration", # Fetches the logging configuration for model invocations (Read). "GetFoundationModelAvailability", # Checks the availability of a foundation model for use (Read). "ListFoundationModelAgreementOffers", # Lists available agreement offers for accessing foundation models (List). "ListFoundationModels", # Lists the available foundation models in Bedrock (List). "ListProvisionedModelThroughputs", # Lists the provisioned throughput for previously created models (List). ]
check_rds_instance_replicas: False
days_to_expire_threshold: 7
eks_required_log_types: [ "api", "audit", "authenticator", "controllerManager", "scheduler", ]
eks_cluster_oldest_version_supported: "1.28"
excluded_sensitive_environment_variables: [
]
azure:
shodan_api_key: null
php_latest_version: "8.2"
python_latest_version: "3.12"
java_latest_version: "17"
recommended_minimal_tls_versions: [ "1.2", "1.3" ]
desired_vm_sku_sizes: [ "Standard_A8_v2", "Standard_DS3_v2", "Standard_D4s_v3", ]
vm_backup_min_daily_retention_days: 7
apim_threat_detection_llm_jacking_threshold: 0.1 apim_threat_detection_llm_jacking_minutes: 1440 apim_threat_detection_llm_jacking_actions: [ # OpenAI API endpoints "ImageGenerations_Create", "ChatCompletions_Create", "Completions_Create", "Embeddings_Create", "FineTuning_Jobs_Create", "Models_List",
# Azure OpenAI endpoints
"Deployments_List",
"Deployments_Get",
"Deployments_Create",
"Deployments_Delete",
# Anthropic endpoints
"Messages_Create",
"Claude_Create",
# Google AI endpoints
"GenerateContent",
"GenerateText",
"GenerateImage",
# Meta AI endpoints
"Llama_Create",
"CodeLlama_Create",
# Other LLM endpoints
"Gemini_Generate",
"Claude_Generate",
"Llama_Generate"
]
gcp:
shodan_api_key: null
compute_audit_log_lookback_days: 1
mig_min_zones: 2
kubernetes:
audit_log_maxbackup: 10
audit_log_maxsize: 100
audit_log_maxage: 30
apiserver_strong_ciphers: [ "TLS_AES_128_GCM_SHA256", "TLS_AES_256_GCM_SHA384", "TLS_CHACHA20_POLY1305_SHA256", ]
kubelet_strong_ciphers: [ "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305", "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "TLS_RSA_WITH_AES_256_GCM_SHA384", "TLS_RSA_WITH_AES_128_GCM_SHA256", ]
m365:
sign_in_frequency: 4 # 4 hours
allowed_cloud_storage_services: [ #"allow_box", #"allow_drop_box", #"allow_egnyte", #"allow_google_drive", #"allow_share_file", ]
recommended_mailtips_large_audience_threshold: 25 # maximum number of recipients
github:
inactive_not_archived_days_threshold: 180
vercel:
stable_branches: - "main" - "master"
days_to_expire_threshold: 7
stale_token_threshold_days: 90
stale_invitation_threshold_days: 30
max_owner_percentage: 20 max_owners: 3
secret_suffixes: - "_KEY" - "_SECRET" - "_TOKEN" - "_PASSWORD" - "_API_KEY" - "_PRIVATE_KEY"