prowler-cloud 5.12.3__py3-none-any.whl → 5.13.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (528) hide show
  1. dashboard/assets/markdown-styles.css +34 -0
  2. dashboard/compliance/c5_aws.py +43 -0
  3. dashboard/compliance/ccc_aws.py +36 -0
  4. dashboard/compliance/ccc_azure.py +36 -0
  5. dashboard/compliance/ccc_gcp.py +36 -0
  6. dashboard/compliance/cis_3_0_oci.py +41 -0
  7. dashboard/pages/overview.py +66 -16
  8. prowler/CHANGELOG.md +60 -0
  9. prowler/__main__.py +128 -14
  10. prowler/compliance/aws/aws_account_security_onboarding_aws.json +1 -0
  11. prowler/compliance/aws/aws_audit_manager_control_tower_guardrails_aws.json +1 -0
  12. prowler/compliance/aws/aws_foundational_security_best_practices_aws.json +2 -1
  13. prowler/compliance/aws/aws_foundational_technical_review_aws.json +1 -0
  14. prowler/compliance/aws/aws_well_architected_framework_reliability_pillar_aws.json +1 -0
  15. prowler/compliance/aws/aws_well_architected_framework_security_pillar_aws.json +1 -0
  16. prowler/compliance/aws/c5_aws.json +10744 -0
  17. prowler/compliance/aws/ccc_aws.json +6206 -0
  18. prowler/compliance/aws/cis_1.4_aws.json +1 -0
  19. prowler/compliance/aws/cis_1.5_aws.json +1 -0
  20. prowler/compliance/aws/cis_2.0_aws.json +1 -0
  21. prowler/compliance/aws/cis_3.0_aws.json +1 -0
  22. prowler/compliance/aws/cis_4.0_aws.json +1 -0
  23. prowler/compliance/aws/cis_5.0_aws.json +1 -0
  24. prowler/compliance/aws/cisa_aws.json +1 -0
  25. prowler/compliance/aws/ens_rd2022_aws.json +1 -0
  26. prowler/compliance/aws/fedramp_low_revision_4_aws.json +1 -0
  27. prowler/compliance/aws/fedramp_moderate_revision_4_aws.json +1 -0
  28. prowler/compliance/aws/ffiec_aws.json +1 -0
  29. prowler/compliance/aws/gdpr_aws.json +1 -0
  30. prowler/compliance/aws/gxp_21_cfr_part_11_aws.json +1 -0
  31. prowler/compliance/aws/gxp_eu_annex_11_aws.json +1 -0
  32. prowler/compliance/aws/hipaa_aws.json +1 -0
  33. prowler/compliance/aws/iso27001_2013_aws.json +1 -0
  34. prowler/compliance/aws/iso27001_2022_aws.json +1 -0
  35. prowler/compliance/aws/kisa_isms_p_2023_aws.json +1 -0
  36. prowler/compliance/aws/kisa_isms_p_2023_korean_aws.json +1 -0
  37. prowler/compliance/aws/mitre_attack_aws.json +287 -11
  38. prowler/compliance/aws/nis2_aws.json +1 -0
  39. prowler/compliance/aws/nist_800_171_revision_2_aws.json +1 -0
  40. prowler/compliance/aws/nist_800_53_revision_4_aws.json +1 -0
  41. prowler/compliance/aws/nist_800_53_revision_5_aws.json +1 -0
  42. prowler/compliance/aws/nist_csf_1.1_aws.json +1 -0
  43. prowler/compliance/aws/pci_3.2.1_aws.json +2 -1
  44. prowler/compliance/aws/pci_4.0_aws.json +1 -0
  45. prowler/compliance/aws/prowler_threatscore_aws.json +1 -0
  46. prowler/compliance/aws/rbi_cyber_security_framework_aws.json +1 -0
  47. prowler/compliance/aws/soc2_aws.json +1 -0
  48. prowler/compliance/azure/ccc_azure.json +6147 -0
  49. prowler/compliance/azure/cis_2.0_azure.json +1 -0
  50. prowler/compliance/azure/cis_2.1_azure.json +1 -0
  51. prowler/compliance/azure/cis_3.0_azure.json +1 -0
  52. prowler/compliance/azure/cis_4.0_azure.json +1 -0
  53. prowler/compliance/azure/ens_rd2022_azure.json +1 -0
  54. prowler/compliance/azure/iso27001_2022_azure.json +1 -0
  55. prowler/compliance/azure/mitre_attack_azure.json +131 -5
  56. prowler/compliance/azure/nis2_azure.json +1 -0
  57. prowler/compliance/azure/pci_4.0_azure.json +1 -0
  58. prowler/compliance/azure/prowler_threatscore_azure.json +1 -0
  59. prowler/compliance/azure/soc2_azure.json +1 -0
  60. prowler/compliance/gcp/ccc_gcp.json +6077 -0
  61. prowler/compliance/gcp/cis_2.0_gcp.json +1 -0
  62. prowler/compliance/gcp/cis_3.0_gcp.json +1 -0
  63. prowler/compliance/gcp/cis_4.0_gcp.json +1 -0
  64. prowler/compliance/gcp/ens_rd2022_gcp.json +1 -0
  65. prowler/compliance/gcp/iso27001_2022_gcp.json +1 -0
  66. prowler/compliance/gcp/mitre_attack_gcp.json +287 -11
  67. prowler/compliance/gcp/nis2_gcp.json +1 -0
  68. prowler/compliance/gcp/pci_4.0_gcp.json +1 -0
  69. prowler/compliance/gcp/prowler_threatscore_gcp.json +1 -0
  70. prowler/compliance/gcp/soc2_gcp.json +1 -0
  71. prowler/compliance/github/cis_1.0_github.json +1 -0
  72. prowler/compliance/kubernetes/cis_1.10_kubernetes.json +1 -0
  73. prowler/compliance/kubernetes/cis_1.11_kubernetes.json +1 -0
  74. prowler/compliance/kubernetes/cis_1.8_kubernetes.json +1 -0
  75. prowler/compliance/kubernetes/iso27001_2022_kubernetes.json +1 -0
  76. prowler/compliance/kubernetes/pci_4.0_kubernetes.json +1 -0
  77. prowler/compliance/llm/__init__.py +0 -0
  78. prowler/compliance/m365/cis_4.0_m365.json +1 -0
  79. prowler/compliance/m365/iso27001_2022_m365.json +1 -0
  80. prowler/compliance/m365/prowler_threatscore_m365.json +1 -0
  81. prowler/compliance/nhn/iso27001_2022_nhn.json +1 -0
  82. prowler/compliance/oci/__init__.py +0 -0
  83. prowler/compliance/oci/cis_3.0_oci.json +1141 -0
  84. prowler/config/config.py +5 -1
  85. prowler/config/llm_config.yaml +175015 -0
  86. prowler/config/oraclecloud_mutelist_example.yaml +61 -0
  87. prowler/lib/check/check.py +9 -1
  88. prowler/lib/check/compliance.py +1 -0
  89. prowler/lib/check/compliance_models.py +33 -3
  90. prowler/lib/check/models.py +96 -8
  91. prowler/lib/check/utils.py +8 -2
  92. prowler/lib/cli/parser.py +6 -4
  93. prowler/lib/outputs/compliance/aws_well_architected/aws_well_architected.py +4 -0
  94. prowler/lib/outputs/compliance/aws_well_architected/models.py +2 -0
  95. prowler/lib/outputs/compliance/c5/__init__.py +0 -0
  96. prowler/lib/outputs/compliance/c5/c5.py +98 -0
  97. prowler/lib/outputs/compliance/c5/c5_aws.py +92 -0
  98. prowler/lib/outputs/compliance/c5/models.py +30 -0
  99. prowler/lib/outputs/compliance/ccc/__init__.py +0 -0
  100. prowler/lib/outputs/compliance/ccc/ccc_aws.py +95 -0
  101. prowler/lib/outputs/compliance/ccc/ccc_azure.py +95 -0
  102. prowler/lib/outputs/compliance/ccc/ccc_gcp.py +95 -0
  103. prowler/lib/outputs/compliance/ccc/models.py +90 -0
  104. prowler/lib/outputs/compliance/cis/cis_aws.py +4 -0
  105. prowler/lib/outputs/compliance/cis/cis_azure.py +4 -0
  106. prowler/lib/outputs/compliance/cis/cis_gcp.py +4 -0
  107. prowler/lib/outputs/compliance/cis/cis_github.py +4 -0
  108. prowler/lib/outputs/compliance/cis/cis_kubernetes.py +4 -0
  109. prowler/lib/outputs/compliance/cis/cis_m365.py +4 -0
  110. prowler/lib/outputs/compliance/cis/cis_oci.py +106 -0
  111. prowler/lib/outputs/compliance/cis/models.py +56 -0
  112. prowler/lib/outputs/compliance/compliance.py +10 -0
  113. prowler/lib/outputs/compliance/compliance_output.py +4 -1
  114. prowler/lib/outputs/compliance/ens/ens_aws.py +4 -0
  115. prowler/lib/outputs/compliance/ens/ens_azure.py +4 -0
  116. prowler/lib/outputs/compliance/ens/ens_gcp.py +4 -0
  117. prowler/lib/outputs/compliance/ens/models.py +6 -0
  118. prowler/lib/outputs/compliance/generic/generic.py +4 -0
  119. prowler/lib/outputs/compliance/generic/models.py +2 -0
  120. prowler/lib/outputs/compliance/iso27001/iso27001_aws.py +4 -0
  121. prowler/lib/outputs/compliance/iso27001/iso27001_azure.py +4 -0
  122. prowler/lib/outputs/compliance/iso27001/iso27001_gcp.py +4 -0
  123. prowler/lib/outputs/compliance/iso27001/iso27001_kubernetes.py +4 -0
  124. prowler/lib/outputs/compliance/iso27001/iso27001_m365.py +4 -0
  125. prowler/lib/outputs/compliance/iso27001/iso27001_nhn.py +4 -0
  126. prowler/lib/outputs/compliance/iso27001/models.py +12 -0
  127. prowler/lib/outputs/compliance/kisa_ismsp/kisa_ismsp_aws.py +4 -0
  128. prowler/lib/outputs/compliance/kisa_ismsp/models.py +2 -0
  129. prowler/lib/outputs/compliance/mitre_attack/mitre_attack_aws.py +4 -0
  130. prowler/lib/outputs/compliance/mitre_attack/mitre_attack_azure.py +4 -0
  131. prowler/lib/outputs/compliance/mitre_attack/mitre_attack_gcp.py +4 -0
  132. prowler/lib/outputs/compliance/mitre_attack/models.py +6 -0
  133. prowler/lib/outputs/compliance/prowler_threatscore/models.py +8 -0
  134. prowler/lib/outputs/compliance/prowler_threatscore/prowler_threatscore.py +46 -4
  135. prowler/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_aws.py +4 -0
  136. prowler/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_azure.py +4 -0
  137. prowler/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_gcp.py +4 -0
  138. prowler/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_m365.py +4 -0
  139. prowler/lib/outputs/csv/csv.py +3 -0
  140. prowler/lib/outputs/finding.py +22 -0
  141. prowler/lib/outputs/html/html.py +192 -7
  142. prowler/lib/outputs/jira/jira.py +284 -47
  143. prowler/lib/outputs/ocsf/ocsf.py +1 -4
  144. prowler/lib/outputs/outputs.py +6 -0
  145. prowler/lib/outputs/summary_table.py +10 -0
  146. prowler/providers/aws/aws_regions_by_service.json +221 -44
  147. prowler/providers/aws/lib/quick_inventory/quick_inventory.py +3 -0
  148. prowler/providers/aws/lib/security_hub/security_hub.py +12 -2
  149. prowler/providers/aws/services/accessanalyzer/accessanalyzer_enabled/accessanalyzer_enabled.metadata.json +27 -13
  150. prowler/providers/aws/services/accessanalyzer/accessanalyzer_enabled_without_findings/accessanalyzer_enabled_without_findings.metadata.json +32 -13
  151. prowler/providers/aws/services/account/account_maintain_current_contact_details/account_maintain_current_contact_details.metadata.json +23 -11
  152. prowler/providers/aws/services/account/account_maintain_different_contact_details_to_security_billing_and_operations/account_maintain_different_contact_details_to_security_billing_and_operations.metadata.json +24 -12
  153. prowler/providers/aws/services/account/account_security_contact_information_is_registered/account_security_contact_information_is_registered.metadata.json +19 -11
  154. prowler/providers/aws/services/account/account_security_questions_are_registered_in_the_aws_account/account_security_questions_are_registered_in_the_aws_account.metadata.json +14 -10
  155. prowler/providers/aws/services/acm/acm_certificates_expiration_check/acm_certificates_expiration_check.metadata.json +17 -9
  156. prowler/providers/aws/services/acm/acm_certificates_transparency_logs_enabled/acm_certificates_transparency_logs_enabled.metadata.json +16 -12
  157. prowler/providers/aws/services/acm/acm_certificates_with_secure_key_algorithms/acm_certificates_with_secure_key_algorithms.metadata.json +21 -12
  158. prowler/providers/aws/services/apigateway/apigateway_restapi_authorizers_enabled/apigateway_restapi_authorizers_enabled.metadata.json +23 -16
  159. prowler/providers/aws/services/apigateway/apigateway_restapi_cache_encrypted/apigateway_restapi_cache_encrypted.metadata.json +22 -12
  160. prowler/providers/aws/services/apigateway/apigateway_restapi_client_certificate_enabled/apigateway_restapi_client_certificate_enabled.metadata.json +26 -18
  161. prowler/providers/aws/services/apigateway/apigateway_restapi_logging_enabled/apigateway_restapi_logging_enabled.metadata.json +30 -19
  162. prowler/providers/aws/services/apigateway/apigateway_restapi_public/apigateway_restapi_public.metadata.json +24 -16
  163. prowler/providers/aws/services/apigateway/apigateway_restapi_public_with_authorizer/apigateway_restapi_public_with_authorizer.metadata.json +31 -18
  164. prowler/providers/aws/services/apigateway/apigateway_restapi_tracing_enabled/apigateway_restapi_tracing_enabled.metadata.json +20 -12
  165. prowler/providers/aws/services/apigateway/apigateway_restapi_waf_acl_attached/apigateway_restapi_waf_acl_attached.metadata.json +24 -18
  166. prowler/providers/aws/services/apigatewayv2/apigatewayv2_api_access_logging_enabled/apigatewayv2_api_access_logging_enabled.metadata.json +18 -12
  167. prowler/providers/aws/services/apigatewayv2/apigatewayv2_api_authorizers_enabled/apigatewayv2_api_authorizers_enabled.metadata.json +21 -12
  168. prowler/providers/aws/services/appstream/appstream_fleet_default_internet_access_disabled/appstream_fleet_default_internet_access_disabled.metadata.json +23 -15
  169. prowler/providers/aws/services/appstream/appstream_fleet_maximum_session_duration/appstream_fleet_maximum_session_duration.metadata.json +15 -12
  170. prowler/providers/aws/services/appstream/appstream_fleet_session_disconnect_timeout/appstream_fleet_session_disconnect_timeout.metadata.json +17 -14
  171. prowler/providers/aws/services/appstream/appstream_fleet_session_idle_disconnect_timeout/appstream_fleet_session_idle_disconnect_timeout.metadata.json +20 -15
  172. prowler/providers/aws/services/appsync/appsync_field_level_logging_enabled/appsync_field_level_logging_enabled.metadata.json +21 -12
  173. prowler/providers/aws/services/appsync/appsync_graphql_api_no_api_key_authentication/appsync_graphql_api_no_api_key_authentication.metadata.json +20 -13
  174. prowler/providers/aws/services/athena/athena_workgroup_encryption/athena_workgroup_encryption.metadata.json +24 -12
  175. prowler/providers/aws/services/athena/athena_workgroup_enforce_configuration/athena_workgroup_enforce_configuration.metadata.json +20 -13
  176. prowler/providers/aws/services/athena/athena_workgroup_logging_enabled/athena_workgroup_logging_enabled.metadata.json +21 -12
  177. prowler/providers/aws/services/autoscaling/autoscaling_find_secrets_ec2_launch_configuration/autoscaling_find_secrets_ec2_launch_configuration.metadata.json +15 -10
  178. prowler/providers/aws/services/autoscaling/autoscaling_group_capacity_rebalance_enabled/autoscaling_group_capacity_rebalance_enabled.metadata.json +20 -13
  179. prowler/providers/aws/services/autoscaling/autoscaling_group_elb_health_check_enabled/autoscaling_group_elb_health_check_enabled.metadata.json +20 -12
  180. prowler/providers/aws/services/autoscaling/autoscaling_group_launch_configuration_no_public_ip/autoscaling_group_launch_configuration_no_public_ip.metadata.json +20 -13
  181. prowler/providers/aws/services/autoscaling/autoscaling_group_launch_configuration_requires_imdsv2/autoscaling_group_launch_configuration_requires_imdsv2.metadata.json +26 -14
  182. prowler/providers/aws/services/autoscaling/autoscaling_group_multiple_az/autoscaling_group_multiple_az.metadata.json +22 -13
  183. prowler/providers/aws/services/autoscaling/autoscaling_group_multiple_instance_types/autoscaling_group_multiple_instance_types.metadata.json +21 -13
  184. prowler/providers/aws/services/autoscaling/autoscaling_group_using_ec2_launch_template/autoscaling_group_using_ec2_launch_template.metadata.json +19 -12
  185. prowler/providers/aws/services/autoscaling/autoscaling_service.py +1 -1
  186. prowler/providers/aws/services/awslambda/awslambda_function_inside_vpc/awslambda_function_inside_vpc.metadata.json +26 -13
  187. prowler/providers/aws/services/awslambda/awslambda_function_invoke_api_operations_cloudtrail_logging_enabled/awslambda_function_invoke_api_operations_cloudtrail_logging_enabled.metadata.json +20 -13
  188. prowler/providers/aws/services/awslambda/awslambda_function_no_secrets_in_code/awslambda_function_no_secrets_in_code.metadata.json +18 -9
  189. prowler/providers/aws/services/awslambda/awslambda_function_no_secrets_in_variables/awslambda_function_no_secrets_in_variables.metadata.json +20 -12
  190. prowler/providers/aws/services/awslambda/awslambda_function_not_publicly_accessible/awslambda_function_not_publicly_accessible.metadata.json +21 -12
  191. prowler/providers/aws/services/awslambda/awslambda_function_url_cors_policy/awslambda_function_url_cors_policy.metadata.json +24 -13
  192. prowler/providers/aws/services/awslambda/awslambda_function_url_public/awslambda_function_url_public.metadata.json +22 -12
  193. prowler/providers/aws/services/awslambda/awslambda_function_using_supported_runtimes/awslambda_function_using_supported_runtimes.metadata.json +24 -13
  194. prowler/providers/aws/services/awslambda/awslambda_function_vpc_multi_az/awslambda_function_vpc_multi_az.metadata.json +23 -13
  195. prowler/providers/aws/services/backup/backup_plans_exist/backup_plans_exist.metadata.json +22 -15
  196. prowler/providers/aws/services/backup/backup_recovery_point_encrypted/backup_recovery_point_encrypted.metadata.json +21 -12
  197. prowler/providers/aws/services/backup/backup_reportplans_exist/backup_reportplans_exist.metadata.json +19 -15
  198. prowler/providers/aws/services/backup/backup_vaults_encrypted/backup_vaults_encrypted.metadata.json +24 -13
  199. prowler/providers/aws/services/backup/backup_vaults_exist/backup_vaults_exist.metadata.json +19 -15
  200. prowler/providers/aws/services/cloudformation/cloudformation_stack_cdktoolkit_bootstrap_version/cloudformation_stack_cdktoolkit_bootstrap_version.metadata.json +24 -13
  201. prowler/providers/aws/services/cloudformation/cloudformation_stack_outputs_find_secrets/cloudformation_stack_outputs_find_secrets.metadata.json +22 -12
  202. prowler/providers/aws/services/cloudformation/cloudformation_stacks_termination_protection_enabled/cloudformation_stacks_termination_protection_enabled.metadata.json +21 -12
  203. prowler/providers/aws/services/cloudfront/cloudfront_distributions_custom_ssl_certificate/cloudfront_distributions_custom_ssl_certificate.metadata.json +21 -12
  204. prowler/providers/aws/services/cloudfront/cloudfront_distributions_default_root_object/cloudfront_distributions_default_root_object.metadata.json +19 -12
  205. prowler/providers/aws/services/cloudfront/cloudfront_distributions_field_level_encryption_enabled/cloudfront_distributions_field_level_encryption_enabled.metadata.json +19 -12
  206. prowler/providers/aws/services/cloudfront/cloudfront_distributions_geo_restrictions_enabled/cloudfront_distributions_geo_restrictions_enabled.metadata.json +22 -13
  207. prowler/providers/aws/services/cloudfront/cloudfront_distributions_https_enabled/cloudfront_distributions_https_enabled.metadata.json +21 -12
  208. prowler/providers/aws/services/cloudfront/cloudfront_distributions_https_sni_enabled/cloudfront_distributions_https_sni_enabled.metadata.json +20 -12
  209. prowler/providers/aws/services/cloudfront/cloudfront_distributions_logging_enabled/cloudfront_distributions_logging_enabled.metadata.json +22 -13
  210. prowler/providers/aws/services/cloudfront/cloudfront_distributions_multiple_origin_failover_configured/cloudfront_distributions_multiple_origin_failover_configured.metadata.json +21 -16
  211. prowler/providers/aws/services/cloudfront/cloudfront_distributions_origin_traffic_encrypted/cloudfront_distributions_origin_traffic_encrypted.metadata.json +27 -14
  212. prowler/providers/aws/services/cloudfront/cloudfront_distributions_s3_origin_access_control/cloudfront_distributions_s3_origin_access_control.metadata.json +24 -14
  213. prowler/providers/aws/services/cloudfront/cloudfront_distributions_s3_origin_non_existent_bucket/cloudfront_distributions_s3_origin_non_existent_bucket.metadata.json +18 -11
  214. prowler/providers/aws/services/cloudfront/cloudfront_distributions_using_deprecated_ssl_protocols/cloudfront_distributions_using_deprecated_ssl_protocols.metadata.json +20 -12
  215. prowler/providers/aws/services/cloudfront/cloudfront_distributions_using_waf/cloudfront_distributions_using_waf.metadata.json +21 -12
  216. prowler/providers/aws/services/cloudtrail/cloudtrail_bucket_requires_mfa_delete/cloudtrail_bucket_requires_mfa_delete.metadata.json +16 -11
  217. prowler/providers/aws/services/cloudtrail/cloudtrail_cloudwatch_logging_enabled/cloudtrail_cloudwatch_logging_enabled.metadata.json +19 -15
  218. prowler/providers/aws/services/cloudtrail/cloudtrail_insights_exist/cloudtrail_insights_exist.metadata.json +19 -14
  219. prowler/providers/aws/services/cloudtrail/cloudtrail_kms_encryption_enabled/cloudtrail_kms_encryption_enabled.metadata.json +19 -14
  220. prowler/providers/aws/services/cloudtrail/cloudtrail_log_file_validation_enabled/cloudtrail_log_file_validation_enabled.metadata.json +20 -13
  221. prowler/providers/aws/services/cloudtrail/cloudtrail_logs_s3_bucket_access_logging_enabled/cloudtrail_logs_s3_bucket_access_logging_enabled.metadata.json +18 -13
  222. prowler/providers/aws/services/cloudtrail/cloudtrail_logs_s3_bucket_is_not_publicly_accessible/cloudtrail_logs_s3_bucket_is_not_publicly_accessible.metadata.json +24 -16
  223. prowler/providers/aws/services/cloudtrail/cloudtrail_multi_region_enabled/cloudtrail_multi_region_enabled.metadata.json +17 -13
  224. prowler/providers/aws/services/cloudtrail/cloudtrail_multi_region_enabled_logging_management_events/cloudtrail_multi_region_enabled_logging_management_events.metadata.json +19 -12
  225. prowler/providers/aws/services/cloudtrail/cloudtrail_s3_dataevents_read_enabled/cloudtrail_s3_dataevents_read_enabled.metadata.json +22 -12
  226. prowler/providers/aws/services/cloudtrail/cloudtrail_s3_dataevents_write_enabled/cloudtrail_s3_dataevents_write_enabled.metadata.json +21 -11
  227. prowler/providers/aws/services/cloudtrail/cloudtrail_threat_detection_enumeration/cloudtrail_threat_detection_enumeration.metadata.json +22 -11
  228. prowler/providers/aws/services/cloudtrail/cloudtrail_threat_detection_llm_jacking/cloudtrail_threat_detection_llm_jacking.metadata.json +25 -12
  229. prowler/providers/aws/services/cloudtrail/cloudtrail_threat_detection_privilege_escalation/cloudtrail_threat_detection_privilege_escalation.metadata.json +18 -10
  230. prowler/providers/aws/services/config/config_recorder_all_regions_enabled/config_recorder_all_regions_enabled.metadata.json +20 -12
  231. prowler/providers/aws/services/config/config_recorder_using_aws_service_role/config_recorder_using_aws_service_role.metadata.json +20 -13
  232. prowler/providers/aws/services/directoryservice/directoryservice_directory_log_forwarding_enabled/directoryservice_directory_log_forwarding_enabled.metadata.json +20 -11
  233. prowler/providers/aws/services/directoryservice/directoryservice_directory_monitor_notifications/directoryservice_directory_monitor_notifications.metadata.json +19 -11
  234. prowler/providers/aws/services/directoryservice/directoryservice_directory_snapshots_limit/directoryservice_directory_snapshots_limit.metadata.json +19 -10
  235. prowler/providers/aws/services/directoryservice/directoryservice_ldap_certificate_expiration/directoryservice_ldap_certificate_expiration.metadata.json +20 -11
  236. prowler/providers/aws/services/directoryservice/directoryservice_radius_server_security_protocol/directoryservice_radius_server_security_protocol.metadata.json +23 -12
  237. prowler/providers/aws/services/directoryservice/directoryservice_supported_mfa_radius_enabled/directoryservice_supported_mfa_radius_enabled.metadata.json +23 -12
  238. prowler/providers/aws/services/dlm/dlm_ebs_snapshot_lifecycle_policy_exists/dlm_ebs_snapshot_lifecycle_policy_exists.metadata.json +19 -13
  239. prowler/providers/aws/services/dms/dms_endpoint_mongodb_authentication_enabled/dms_endpoint_mongodb_authentication_enabled.metadata.json +20 -13
  240. prowler/providers/aws/services/dms/dms_endpoint_neptune_iam_authorization_enabled/dms_endpoint_neptune_iam_authorization_enabled.metadata.json +19 -12
  241. prowler/providers/aws/services/dms/dms_endpoint_redis_in_transit_encryption_enabled/dms_endpoint_redis_in_transit_encryption_enabled.metadata.json +23 -13
  242. prowler/providers/aws/services/dms/dms_endpoint_ssl_enabled/dms_endpoint_ssl_enabled.metadata.json +27 -19
  243. prowler/providers/aws/services/dms/dms_instance_minor_version_upgrade_enabled/dms_instance_minor_version_upgrade_enabled.metadata.json +22 -12
  244. prowler/providers/aws/services/dms/dms_instance_multi_az_enabled/dms_instance_multi_az_enabled.metadata.json +20 -13
  245. prowler/providers/aws/services/dms/dms_instance_no_public_access/dms_instance_no_public_access.metadata.json +22 -11
  246. prowler/providers/aws/services/dms/dms_replication_task_source_logging_enabled/dms_replication_task_source_logging_enabled.metadata.json +21 -13
  247. prowler/providers/aws/services/dms/dms_replication_task_target_logging_enabled/dms_replication_task_target_logging_enabled.metadata.json +22 -13
  248. prowler/providers/aws/services/dms/dms_replication_task_target_logging_enabled/dms_replication_task_target_logging_enabled.py +39 -37
  249. prowler/providers/aws/services/dms/dms_service.py +0 -1
  250. prowler/providers/aws/services/ec2/ec2_ami_public/ec2_ami_public.py +11 -10
  251. prowler/providers/aws/services/ec2/ec2_instance_with_outdated_ami/__init__.py +0 -0
  252. prowler/providers/aws/services/ec2/ec2_instance_with_outdated_ami/ec2_instance_with_outdated_ami.metadata.json +30 -0
  253. prowler/providers/aws/services/ec2/ec2_instance_with_outdated_ami/ec2_instance_with_outdated_ami.py +52 -0
  254. prowler/providers/aws/services/ec2/ec2_service.py +26 -14
  255. prowler/providers/aws/services/efs/efs_access_point_enforce_root_directory/efs_access_point_enforce_root_directory.metadata.json +19 -13
  256. prowler/providers/aws/services/efs/efs_access_point_enforce_user_identity/efs_access_point_enforce_user_identity.metadata.json +23 -13
  257. prowler/providers/aws/services/efs/efs_encryption_at_rest_enabled/efs_encryption_at_rest_enabled.metadata.json +23 -13
  258. prowler/providers/aws/services/efs/efs_have_backup_enabled/efs_have_backup_enabled.metadata.json +20 -14
  259. prowler/providers/aws/services/efs/efs_mount_target_not_publicly_accessible/efs_mount_target_not_publicly_accessible.metadata.json +18 -12
  260. prowler/providers/aws/services/efs/efs_multi_az_enabled/efs_multi_az_enabled.metadata.json +21 -13
  261. prowler/providers/aws/services/efs/efs_not_publicly_accessible/efs_not_publicly_accessible.metadata.json +17 -13
  262. prowler/providers/aws/services/eks/eks_cluster_uses_a_supported_version/eks_cluster_uses_a_supported_version.py +4 -0
  263. prowler/providers/aws/services/elb/elb_ssl_listeners_use_acm_certificate/elb_ssl_listeners_use_acm_certificate.py +8 -2
  264. prowler/providers/aws/services/neptune/neptune_cluster_backup_enabled/neptune_cluster_backup_enabled.metadata.json +23 -13
  265. prowler/providers/aws/services/neptune/neptune_cluster_copy_tags_to_snapshots/neptune_cluster_copy_tags_to_snapshots.metadata.json +18 -14
  266. prowler/providers/aws/services/neptune/neptune_cluster_deletion_protection/neptune_cluster_deletion_protection.metadata.json +23 -14
  267. prowler/providers/aws/services/neptune/neptune_cluster_iam_authentication_enabled/neptune_cluster_iam_authentication_enabled.metadata.json +25 -13
  268. prowler/providers/aws/services/neptune/neptune_cluster_integration_cloudwatch_logs/neptune_cluster_integration_cloudwatch_logs.metadata.json +22 -14
  269. prowler/providers/aws/services/neptune/neptune_cluster_multi_az/neptune_cluster_multi_az.metadata.json +20 -12
  270. prowler/providers/aws/services/neptune/neptune_cluster_public_snapshot/neptune_cluster_public_snapshot.metadata.json +18 -10
  271. prowler/providers/aws/services/neptune/neptune_cluster_snapshot_encrypted/neptune_cluster_snapshot_encrypted.metadata.json +16 -10
  272. prowler/providers/aws/services/neptune/neptune_cluster_storage_encrypted/neptune_cluster_storage_encrypted.metadata.json +22 -13
  273. prowler/providers/aws/services/neptune/neptune_cluster_uses_public_subnet/neptune_cluster_uses_public_subnet.metadata.json +20 -12
  274. prowler/providers/aws/services/rds/rds_service.py +9 -2
  275. prowler/providers/aws/services/vpc/vpc_service.py +1 -1
  276. prowler/providers/azure/services/entra/entra_service.py +54 -25
  277. prowler/providers/common/arguments.py +16 -2
  278. prowler/providers/common/provider.py +34 -2
  279. prowler/providers/gcp/services/cloudsql/cloudsql_service.py +3 -3
  280. prowler/providers/gcp/services/cloudstorage/cloudstorage_bucket_lifecycle_management_enabled/__init__.py +0 -0
  281. prowler/providers/gcp/services/cloudstorage/cloudstorage_bucket_lifecycle_management_enabled/cloudstorage_bucket_lifecycle_management_enabled.metadata.json +34 -0
  282. prowler/providers/gcp/services/cloudstorage/cloudstorage_bucket_lifecycle_management_enabled/cloudstorage_bucket_lifecycle_management_enabled.py +48 -0
  283. prowler/providers/gcp/services/cloudstorage/cloudstorage_service.py +10 -0
  284. prowler/providers/gcp/services/compute/compute_project_os_login_enabled/compute_project_os_login_enabled.py +5 -0
  285. prowler/providers/gcp/services/iam/iam_audit_logs_enabled/iam_audit_logs_enabled.py +5 -0
  286. prowler/providers/gcp/services/iam/iam_role_kms_enforce_separation_of_duties/iam_role_kms_enforce_separation_of_duties.py +5 -0
  287. prowler/providers/gcp/services/logging/logging_log_metric_filter_and_alert_for_audit_configuration_changes_enabled/logging_log_metric_filter_and_alert_for_audit_configuration_changes_enabled.py +5 -0
  288. prowler/providers/gcp/services/logging/logging_log_metric_filter_and_alert_for_bucket_permission_changes_enabled/logging_log_metric_filter_and_alert_for_bucket_permission_changes_enabled.py +5 -0
  289. prowler/providers/gcp/services/logging/logging_log_metric_filter_and_alert_for_custom_role_changes_enabled/logging_log_metric_filter_and_alert_for_custom_role_changes_enabled.py +5 -0
  290. prowler/providers/gcp/services/logging/logging_log_metric_filter_and_alert_for_project_ownership_changes_enabled/logging_log_metric_filter_and_alert_for_project_ownership_changes_enabled.py +5 -0
  291. prowler/providers/gcp/services/logging/logging_log_metric_filter_and_alert_for_sql_instance_configuration_changes_enabled/logging_log_metric_filter_and_alert_for_sql_instance_configuration_changes_enabled.py +5 -0
  292. prowler/providers/gcp/services/logging/logging_log_metric_filter_and_alert_for_vpc_firewall_rule_changes_enabled/logging_log_metric_filter_and_alert_for_vpc_firewall_rule_changes_enabled.py +5 -0
  293. prowler/providers/gcp/services/logging/logging_log_metric_filter_and_alert_for_vpc_network_changes_enabled/logging_log_metric_filter_and_alert_for_vpc_network_changes_enabled.py +5 -0
  294. prowler/providers/gcp/services/logging/logging_log_metric_filter_and_alert_for_vpc_network_route_changes_enabled/logging_log_metric_filter_and_alert_for_vpc_network_route_changes_enabled.py +5 -0
  295. prowler/providers/gcp/services/logging/logging_sink_created/logging_sink_created.py +5 -0
  296. prowler/providers/gcp/services/monitoring/monitoring_service.py +30 -2
  297. prowler/providers/iac/iac_provider.py +1 -1
  298. prowler/providers/llm/__init__.py +0 -0
  299. prowler/providers/llm/lib/__init__.py +0 -0
  300. prowler/providers/llm/lib/arguments/__init__.py +0 -0
  301. prowler/providers/llm/lib/arguments/arguments.py +13 -0
  302. prowler/providers/llm/llm_provider.py +518 -0
  303. prowler/providers/llm/models.py +27 -0
  304. prowler/providers/m365/exceptions/exceptions.py +0 -55
  305. prowler/providers/m365/lib/arguments/arguments.py +8 -4
  306. prowler/providers/m365/lib/powershell/m365_powershell.py +14 -156
  307. prowler/providers/m365/m365_provider.py +19 -117
  308. prowler/providers/m365/models.py +0 -3
  309. prowler/providers/m365/services/admincenter/admincenter_service.py +52 -23
  310. prowler/providers/m365/services/entra/entra_admin_users_phishing_resistant_mfa_enabled/entra_admin_users_phishing_resistant_mfa_enabled.py +19 -2
  311. prowler/providers/m365/services/entra/entra_service.py +58 -30
  312. prowler/providers/m365/services/sharepoint/sharepoint_service.py +24 -3
  313. prowler/providers/oraclecloud/__init__.py +0 -0
  314. prowler/providers/oraclecloud/config.py +61 -0
  315. prowler/providers/oraclecloud/exceptions/__init__.py +0 -0
  316. prowler/providers/oraclecloud/exceptions/exceptions.py +197 -0
  317. prowler/providers/oraclecloud/lib/__init__.py +0 -0
  318. prowler/providers/oraclecloud/lib/arguments/__init__.py +0 -0
  319. prowler/providers/oraclecloud/lib/arguments/arguments.py +123 -0
  320. prowler/providers/oraclecloud/lib/mutelist/__init__.py +0 -0
  321. prowler/providers/oraclecloud/lib/mutelist/mutelist.py +176 -0
  322. prowler/providers/oraclecloud/lib/service/__init__.py +0 -0
  323. prowler/providers/oraclecloud/lib/service/service.py +213 -0
  324. prowler/providers/oraclecloud/models.py +96 -0
  325. prowler/providers/oraclecloud/oci_provider.py +1038 -0
  326. prowler/providers/oraclecloud/services/__init__.py +0 -0
  327. prowler/providers/oraclecloud/services/analytics/__init__.py +0 -0
  328. prowler/providers/oraclecloud/services/analytics/analytics_client.py +6 -0
  329. prowler/providers/oraclecloud/services/analytics/analytics_instance_access_restricted/__init__.py +0 -0
  330. prowler/providers/oraclecloud/services/analytics/analytics_instance_access_restricted/analytics_instance_access_restricted.metadata.json +36 -0
  331. prowler/providers/oraclecloud/services/analytics/analytics_instance_access_restricted/analytics_instance_access_restricted.py +48 -0
  332. prowler/providers/oraclecloud/services/analytics/analytics_service.py +99 -0
  333. prowler/providers/oraclecloud/services/audit/__init__.py +0 -0
  334. prowler/providers/oraclecloud/services/audit/audit_client.py +4 -0
  335. prowler/providers/oraclecloud/services/audit/audit_log_retention_period_365_days/__init__.py +0 -0
  336. prowler/providers/oraclecloud/services/audit/audit_log_retention_period_365_days/audit_log_retention_period_365_days.metadata.json +37 -0
  337. prowler/providers/oraclecloud/services/audit/audit_log_retention_period_365_days/audit_log_retention_period_365_days.py +46 -0
  338. prowler/providers/oraclecloud/services/audit/audit_service.py +57 -0
  339. prowler/providers/oraclecloud/services/blockstorage/__init__.py +0 -0
  340. prowler/providers/oraclecloud/services/blockstorage/blockstorage_block_volume_encrypted_with_cmk/__init__.py +0 -0
  341. prowler/providers/oraclecloud/services/blockstorage/blockstorage_block_volume_encrypted_with_cmk/blockstorage_block_volume_encrypted_with_cmk.metadata.json +37 -0
  342. prowler/providers/oraclecloud/services/blockstorage/blockstorage_block_volume_encrypted_with_cmk/blockstorage_block_volume_encrypted_with_cmk.py +39 -0
  343. prowler/providers/oraclecloud/services/blockstorage/blockstorage_boot_volume_encrypted_with_cmk/__init__.py +0 -0
  344. prowler/providers/oraclecloud/services/blockstorage/blockstorage_boot_volume_encrypted_with_cmk/blockstorage_boot_volume_encrypted_with_cmk.metadata.json +36 -0
  345. prowler/providers/oraclecloud/services/blockstorage/blockstorage_boot_volume_encrypted_with_cmk/blockstorage_boot_volume_encrypted_with_cmk.py +35 -0
  346. prowler/providers/oraclecloud/services/blockstorage/blockstorage_client.py +6 -0
  347. prowler/providers/oraclecloud/services/blockstorage/blockstorage_service.py +182 -0
  348. prowler/providers/oraclecloud/services/cloudguard/__init__.py +0 -0
  349. prowler/providers/oraclecloud/services/cloudguard/cloudguard_client.py +6 -0
  350. prowler/providers/oraclecloud/services/cloudguard/cloudguard_enabled/__init__.py +0 -0
  351. prowler/providers/oraclecloud/services/cloudguard/cloudguard_enabled/cloudguard_enabled.metadata.json +36 -0
  352. prowler/providers/oraclecloud/services/cloudguard/cloudguard_enabled/cloudguard_enabled.py +39 -0
  353. prowler/providers/oraclecloud/services/cloudguard/cloudguard_service.py +63 -0
  354. prowler/providers/oraclecloud/services/compute/__init__.py +0 -0
  355. prowler/providers/oraclecloud/services/compute/compute_client.py +4 -0
  356. prowler/providers/oraclecloud/services/compute/compute_instance_in_transit_encryption_enabled/__init__.py +0 -0
  357. prowler/providers/oraclecloud/services/compute/compute_instance_in_transit_encryption_enabled/compute_instance_in_transit_encryption_enabled.metadata.json +37 -0
  358. prowler/providers/oraclecloud/services/compute/compute_instance_in_transit_encryption_enabled/compute_instance_in_transit_encryption_enabled.py +38 -0
  359. prowler/providers/oraclecloud/services/compute/compute_instance_legacy_metadata_endpoint_disabled/__init__.py +0 -0
  360. prowler/providers/oraclecloud/services/compute/compute_instance_legacy_metadata_endpoint_disabled/compute_instance_legacy_metadata_endpoint_disabled.metadata.json +37 -0
  361. prowler/providers/oraclecloud/services/compute/compute_instance_legacy_metadata_endpoint_disabled/compute_instance_legacy_metadata_endpoint_disabled.py +37 -0
  362. prowler/providers/oraclecloud/services/compute/compute_instance_secure_boot_enabled/__init__.py +0 -0
  363. prowler/providers/oraclecloud/services/compute/compute_instance_secure_boot_enabled/compute_instance_secure_boot_enabled.metadata.json +37 -0
  364. prowler/providers/oraclecloud/services/compute/compute_instance_secure_boot_enabled/compute_instance_secure_boot_enabled.py +39 -0
  365. prowler/providers/oraclecloud/services/compute/compute_service.py +136 -0
  366. prowler/providers/oraclecloud/services/database/__init__.py +0 -0
  367. prowler/providers/oraclecloud/services/database/database_autonomous_database_access_restricted/__init__.py +0 -0
  368. prowler/providers/oraclecloud/services/database/database_autonomous_database_access_restricted/database_autonomous_database_access_restricted.metadata.json +36 -0
  369. prowler/providers/oraclecloud/services/database/database_autonomous_database_access_restricted/database_autonomous_database_access_restricted.py +40 -0
  370. prowler/providers/oraclecloud/services/database/database_client.py +6 -0
  371. prowler/providers/oraclecloud/services/database/database_service.py +79 -0
  372. prowler/providers/oraclecloud/services/events/__init__.py +0 -0
  373. prowler/providers/oraclecloud/services/events/events_client.py +4 -0
  374. prowler/providers/oraclecloud/services/events/events_notification_topic_and_subscription_exists/__init__.py +0 -0
  375. prowler/providers/oraclecloud/services/events/events_notification_topic_and_subscription_exists/events_notification_topic_and_subscription_exists.metadata.json +37 -0
  376. prowler/providers/oraclecloud/services/events/events_notification_topic_and_subscription_exists/events_notification_topic_and_subscription_exists.py +53 -0
  377. prowler/providers/oraclecloud/services/events/events_rule_cloudguard_problems/__init__.py +0 -0
  378. prowler/providers/oraclecloud/services/events/events_rule_cloudguard_problems/events_rule_cloudguard_problems.metadata.json +36 -0
  379. prowler/providers/oraclecloud/services/events/events_rule_cloudguard_problems/events_rule_cloudguard_problems.py +90 -0
  380. prowler/providers/oraclecloud/services/events/events_rule_iam_group_changes/__init__.py +0 -0
  381. prowler/providers/oraclecloud/services/events/events_rule_iam_group_changes/events_rule_iam_group_changes.metadata.json +37 -0
  382. prowler/providers/oraclecloud/services/events/events_rule_iam_group_changes/events_rule_iam_group_changes.py +67 -0
  383. prowler/providers/oraclecloud/services/events/events_rule_iam_policy_changes/__init__.py +0 -0
  384. prowler/providers/oraclecloud/services/events/events_rule_iam_policy_changes/events_rule_iam_policy_changes.metadata.json +37 -0
  385. prowler/providers/oraclecloud/services/events/events_rule_iam_policy_changes/events_rule_iam_policy_changes.py +67 -0
  386. prowler/providers/oraclecloud/services/events/events_rule_identity_provider_changes/__init__.py +0 -0
  387. prowler/providers/oraclecloud/services/events/events_rule_identity_provider_changes/events_rule_identity_provider_changes.metadata.json +37 -0
  388. prowler/providers/oraclecloud/services/events/events_rule_identity_provider_changes/events_rule_identity_provider_changes.py +67 -0
  389. prowler/providers/oraclecloud/services/events/events_rule_idp_group_mapping_changes/__init__.py +0 -0
  390. prowler/providers/oraclecloud/services/events/events_rule_idp_group_mapping_changes/events_rule_idp_group_mapping_changes.metadata.json +37 -0
  391. prowler/providers/oraclecloud/services/events/events_rule_idp_group_mapping_changes/events_rule_idp_group_mapping_changes.py +67 -0
  392. prowler/providers/oraclecloud/services/events/events_rule_local_user_authentication/__init__.py +0 -0
  393. prowler/providers/oraclecloud/services/events/events_rule_local_user_authentication/events_rule_local_user_authentication.metadata.json +38 -0
  394. prowler/providers/oraclecloud/services/events/events_rule_local_user_authentication/events_rule_local_user_authentication.py +63 -0
  395. prowler/providers/oraclecloud/services/events/events_rule_network_gateway_changes/__init__.py +0 -0
  396. prowler/providers/oraclecloud/services/events/events_rule_network_gateway_changes/events_rule_network_gateway_changes.metadata.json +37 -0
  397. prowler/providers/oraclecloud/services/events/events_rule_network_gateway_changes/events_rule_network_gateway_changes.py +88 -0
  398. prowler/providers/oraclecloud/services/events/events_rule_network_security_group_changes/__init__.py +0 -0
  399. prowler/providers/oraclecloud/services/events/events_rule_network_security_group_changes/events_rule_network_security_group_changes.metadata.json +37 -0
  400. prowler/providers/oraclecloud/services/events/events_rule_network_security_group_changes/events_rule_network_security_group_changes.py +68 -0
  401. prowler/providers/oraclecloud/services/events/events_rule_route_table_changes/__init__.py +0 -0
  402. prowler/providers/oraclecloud/services/events/events_rule_route_table_changes/events_rule_route_table_changes.metadata.json +37 -0
  403. prowler/providers/oraclecloud/services/events/events_rule_route_table_changes/events_rule_route_table_changes.py +68 -0
  404. prowler/providers/oraclecloud/services/events/events_rule_security_list_changes/__init__.py +0 -0
  405. prowler/providers/oraclecloud/services/events/events_rule_security_list_changes/events_rule_security_list_changes.metadata.json +37 -0
  406. prowler/providers/oraclecloud/services/events/events_rule_security_list_changes/events_rule_security_list_changes.py +68 -0
  407. prowler/providers/oraclecloud/services/events/events_rule_user_changes/__init__.py +0 -0
  408. prowler/providers/oraclecloud/services/events/events_rule_user_changes/events_rule_user_changes.metadata.json +37 -0
  409. prowler/providers/oraclecloud/services/events/events_rule_user_changes/events_rule_user_changes.py +69 -0
  410. prowler/providers/oraclecloud/services/events/events_rule_vcn_changes/__init__.py +0 -0
  411. prowler/providers/oraclecloud/services/events/events_rule_vcn_changes/events_rule_vcn_changes.metadata.json +37 -0
  412. prowler/providers/oraclecloud/services/events/events_rule_vcn_changes/events_rule_vcn_changes.py +65 -0
  413. prowler/providers/oraclecloud/services/events/events_service.py +215 -0
  414. prowler/providers/oraclecloud/services/events/lib/__init__.py +0 -0
  415. prowler/providers/oraclecloud/services/events/lib/helpers.py +116 -0
  416. prowler/providers/oraclecloud/services/filestorage/__init__.py +0 -0
  417. prowler/providers/oraclecloud/services/filestorage/filestorage_client.py +6 -0
  418. prowler/providers/oraclecloud/services/filestorage/filestorage_file_system_encrypted_with_cmk/__init__.py +0 -0
  419. prowler/providers/oraclecloud/services/filestorage/filestorage_file_system_encrypted_with_cmk/filestorage_file_system_encrypted_with_cmk.metadata.json +36 -0
  420. prowler/providers/oraclecloud/services/filestorage/filestorage_file_system_encrypted_with_cmk/filestorage_file_system_encrypted_with_cmk.py +39 -0
  421. prowler/providers/oraclecloud/services/filestorage/filestorage_service.py +96 -0
  422. prowler/providers/oraclecloud/services/identity/__init__.py +0 -0
  423. prowler/providers/oraclecloud/services/identity/identity_client.py +4 -0
  424. prowler/providers/oraclecloud/services/identity/identity_iam_admins_cannot_update_tenancy_admins/__init__.py +0 -0
  425. prowler/providers/oraclecloud/services/identity/identity_iam_admins_cannot_update_tenancy_admins/identity_iam_admins_cannot_update_tenancy_admins.metadata.json +36 -0
  426. prowler/providers/oraclecloud/services/identity/identity_iam_admins_cannot_update_tenancy_admins/identity_iam_admins_cannot_update_tenancy_admins.py +107 -0
  427. prowler/providers/oraclecloud/services/identity/identity_instance_principal_used/__init__.py +0 -0
  428. prowler/providers/oraclecloud/services/identity/identity_instance_principal_used/identity_instance_principal_used.metadata.json +36 -0
  429. prowler/providers/oraclecloud/services/identity/identity_instance_principal_used/identity_instance_principal_used.py +70 -0
  430. prowler/providers/oraclecloud/services/identity/identity_no_resources_in_root_compartment/__init__.py +0 -0
  431. prowler/providers/oraclecloud/services/identity/identity_no_resources_in_root_compartment/identity_no_resources_in_root_compartment.metadata.json +32 -0
  432. prowler/providers/oraclecloud/services/identity/identity_no_resources_in_root_compartment/identity_no_resources_in_root_compartment.py +51 -0
  433. prowler/providers/oraclecloud/services/identity/identity_non_root_compartment_exists/__init__.py +0 -0
  434. prowler/providers/oraclecloud/services/identity/identity_non_root_compartment_exists/identity_non_root_compartment_exists.metadata.json +32 -0
  435. prowler/providers/oraclecloud/services/identity/identity_non_root_compartment_exists/identity_non_root_compartment_exists.py +39 -0
  436. prowler/providers/oraclecloud/services/identity/identity_password_policy_expires_within_365_days/__init__.py +0 -0
  437. prowler/providers/oraclecloud/services/identity/identity_password_policy_expires_within_365_days/identity_password_policy_expires_within_365_days.metadata.json +36 -0
  438. prowler/providers/oraclecloud/services/identity/identity_password_policy_expires_within_365_days/identity_password_policy_expires_within_365_days.py +67 -0
  439. prowler/providers/oraclecloud/services/identity/identity_password_policy_minimum_length_14/__init__.py +0 -0
  440. prowler/providers/oraclecloud/services/identity/identity_password_policy_minimum_length_14/identity_password_policy_minimum_length_14.metadata.json +36 -0
  441. prowler/providers/oraclecloud/services/identity/identity_password_policy_minimum_length_14/identity_password_policy_minimum_length_14.py +97 -0
  442. prowler/providers/oraclecloud/services/identity/identity_password_policy_prevents_reuse/__init__.py +0 -0
  443. prowler/providers/oraclecloud/services/identity/identity_password_policy_prevents_reuse/identity_password_policy_prevents_reuse.metadata.json +36 -0
  444. prowler/providers/oraclecloud/services/identity/identity_password_policy_prevents_reuse/identity_password_policy_prevents_reuse.py +77 -0
  445. prowler/providers/oraclecloud/services/identity/identity_service.py +828 -0
  446. prowler/providers/oraclecloud/services/identity/identity_service_level_admins_exist/__init__.py +0 -0
  447. prowler/providers/oraclecloud/services/identity/identity_service_level_admins_exist/identity_service_level_admins_exist.metadata.json +32 -0
  448. prowler/providers/oraclecloud/services/identity/identity_service_level_admins_exist/identity_service_level_admins_exist.py +81 -0
  449. prowler/providers/oraclecloud/services/identity/identity_tenancy_admin_permissions_limited/__init__.py +0 -0
  450. prowler/providers/oraclecloud/services/identity/identity_tenancy_admin_permissions_limited/identity_tenancy_admin_permissions_limited.metadata.json +36 -0
  451. prowler/providers/oraclecloud/services/identity/identity_tenancy_admin_permissions_limited/identity_tenancy_admin_permissions_limited.py +81 -0
  452. prowler/providers/oraclecloud/services/identity/identity_tenancy_admin_users_no_api_keys/__init__.py +0 -0
  453. prowler/providers/oraclecloud/services/identity/identity_tenancy_admin_users_no_api_keys/identity_tenancy_admin_users_no_api_keys.metadata.json +36 -0
  454. prowler/providers/oraclecloud/services/identity/identity_tenancy_admin_users_no_api_keys/identity_tenancy_admin_users_no_api_keys.py +49 -0
  455. prowler/providers/oraclecloud/services/identity/identity_user_api_keys_rotated_90_days/__init__.py +0 -0
  456. prowler/providers/oraclecloud/services/identity/identity_user_api_keys_rotated_90_days/identity_user_api_keys_rotated_90_days.metadata.json +37 -0
  457. prowler/providers/oraclecloud/services/identity/identity_user_api_keys_rotated_90_days/identity_user_api_keys_rotated_90_days.py +73 -0
  458. prowler/providers/oraclecloud/services/identity/identity_user_auth_tokens_rotated_90_days/__init__.py +0 -0
  459. prowler/providers/oraclecloud/services/identity/identity_user_auth_tokens_rotated_90_days/identity_user_auth_tokens_rotated_90_days.metadata.json +36 -0
  460. prowler/providers/oraclecloud/services/identity/identity_user_auth_tokens_rotated_90_days/identity_user_auth_tokens_rotated_90_days.py +52 -0
  461. prowler/providers/oraclecloud/services/identity/identity_user_customer_secret_keys_rotated_90_days/__init__.py +0 -0
  462. prowler/providers/oraclecloud/services/identity/identity_user_customer_secret_keys_rotated_90_days/identity_user_customer_secret_keys_rotated_90_days.metadata.json +36 -0
  463. prowler/providers/oraclecloud/services/identity/identity_user_customer_secret_keys_rotated_90_days/identity_user_customer_secret_keys_rotated_90_days.py +49 -0
  464. prowler/providers/oraclecloud/services/identity/identity_user_db_passwords_rotated_90_days/__init__.py +0 -0
  465. prowler/providers/oraclecloud/services/identity/identity_user_db_passwords_rotated_90_days/identity_user_db_passwords_rotated_90_days.metadata.json +36 -0
  466. prowler/providers/oraclecloud/services/identity/identity_user_db_passwords_rotated_90_days/identity_user_db_passwords_rotated_90_days.py +49 -0
  467. prowler/providers/oraclecloud/services/identity/identity_user_mfa_enabled_console_access/__init__.py +0 -0
  468. prowler/providers/oraclecloud/services/identity/identity_user_mfa_enabled_console_access/identity_user_mfa_enabled_console_access.metadata.json +36 -0
  469. prowler/providers/oraclecloud/services/identity/identity_user_mfa_enabled_console_access/identity_user_mfa_enabled_console_access.py +43 -0
  470. prowler/providers/oraclecloud/services/identity/identity_user_valid_email_address/__init__.py +0 -0
  471. prowler/providers/oraclecloud/services/identity/identity_user_valid_email_address/identity_user_valid_email_address.metadata.json +36 -0
  472. prowler/providers/oraclecloud/services/identity/identity_user_valid_email_address/identity_user_valid_email_address.py +38 -0
  473. prowler/providers/oraclecloud/services/integration/__init__.py +0 -0
  474. prowler/providers/oraclecloud/services/integration/integration_client.py +8 -0
  475. prowler/providers/oraclecloud/services/integration/integration_instance_access_restricted/__init__.py +0 -0
  476. prowler/providers/oraclecloud/services/integration/integration_instance_access_restricted/integration_instance_access_restricted.metadata.json +36 -0
  477. prowler/providers/oraclecloud/services/integration/integration_instance_access_restricted/integration_instance_access_restricted.py +48 -0
  478. prowler/providers/oraclecloud/services/integration/integration_service.py +92 -0
  479. prowler/providers/oraclecloud/services/kms/__init__.py +0 -0
  480. prowler/providers/oraclecloud/services/kms/kms_client.py +4 -0
  481. prowler/providers/oraclecloud/services/kms/kms_key_rotation_enabled/__init__.py +0 -0
  482. prowler/providers/oraclecloud/services/kms/kms_key_rotation_enabled/kms_key_rotation_enabled.metadata.json +36 -0
  483. prowler/providers/oraclecloud/services/kms/kms_key_rotation_enabled/kms_key_rotation_enabled.py +37 -0
  484. prowler/providers/oraclecloud/services/kms/kms_service.py +136 -0
  485. prowler/providers/oraclecloud/services/logging/__init__.py +0 -0
  486. prowler/providers/oraclecloud/services/logging/logging_client.py +6 -0
  487. prowler/providers/oraclecloud/services/logging/logging_service.py +189 -0
  488. prowler/providers/oraclecloud/services/network/__init__.py +0 -0
  489. prowler/providers/oraclecloud/services/network/network_client.py +4 -0
  490. prowler/providers/oraclecloud/services/network/network_default_security_list_restricts_traffic/__init__.py +0 -0
  491. prowler/providers/oraclecloud/services/network/network_default_security_list_restricts_traffic/network_default_security_list_restricts_traffic.metadata.json +36 -0
  492. prowler/providers/oraclecloud/services/network/network_default_security_list_restricts_traffic/network_default_security_list_restricts_traffic.py +99 -0
  493. prowler/providers/oraclecloud/services/network/network_security_group_ingress_from_internet_to_rdp_port/__init__.py +0 -0
  494. prowler/providers/oraclecloud/services/network/network_security_group_ingress_from_internet_to_rdp_port/network_security_group_ingress_from_internet_to_rdp_port.metadata.json +36 -0
  495. prowler/providers/oraclecloud/services/network/network_security_group_ingress_from_internet_to_rdp_port/network_security_group_ingress_from_internet_to_rdp_port.py +65 -0
  496. prowler/providers/oraclecloud/services/network/network_security_group_ingress_from_internet_to_ssh_port/__init__.py +0 -0
  497. prowler/providers/oraclecloud/services/network/network_security_group_ingress_from_internet_to_ssh_port/network_security_group_ingress_from_internet_to_ssh_port.metadata.json +37 -0
  498. prowler/providers/oraclecloud/services/network/network_security_group_ingress_from_internet_to_ssh_port/network_security_group_ingress_from_internet_to_ssh_port.py +70 -0
  499. prowler/providers/oraclecloud/services/network/network_security_list_ingress_from_internet_to_rdp_port/__init__.py +0 -0
  500. prowler/providers/oraclecloud/services/network/network_security_list_ingress_from_internet_to_rdp_port/network_security_list_ingress_from_internet_to_rdp_port.metadata.json +36 -0
  501. prowler/providers/oraclecloud/services/network/network_security_list_ingress_from_internet_to_rdp_port/network_security_list_ingress_from_internet_to_rdp_port.py +62 -0
  502. prowler/providers/oraclecloud/services/network/network_security_list_ingress_from_internet_to_ssh_port/__init__.py +0 -0
  503. prowler/providers/oraclecloud/services/network/network_security_list_ingress_from_internet_to_ssh_port/network_security_list_ingress_from_internet_to_ssh_port.metadata.json +37 -0
  504. prowler/providers/oraclecloud/services/network/network_security_list_ingress_from_internet_to_ssh_port/network_security_list_ingress_from_internet_to_ssh_port.py +67 -0
  505. prowler/providers/oraclecloud/services/network/network_service.py +321 -0
  506. prowler/providers/oraclecloud/services/network/network_vcn_subnet_flow_logs_enabled/__init__.py +0 -0
  507. prowler/providers/oraclecloud/services/network/network_vcn_subnet_flow_logs_enabled/network_vcn_subnet_flow_logs_enabled.metadata.json +36 -0
  508. prowler/providers/oraclecloud/services/network/network_vcn_subnet_flow_logs_enabled/network_vcn_subnet_flow_logs_enabled.py +66 -0
  509. prowler/providers/oraclecloud/services/objectstorage/__init__.py +0 -0
  510. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_encrypted_with_cmk/__init__.py +0 -0
  511. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_encrypted_with_cmk/objectstorage_bucket_encrypted_with_cmk.metadata.json +37 -0
  512. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_encrypted_with_cmk/objectstorage_bucket_encrypted_with_cmk.py +40 -0
  513. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_logging_enabled/__init__.py +0 -0
  514. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_logging_enabled/objectstorage_bucket_logging_enabled.metadata.json +32 -0
  515. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_logging_enabled/objectstorage_bucket_logging_enabled.py +68 -0
  516. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_not_publicly_accessible/__init__.py +0 -0
  517. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_not_publicly_accessible/objectstorage_bucket_not_publicly_accessible.metadata.json +37 -0
  518. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_not_publicly_accessible/objectstorage_bucket_not_publicly_accessible.py +43 -0
  519. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_versioning_enabled/__init__.py +0 -0
  520. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_versioning_enabled/objectstorage_bucket_versioning_enabled.metadata.json +37 -0
  521. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_versioning_enabled/objectstorage_bucket_versioning_enabled.py +38 -0
  522. prowler/providers/oraclecloud/services/objectstorage/objectstorage_client.py +6 -0
  523. prowler/providers/oraclecloud/services/objectstorage/objectstorage_service.py +138 -0
  524. {prowler_cloud-5.12.3.dist-info → prowler_cloud-5.13.0.dist-info}/METADATA +9 -33
  525. {prowler_cloud-5.12.3.dist-info → prowler_cloud-5.13.0.dist-info}/RECORD +528 -280
  526. {prowler_cloud-5.12.3.dist-info → prowler_cloud-5.13.0.dist-info}/LICENSE +0 -0
  527. {prowler_cloud-5.12.3.dist-info → prowler_cloud-5.13.0.dist-info}/WHEEL +0 -0
  528. {prowler_cloud-5.12.3.dist-info → prowler_cloud-5.13.0.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,36 @@
1
+ {
2
+ "Provider": "oci",
3
+ "CheckID": "identity_user_db_passwords_rotated_90_days",
4
+ "CheckTitle": "Ensure user IAM Database Passwords rotate within 90 days",
5
+ "CheckType": [
6
+ "Software and Configuration Checks",
7
+ "Industry and Regulatory Standards",
8
+ "CIS OCI Foundations Benchmark"
9
+ ],
10
+ "ServiceName": "identity",
11
+ "SubServiceName": "",
12
+ "ResourceIdTemplate": "oci:identity:user",
13
+ "Severity": "medium",
14
+ "ResourceType": "OciIamUser",
15
+ "Description": "Database passwords should be rotated within 90 days.",
16
+ "Risk": "Not meeting this IAM requirement increases security risk.",
17
+ "RelatedUrl": "https://docs.oracle.com/en-us/iaas/Content/Identity/home.htm",
18
+ "Remediation": {
19
+ "Code": {
20
+ "CLI": "",
21
+ "NativeIaC": "",
22
+ "Other": "",
23
+ "Terraform": ""
24
+ },
25
+ "Recommendation": {
26
+ "Text": "Ensure user IAM Database Passwords rotate within 90 days",
27
+ "Url": "https://hub.prowler.com/check/oci/identity_user_db_passwords_rotated_90_days"
28
+ }
29
+ },
30
+ "Categories": [
31
+ "identity-access"
32
+ ],
33
+ "DependsOn": [],
34
+ "RelatedTo": [],
35
+ "Notes": ""
36
+ }
@@ -0,0 +1,49 @@
1
+ """Check Ensure user IAM Database Passwords rotate within 90 days."""
2
+
3
+ from datetime import datetime, timedelta, timezone
4
+
5
+ from prowler.lib.check.models import Check, Check_Report_OCI
6
+ from prowler.providers.oraclecloud.services.identity.identity_client import (
7
+ identity_client,
8
+ )
9
+
10
+
11
+ class identity_user_db_passwords_rotated_90_days(Check):
12
+ """Check Ensure user IAM Database Passwords rotate within 90 days."""
13
+
14
+ def execute(self) -> Check_Report_OCI:
15
+ """Execute the identity_user_db_passwords_rotated_90_days check."""
16
+ findings = []
17
+
18
+ # Calculate 90 days ago from now
19
+ current_time = datetime.now(timezone.utc)
20
+ max_age = current_time - timedelta(days=90)
21
+
22
+ # Check each user's database passwords
23
+ for user in identity_client.users:
24
+ if not user.db_passwords:
25
+ continue
26
+
27
+ for password in user.db_passwords:
28
+ report = Check_Report_OCI(
29
+ metadata=self.metadata(),
30
+ resource=password,
31
+ region=user.region,
32
+ resource_name=f"{user.name} - DB Password",
33
+ resource_id=password.id,
34
+ compartment_id=user.compartment_id,
35
+ )
36
+
37
+ # Check if password is older than 90 days
38
+ password_age_days = (current_time - password.time_created).days
39
+
40
+ if password.time_created < max_age:
41
+ report.status = "FAIL"
42
+ report.status_extended = f"User '{user.name}' has a database password created {password_age_days} days ago (on {password.time_created.strftime('%Y-%m-%d')}), which exceeds the 90-day rotation period."
43
+ else:
44
+ report.status = "PASS"
45
+ report.status_extended = f"User '{user.name}' has a database password created {password_age_days} days ago, which is within the 90-day rotation period."
46
+
47
+ findings.append(report)
48
+
49
+ return findings
@@ -0,0 +1,36 @@
1
+ {
2
+ "Provider": "oci",
3
+ "CheckID": "identity_user_mfa_enabled_console_access",
4
+ "CheckTitle": "Ensure MFA is enabled for all users with a console password",
5
+ "CheckType": [
6
+ "Software and Configuration Checks",
7
+ "Industry and Regulatory Standards",
8
+ "CIS OCI Foundations Benchmark"
9
+ ],
10
+ "ServiceName": "identity",
11
+ "SubServiceName": "",
12
+ "ResourceIdTemplate": "oci:identity:user",
13
+ "Severity": "high",
14
+ "ResourceType": "OciIamUser",
15
+ "Description": "Ensure MFA is enabled for all users with a console password. Multi-factor authentication is a method of authentication that requires the use of more than one factor to verify a user's identity.",
16
+ "Risk": "Enabling MFA provides increased security by requiring two methods of verification at sign-in. With MFA enabled, a user must possess a device that emits a time-sensitive key and have knowledge of a username and password.",
17
+ "RelatedUrl": "https://docs.oracle.com/en-us/iaas/Content/Identity/Tasks/usingmfa.htm",
18
+ "Remediation": {
19
+ "Code": {
20
+ "CLI": "",
21
+ "NativeIaC": "",
22
+ "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/oci/OCI-IAM/enable-mfa-for-user-accounts.html",
23
+ "Terraform": ""
24
+ },
25
+ "Recommendation": {
26
+ "Text": "Enable MFA for all users with console password access.",
27
+ "Url": "https://docs.oracle.com/en-us/iaas/Content/Identity/Tasks/usingmfa.htm"
28
+ }
29
+ },
30
+ "Categories": [
31
+ "identity-access"
32
+ ],
33
+ "DependsOn": [],
34
+ "RelatedTo": [],
35
+ "Notes": ""
36
+ }
@@ -0,0 +1,43 @@
1
+ """Check if MFA is enabled for all users with console password."""
2
+
3
+ from prowler.lib.check.models import Check, Check_Report_OCI
4
+ from prowler.providers.oraclecloud.services.identity.identity_client import (
5
+ identity_client,
6
+ )
7
+
8
+
9
+ class identity_user_mfa_enabled_console_access(Check):
10
+ """Check if MFA is enabled for all users with console password."""
11
+
12
+ def execute(self) -> Check_Report_OCI:
13
+ """Execute the identity_user_mfa_enabled_console_access check.
14
+
15
+ Returns:
16
+ List of Check_Report_OCI objects with findings
17
+ """
18
+ findings = []
19
+
20
+ for user in identity_client.users:
21
+ # Only check users with console access
22
+ if user.can_use_console_password:
23
+ report = Check_Report_OCI(
24
+ metadata=self.metadata(),
25
+ resource=user,
26
+ region=user.region,
27
+ resource_name=user.name,
28
+ resource_id=user.id,
29
+ compartment_id=user.compartment_id,
30
+ )
31
+
32
+ if user.is_mfa_activated:
33
+ report.status = "PASS"
34
+ report.status_extended = (
35
+ f"User {user.name} has MFA enabled for console access."
36
+ )
37
+ else:
38
+ report.status = "FAIL"
39
+ report.status_extended = f"User {user.name} has console password enabled but MFA is not activated."
40
+
41
+ findings.append(report)
42
+
43
+ return findings
@@ -0,0 +1,36 @@
1
+ {
2
+ "Provider": "oci",
3
+ "CheckID": "identity_user_valid_email_address",
4
+ "CheckTitle": "Ensure all OCI IAM user accounts have a valid and current email address",
5
+ "CheckType": [
6
+ "Software and Configuration Checks",
7
+ "Industry and Regulatory Standards",
8
+ "CIS OCI Foundations Benchmark"
9
+ ],
10
+ "ServiceName": "identity",
11
+ "SubServiceName": "",
12
+ "ResourceIdTemplate": "oci:identity:user",
13
+ "Severity": "low",
14
+ "ResourceType": "OciIamUser",
15
+ "Description": "All user accounts should have valid email addresses.",
16
+ "Risk": "Not meeting this IAM requirement increases security risk.",
17
+ "RelatedUrl": "https://docs.oracle.com/en-us/iaas/Content/Identity/home.htm",
18
+ "Remediation": {
19
+ "Code": {
20
+ "CLI": "",
21
+ "NativeIaC": "",
22
+ "Other": "",
23
+ "Terraform": ""
24
+ },
25
+ "Recommendation": {
26
+ "Text": "Ensure all OCI IAM user accounts have a valid and current email address",
27
+ "Url": "https://hub.prowler.com/check/oci/identity_user_valid_email_address"
28
+ }
29
+ },
30
+ "Categories": [
31
+ "identity-access"
32
+ ],
33
+ "DependsOn": [],
34
+ "RelatedTo": [],
35
+ "Notes": ""
36
+ }
@@ -0,0 +1,38 @@
1
+ """Check Ensure all OCI IAM user accounts have a valid and current email address."""
2
+
3
+ from prowler.lib.check.models import Check, Check_Report_OCI
4
+ from prowler.providers.oraclecloud.services.identity.identity_client import (
5
+ identity_client,
6
+ )
7
+
8
+
9
+ class identity_user_valid_email_address(Check):
10
+ """Check Ensure all OCI IAM user accounts have a valid and current email address."""
11
+
12
+ def execute(self) -> Check_Report_OCI:
13
+ """Execute the identity_user_valid_email_address check."""
14
+ findings = []
15
+
16
+ # Check users have valid email
17
+ for user in identity_client.users:
18
+ report = Check_Report_OCI(
19
+ metadata=self.metadata(),
20
+ resource=user,
21
+ region=user.region,
22
+ resource_name=user.name,
23
+ resource_id=user.id,
24
+ compartment_id=user.compartment_id,
25
+ )
26
+
27
+ if user.email and "@" in user.email:
28
+ report.status = "PASS"
29
+ report.status_extended = f"User {user.name} has a valid email address."
30
+ else:
31
+ report.status = "FAIL"
32
+ report.status_extended = (
33
+ f"User {user.name} does not have a valid email address."
34
+ )
35
+
36
+ findings.append(report)
37
+
38
+ return findings
@@ -0,0 +1,8 @@
1
+ """OCI Integration client."""
2
+
3
+ from prowler.providers.common.provider import Provider
4
+ from prowler.providers.oraclecloud.services.integration.integration_service import (
5
+ Integration,
6
+ )
7
+
8
+ integration_client = Integration(Provider.get_global_provider())
@@ -0,0 +1,36 @@
1
+ {
2
+ "Provider": "oci",
3
+ "CheckID": "integration_instance_access_restricted",
4
+ "CheckTitle": "Ensure Oracle Integration Cloud (OIC) access is restricted to allowed sources",
5
+ "CheckType": [
6
+ "Software and Configuration Checks",
7
+ "Industry and Regulatory Standards",
8
+ "CIS OCI Foundations Benchmark"
9
+ ],
10
+ "ServiceName": "integration",
11
+ "SubServiceName": "",
12
+ "ResourceIdTemplate": "oci:integration:instance",
13
+ "Severity": "high",
14
+ "ResourceType": "IntegrationInstance",
15
+ "Description": "Oracle Integration Cloud access should be restricted to allowed sources.",
16
+ "Risk": "Not meeting this network security requirement increases risk of unauthorized access.",
17
+ "RelatedUrl": "https://docs.oracle.com/en-us/iaas/Content/Network/home.htm",
18
+ "Remediation": {
19
+ "Code": {
20
+ "CLI": "",
21
+ "NativeIaC": "",
22
+ "Other": "",
23
+ "Terraform": ""
24
+ },
25
+ "Recommendation": {
26
+ "Text": "Ensure Oracle Integration Cloud (OIC) access is restricted to allowed sources",
27
+ "Url": "https://hub.prowler.com/check/oci/integration_instance_access_restricted"
28
+ }
29
+ },
30
+ "Categories": [
31
+ "network-security"
32
+ ],
33
+ "DependsOn": [],
34
+ "RelatedTo": [],
35
+ "Notes": ""
36
+ }
@@ -0,0 +1,48 @@
1
+ """Check Ensure Oracle Integration Cloud (OIC) access is restricted to allowed sources."""
2
+
3
+ from prowler.lib.check.models import Check, Check_Report_OCI
4
+ from prowler.providers.oraclecloud.services.integration.integration_client import (
5
+ integration_client,
6
+ )
7
+
8
+
9
+ class integration_instance_access_restricted(Check):
10
+ """Check Ensure Oracle Integration Cloud (OIC) access is restricted to allowed sources."""
11
+
12
+ def execute(self) -> Check_Report_OCI:
13
+ """Execute the integration_instance_access_restricted check."""
14
+ findings = []
15
+
16
+ for instance in integration_client.integration_instances:
17
+ report = Check_Report_OCI(
18
+ metadata=self.metadata(),
19
+ resource=instance,
20
+ region=instance.region,
21
+ resource_name=instance.display_name,
22
+ resource_id=instance.id,
23
+ compartment_id=instance.compartment_id,
24
+ )
25
+ # Check if instance has no network endpoint details (unrestricted access)
26
+ if not instance.network_endpoint_details:
27
+ report.status = "FAIL"
28
+ report.status_extended = f"Integration instance {instance.display_name} has no network endpoint details configured (unrestricted access)."
29
+ # Check if 0.0.0.0/0 is in network endpoint details
30
+ elif "0.0.0.0/0" in str(instance.network_endpoint_details):
31
+ report.status = "FAIL"
32
+ report.status_extended = f"Integration instance {instance.display_name} has unrestricted access with 0.0.0.0/0 in network endpoint details."
33
+ # Check if PUBLIC endpoint with no allowlists
34
+ elif (
35
+ instance.network_endpoint_details.get("network_endpoint_type")
36
+ == "PUBLIC"
37
+ and not instance.network_endpoint_details.get("allowlisted_http_ips")
38
+ and not instance.network_endpoint_details.get("allowlisted_http_vcns")
39
+ ):
40
+ report.status = "FAIL"
41
+ report.status_extended = f"Integration instance {instance.display_name} has public access with no IP or VCN allowlists configured."
42
+ else:
43
+ report.status = "PASS"
44
+ report.status_extended = f"Integration instance {instance.display_name} has restricted network access configured."
45
+
46
+ findings.append(report)
47
+
48
+ return findings
@@ -0,0 +1,92 @@
1
+ """OCI Integration service."""
2
+
3
+ from typing import Optional
4
+
5
+ import oci
6
+ from pydantic import BaseModel
7
+
8
+ from prowler.lib.logger import logger
9
+ from prowler.providers.oraclecloud.lib.service.service import OCIService
10
+
11
+
12
+ class Integration(OCIService):
13
+ """OCI Integration service class."""
14
+
15
+ def __init__(self, provider):
16
+ """Initialize Integration service."""
17
+ super().__init__("integration", provider)
18
+ self.integration_instances = []
19
+ self.__threading_call_by_region_and_compartment__(
20
+ self.__list_integration_instances__
21
+ )
22
+
23
+ def __get_client__(self, region: str) -> oci.integration.IntegrationInstanceClient:
24
+ """Get OCI Integration client for a region."""
25
+ return self._create_oci_client(
26
+ oci.integration.IntegrationInstanceClient,
27
+ config_overrides={"region": region},
28
+ )
29
+
30
+ def __list_integration_instances__(self, region, compartment):
31
+ """List all integration instances in a compartment."""
32
+ try:
33
+ region_key = region.key if hasattr(region, "key") else str(region)
34
+ integration_client = self.__get_client__(region_key)
35
+
36
+ instances = oci.pagination.list_call_get_all_results(
37
+ integration_client.list_integration_instances,
38
+ compartment_id=compartment.id,
39
+ ).data
40
+
41
+ for instance in instances:
42
+ # Only include ACTIVE or INACTIVE or UPDATING instances
43
+ if instance.lifecycle_state in ["ACTIVE", "INACTIVE", "UPDATING"]:
44
+ # Extract network endpoint details and convert to dict
45
+ network_endpoint_details = None
46
+ if (
47
+ hasattr(instance, "network_endpoint_details")
48
+ and instance.network_endpoint_details
49
+ ):
50
+ network_endpoint_details = oci.util.to_dict(
51
+ instance.network_endpoint_details
52
+ )
53
+
54
+ self.integration_instances.append(
55
+ IntegrationInstance(
56
+ id=instance.id,
57
+ display_name=instance.display_name,
58
+ compartment_id=instance.compartment_id,
59
+ region=region_key,
60
+ lifecycle_state=instance.lifecycle_state,
61
+ network_endpoint_details=network_endpoint_details,
62
+ instance_url=getattr(instance, "instance_url", None),
63
+ integration_instance_type=getattr(
64
+ instance, "integration_instance_type", None
65
+ ),
66
+ is_byol=getattr(instance, "is_byol", None),
67
+ message_packs=getattr(instance, "message_packs", None),
68
+ )
69
+ )
70
+
71
+ except Exception as error:
72
+ logger.error(
73
+ f"{region_key if 'region_key' in locals() else region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
74
+ )
75
+
76
+
77
+ class IntegrationInstance(BaseModel):
78
+ """OCI Integration Instance model."""
79
+
80
+ id: str
81
+ display_name: str
82
+ compartment_id: str
83
+ region: str
84
+ lifecycle_state: str
85
+ network_endpoint_details: Optional[dict]
86
+ instance_url: Optional[str] = None
87
+ integration_instance_type: Optional[str] = None
88
+ is_byol: Optional[bool] = None
89
+ message_packs: Optional[int] = None
90
+
91
+ class Config:
92
+ arbitrary_types_allowed = True
File without changes
@@ -0,0 +1,4 @@
1
+ from prowler.providers.common.provider import Provider
2
+ from prowler.providers.oraclecloud.services.kms.kms_service import Kms
3
+
4
+ kms_client = Kms(Provider.get_global_provider())
@@ -0,0 +1,36 @@
1
+ {
2
+ "Provider": "oci",
3
+ "CheckID": "kms_key_rotation_enabled",
4
+ "CheckTitle": "Ensure customer created Customer Managed Key (CMK) is rotated at least annually",
5
+ "CheckType": [
6
+ "Software and Configuration Checks",
7
+ "Industry and Regulatory Standards",
8
+ "CIS OCI Foundations Benchmark"
9
+ ],
10
+ "ServiceName": "kms",
11
+ "SubServiceName": "",
12
+ "ResourceIdTemplate": "oci:kms:resource",
13
+ "Severity": "medium",
14
+ "ResourceType": "OciKmsResource",
15
+ "Description": "Customer Managed Keys should be rotated at least annually to reduce the risk of key compromise.",
16
+ "Risk": "Not meeting this requirement increases security risk.",
17
+ "RelatedUrl": "https://docs.oracle.com/en-us/iaas/",
18
+ "Remediation": {
19
+ "Code": {
20
+ "CLI": "",
21
+ "NativeIaC": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/oci/OCI-KMS/rotate-customer-managed-keys.html",
22
+ "Other": "",
23
+ "Terraform": ""
24
+ },
25
+ "Recommendation": {
26
+ "Text": "Ensure customer created Customer Managed Key (CMK) is rotated at least annually",
27
+ "Url": "https://hub.prowler.com/check/oci/kms_key_rotation_enabled"
28
+ }
29
+ },
30
+ "Categories": [
31
+ "security-configuration"
32
+ ],
33
+ "DependsOn": [],
34
+ "RelatedTo": [],
35
+ "Notes": ""
36
+ }
@@ -0,0 +1,37 @@
1
+ """Check Ensure customer created Customer Managed Key (CMK) is rotated at least annually."""
2
+
3
+ from prowler.lib.check.models import Check, Check_Report_OCI
4
+ from prowler.providers.oraclecloud.services.kms.kms_client import kms_client
5
+
6
+
7
+ class kms_key_rotation_enabled(Check):
8
+ """Check Ensure customer created Customer Managed Key (CMK) is rotated at least annually."""
9
+
10
+ def execute(self) -> Check_Report_OCI:
11
+ """Execute the kms_key_rotation_enabled check."""
12
+ findings = []
13
+
14
+ for key in kms_client.keys:
15
+ report = Check_Report_OCI(
16
+ metadata=self.metadata(),
17
+ resource=key,
18
+ region=key.region,
19
+ resource_name=key.name,
20
+ resource_id=key.id,
21
+ compartment_id=key.compartment_id,
22
+ )
23
+
24
+ # Check if auto-rotation is enabled OR if rotation interval is set and <= 365 days
25
+ if key.is_auto_rotation_enabled or (
26
+ key.rotation_interval_in_days is not None
27
+ and key.rotation_interval_in_days <= 365
28
+ ):
29
+ report.status = "PASS"
30
+ report.status_extended = f"KMS key '{key.name}' has rotation enabled (auto-rotation: {key.is_auto_rotation_enabled}, interval: {key.rotation_interval_in_days} days)."
31
+ else:
32
+ report.status = "FAIL"
33
+ report.status_extended = f"KMS key '{key.name}' does not have rotation enabled or rotation interval exceeds 365 days."
34
+
35
+ findings.append(report)
36
+
37
+ return findings
@@ -0,0 +1,136 @@
1
+ """OCI Kms Service Module."""
2
+
3
+ from typing import Optional
4
+
5
+ import oci
6
+ from pydantic import BaseModel
7
+
8
+ from prowler.lib.logger import logger
9
+ from prowler.providers.oraclecloud.lib.service.service import OCIService
10
+
11
+
12
+ class Kms(OCIService):
13
+ """OCI Kms Service class."""
14
+
15
+ def __init__(self, provider):
16
+ """Initialize the Kms service."""
17
+ super().__init__("kms", provider)
18
+ self.keys = []
19
+ self.__threading_call__(self.__list_keys__)
20
+
21
+ def __get_client__(self, region):
22
+ """Get the Kms client for a region."""
23
+ client_region = self.regional_clients.get(region)
24
+ if client_region:
25
+ return self._create_oci_client(oci.key_management.KmsVaultClient)
26
+ return None
27
+
28
+ def __list_keys__(self, regional_client):
29
+ """List all keys."""
30
+ try:
31
+ vault_client = self.__get_client__(regional_client.region)
32
+ if not vault_client:
33
+ return
34
+
35
+ logger.info(f"Kms - Listing keys in {regional_client.region}...")
36
+
37
+ for compartment in self.audited_compartments:
38
+ try:
39
+ # First, list all vaults in this compartment
40
+ vaults = oci.pagination.list_call_get_all_results(
41
+ vault_client.list_vaults, compartment_id=compartment.id
42
+ ).data
43
+
44
+ for vault in vaults:
45
+ # Only process vaults in ACTIVE state
46
+ if vault.lifecycle_state == "ACTIVE":
47
+ # Get the management endpoint for this vault
48
+ management_endpoint = vault.management_endpoint
49
+
50
+ # Create KMS management client for this vault's endpoint
51
+ # KmsManagementClient requires service_endpoint, so create it directly
52
+ if self.session_signer:
53
+ kms_management_client = (
54
+ oci.key_management.KmsManagementClient(
55
+ config=self.session_config,
56
+ signer=self.session_signer,
57
+ service_endpoint=management_endpoint,
58
+ )
59
+ )
60
+ else:
61
+ kms_management_client = (
62
+ oci.key_management.KmsManagementClient(
63
+ config=self.session_config,
64
+ service_endpoint=management_endpoint,
65
+ )
66
+ )
67
+
68
+ # List keys in this vault
69
+ keys = oci.pagination.list_call_get_all_results(
70
+ kms_management_client.list_keys,
71
+ compartment_id=compartment.id,
72
+ ).data
73
+
74
+ for key_summary in keys:
75
+ if key_summary.lifecycle_state == "ENABLED":
76
+ # Get full key details to get rotation info
77
+ key_details = kms_management_client.get_key(
78
+ key_id=key_summary.id
79
+ ).data
80
+
81
+ self.keys.append(
82
+ Key(
83
+ id=key_details.id,
84
+ name=(
85
+ key_details.display_name
86
+ if hasattr(key_details, "display_name")
87
+ else key_details.id
88
+ ),
89
+ compartment_id=compartment.id,
90
+ region=regional_client.region,
91
+ lifecycle_state=key_details.lifecycle_state,
92
+ is_auto_rotation_enabled=(
93
+ key_details.is_auto_rotation_enabled
94
+ if hasattr(
95
+ key_details,
96
+ "is_auto_rotation_enabled",
97
+ )
98
+ else False
99
+ ),
100
+ rotation_interval_in_days=(
101
+ key_details.auto_key_rotation_details.rotation_interval_in_days
102
+ if hasattr(
103
+ key_details,
104
+ "auto_key_rotation_details",
105
+ )
106
+ and key_details.auto_key_rotation_details
107
+ and hasattr(
108
+ key_details.auto_key_rotation_details,
109
+ "rotation_interval_in_days",
110
+ )
111
+ else None
112
+ ),
113
+ )
114
+ )
115
+ except Exception as error:
116
+ logger.error(
117
+ f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
118
+ )
119
+ continue
120
+ except Exception as error:
121
+ logger.error(
122
+ f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
123
+ )
124
+
125
+
126
+ # Service Models
127
+ class Key(BaseModel):
128
+ """Key model."""
129
+
130
+ id: str
131
+ name: str
132
+ compartment_id: str
133
+ region: str
134
+ lifecycle_state: str
135
+ is_auto_rotation_enabled: bool = False
136
+ rotation_interval_in_days: Optional[int] = None