prowler-cloud 5.14.1__py3-none-any.whl → 5.15.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.
- dashboard/assets/images/providers/alibabacloud_provider.png +0 -0
- dashboard/compliance/cis_2_0_alibabacloud.py +24 -0
- dashboard/lib/layouts.py +1 -0
- dashboard/pages/compliance.py +8 -2
- dashboard/pages/overview.py +52 -1
- prowler/CHANGELOG.md +59 -20
- prowler/__main__.py +40 -0
- prowler/compliance/alibabacloud/__init__.py +0 -0
- prowler/compliance/alibabacloud/cis_2.0_alibabacloud.json +1833 -0
- prowler/compliance/aws/iso27001_2013_aws.json +158 -158
- prowler/compliance/aws/soc2_aws.json +100 -0
- prowler/compliance/azure/rbi_cyber_security_framework_azure.json +248 -0
- prowler/compliance/azure/soc2_azure.json +87 -1
- prowler/compliance/gcp/soc2_gcp.json +82 -1
- prowler/config/config.py +2 -1
- prowler/lib/check/check.py +47 -1
- prowler/lib/check/models.py +23 -0
- prowler/lib/check/utils.py +1 -1
- prowler/lib/cli/parser.py +3 -2
- prowler/lib/outputs/compliance/cis/cis_alibabacloud.py +106 -0
- prowler/lib/outputs/compliance/cis/models.py +35 -0
- prowler/lib/outputs/finding.py +16 -0
- prowler/lib/outputs/html/html.py +67 -0
- prowler/lib/outputs/outputs.py +2 -0
- prowler/lib/outputs/summary_table.py +3 -0
- prowler/providers/alibabacloud/__init__.py +0 -0
- prowler/providers/alibabacloud/alibabacloud_provider.py +872 -0
- prowler/providers/alibabacloud/config.py +41 -0
- prowler/providers/alibabacloud/exceptions/__init__.py +0 -0
- prowler/providers/alibabacloud/exceptions/exceptions.py +116 -0
- prowler/providers/alibabacloud/lib/__init__.py +0 -0
- prowler/providers/alibabacloud/lib/arguments/__init__.py +0 -0
- prowler/providers/alibabacloud/lib/arguments/arguments.py +58 -0
- prowler/providers/alibabacloud/lib/mutelist/__init__.py +0 -0
- prowler/providers/alibabacloud/lib/mutelist/mutelist.py +175 -0
- prowler/providers/alibabacloud/lib/service/__init__.py +0 -0
- prowler/providers/alibabacloud/lib/service/service.py +113 -0
- prowler/providers/alibabacloud/models.py +266 -0
- prowler/providers/alibabacloud/services/__init__.py +0 -0
- prowler/providers/alibabacloud/services/actiontrail/__init__.py +0 -0
- prowler/providers/alibabacloud/services/actiontrail/actiontrail_client.py +6 -0
- prowler/providers/alibabacloud/services/actiontrail/actiontrail_multi_region_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/actiontrail/actiontrail_multi_region_enabled/actiontrail_multi_region_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/actiontrail/actiontrail_multi_region_enabled/actiontrail_multi_region_enabled.py +81 -0
- prowler/providers/alibabacloud/services/actiontrail/actiontrail_oss_bucket_not_publicly_accessible/__init__.py +0 -0
- prowler/providers/alibabacloud/services/actiontrail/actiontrail_oss_bucket_not_publicly_accessible/actiontrail_oss_bucket_not_publicly_accessible.metadata.json +40 -0
- prowler/providers/alibabacloud/services/actiontrail/actiontrail_oss_bucket_not_publicly_accessible/actiontrail_oss_bucket_not_publicly_accessible.py +119 -0
- prowler/providers/alibabacloud/services/actiontrail/actiontrail_service.py +110 -0
- prowler/providers/alibabacloud/services/cs/__init__.py +0 -0
- prowler/providers/alibabacloud/services/cs/cs_client.py +4 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_cloudmonitor_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_cloudmonitor_enabled/cs_kubernetes_cloudmonitor_enabled.metadata.json +38 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_cloudmonitor_enabled/cs_kubernetes_cloudmonitor_enabled.py +26 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_cluster_check_recent/__init__.py +0 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_cluster_check_recent/cs_kubernetes_cluster_check_recent.metadata.json +38 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_cluster_check_recent/cs_kubernetes_cluster_check_recent.py +62 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_cluster_check_weekly/cs_kubernetes_cluster_check_weekly.metadata.json +38 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_cluster_check_weekly/cs_kubernetes_cluster_check_weekly.py +62 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_dashboard_disabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_dashboard_disabled/cs_kubernetes_dashboard_disabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_dashboard_disabled/cs_kubernetes_dashboard_disabled.py +26 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_eni_multiple_ip_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_eni_multiple_ip_enabled/cs_kubernetes_eni_multiple_ip_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_eni_multiple_ip_enabled/cs_kubernetes_eni_multiple_ip_enabled.py +26 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_log_service_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_log_service_enabled/cs_kubernetes_log_service_enabled.metadata.json +40 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_log_service_enabled/cs_kubernetes_log_service_enabled.py +26 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_network_policy_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_network_policy_enabled/cs_kubernetes_network_policy_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_network_policy_enabled/cs_kubernetes_network_policy_enabled.py +26 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_private_cluster_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_private_cluster_enabled/cs_kubernetes_private_cluster_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_private_cluster_enabled/cs_kubernetes_private_cluster_enabled.py +26 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_rbac_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_rbac_enabled/cs_kubernetes_rbac_enabled.metadata.json +40 -0
- prowler/providers/alibabacloud/services/cs/cs_kubernetes_rbac_enabled/cs_kubernetes_rbac_enabled.py +28 -0
- prowler/providers/alibabacloud/services/cs/cs_service.py +354 -0
- prowler/providers/alibabacloud/services/ecs/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ecs/ecs_attached_disk_encrypted/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ecs/ecs_attached_disk_encrypted/ecs_attached_disk_encrypted.metadata.json +38 -0
- prowler/providers/alibabacloud/services/ecs/ecs_attached_disk_encrypted/ecs_attached_disk_encrypted.py +38 -0
- prowler/providers/alibabacloud/services/ecs/ecs_client.py +4 -0
- prowler/providers/alibabacloud/services/ecs/ecs_instance_endpoint_protection_installed/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ecs/ecs_instance_endpoint_protection_installed/ecs_instance_endpoint_protection_installed.metadata.json +41 -0
- prowler/providers/alibabacloud/services/ecs/ecs_instance_endpoint_protection_installed/ecs_instance_endpoint_protection_installed.py +47 -0
- prowler/providers/alibabacloud/services/ecs/ecs_instance_latest_os_patches_applied/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ecs/ecs_instance_latest_os_patches_applied/ecs_instance_latest_os_patches_applied.metadata.json +38 -0
- prowler/providers/alibabacloud/services/ecs/ecs_instance_latest_os_patches_applied/ecs_instance_latest_os_patches_applied.py +50 -0
- prowler/providers/alibabacloud/services/ecs/ecs_instance_no_legacy_network/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ecs/ecs_instance_no_legacy_network/ecs_instance_no_legacy_network.metadata.json +38 -0
- prowler/providers/alibabacloud/services/ecs/ecs_instance_no_legacy_network/ecs_instance_no_legacy_network.py +34 -0
- prowler/providers/alibabacloud/services/ecs/ecs_securitygroup_restrict_rdp_internet/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ecs/ecs_securitygroup_restrict_rdp_internet/ecs_securitygroup_restrict_rdp_internet.metadata.json +39 -0
- prowler/providers/alibabacloud/services/ecs/ecs_securitygroup_restrict_rdp_internet/ecs_securitygroup_restrict_rdp_internet.py +68 -0
- prowler/providers/alibabacloud/services/ecs/ecs_securitygroup_restrict_ssh_internet/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ecs/ecs_securitygroup_restrict_ssh_internet/ecs_securitygroup_restrict_ssh_internet.metadata.json +39 -0
- prowler/providers/alibabacloud/services/ecs/ecs_securitygroup_restrict_ssh_internet/ecs_securitygroup_restrict_ssh_internet.py +68 -0
- prowler/providers/alibabacloud/services/ecs/ecs_service.py +380 -0
- prowler/providers/alibabacloud/services/ecs/ecs_unattached_disk_encrypted/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ecs/ecs_unattached_disk_encrypted/ecs_unattached_disk_encrypted.metadata.json +38 -0
- prowler/providers/alibabacloud/services/ecs/ecs_unattached_disk_encrypted/ecs_unattached_disk_encrypted.py +38 -0
- prowler/providers/alibabacloud/services/ecs/lib/security_groups.py +23 -0
- prowler/providers/alibabacloud/services/oss/__init__.py +0 -0
- prowler/providers/alibabacloud/services/oss/oss_bucket_logging_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/oss/oss_bucket_logging_enabled/oss_bucket_logging_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/oss/oss_bucket_logging_enabled/oss_bucket_logging_enabled.py +37 -0
- prowler/providers/alibabacloud/services/oss/oss_bucket_not_publicly_accessible/__init__.py +0 -0
- prowler/providers/alibabacloud/services/oss/oss_bucket_not_publicly_accessible/oss_bucket_not_publicly_accessible.metadata.json +39 -0
- prowler/providers/alibabacloud/services/oss/oss_bucket_not_publicly_accessible/oss_bucket_not_publicly_accessible.py +89 -0
- prowler/providers/alibabacloud/services/oss/oss_bucket_secure_transport_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/oss/oss_bucket_secure_transport_enabled/oss_bucket_secure_transport_enabled.metadata.json +38 -0
- prowler/providers/alibabacloud/services/oss/oss_bucket_secure_transport_enabled/oss_bucket_secure_transport_enabled.py +87 -0
- prowler/providers/alibabacloud/services/oss/oss_client.py +4 -0
- prowler/providers/alibabacloud/services/oss/oss_service.py +317 -0
- prowler/providers/alibabacloud/services/ram/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ram/ram_client.py +4 -0
- prowler/providers/alibabacloud/services/ram/ram_no_root_access_key/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ram/ram_no_root_access_key/ram_no_root_access_key.metadata.json +39 -0
- prowler/providers/alibabacloud/services/ram/ram_no_root_access_key/ram_no_root_access_key.py +33 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_lowercase/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_lowercase/ram_password_policy_lowercase.metadata.json +39 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_lowercase/ram_password_policy_lowercase.py +32 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_max_login_attempts/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_max_login_attempts/ram_password_policy_max_login_attempts.metadata.json +39 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_max_login_attempts/ram_password_policy_max_login_attempts.py +32 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_max_password_age/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_max_password_age/ram_password_policy_max_password_age.metadata.json +39 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_max_password_age/ram_password_policy_max_password_age.py +35 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_minimum_length/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_minimum_length/ram_password_policy_minimum_length.metadata.json +39 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_minimum_length/ram_password_policy_minimum_length.py +30 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_number/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_number/ram_password_policy_number.metadata.json +39 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_password_reuse_prevention/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_password_reuse_prevention/ram_password_policy_password_reuse_prevention.metadata.json +39 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_password_reuse_prevention/ram_password_policy_password_reuse_prevention.py +35 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_symbol/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_symbol/ram_password_policy_symbol.metadata.json +39 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_symbol/ram_password_policy_symbol.py +34 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_uppercase/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_uppercase/ram_password_policy_uppercase.metadata.json +39 -0
- prowler/providers/alibabacloud/services/ram/ram_password_policy_uppercase/ram_password_policy_uppercase.py +32 -0
- prowler/providers/alibabacloud/services/ram/ram_policy_attached_only_to_group_or_roles/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ram/ram_policy_attached_only_to_group_or_roles/ram_policy_attached_only_to_group_or_roles.metadata.json +39 -0
- prowler/providers/alibabacloud/services/ram/ram_policy_attached_only_to_group_or_roles/ram_policy_attached_only_to_group_or_roles.py +35 -0
- prowler/providers/alibabacloud/services/ram/ram_policy_no_administrative_privileges/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ram/ram_policy_no_administrative_privileges/ram_policy_no_administrative_privileges.metadata.json +39 -0
- prowler/providers/alibabacloud/services/ram/ram_policy_no_administrative_privileges/ram_policy_no_administrative_privileges.py +73 -0
- prowler/providers/alibabacloud/services/ram/ram_rotate_access_key_90_days/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ram/ram_rotate_access_key_90_days/ram_rotate_access_key_90_days.metadata.json +39 -0
- prowler/providers/alibabacloud/services/ram/ram_rotate_access_key_90_days/ram_rotate_access_key_90_days.py +58 -0
- prowler/providers/alibabacloud/services/ram/ram_service.py +478 -0
- prowler/providers/alibabacloud/services/ram/ram_user_console_access_unused/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ram/ram_user_console_access_unused/ram_user_console_access_unused.metadata.json +39 -0
- prowler/providers/alibabacloud/services/ram/ram_user_console_access_unused/ram_user_console_access_unused.py +56 -0
- prowler/providers/alibabacloud/services/ram/ram_user_mfa_enabled_console_access/__init__.py +0 -0
- prowler/providers/alibabacloud/services/ram/ram_user_mfa_enabled_console_access/ram_user_mfa_enabled_console_access.metadata.json +39 -0
- prowler/providers/alibabacloud/services/ram/ram_user_mfa_enabled_console_access/ram_user_mfa_enabled_console_access.py +36 -0
- prowler/providers/alibabacloud/services/rds/__init__.py +0 -0
- prowler/providers/alibabacloud/services/rds/rds_client.py +4 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_no_public_access_whitelist/__init__.py +0 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_no_public_access_whitelist/rds_instance_no_public_access_whitelist.metadata.json +39 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_no_public_access_whitelist/rds_instance_no_public_access_whitelist.py +36 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_postgresql_log_connections_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_postgresql_log_connections_enabled/rds_instance_postgresql_log_connections_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_postgresql_log_connections_enabled/rds_instance_postgresql_log_connections_enabled.py +29 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_postgresql_log_disconnections_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_postgresql_log_disconnections_enabled/rds_instance_postgresql_log_disconnections_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_postgresql_log_disconnections_enabled/rds_instance_postgresql_log_disconnections_enabled.py +29 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_postgresql_log_duration_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_postgresql_log_duration_enabled/rds_instance_postgresql_log_duration_enabled.metadata.json +38 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_postgresql_log_duration_enabled/rds_instance_postgresql_log_duration_enabled.py +29 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_sql_audit_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_sql_audit_enabled/rds_instance_sql_audit_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_sql_audit_enabled/rds_instance_sql_audit_enabled.py +32 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_sql_audit_retention/__init__.py +0 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_sql_audit_retention/rds_instance_sql_audit_retention.metadata.json +39 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_sql_audit_retention/rds_instance_sql_audit_retention.py +41 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_ssl_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_ssl_enabled/rds_instance_ssl_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_ssl_enabled/rds_instance_ssl_enabled.py +30 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_tde_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_tde_enabled/rds_instance_tde_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_tde_enabled/rds_instance_tde_enabled.py +32 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_tde_key_custom/__init__.py +0 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_tde_key_custom/rds_instance_tde_key_custom.metadata.json +39 -0
- prowler/providers/alibabacloud/services/rds/rds_instance_tde_key_custom/rds_instance_tde_key_custom.py +38 -0
- prowler/providers/alibabacloud/services/rds/rds_service.py +274 -0
- prowler/providers/alibabacloud/services/securitycenter/__init__.py +0 -0
- prowler/providers/alibabacloud/services/securitycenter/securitycenter_advanced_or_enterprise_edition/__init__.py +0 -0
- prowler/providers/alibabacloud/services/securitycenter/securitycenter_advanced_or_enterprise_edition/securitycenter_advanced_or_enterprise_edition.metadata.json +43 -0
- prowler/providers/alibabacloud/services/securitycenter/securitycenter_advanced_or_enterprise_edition/securitycenter_advanced_or_enterprise_edition.py +48 -0
- prowler/providers/alibabacloud/services/securitycenter/securitycenter_all_assets_agent_installed/__init__.py +0 -0
- prowler/providers/alibabacloud/services/securitycenter/securitycenter_all_assets_agent_installed/securitycenter_all_assets_agent_installed.metadata.json +42 -0
- prowler/providers/alibabacloud/services/securitycenter/securitycenter_all_assets_agent_installed/securitycenter_all_assets_agent_installed.py +48 -0
- prowler/providers/alibabacloud/services/securitycenter/securitycenter_client.py +6 -0
- prowler/providers/alibabacloud/services/securitycenter/securitycenter_notification_enabled_high_risk/__init__.py +0 -0
- prowler/providers/alibabacloud/services/securitycenter/securitycenter_notification_enabled_high_risk/securitycenter_notification_enabled_high_risk.metadata.json +42 -0
- prowler/providers/alibabacloud/services/securitycenter/securitycenter_notification_enabled_high_risk/securitycenter_notification_enabled_high_risk.py +65 -0
- prowler/providers/alibabacloud/services/securitycenter/securitycenter_service.py +394 -0
- prowler/providers/alibabacloud/services/securitycenter/securitycenter_vulnerability_scan_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/securitycenter/securitycenter_vulnerability_scan_enabled/securitycenter_vulnerability_scan_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/securitycenter/securitycenter_vulnerability_scan_enabled/securitycenter_vulnerability_scan_enabled.py +68 -0
- prowler/providers/alibabacloud/services/sls/__init__.py +0 -0
- prowler/providers/alibabacloud/services/sls/sls_client.py +4 -0
- prowler/providers/alibabacloud/services/sls/sls_cloud_firewall_changes_alert_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/sls/sls_cloud_firewall_changes_alert_enabled/sls_cloud_firewall_changes_alert_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/sls/sls_cloud_firewall_changes_alert_enabled/sls_cloud_firewall_changes_alert_enabled.py +50 -0
- prowler/providers/alibabacloud/services/sls/sls_customer_created_cmk_changes_alert_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/sls/sls_customer_created_cmk_changes_alert_enabled/sls_customer_created_cmk_changes_alert_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/sls/sls_customer_created_cmk_changes_alert_enabled/sls_customer_created_cmk_changes_alert_enabled.py +48 -0
- prowler/providers/alibabacloud/services/sls/sls_logstore_retention_period/__init__.py +0 -0
- prowler/providers/alibabacloud/services/sls/sls_logstore_retention_period/sls_logstore_retention_period.metadata.json +38 -0
- prowler/providers/alibabacloud/services/sls/sls_logstore_retention_period/sls_logstore_retention_period.py +32 -0
- prowler/providers/alibabacloud/services/sls/sls_management_console_authentication_failures_alert_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/sls/sls_management_console_authentication_failures_alert_enabled/sls_management_console_authentication_failures_alert_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/sls/sls_management_console_authentication_failures_alert_enabled/sls_management_console_authentication_failures_alert_enabled.py +44 -0
- prowler/providers/alibabacloud/services/sls/sls_management_console_signin_without_mfa_alert_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/sls/sls_management_console_signin_without_mfa_alert_enabled/sls_management_console_signin_without_mfa_alert_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/sls/sls_management_console_signin_without_mfa_alert_enabled/sls_management_console_signin_without_mfa_alert_enabled.py +49 -0
- prowler/providers/alibabacloud/services/sls/sls_oss_bucket_policy_changes_alert_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/sls/sls_oss_bucket_policy_changes_alert_enabled/sls_oss_bucket_policy_changes_alert_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/sls/sls_oss_bucket_policy_changes_alert_enabled/sls_oss_bucket_policy_changes_alert_enabled.py +57 -0
- prowler/providers/alibabacloud/services/sls/sls_oss_permission_changes_alert_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/sls/sls_oss_permission_changes_alert_enabled/sls_oss_permission_changes_alert_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/sls/sls_oss_permission_changes_alert_enabled/sls_oss_permission_changes_alert_enabled.py +48 -0
- prowler/providers/alibabacloud/services/sls/sls_ram_role_changes_alert_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/sls/sls_ram_role_changes_alert_enabled/sls_ram_role_changes_alert_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/sls/sls_ram_role_changes_alert_enabled/sls_ram_role_changes_alert_enabled.py +54 -0
- prowler/providers/alibabacloud/services/sls/sls_rds_instance_configuration_changes_alert_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/sls/sls_rds_instance_configuration_changes_alert_enabled/sls_rds_instance_configuration_changes_alert_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/sls/sls_rds_instance_configuration_changes_alert_enabled/sls_rds_instance_configuration_changes_alert_enabled.py +72 -0
- prowler/providers/alibabacloud/services/sls/sls_root_account_usage_alert_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/sls/sls_root_account_usage_alert_enabled/sls_root_account_usage_alert_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/sls/sls_root_account_usage_alert_enabled/sls_root_account_usage_alert_enabled.py +50 -0
- prowler/providers/alibabacloud/services/sls/sls_security_group_changes_alert_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/sls/sls_security_group_changes_alert_enabled/sls_security_group_changes_alert_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/sls/sls_security_group_changes_alert_enabled/sls_security_group_changes_alert_enabled.py +56 -0
- prowler/providers/alibabacloud/services/sls/sls_service.py +137 -0
- prowler/providers/alibabacloud/services/sls/sls_unauthorized_api_calls_alert_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/sls/sls_unauthorized_api_calls_alert_enabled/sls_unauthorized_api_calls_alert_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/sls/sls_unauthorized_api_calls_alert_enabled/sls_unauthorized_api_calls_alert_enabled.py +56 -0
- prowler/providers/alibabacloud/services/sls/sls_vpc_changes_alert_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/sls/sls_vpc_changes_alert_enabled/sls_vpc_changes_alert_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/sls/sls_vpc_changes_alert_enabled/sls_vpc_changes_alert_enabled.py +57 -0
- prowler/providers/alibabacloud/services/sls/sls_vpc_network_route_changes_alert_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/sls/sls_vpc_network_route_changes_alert_enabled/sls_vpc_network_route_changes_alert_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/sls/sls_vpc_network_route_changes_alert_enabled/sls_vpc_network_route_changes_alert_enabled.py +52 -0
- prowler/providers/alibabacloud/services/vpc/__init__.py +0 -0
- prowler/providers/alibabacloud/services/vpc/vpc_client.py +4 -0
- prowler/providers/alibabacloud/services/vpc/vpc_flow_logs_enabled/__init__.py +0 -0
- prowler/providers/alibabacloud/services/vpc/vpc_flow_logs_enabled/vpc_flow_logs_enabled.metadata.json +39 -0
- prowler/providers/alibabacloud/services/vpc/vpc_flow_logs_enabled/vpc_flow_logs_enabled.py +30 -0
- prowler/providers/alibabacloud/services/vpc/vpc_service.py +102 -0
- prowler/providers/aws/aws_regions_by_service.json +20 -0
- prowler/providers/aws/services/apigateway/apigateway_restapi_waf_acl_attached/apigateway_restapi_waf_acl_attached.metadata.json +1 -3
- prowler/providers/aws/services/cloudtrail/cloudtrail_insights_exist/cloudtrail_insights_exist.metadata.json +1 -1
- prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_acls_alarm_configured/cloudwatch_changes_to_network_acls_alarm_configured.metadata.json +1 -2
- prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_gateways_alarm_configured/cloudwatch_changes_to_network_gateways_alarm_configured.metadata.json +1 -2
- prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_route_tables_alarm_configured/cloudwatch_changes_to_network_route_tables_alarm_configured.metadata.json +1 -2
- prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_vpcs_alarm_configured/cloudwatch_changes_to_vpcs_alarm_configured.metadata.json +1 -2
- prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_and_alarm_for_aws_config_configuration_changes_enabled/cloudwatch_log_metric_filter_and_alarm_for_aws_config_configuration_changes_enabled.metadata.json +1 -2
- prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_changes_enabled/cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_changes_enabled.metadata.json +1 -2
- prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_authentication_failures/cloudwatch_log_metric_filter_authentication_failures.metadata.json +1 -2
- prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_aws_organizations_changes/cloudwatch_log_metric_filter_aws_organizations_changes.metadata.json +1 -2
- prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_for_s3_bucket_policy_changes/cloudwatch_log_metric_filter_for_s3_bucket_policy_changes.metadata.json +1 -2
- prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_policy_changes/cloudwatch_log_metric_filter_policy_changes.metadata.json +1 -2
- prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_root_usage/cloudwatch_log_metric_filter_root_usage.metadata.json +1 -2
- prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_security_group_changes/cloudwatch_log_metric_filter_security_group_changes.metadata.json +1 -2
- prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_sign_in_without_mfa/cloudwatch_log_metric_filter_sign_in_without_mfa.metadata.json +1 -2
- prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_unauthorized_api_calls/cloudwatch_log_metric_filter_unauthorized_api_calls.metadata.json +0 -1
- prowler/providers/aws/services/guardduty/guardduty_centrally_managed/guardduty_centrally_managed.metadata.json +16 -10
- prowler/providers/aws/services/guardduty/guardduty_ec2_malware_protection_enabled/guardduty_ec2_malware_protection_enabled.metadata.json +23 -14
- prowler/providers/aws/services/guardduty/guardduty_eks_audit_log_enabled/guardduty_eks_audit_log_enabled.metadata.json +19 -13
- prowler/providers/aws/services/guardduty/guardduty_eks_runtime_monitoring_enabled/guardduty_eks_runtime_monitoring_enabled.metadata.json +18 -12
- prowler/providers/aws/services/guardduty/guardduty_is_enabled/guardduty_is_enabled.metadata.json +24 -13
- prowler/providers/aws/services/guardduty/guardduty_lambda_protection_enabled/guardduty_lambda_protection_enabled.metadata.json +20 -14
- prowler/providers/aws/services/guardduty/guardduty_no_high_severity_findings/guardduty_no_high_severity_findings.metadata.json +18 -9
- prowler/providers/aws/services/guardduty/guardduty_rds_protection_enabled/guardduty_rds_protection_enabled.metadata.json +18 -11
- prowler/providers/aws/services/guardduty/guardduty_s3_protection_enabled/guardduty_s3_protection_enabled.metadata.json +21 -12
- prowler/providers/aws/services/lightsail/lightsail_database_public/lightsail_database_public.metadata.json +21 -13
- prowler/providers/aws/services/lightsail/lightsail_instance_automated_snapshots/lightsail_instance_automated_snapshots.metadata.json +24 -13
- prowler/providers/aws/services/lightsail/lightsail_instance_public/lightsail_instance_public.metadata.json +21 -13
- prowler/providers/aws/services/lightsail/lightsail_static_ip_unused/lightsail_static_ip_unused.metadata.json +23 -14
- prowler/providers/aws/services/macie/macie_automated_sensitive_data_discovery_enabled/macie_automated_sensitive_data_discovery_enabled.metadata.json +20 -12
- prowler/providers/aws/services/macie/macie_is_enabled/macie_is_enabled.metadata.json +17 -12
- prowler/providers/aws/services/mq/mq_broker_active_deployment_mode/mq_broker_active_deployment_mode.metadata.json +22 -13
- prowler/providers/aws/services/mq/mq_broker_auto_minor_version_upgrades/mq_broker_auto_minor_version_upgrades.metadata.json +21 -12
- prowler/providers/aws/services/mq/mq_broker_cluster_deployment_mode/mq_broker_cluster_deployment_mode.metadata.json +23 -14
- prowler/providers/aws/services/mq/mq_broker_logging_enabled/mq_broker_logging_enabled.metadata.json +22 -13
- prowler/providers/aws/services/mq/mq_broker_not_publicly_accessible/mq_broker_not_publicly_accessible.metadata.json +20 -12
- prowler/providers/aws/services/networkfirewall/networkfirewall_deletion_protection/networkfirewall_deletion_protection.metadata.json +21 -13
- prowler/providers/aws/services/networkfirewall/networkfirewall_in_all_vpc/networkfirewall_in_all_vpc.metadata.json +23 -13
- prowler/providers/aws/services/networkfirewall/networkfirewall_logging_enabled/networkfirewall_logging_enabled.metadata.json +20 -13
- prowler/providers/aws/services/networkfirewall/networkfirewall_multi_az/networkfirewall_multi_az.metadata.json +22 -14
- prowler/providers/aws/services/networkfirewall/networkfirewall_policy_default_action_fragmented_packets/networkfirewall_policy_default_action_fragmented_packets.metadata.json +26 -14
- prowler/providers/aws/services/networkfirewall/networkfirewall_policy_default_action_full_packets/networkfirewall_policy_default_action_full_packets.metadata.json +22 -13
- prowler/providers/aws/services/networkfirewall/networkfirewall_policy_rule_group_associated/networkfirewall_policy_rule_group_associated.metadata.json +25 -14
- prowler/providers/common/provider.py +12 -0
- prowler/providers/gcp/services/accesscontextmanager/__init__.py +0 -0
- prowler/providers/gcp/services/accesscontextmanager/accesscontextmanager_client.py +6 -0
- prowler/providers/gcp/services/accesscontextmanager/accesscontextmanager_service.py +101 -0
- prowler/providers/gcp/services/cloudresourcemanager/cloudresourcemanager_service.py +10 -0
- prowler/providers/gcp/services/cloudstorage/cloudstorage_service.py +13 -0
- prowler/providers/gcp/services/cloudstorage/cloudstorage_uses_vpc_service_controls/__init__.py +0 -0
- prowler/providers/gcp/services/cloudstorage/cloudstorage_uses_vpc_service_controls/cloudstorage_uses_vpc_service_controls.metadata.json +36 -0
- prowler/providers/gcp/services/cloudstorage/cloudstorage_uses_vpc_service_controls/cloudstorage_uses_vpc_service_controls.py +67 -0
- prowler/providers/gcp/services/compute/compute_instance_automatic_restart_enabled/__init__.py +0 -0
- prowler/providers/gcp/services/compute/compute_instance_automatic_restart_enabled/compute_instance_automatic_restart_enabled.metadata.json +36 -0
- prowler/providers/gcp/services/compute/compute_instance_automatic_restart_enabled/compute_instance_automatic_restart_enabled.py +35 -0
- prowler/providers/gcp/services/compute/compute_instance_deletion_protection_enabled/__init__.py +0 -0
- prowler/providers/gcp/services/compute/compute_instance_deletion_protection_enabled/compute_instance_deletion_protection_enabled.metadata.json +36 -0
- prowler/providers/gcp/services/compute/compute_instance_deletion_protection_enabled/compute_instance_deletion_protection_enabled.py +29 -0
- prowler/providers/gcp/services/compute/compute_instance_preemptible_vm_disabled/__init__.py +0 -0
- prowler/providers/gcp/services/compute/compute_instance_preemptible_vm_disabled/compute_instance_preemptible_vm_disabled.metadata.json +37 -0
- prowler/providers/gcp/services/compute/compute_instance_preemptible_vm_disabled/compute_instance_preemptible_vm_disabled.py +32 -0
- prowler/providers/gcp/services/compute/compute_service.py +16 -0
- prowler/providers/github/services/repository/repository_immutable_releases_enabled/__init__.py +0 -0
- prowler/providers/github/services/repository/repository_immutable_releases_enabled/repository_immutable_releases_enabled.metadata.json +33 -0
- prowler/providers/github/services/repository/repository_immutable_releases_enabled/repository_immutable_releases_enabled.py +41 -0
- prowler/providers/github/services/repository/repository_service.py +52 -0
- {prowler_cloud-5.14.1.dist-info → prowler_cloud-5.15.0.dist-info}/METADATA +40 -22
- {prowler_cloud-5.14.1.dist-info → prowler_cloud-5.15.0.dist-info}/RECORD +326 -73
- {prowler_cloud-5.14.1.dist-info → prowler_cloud-5.15.0.dist-info}/LICENSE +0 -0
- {prowler_cloud-5.14.1.dist-info → prowler_cloud-5.15.0.dist-info}/WHEEL +0 -0
- {prowler_cloud-5.14.1.dist-info → prowler_cloud-5.15.0.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
from alibabacloud_sas20181203 import models as sas_models
|
|
2
|
+
from pydantic.v1 import BaseModel
|
|
3
|
+
|
|
4
|
+
from prowler.lib.logger import logger
|
|
5
|
+
from prowler.providers.alibabacloud.lib.service.service import AlibabaCloudService
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class SecurityCenter(AlibabaCloudService):
|
|
9
|
+
"""
|
|
10
|
+
Security Center service class for Alibaba Cloud.
|
|
11
|
+
|
|
12
|
+
This class provides methods to interact with Alibaba Cloud Security Center
|
|
13
|
+
to retrieve vulnerabilities, agent status, etc.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
def __init__(self, provider):
|
|
17
|
+
# Call AlibabaCloudService's __init__
|
|
18
|
+
super().__init__("sas", provider, global_service=True)
|
|
19
|
+
|
|
20
|
+
self.instance_vulnerabilities = {}
|
|
21
|
+
self.instance_agents = {}
|
|
22
|
+
self.uninstalled_machines = []
|
|
23
|
+
self.notice_configs = {}
|
|
24
|
+
self.vul_configs = {}
|
|
25
|
+
self.concern_necessity = []
|
|
26
|
+
self.edition = None
|
|
27
|
+
self.version = None
|
|
28
|
+
self._describe_vulnerabilities()
|
|
29
|
+
self._describe_agents()
|
|
30
|
+
self._list_uninstalled_machines()
|
|
31
|
+
self._describe_notice_configs()
|
|
32
|
+
self._describe_vul_config()
|
|
33
|
+
self._describe_concern_necessity()
|
|
34
|
+
self._get_edition()
|
|
35
|
+
|
|
36
|
+
def _describe_vulnerabilities(self):
|
|
37
|
+
"""List vulnerabilities for ECS instances."""
|
|
38
|
+
logger.info("Security Center - Describing Vulnerabilities...")
|
|
39
|
+
|
|
40
|
+
try:
|
|
41
|
+
# Get all vulnerabilities
|
|
42
|
+
# Type: "cve" for CVE vulnerabilities, "app" for application vulnerabilities, "sys" for system vulnerabilities
|
|
43
|
+
# We'll check all types by making separate requests
|
|
44
|
+
vulnerability_types = ["cve", "app", "sys"]
|
|
45
|
+
|
|
46
|
+
for vul_type in vulnerability_types:
|
|
47
|
+
request = sas_models.DescribeVulListRequest()
|
|
48
|
+
request.type = vul_type
|
|
49
|
+
request.current_page = 1
|
|
50
|
+
request.page_size = 100
|
|
51
|
+
|
|
52
|
+
while True:
|
|
53
|
+
response = self.client.describe_vul_list(request)
|
|
54
|
+
|
|
55
|
+
if response and response.body and response.body.vul_records:
|
|
56
|
+
vul_records = response.body.vul_records
|
|
57
|
+
if not vul_records:
|
|
58
|
+
break
|
|
59
|
+
|
|
60
|
+
for vul_record in vul_records:
|
|
61
|
+
instance_id = getattr(vul_record, "instance_id", "")
|
|
62
|
+
if not instance_id:
|
|
63
|
+
continue
|
|
64
|
+
|
|
65
|
+
# Get instance name and region from the vulnerability record
|
|
66
|
+
instance_name = getattr(
|
|
67
|
+
vul_record, "instance_name", instance_id
|
|
68
|
+
)
|
|
69
|
+
region = getattr(vul_record, "region_id", "")
|
|
70
|
+
|
|
71
|
+
instance_key = (
|
|
72
|
+
f"{region}:{instance_id}" if region else instance_id
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
if instance_key not in self.instance_vulnerabilities:
|
|
76
|
+
self.instance_vulnerabilities[instance_key] = (
|
|
77
|
+
InstanceVulnerability(
|
|
78
|
+
instance_id=instance_id,
|
|
79
|
+
instance_name=instance_name,
|
|
80
|
+
region=region,
|
|
81
|
+
has_vulnerabilities=True,
|
|
82
|
+
vulnerability_count=1,
|
|
83
|
+
)
|
|
84
|
+
)
|
|
85
|
+
else:
|
|
86
|
+
# Increment vulnerability count
|
|
87
|
+
self.instance_vulnerabilities[
|
|
88
|
+
instance_key
|
|
89
|
+
].vulnerability_count += 1
|
|
90
|
+
|
|
91
|
+
# Check if there are more pages
|
|
92
|
+
total_count = getattr(response.body, "total_count", 0)
|
|
93
|
+
if request.current_page * request.page_size >= total_count:
|
|
94
|
+
break
|
|
95
|
+
request.current_page += 1
|
|
96
|
+
else:
|
|
97
|
+
break
|
|
98
|
+
|
|
99
|
+
except Exception as error:
|
|
100
|
+
logger.error(
|
|
101
|
+
f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
def _describe_agents(self):
|
|
105
|
+
"""List Security Center agent status for ECS instances."""
|
|
106
|
+
logger.info("Security Center - Describing Agents...")
|
|
107
|
+
|
|
108
|
+
try:
|
|
109
|
+
# Get all agents
|
|
110
|
+
request = sas_models.DescribeCloudCenterInstancesRequest()
|
|
111
|
+
request.current_page = 1
|
|
112
|
+
request.page_size = 100
|
|
113
|
+
|
|
114
|
+
while True:
|
|
115
|
+
response = self.client.describe_cloud_center_instances(request)
|
|
116
|
+
|
|
117
|
+
if response and response.body and response.body.instances:
|
|
118
|
+
instances = response.body.instances
|
|
119
|
+
if not instances:
|
|
120
|
+
break
|
|
121
|
+
|
|
122
|
+
for instance_data in instances:
|
|
123
|
+
instance_id = getattr(instance_data, "instance_id", "")
|
|
124
|
+
if not instance_id:
|
|
125
|
+
continue
|
|
126
|
+
|
|
127
|
+
instance_name = getattr(
|
|
128
|
+
instance_data, "instance_name", instance_id
|
|
129
|
+
)
|
|
130
|
+
region = getattr(instance_data, "region_id", "")
|
|
131
|
+
agent_status = getattr(instance_data, "client_status", "")
|
|
132
|
+
|
|
133
|
+
# Determine if agent is installed and online
|
|
134
|
+
agent_installed = agent_status in ["online", "offline"]
|
|
135
|
+
is_online = agent_status == "online"
|
|
136
|
+
|
|
137
|
+
instance_key = (
|
|
138
|
+
f"{region}:{instance_id}" if region else instance_id
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
self.instance_agents[instance_key] = InstanceAgent(
|
|
142
|
+
instance_id=instance_id,
|
|
143
|
+
instance_name=instance_name,
|
|
144
|
+
region=region,
|
|
145
|
+
agent_installed=agent_installed,
|
|
146
|
+
agent_status=(
|
|
147
|
+
agent_status
|
|
148
|
+
if agent_status
|
|
149
|
+
else ("online" if is_online else "not_installed")
|
|
150
|
+
),
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
# Check if there are more pages
|
|
154
|
+
total_count = getattr(response.body, "total_count", 0)
|
|
155
|
+
if request.current_page * request.page_size >= total_count:
|
|
156
|
+
break
|
|
157
|
+
request.current_page += 1
|
|
158
|
+
else:
|
|
159
|
+
break
|
|
160
|
+
|
|
161
|
+
except Exception as error:
|
|
162
|
+
logger.error(
|
|
163
|
+
f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
|
|
164
|
+
)
|
|
165
|
+
|
|
166
|
+
def _list_uninstalled_machines(self):
|
|
167
|
+
"""List machines without Security Center agent installed."""
|
|
168
|
+
logger.info("Security Center - Listing Uninstalled Machines...")
|
|
169
|
+
|
|
170
|
+
try:
|
|
171
|
+
# Get all machines without agent installed
|
|
172
|
+
request = sas_models.ListUninstallAegisMachinesRequest()
|
|
173
|
+
request.current_page = 1
|
|
174
|
+
request.page_size = 100
|
|
175
|
+
|
|
176
|
+
while True:
|
|
177
|
+
response = self.client.list_uninstall_aegis_machines(request)
|
|
178
|
+
|
|
179
|
+
if response and response.body and response.body.machine_list:
|
|
180
|
+
machines = response.body.machine_list
|
|
181
|
+
if not machines:
|
|
182
|
+
break
|
|
183
|
+
|
|
184
|
+
for machine_data in machines:
|
|
185
|
+
instance_id = getattr(machine_data, "instance_id", "")
|
|
186
|
+
if not instance_id:
|
|
187
|
+
continue
|
|
188
|
+
|
|
189
|
+
self.uninstalled_machines.append(
|
|
190
|
+
UninstalledMachine(
|
|
191
|
+
instance_id=instance_id,
|
|
192
|
+
instance_name=getattr(
|
|
193
|
+
machine_data, "instance_name", instance_id
|
|
194
|
+
),
|
|
195
|
+
region=getattr(machine_data, "region_id", "")
|
|
196
|
+
or getattr(machine_data, "machine_region", ""),
|
|
197
|
+
uuid=getattr(machine_data, "uuid", ""),
|
|
198
|
+
os=getattr(machine_data, "os", ""),
|
|
199
|
+
internet_ip=getattr(machine_data, "internet_ip", ""),
|
|
200
|
+
intranet_ip=getattr(machine_data, "intranet_ip", ""),
|
|
201
|
+
)
|
|
202
|
+
)
|
|
203
|
+
|
|
204
|
+
# Check if there are more pages
|
|
205
|
+
total_count = getattr(response.body, "total_count", 0)
|
|
206
|
+
if request.current_page * request.page_size >= total_count:
|
|
207
|
+
break
|
|
208
|
+
request.current_page += 1
|
|
209
|
+
else:
|
|
210
|
+
break
|
|
211
|
+
|
|
212
|
+
except Exception as error:
|
|
213
|
+
logger.error(
|
|
214
|
+
f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
|
|
215
|
+
)
|
|
216
|
+
|
|
217
|
+
def _describe_notice_configs(self):
|
|
218
|
+
"""List notification configurations for Security Center."""
|
|
219
|
+
logger.info("Security Center - Describing Notice Configs...")
|
|
220
|
+
|
|
221
|
+
try:
|
|
222
|
+
# Get notification configurations
|
|
223
|
+
request = sas_models.DescribeNoticeConfigRequest()
|
|
224
|
+
response = self.client.describe_notice_config(request)
|
|
225
|
+
|
|
226
|
+
if response and response.body and response.body.notice_config_list:
|
|
227
|
+
notice_configs = response.body.notice_config_list
|
|
228
|
+
|
|
229
|
+
for config_data in notice_configs:
|
|
230
|
+
project = getattr(config_data, "project", "")
|
|
231
|
+
if not project:
|
|
232
|
+
continue
|
|
233
|
+
|
|
234
|
+
route = getattr(config_data, "route", 0)
|
|
235
|
+
time_limit = getattr(config_data, "time_limit", 0)
|
|
236
|
+
|
|
237
|
+
self.notice_configs[project] = NoticeConfig(
|
|
238
|
+
project=project,
|
|
239
|
+
route=route,
|
|
240
|
+
time_limit=time_limit,
|
|
241
|
+
notification_enabled=route != 0,
|
|
242
|
+
)
|
|
243
|
+
|
|
244
|
+
except Exception as error:
|
|
245
|
+
logger.error(
|
|
246
|
+
f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
|
|
247
|
+
)
|
|
248
|
+
|
|
249
|
+
def _describe_vul_config(self):
|
|
250
|
+
"""List vulnerability scan configuration."""
|
|
251
|
+
logger.info("Security Center - Describing Vulnerability Config...")
|
|
252
|
+
|
|
253
|
+
try:
|
|
254
|
+
# Get vulnerability scan configuration
|
|
255
|
+
request = sas_models.DescribeVulConfigRequest()
|
|
256
|
+
response = self.client.describe_vul_config(request)
|
|
257
|
+
|
|
258
|
+
if response and response.body and response.body.target_configs:
|
|
259
|
+
target_configs = response.body.target_configs
|
|
260
|
+
|
|
261
|
+
for config_data in target_configs:
|
|
262
|
+
config_type = getattr(config_data, "type", "")
|
|
263
|
+
config_value = getattr(config_data, "config", "")
|
|
264
|
+
|
|
265
|
+
if config_type:
|
|
266
|
+
self.vul_configs[config_type] = VulConfig(
|
|
267
|
+
type=config_type,
|
|
268
|
+
config=config_value,
|
|
269
|
+
enabled=config_value != "off",
|
|
270
|
+
)
|
|
271
|
+
|
|
272
|
+
except Exception as error:
|
|
273
|
+
logger.error(
|
|
274
|
+
f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
|
|
275
|
+
)
|
|
276
|
+
|
|
277
|
+
def _describe_concern_necessity(self):
|
|
278
|
+
"""List vulnerability scan level priorities."""
|
|
279
|
+
logger.info("Security Center - Describing Concern Necessity...")
|
|
280
|
+
|
|
281
|
+
try:
|
|
282
|
+
# Get vulnerability scan level priorities
|
|
283
|
+
request = sas_models.DescribeConcernNecessityRequest()
|
|
284
|
+
response = self.client.describe_concern_necessity(request)
|
|
285
|
+
|
|
286
|
+
if response and response.body:
|
|
287
|
+
concern_necessity = getattr(response.body, "concern_necessity", [])
|
|
288
|
+
if concern_necessity:
|
|
289
|
+
self.concern_necessity = concern_necessity
|
|
290
|
+
else:
|
|
291
|
+
self.concern_necessity = []
|
|
292
|
+
|
|
293
|
+
except Exception as error:
|
|
294
|
+
logger.error(
|
|
295
|
+
f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
|
|
296
|
+
)
|
|
297
|
+
self.concern_necessity = []
|
|
298
|
+
|
|
299
|
+
def _get_edition(self):
|
|
300
|
+
"""Get Security Center edition."""
|
|
301
|
+
logger.info("Security Center - Getting Edition...")
|
|
302
|
+
|
|
303
|
+
# Version mapping: 1=Basic, 3=Enterprise, 5=Advanced, 6=Anti-virus, 7=Ultimate, 8=Multi-Version, 10=Value-added Plan
|
|
304
|
+
version_to_edition = {
|
|
305
|
+
1: "Basic",
|
|
306
|
+
3: "Enterprise",
|
|
307
|
+
5: "Advanced",
|
|
308
|
+
6: "Anti-virus",
|
|
309
|
+
7: "Ultimate",
|
|
310
|
+
8: "Multi-Version",
|
|
311
|
+
10: "Value-added Plan",
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
try:
|
|
315
|
+
# Get Security Center edition
|
|
316
|
+
request = sas_models.DescribeVersionConfigRequest()
|
|
317
|
+
response = self.client.describe_version_config(request)
|
|
318
|
+
|
|
319
|
+
if response and response.body:
|
|
320
|
+
# Get Version field from response
|
|
321
|
+
version = getattr(response.body, "version", None)
|
|
322
|
+
|
|
323
|
+
if version is not None:
|
|
324
|
+
# Map version number to edition name
|
|
325
|
+
self.edition = version_to_edition.get(
|
|
326
|
+
version, f"Unknown (Version {version})"
|
|
327
|
+
)
|
|
328
|
+
self.version = version
|
|
329
|
+
logger.info(
|
|
330
|
+
f"Security Center Version: {version}, Edition: {self.edition}"
|
|
331
|
+
)
|
|
332
|
+
else:
|
|
333
|
+
self.edition = "Unknown"
|
|
334
|
+
self.version = None
|
|
335
|
+
else:
|
|
336
|
+
self.edition = "Unknown"
|
|
337
|
+
self.version = None
|
|
338
|
+
|
|
339
|
+
except Exception as error:
|
|
340
|
+
logger.error(
|
|
341
|
+
f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
|
|
342
|
+
)
|
|
343
|
+
self.edition = "Unknown"
|
|
344
|
+
self.version = None
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
# Models for Security Center service
|
|
348
|
+
class InstanceVulnerability(BaseModel):
|
|
349
|
+
"""Security Center Instance Vulnerability model."""
|
|
350
|
+
|
|
351
|
+
instance_id: str
|
|
352
|
+
instance_name: str
|
|
353
|
+
region: str
|
|
354
|
+
has_vulnerabilities: bool
|
|
355
|
+
vulnerability_count: int = 0
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
class InstanceAgent(BaseModel):
|
|
359
|
+
"""Security Center Instance Agent model."""
|
|
360
|
+
|
|
361
|
+
instance_id: str
|
|
362
|
+
instance_name: str
|
|
363
|
+
region: str
|
|
364
|
+
agent_installed: bool
|
|
365
|
+
agent_status: str = "" # "online", "offline", "not_installed"
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
class UninstalledMachine(BaseModel):
|
|
369
|
+
"""Security Center Uninstalled Machine model."""
|
|
370
|
+
|
|
371
|
+
instance_id: str
|
|
372
|
+
instance_name: str
|
|
373
|
+
region: str
|
|
374
|
+
uuid: str = ""
|
|
375
|
+
os: str = ""
|
|
376
|
+
internet_ip: str = ""
|
|
377
|
+
intranet_ip: str = ""
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
class NoticeConfig(BaseModel):
|
|
381
|
+
"""Security Center Notice Config model."""
|
|
382
|
+
|
|
383
|
+
project: str
|
|
384
|
+
route: int # 0 = no notification, >0 = notification enabled
|
|
385
|
+
time_limit: int = 0
|
|
386
|
+
notification_enabled: bool
|
|
387
|
+
|
|
388
|
+
|
|
389
|
+
class VulConfig(BaseModel):
|
|
390
|
+
"""Security Center Vulnerability Config model."""
|
|
391
|
+
|
|
392
|
+
type: str # yum, cve, sys, cms, emg, etc.
|
|
393
|
+
config: str # "off", "on", or other values
|
|
394
|
+
enabled: bool # True if config != "off"
|
|
File without changes
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Provider": "alibabacloud",
|
|
3
|
+
"CheckID": "securitycenter_vulnerability_scan_enabled",
|
|
4
|
+
"CheckTitle": "Scheduled vulnerability scan is enabled on all servers",
|
|
5
|
+
"CheckType": [
|
|
6
|
+
"Malicious software",
|
|
7
|
+
"Web application threat detection"
|
|
8
|
+
],
|
|
9
|
+
"ServiceName": "securitycenter",
|
|
10
|
+
"SubServiceName": "",
|
|
11
|
+
"ResourceIdTemplate": "acs:sas::account-id:vulnerability-scan-config",
|
|
12
|
+
"Severity": "high",
|
|
13
|
+
"ResourceType": "AlibabaCloudSecurityCenterVulConfig",
|
|
14
|
+
"Description": "Ensure that **scheduled vulnerability scan** is enabled on all servers.\n\nBe sure that vulnerability scanning is performed periodically to discover system vulnerabilities in time.",
|
|
15
|
+
"Risk": "Without **scheduled vulnerability scans** enabled, system vulnerabilities may not be discovered in a timely manner, leaving systems exposed to **known security threats** and **exploits**.",
|
|
16
|
+
"RelatedUrl": "",
|
|
17
|
+
"AdditionalURLs": [
|
|
18
|
+
"https://www.alibabacloud.com/help/doc-detail/109076.htm",
|
|
19
|
+
"https://www.trendmicro.com/cloudoneconformity/knowledge-base/alibaba-cloud/AlibabaCloud-SecurityCenter/enable-scheduled-vulnerability-scan.html"
|
|
20
|
+
],
|
|
21
|
+
"Remediation": {
|
|
22
|
+
"Code": {
|
|
23
|
+
"CLI": "aliyun sas ModifyVulConfig --Type <vul_type> --Config on",
|
|
24
|
+
"NativeIaC": "",
|
|
25
|
+
"Other": "",
|
|
26
|
+
"Terraform": ""
|
|
27
|
+
},
|
|
28
|
+
"Recommendation": {
|
|
29
|
+
"Text": "1. Log on to the **Security Center Console**\n2. Select **Vulnerabilities**\n3. Click **Settings**\n4. Apply all types of vulnerabilities (`yum`, `cve`, `sys`, `cms`, `emg`)\n5. Enable **High** (asap) and **Medium** (later) vulnerability scan levels",
|
|
30
|
+
"Url": "https://hub.prowler.com/check/securitycenter_vulnerability_scan_enabled"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"Categories": [
|
|
34
|
+
"vulnerabilities"
|
|
35
|
+
],
|
|
36
|
+
"DependsOn": [],
|
|
37
|
+
"RelatedTo": [],
|
|
38
|
+
"Notes": ""
|
|
39
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
from prowler.lib.check.models import Check, CheckReportAlibabaCloud
|
|
2
|
+
from prowler.providers.alibabacloud.services.securitycenter.securitycenter_client import (
|
|
3
|
+
securitycenter_client,
|
|
4
|
+
)
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class securitycenter_vulnerability_scan_enabled(Check):
|
|
8
|
+
"""Check if scheduled vulnerability scan is enabled on all servers."""
|
|
9
|
+
|
|
10
|
+
def execute(self) -> list[CheckReportAlibabaCloud]:
|
|
11
|
+
findings = []
|
|
12
|
+
|
|
13
|
+
# Required vulnerability types that must be enabled
|
|
14
|
+
required_vul_types = ["yum", "cve", "sys", "cms", "emg"]
|
|
15
|
+
|
|
16
|
+
# Required scan levels: "asap" (high) and "later" (medium)
|
|
17
|
+
required_scan_levels = ["asap", "later"]
|
|
18
|
+
|
|
19
|
+
vul_configs = securitycenter_client.vul_configs
|
|
20
|
+
concern_necessity = securitycenter_client.concern_necessity
|
|
21
|
+
|
|
22
|
+
# Check vulnerability types
|
|
23
|
+
disabled_types = []
|
|
24
|
+
for vul_type in required_vul_types:
|
|
25
|
+
config = vul_configs.get(vul_type)
|
|
26
|
+
if not config or not config.enabled:
|
|
27
|
+
disabled_types.append(vul_type)
|
|
28
|
+
|
|
29
|
+
# Check scan levels
|
|
30
|
+
missing_levels = []
|
|
31
|
+
for level in required_scan_levels:
|
|
32
|
+
if level not in concern_necessity:
|
|
33
|
+
missing_levels.append(level)
|
|
34
|
+
|
|
35
|
+
# Create report
|
|
36
|
+
report = CheckReportAlibabaCloud(metadata=self.metadata(), resource={})
|
|
37
|
+
report.region = securitycenter_client.region
|
|
38
|
+
report.resource_id = securitycenter_client.audited_account
|
|
39
|
+
report.resource_arn = f"acs:sas::{securitycenter_client.audited_account}:vulnerability-scan-config"
|
|
40
|
+
|
|
41
|
+
if not disabled_types and not missing_levels:
|
|
42
|
+
report.status = "PASS"
|
|
43
|
+
report.status_extended = (
|
|
44
|
+
"Scheduled vulnerability scan is enabled for all vulnerability types "
|
|
45
|
+
"(yum, cve, sys, cms, emg) and all required scan levels (high/asap, medium/later) are enabled."
|
|
46
|
+
)
|
|
47
|
+
else:
|
|
48
|
+
report.status = "FAIL"
|
|
49
|
+
issues = []
|
|
50
|
+
if disabled_types:
|
|
51
|
+
issues.append(
|
|
52
|
+
f"Vulnerability types disabled: {', '.join(disabled_types)}"
|
|
53
|
+
)
|
|
54
|
+
if missing_levels:
|
|
55
|
+
level_names = {"asap": "high", "later": "medium"}
|
|
56
|
+
missing_names = [
|
|
57
|
+
level_names.get(level, level) for level in missing_levels
|
|
58
|
+
]
|
|
59
|
+
issues.append(
|
|
60
|
+
f"Scan levels not enabled: {', '.join(missing_names)} ({', '.join(missing_levels)})"
|
|
61
|
+
)
|
|
62
|
+
report.status_extended = (
|
|
63
|
+
"Scheduled vulnerability scan is not properly configured. "
|
|
64
|
+
+ "; ".join(issues)
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
findings.append(report)
|
|
68
|
+
return findings
|
|
File without changes
|
prowler/providers/alibabacloud/services/sls/sls_cloud_firewall_changes_alert_enabled/__init__.py
ADDED
|
File without changes
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Provider": "alibabacloud",
|
|
3
|
+
"CheckID": "sls_cloud_firewall_changes_alert_enabled",
|
|
4
|
+
"CheckTitle": "Log monitoring and alerts are set up for Cloud Firewall changes",
|
|
5
|
+
"CheckType": [
|
|
6
|
+
"Suspicious network connection",
|
|
7
|
+
"Cloud threat detection"
|
|
8
|
+
],
|
|
9
|
+
"ServiceName": "sls",
|
|
10
|
+
"SubServiceName": "",
|
|
11
|
+
"ResourceIdTemplate": "acs:log:region:account-id:project/project-name/alert/alert-name",
|
|
12
|
+
"Severity": "medium",
|
|
13
|
+
"ResourceType": "AlibabaCloudSLSAlert",
|
|
14
|
+
"Description": "It is recommended that a **metric filter and alarm** be established for **Cloud Firewall** rule changes.",
|
|
15
|
+
"Risk": "Monitoring for **Create** or **Update** firewall rule events gives insight into network access changes and may reduce the time it takes to detect **suspicious activity**.",
|
|
16
|
+
"RelatedUrl": "",
|
|
17
|
+
"AdditionalURLs": [
|
|
18
|
+
"https://www.alibabacloud.com/help/en/doc-detail/91784.htm",
|
|
19
|
+
"https://www.trendmicro.com/cloudoneconformity/knowledge-base/alibaba-cloud/AlibabaCloud-SLS/cloudfirewall-control-policy-changes-alert.html"
|
|
20
|
+
],
|
|
21
|
+
"Remediation": {
|
|
22
|
+
"Code": {
|
|
23
|
+
"CLI": "",
|
|
24
|
+
"NativeIaC": "",
|
|
25
|
+
"Other": "",
|
|
26
|
+
"Terraform": ""
|
|
27
|
+
},
|
|
28
|
+
"Recommendation": {
|
|
29
|
+
"Text": "1. Log on to the **SLS Console**\n2. Ensure **ActionTrail** is enabled\n3. Select **Alerts**\n4. Ensure alert rule has been enabled for Cloud Firewall changes",
|
|
30
|
+
"Url": "https://hub.prowler.com/check/sls_cloud_firewall_changes_alert_enabled"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"Categories": [
|
|
34
|
+
"logging"
|
|
35
|
+
],
|
|
36
|
+
"DependsOn": [],
|
|
37
|
+
"RelatedTo": [],
|
|
38
|
+
"Notes": ""
|
|
39
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
from prowler.lib.check.models import Check, CheckReportAlibabaCloud
|
|
2
|
+
from prowler.providers.alibabacloud.services.sls.sls_client import sls_client
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class sls_cloud_firewall_changes_alert_enabled(Check):
|
|
6
|
+
def execute(self) -> list[CheckReportAlibabaCloud]:
|
|
7
|
+
findings = []
|
|
8
|
+
found = False
|
|
9
|
+
|
|
10
|
+
for alert in sls_client.alerts:
|
|
11
|
+
query_list = alert.configuration.get("queryList", [])
|
|
12
|
+
if not query_list:
|
|
13
|
+
continue
|
|
14
|
+
|
|
15
|
+
for query_obj in query_list:
|
|
16
|
+
query = query_obj.get("query", "")
|
|
17
|
+
if "Cloudfw" in query and (
|
|
18
|
+
"CreateVpcFirewallControlPolicy" in query
|
|
19
|
+
or "DeleteVpcFirewallControlPolicy" in query
|
|
20
|
+
or "ModifyVpcFirewallControlPolicy" in query
|
|
21
|
+
):
|
|
22
|
+
found = True
|
|
23
|
+
report = CheckReportAlibabaCloud(
|
|
24
|
+
metadata=self.metadata(), resource=alert
|
|
25
|
+
)
|
|
26
|
+
report.status = "PASS"
|
|
27
|
+
report.status_extended = f"SLS Alert {alert.name} is configured for Cloud Firewall changes."
|
|
28
|
+
report.resource_id = alert.name
|
|
29
|
+
report.resource_arn = alert.arn
|
|
30
|
+
report.region = alert.region
|
|
31
|
+
findings.append(report)
|
|
32
|
+
break
|
|
33
|
+
|
|
34
|
+
if found:
|
|
35
|
+
break
|
|
36
|
+
|
|
37
|
+
if not found:
|
|
38
|
+
report = CheckReportAlibabaCloud(
|
|
39
|
+
metadata=self.metadata(), resource=sls_client.provider.identity
|
|
40
|
+
)
|
|
41
|
+
report.status = "FAIL"
|
|
42
|
+
report.status_extended = (
|
|
43
|
+
"No SLS Alert configured for Cloud Firewall changes."
|
|
44
|
+
)
|
|
45
|
+
report.resource_id = sls_client.audited_account
|
|
46
|
+
report.resource_arn = sls_client.provider.identity.identity_arn
|
|
47
|
+
report.region = sls_client.region
|
|
48
|
+
findings.append(report)
|
|
49
|
+
|
|
50
|
+
return findings
|
|
File without changes
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Provider": "alibabacloud",
|
|
3
|
+
"CheckID": "sls_customer_created_cmk_changes_alert_enabled",
|
|
4
|
+
"CheckTitle": "A log monitoring and alerts are set up for disabling or deletion of customer created CMKs",
|
|
5
|
+
"CheckType": [
|
|
6
|
+
"Sensitive file tampering",
|
|
7
|
+
"Cloud threat detection"
|
|
8
|
+
],
|
|
9
|
+
"ServiceName": "sls",
|
|
10
|
+
"SubServiceName": "",
|
|
11
|
+
"ResourceIdTemplate": "acs:log:region:account-id:project/project-name/alert/alert-name",
|
|
12
|
+
"Severity": "medium",
|
|
13
|
+
"ResourceType": "AlibabaCloudSLSAlert",
|
|
14
|
+
"Description": "Real-time monitoring of API calls can be achieved by directing **ActionTrail Logs** to Log Service and establishing corresponding query and alarms.\n\nIt is recommended that a query and alarm be established for customer-created **KMS keys** which have changed state to disabled or deletion.",
|
|
15
|
+
"Risk": "Data encrypted with **disabled or deleted keys** will no longer be accessible.\n\nThis could lead to **data loss** or **business disruption** if keys are inadvertently or maliciously disabled.",
|
|
16
|
+
"RelatedUrl": "",
|
|
17
|
+
"AdditionalURLs": [
|
|
18
|
+
"https://www.alibabacloud.com/help/en/doc-detail/91784.htm",
|
|
19
|
+
"https://www.trendmicro.com/cloudoneconformity/knowledge-base/alibaba-cloud/AlibabaCloud-SLS/kms-cmk-config-changes-alert.html"
|
|
20
|
+
],
|
|
21
|
+
"Remediation": {
|
|
22
|
+
"Code": {
|
|
23
|
+
"CLI": "",
|
|
24
|
+
"NativeIaC": "",
|
|
25
|
+
"Other": "",
|
|
26
|
+
"Terraform": ""
|
|
27
|
+
},
|
|
28
|
+
"Recommendation": {
|
|
29
|
+
"Text": "1. Log on to the **SLS Console**\n2. Ensure **ActionTrail** is enabled\n3. Select **Alerts**\n4. Ensure alert rule has been enabled for disabling or deletion of customer-created CMKs",
|
|
30
|
+
"Url": "https://hub.prowler.com/check/sls_customer_created_cmk_changes_alert_enabled"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"Categories": [
|
|
34
|
+
"logging"
|
|
35
|
+
],
|
|
36
|
+
"DependsOn": [],
|
|
37
|
+
"RelatedTo": [],
|
|
38
|
+
"Notes": ""
|
|
39
|
+
}
|