prowler-cloud 5.14.2__py3-none-any.whl → 5.15.1__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 (327) hide show
  1. dashboard/assets/images/providers/alibabacloud_provider.png +0 -0
  2. dashboard/compliance/cis_2_0_alibabacloud.py +24 -0
  3. dashboard/lib/layouts.py +1 -0
  4. dashboard/pages/compliance.py +8 -2
  5. dashboard/pages/overview.py +52 -1
  6. prowler/CHANGELOG.md +59 -21
  7. prowler/__main__.py +34 -0
  8. prowler/compliance/alibabacloud/__init__.py +0 -0
  9. prowler/compliance/alibabacloud/cis_2.0_alibabacloud.json +1833 -0
  10. prowler/compliance/aws/iso27001_2013_aws.json +158 -158
  11. prowler/compliance/aws/soc2_aws.json +100 -0
  12. prowler/compliance/azure/rbi_cyber_security_framework_azure.json +248 -0
  13. prowler/compliance/azure/soc2_azure.json +87 -1
  14. prowler/compliance/gcp/soc2_gcp.json +82 -1
  15. prowler/config/config.py +2 -1
  16. prowler/lib/check/check.py +4 -0
  17. prowler/lib/check/models.py +23 -0
  18. prowler/lib/check/utils.py +1 -1
  19. prowler/lib/cli/parser.py +3 -2
  20. prowler/lib/outputs/compliance/cis/cis_alibabacloud.py +106 -0
  21. prowler/lib/outputs/compliance/cis/models.py +35 -0
  22. prowler/lib/outputs/finding.py +16 -0
  23. prowler/lib/outputs/html/html.py +67 -0
  24. prowler/lib/outputs/outputs.py +2 -0
  25. prowler/lib/outputs/summary_table.py +3 -0
  26. prowler/providers/alibabacloud/__init__.py +0 -0
  27. prowler/providers/alibabacloud/alibabacloud_provider.py +872 -0
  28. prowler/providers/alibabacloud/config.py +41 -0
  29. prowler/providers/alibabacloud/exceptions/__init__.py +0 -0
  30. prowler/providers/alibabacloud/exceptions/exceptions.py +116 -0
  31. prowler/providers/alibabacloud/lib/__init__.py +0 -0
  32. prowler/providers/alibabacloud/lib/arguments/__init__.py +0 -0
  33. prowler/providers/alibabacloud/lib/arguments/arguments.py +58 -0
  34. prowler/providers/alibabacloud/lib/mutelist/__init__.py +0 -0
  35. prowler/providers/alibabacloud/lib/mutelist/mutelist.py +175 -0
  36. prowler/providers/alibabacloud/lib/service/__init__.py +0 -0
  37. prowler/providers/alibabacloud/lib/service/service.py +113 -0
  38. prowler/providers/alibabacloud/models.py +266 -0
  39. prowler/providers/alibabacloud/services/__init__.py +0 -0
  40. prowler/providers/alibabacloud/services/actiontrail/__init__.py +0 -0
  41. prowler/providers/alibabacloud/services/actiontrail/actiontrail_client.py +6 -0
  42. prowler/providers/alibabacloud/services/actiontrail/actiontrail_multi_region_enabled/__init__.py +0 -0
  43. prowler/providers/alibabacloud/services/actiontrail/actiontrail_multi_region_enabled/actiontrail_multi_region_enabled.metadata.json +39 -0
  44. prowler/providers/alibabacloud/services/actiontrail/actiontrail_multi_region_enabled/actiontrail_multi_region_enabled.py +81 -0
  45. prowler/providers/alibabacloud/services/actiontrail/actiontrail_oss_bucket_not_publicly_accessible/__init__.py +0 -0
  46. prowler/providers/alibabacloud/services/actiontrail/actiontrail_oss_bucket_not_publicly_accessible/actiontrail_oss_bucket_not_publicly_accessible.metadata.json +40 -0
  47. prowler/providers/alibabacloud/services/actiontrail/actiontrail_oss_bucket_not_publicly_accessible/actiontrail_oss_bucket_not_publicly_accessible.py +119 -0
  48. prowler/providers/alibabacloud/services/actiontrail/actiontrail_service.py +110 -0
  49. prowler/providers/alibabacloud/services/cs/__init__.py +0 -0
  50. prowler/providers/alibabacloud/services/cs/cs_client.py +4 -0
  51. prowler/providers/alibabacloud/services/cs/cs_kubernetes_cloudmonitor_enabled/__init__.py +0 -0
  52. prowler/providers/alibabacloud/services/cs/cs_kubernetes_cloudmonitor_enabled/cs_kubernetes_cloudmonitor_enabled.metadata.json +38 -0
  53. prowler/providers/alibabacloud/services/cs/cs_kubernetes_cloudmonitor_enabled/cs_kubernetes_cloudmonitor_enabled.py +26 -0
  54. prowler/providers/alibabacloud/services/cs/cs_kubernetes_cluster_check_recent/__init__.py +0 -0
  55. prowler/providers/alibabacloud/services/cs/cs_kubernetes_cluster_check_recent/cs_kubernetes_cluster_check_recent.metadata.json +38 -0
  56. prowler/providers/alibabacloud/services/cs/cs_kubernetes_cluster_check_recent/cs_kubernetes_cluster_check_recent.py +62 -0
  57. prowler/providers/alibabacloud/services/cs/cs_kubernetes_cluster_check_weekly/cs_kubernetes_cluster_check_weekly.metadata.json +38 -0
  58. prowler/providers/alibabacloud/services/cs/cs_kubernetes_cluster_check_weekly/cs_kubernetes_cluster_check_weekly.py +62 -0
  59. prowler/providers/alibabacloud/services/cs/cs_kubernetes_dashboard_disabled/__init__.py +0 -0
  60. prowler/providers/alibabacloud/services/cs/cs_kubernetes_dashboard_disabled/cs_kubernetes_dashboard_disabled.metadata.json +39 -0
  61. prowler/providers/alibabacloud/services/cs/cs_kubernetes_dashboard_disabled/cs_kubernetes_dashboard_disabled.py +26 -0
  62. prowler/providers/alibabacloud/services/cs/cs_kubernetes_eni_multiple_ip_enabled/__init__.py +0 -0
  63. prowler/providers/alibabacloud/services/cs/cs_kubernetes_eni_multiple_ip_enabled/cs_kubernetes_eni_multiple_ip_enabled.metadata.json +39 -0
  64. prowler/providers/alibabacloud/services/cs/cs_kubernetes_eni_multiple_ip_enabled/cs_kubernetes_eni_multiple_ip_enabled.py +26 -0
  65. prowler/providers/alibabacloud/services/cs/cs_kubernetes_log_service_enabled/__init__.py +0 -0
  66. prowler/providers/alibabacloud/services/cs/cs_kubernetes_log_service_enabled/cs_kubernetes_log_service_enabled.metadata.json +40 -0
  67. prowler/providers/alibabacloud/services/cs/cs_kubernetes_log_service_enabled/cs_kubernetes_log_service_enabled.py +26 -0
  68. prowler/providers/alibabacloud/services/cs/cs_kubernetes_network_policy_enabled/__init__.py +0 -0
  69. prowler/providers/alibabacloud/services/cs/cs_kubernetes_network_policy_enabled/cs_kubernetes_network_policy_enabled.metadata.json +39 -0
  70. prowler/providers/alibabacloud/services/cs/cs_kubernetes_network_policy_enabled/cs_kubernetes_network_policy_enabled.py +26 -0
  71. prowler/providers/alibabacloud/services/cs/cs_kubernetes_private_cluster_enabled/__init__.py +0 -0
  72. prowler/providers/alibabacloud/services/cs/cs_kubernetes_private_cluster_enabled/cs_kubernetes_private_cluster_enabled.metadata.json +39 -0
  73. prowler/providers/alibabacloud/services/cs/cs_kubernetes_private_cluster_enabled/cs_kubernetes_private_cluster_enabled.py +26 -0
  74. prowler/providers/alibabacloud/services/cs/cs_kubernetes_rbac_enabled/__init__.py +0 -0
  75. prowler/providers/alibabacloud/services/cs/cs_kubernetes_rbac_enabled/cs_kubernetes_rbac_enabled.metadata.json +40 -0
  76. prowler/providers/alibabacloud/services/cs/cs_kubernetes_rbac_enabled/cs_kubernetes_rbac_enabled.py +28 -0
  77. prowler/providers/alibabacloud/services/cs/cs_service.py +354 -0
  78. prowler/providers/alibabacloud/services/ecs/__init__.py +0 -0
  79. prowler/providers/alibabacloud/services/ecs/ecs_attached_disk_encrypted/__init__.py +0 -0
  80. prowler/providers/alibabacloud/services/ecs/ecs_attached_disk_encrypted/ecs_attached_disk_encrypted.metadata.json +38 -0
  81. prowler/providers/alibabacloud/services/ecs/ecs_attached_disk_encrypted/ecs_attached_disk_encrypted.py +38 -0
  82. prowler/providers/alibabacloud/services/ecs/ecs_client.py +4 -0
  83. prowler/providers/alibabacloud/services/ecs/ecs_instance_endpoint_protection_installed/__init__.py +0 -0
  84. prowler/providers/alibabacloud/services/ecs/ecs_instance_endpoint_protection_installed/ecs_instance_endpoint_protection_installed.metadata.json +41 -0
  85. prowler/providers/alibabacloud/services/ecs/ecs_instance_endpoint_protection_installed/ecs_instance_endpoint_protection_installed.py +47 -0
  86. prowler/providers/alibabacloud/services/ecs/ecs_instance_latest_os_patches_applied/__init__.py +0 -0
  87. prowler/providers/alibabacloud/services/ecs/ecs_instance_latest_os_patches_applied/ecs_instance_latest_os_patches_applied.metadata.json +38 -0
  88. prowler/providers/alibabacloud/services/ecs/ecs_instance_latest_os_patches_applied/ecs_instance_latest_os_patches_applied.py +50 -0
  89. prowler/providers/alibabacloud/services/ecs/ecs_instance_no_legacy_network/__init__.py +0 -0
  90. prowler/providers/alibabacloud/services/ecs/ecs_instance_no_legacy_network/ecs_instance_no_legacy_network.metadata.json +38 -0
  91. prowler/providers/alibabacloud/services/ecs/ecs_instance_no_legacy_network/ecs_instance_no_legacy_network.py +34 -0
  92. prowler/providers/alibabacloud/services/ecs/ecs_securitygroup_restrict_rdp_internet/__init__.py +0 -0
  93. prowler/providers/alibabacloud/services/ecs/ecs_securitygroup_restrict_rdp_internet/ecs_securitygroup_restrict_rdp_internet.metadata.json +39 -0
  94. prowler/providers/alibabacloud/services/ecs/ecs_securitygroup_restrict_rdp_internet/ecs_securitygroup_restrict_rdp_internet.py +68 -0
  95. prowler/providers/alibabacloud/services/ecs/ecs_securitygroup_restrict_ssh_internet/__init__.py +0 -0
  96. prowler/providers/alibabacloud/services/ecs/ecs_securitygroup_restrict_ssh_internet/ecs_securitygroup_restrict_ssh_internet.metadata.json +39 -0
  97. prowler/providers/alibabacloud/services/ecs/ecs_securitygroup_restrict_ssh_internet/ecs_securitygroup_restrict_ssh_internet.py +68 -0
  98. prowler/providers/alibabacloud/services/ecs/ecs_service.py +380 -0
  99. prowler/providers/alibabacloud/services/ecs/ecs_unattached_disk_encrypted/__init__.py +0 -0
  100. prowler/providers/alibabacloud/services/ecs/ecs_unattached_disk_encrypted/ecs_unattached_disk_encrypted.metadata.json +38 -0
  101. prowler/providers/alibabacloud/services/ecs/ecs_unattached_disk_encrypted/ecs_unattached_disk_encrypted.py +38 -0
  102. prowler/providers/alibabacloud/services/ecs/lib/security_groups.py +23 -0
  103. prowler/providers/alibabacloud/services/oss/__init__.py +0 -0
  104. prowler/providers/alibabacloud/services/oss/oss_bucket_logging_enabled/__init__.py +0 -0
  105. prowler/providers/alibabacloud/services/oss/oss_bucket_logging_enabled/oss_bucket_logging_enabled.metadata.json +39 -0
  106. prowler/providers/alibabacloud/services/oss/oss_bucket_logging_enabled/oss_bucket_logging_enabled.py +37 -0
  107. prowler/providers/alibabacloud/services/oss/oss_bucket_not_publicly_accessible/__init__.py +0 -0
  108. prowler/providers/alibabacloud/services/oss/oss_bucket_not_publicly_accessible/oss_bucket_not_publicly_accessible.metadata.json +39 -0
  109. prowler/providers/alibabacloud/services/oss/oss_bucket_not_publicly_accessible/oss_bucket_not_publicly_accessible.py +89 -0
  110. prowler/providers/alibabacloud/services/oss/oss_bucket_secure_transport_enabled/__init__.py +0 -0
  111. prowler/providers/alibabacloud/services/oss/oss_bucket_secure_transport_enabled/oss_bucket_secure_transport_enabled.metadata.json +38 -0
  112. prowler/providers/alibabacloud/services/oss/oss_bucket_secure_transport_enabled/oss_bucket_secure_transport_enabled.py +87 -0
  113. prowler/providers/alibabacloud/services/oss/oss_client.py +4 -0
  114. prowler/providers/alibabacloud/services/oss/oss_service.py +317 -0
  115. prowler/providers/alibabacloud/services/ram/__init__.py +0 -0
  116. prowler/providers/alibabacloud/services/ram/ram_client.py +4 -0
  117. prowler/providers/alibabacloud/services/ram/ram_no_root_access_key/__init__.py +0 -0
  118. prowler/providers/alibabacloud/services/ram/ram_no_root_access_key/ram_no_root_access_key.metadata.json +39 -0
  119. prowler/providers/alibabacloud/services/ram/ram_no_root_access_key/ram_no_root_access_key.py +33 -0
  120. prowler/providers/alibabacloud/services/ram/ram_password_policy_lowercase/__init__.py +0 -0
  121. prowler/providers/alibabacloud/services/ram/ram_password_policy_lowercase/ram_password_policy_lowercase.metadata.json +39 -0
  122. prowler/providers/alibabacloud/services/ram/ram_password_policy_lowercase/ram_password_policy_lowercase.py +32 -0
  123. prowler/providers/alibabacloud/services/ram/ram_password_policy_max_login_attempts/__init__.py +0 -0
  124. prowler/providers/alibabacloud/services/ram/ram_password_policy_max_login_attempts/ram_password_policy_max_login_attempts.metadata.json +39 -0
  125. prowler/providers/alibabacloud/services/ram/ram_password_policy_max_login_attempts/ram_password_policy_max_login_attempts.py +32 -0
  126. prowler/providers/alibabacloud/services/ram/ram_password_policy_max_password_age/__init__.py +0 -0
  127. prowler/providers/alibabacloud/services/ram/ram_password_policy_max_password_age/ram_password_policy_max_password_age.metadata.json +39 -0
  128. prowler/providers/alibabacloud/services/ram/ram_password_policy_max_password_age/ram_password_policy_max_password_age.py +35 -0
  129. prowler/providers/alibabacloud/services/ram/ram_password_policy_minimum_length/__init__.py +0 -0
  130. prowler/providers/alibabacloud/services/ram/ram_password_policy_minimum_length/ram_password_policy_minimum_length.metadata.json +39 -0
  131. prowler/providers/alibabacloud/services/ram/ram_password_policy_minimum_length/ram_password_policy_minimum_length.py +30 -0
  132. prowler/providers/alibabacloud/services/ram/ram_password_policy_number/__init__.py +0 -0
  133. prowler/providers/alibabacloud/services/ram/ram_password_policy_number/ram_password_policy_number.metadata.json +39 -0
  134. prowler/providers/alibabacloud/services/ram/ram_password_policy_password_reuse_prevention/__init__.py +0 -0
  135. prowler/providers/alibabacloud/services/ram/ram_password_policy_password_reuse_prevention/ram_password_policy_password_reuse_prevention.metadata.json +39 -0
  136. prowler/providers/alibabacloud/services/ram/ram_password_policy_password_reuse_prevention/ram_password_policy_password_reuse_prevention.py +35 -0
  137. prowler/providers/alibabacloud/services/ram/ram_password_policy_symbol/__init__.py +0 -0
  138. prowler/providers/alibabacloud/services/ram/ram_password_policy_symbol/ram_password_policy_symbol.metadata.json +39 -0
  139. prowler/providers/alibabacloud/services/ram/ram_password_policy_symbol/ram_password_policy_symbol.py +34 -0
  140. prowler/providers/alibabacloud/services/ram/ram_password_policy_uppercase/__init__.py +0 -0
  141. prowler/providers/alibabacloud/services/ram/ram_password_policy_uppercase/ram_password_policy_uppercase.metadata.json +39 -0
  142. prowler/providers/alibabacloud/services/ram/ram_password_policy_uppercase/ram_password_policy_uppercase.py +32 -0
  143. prowler/providers/alibabacloud/services/ram/ram_policy_attached_only_to_group_or_roles/__init__.py +0 -0
  144. 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
  145. prowler/providers/alibabacloud/services/ram/ram_policy_attached_only_to_group_or_roles/ram_policy_attached_only_to_group_or_roles.py +35 -0
  146. prowler/providers/alibabacloud/services/ram/ram_policy_no_administrative_privileges/__init__.py +0 -0
  147. prowler/providers/alibabacloud/services/ram/ram_policy_no_administrative_privileges/ram_policy_no_administrative_privileges.metadata.json +39 -0
  148. prowler/providers/alibabacloud/services/ram/ram_policy_no_administrative_privileges/ram_policy_no_administrative_privileges.py +73 -0
  149. prowler/providers/alibabacloud/services/ram/ram_rotate_access_key_90_days/__init__.py +0 -0
  150. prowler/providers/alibabacloud/services/ram/ram_rotate_access_key_90_days/ram_rotate_access_key_90_days.metadata.json +39 -0
  151. prowler/providers/alibabacloud/services/ram/ram_rotate_access_key_90_days/ram_rotate_access_key_90_days.py +58 -0
  152. prowler/providers/alibabacloud/services/ram/ram_service.py +478 -0
  153. prowler/providers/alibabacloud/services/ram/ram_user_console_access_unused/__init__.py +0 -0
  154. prowler/providers/alibabacloud/services/ram/ram_user_console_access_unused/ram_user_console_access_unused.metadata.json +39 -0
  155. prowler/providers/alibabacloud/services/ram/ram_user_console_access_unused/ram_user_console_access_unused.py +56 -0
  156. prowler/providers/alibabacloud/services/ram/ram_user_mfa_enabled_console_access/__init__.py +0 -0
  157. prowler/providers/alibabacloud/services/ram/ram_user_mfa_enabled_console_access/ram_user_mfa_enabled_console_access.metadata.json +39 -0
  158. prowler/providers/alibabacloud/services/ram/ram_user_mfa_enabled_console_access/ram_user_mfa_enabled_console_access.py +36 -0
  159. prowler/providers/alibabacloud/services/rds/__init__.py +0 -0
  160. prowler/providers/alibabacloud/services/rds/rds_client.py +4 -0
  161. prowler/providers/alibabacloud/services/rds/rds_instance_no_public_access_whitelist/__init__.py +0 -0
  162. prowler/providers/alibabacloud/services/rds/rds_instance_no_public_access_whitelist/rds_instance_no_public_access_whitelist.metadata.json +39 -0
  163. prowler/providers/alibabacloud/services/rds/rds_instance_no_public_access_whitelist/rds_instance_no_public_access_whitelist.py +36 -0
  164. prowler/providers/alibabacloud/services/rds/rds_instance_postgresql_log_connections_enabled/__init__.py +0 -0
  165. prowler/providers/alibabacloud/services/rds/rds_instance_postgresql_log_connections_enabled/rds_instance_postgresql_log_connections_enabled.metadata.json +39 -0
  166. prowler/providers/alibabacloud/services/rds/rds_instance_postgresql_log_connections_enabled/rds_instance_postgresql_log_connections_enabled.py +29 -0
  167. prowler/providers/alibabacloud/services/rds/rds_instance_postgresql_log_disconnections_enabled/__init__.py +0 -0
  168. prowler/providers/alibabacloud/services/rds/rds_instance_postgresql_log_disconnections_enabled/rds_instance_postgresql_log_disconnections_enabled.metadata.json +39 -0
  169. prowler/providers/alibabacloud/services/rds/rds_instance_postgresql_log_disconnections_enabled/rds_instance_postgresql_log_disconnections_enabled.py +29 -0
  170. prowler/providers/alibabacloud/services/rds/rds_instance_postgresql_log_duration_enabled/__init__.py +0 -0
  171. prowler/providers/alibabacloud/services/rds/rds_instance_postgresql_log_duration_enabled/rds_instance_postgresql_log_duration_enabled.metadata.json +38 -0
  172. prowler/providers/alibabacloud/services/rds/rds_instance_postgresql_log_duration_enabled/rds_instance_postgresql_log_duration_enabled.py +29 -0
  173. prowler/providers/alibabacloud/services/rds/rds_instance_sql_audit_enabled/__init__.py +0 -0
  174. prowler/providers/alibabacloud/services/rds/rds_instance_sql_audit_enabled/rds_instance_sql_audit_enabled.metadata.json +39 -0
  175. prowler/providers/alibabacloud/services/rds/rds_instance_sql_audit_enabled/rds_instance_sql_audit_enabled.py +32 -0
  176. prowler/providers/alibabacloud/services/rds/rds_instance_sql_audit_retention/__init__.py +0 -0
  177. prowler/providers/alibabacloud/services/rds/rds_instance_sql_audit_retention/rds_instance_sql_audit_retention.metadata.json +39 -0
  178. prowler/providers/alibabacloud/services/rds/rds_instance_sql_audit_retention/rds_instance_sql_audit_retention.py +41 -0
  179. prowler/providers/alibabacloud/services/rds/rds_instance_ssl_enabled/__init__.py +0 -0
  180. prowler/providers/alibabacloud/services/rds/rds_instance_ssl_enabled/rds_instance_ssl_enabled.metadata.json +39 -0
  181. prowler/providers/alibabacloud/services/rds/rds_instance_ssl_enabled/rds_instance_ssl_enabled.py +30 -0
  182. prowler/providers/alibabacloud/services/rds/rds_instance_tde_enabled/__init__.py +0 -0
  183. prowler/providers/alibabacloud/services/rds/rds_instance_tde_enabled/rds_instance_tde_enabled.metadata.json +39 -0
  184. prowler/providers/alibabacloud/services/rds/rds_instance_tde_enabled/rds_instance_tde_enabled.py +32 -0
  185. prowler/providers/alibabacloud/services/rds/rds_instance_tde_key_custom/__init__.py +0 -0
  186. prowler/providers/alibabacloud/services/rds/rds_instance_tde_key_custom/rds_instance_tde_key_custom.metadata.json +39 -0
  187. prowler/providers/alibabacloud/services/rds/rds_instance_tde_key_custom/rds_instance_tde_key_custom.py +38 -0
  188. prowler/providers/alibabacloud/services/rds/rds_service.py +274 -0
  189. prowler/providers/alibabacloud/services/securitycenter/__init__.py +0 -0
  190. prowler/providers/alibabacloud/services/securitycenter/securitycenter_advanced_or_enterprise_edition/__init__.py +0 -0
  191. prowler/providers/alibabacloud/services/securitycenter/securitycenter_advanced_or_enterprise_edition/securitycenter_advanced_or_enterprise_edition.metadata.json +43 -0
  192. prowler/providers/alibabacloud/services/securitycenter/securitycenter_advanced_or_enterprise_edition/securitycenter_advanced_or_enterprise_edition.py +48 -0
  193. prowler/providers/alibabacloud/services/securitycenter/securitycenter_all_assets_agent_installed/__init__.py +0 -0
  194. prowler/providers/alibabacloud/services/securitycenter/securitycenter_all_assets_agent_installed/securitycenter_all_assets_agent_installed.metadata.json +42 -0
  195. prowler/providers/alibabacloud/services/securitycenter/securitycenter_all_assets_agent_installed/securitycenter_all_assets_agent_installed.py +48 -0
  196. prowler/providers/alibabacloud/services/securitycenter/securitycenter_client.py +6 -0
  197. prowler/providers/alibabacloud/services/securitycenter/securitycenter_notification_enabled_high_risk/__init__.py +0 -0
  198. prowler/providers/alibabacloud/services/securitycenter/securitycenter_notification_enabled_high_risk/securitycenter_notification_enabled_high_risk.metadata.json +42 -0
  199. prowler/providers/alibabacloud/services/securitycenter/securitycenter_notification_enabled_high_risk/securitycenter_notification_enabled_high_risk.py +65 -0
  200. prowler/providers/alibabacloud/services/securitycenter/securitycenter_service.py +394 -0
  201. prowler/providers/alibabacloud/services/securitycenter/securitycenter_vulnerability_scan_enabled/__init__.py +0 -0
  202. prowler/providers/alibabacloud/services/securitycenter/securitycenter_vulnerability_scan_enabled/securitycenter_vulnerability_scan_enabled.metadata.json +39 -0
  203. prowler/providers/alibabacloud/services/securitycenter/securitycenter_vulnerability_scan_enabled/securitycenter_vulnerability_scan_enabled.py +68 -0
  204. prowler/providers/alibabacloud/services/sls/__init__.py +0 -0
  205. prowler/providers/alibabacloud/services/sls/sls_client.py +4 -0
  206. prowler/providers/alibabacloud/services/sls/sls_cloud_firewall_changes_alert_enabled/__init__.py +0 -0
  207. prowler/providers/alibabacloud/services/sls/sls_cloud_firewall_changes_alert_enabled/sls_cloud_firewall_changes_alert_enabled.metadata.json +39 -0
  208. prowler/providers/alibabacloud/services/sls/sls_cloud_firewall_changes_alert_enabled/sls_cloud_firewall_changes_alert_enabled.py +50 -0
  209. prowler/providers/alibabacloud/services/sls/sls_customer_created_cmk_changes_alert_enabled/__init__.py +0 -0
  210. prowler/providers/alibabacloud/services/sls/sls_customer_created_cmk_changes_alert_enabled/sls_customer_created_cmk_changes_alert_enabled.metadata.json +39 -0
  211. prowler/providers/alibabacloud/services/sls/sls_customer_created_cmk_changes_alert_enabled/sls_customer_created_cmk_changes_alert_enabled.py +48 -0
  212. prowler/providers/alibabacloud/services/sls/sls_logstore_retention_period/__init__.py +0 -0
  213. prowler/providers/alibabacloud/services/sls/sls_logstore_retention_period/sls_logstore_retention_period.metadata.json +38 -0
  214. prowler/providers/alibabacloud/services/sls/sls_logstore_retention_period/sls_logstore_retention_period.py +32 -0
  215. prowler/providers/alibabacloud/services/sls/sls_management_console_authentication_failures_alert_enabled/__init__.py +0 -0
  216. prowler/providers/alibabacloud/services/sls/sls_management_console_authentication_failures_alert_enabled/sls_management_console_authentication_failures_alert_enabled.metadata.json +39 -0
  217. prowler/providers/alibabacloud/services/sls/sls_management_console_authentication_failures_alert_enabled/sls_management_console_authentication_failures_alert_enabled.py +44 -0
  218. prowler/providers/alibabacloud/services/sls/sls_management_console_signin_without_mfa_alert_enabled/__init__.py +0 -0
  219. 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
  220. prowler/providers/alibabacloud/services/sls/sls_management_console_signin_without_mfa_alert_enabled/sls_management_console_signin_without_mfa_alert_enabled.py +49 -0
  221. prowler/providers/alibabacloud/services/sls/sls_oss_bucket_policy_changes_alert_enabled/__init__.py +0 -0
  222. prowler/providers/alibabacloud/services/sls/sls_oss_bucket_policy_changes_alert_enabled/sls_oss_bucket_policy_changes_alert_enabled.metadata.json +39 -0
  223. prowler/providers/alibabacloud/services/sls/sls_oss_bucket_policy_changes_alert_enabled/sls_oss_bucket_policy_changes_alert_enabled.py +57 -0
  224. prowler/providers/alibabacloud/services/sls/sls_oss_permission_changes_alert_enabled/__init__.py +0 -0
  225. prowler/providers/alibabacloud/services/sls/sls_oss_permission_changes_alert_enabled/sls_oss_permission_changes_alert_enabled.metadata.json +39 -0
  226. prowler/providers/alibabacloud/services/sls/sls_oss_permission_changes_alert_enabled/sls_oss_permission_changes_alert_enabled.py +48 -0
  227. prowler/providers/alibabacloud/services/sls/sls_ram_role_changes_alert_enabled/__init__.py +0 -0
  228. prowler/providers/alibabacloud/services/sls/sls_ram_role_changes_alert_enabled/sls_ram_role_changes_alert_enabled.metadata.json +39 -0
  229. prowler/providers/alibabacloud/services/sls/sls_ram_role_changes_alert_enabled/sls_ram_role_changes_alert_enabled.py +54 -0
  230. prowler/providers/alibabacloud/services/sls/sls_rds_instance_configuration_changes_alert_enabled/__init__.py +0 -0
  231. prowler/providers/alibabacloud/services/sls/sls_rds_instance_configuration_changes_alert_enabled/sls_rds_instance_configuration_changes_alert_enabled.metadata.json +39 -0
  232. prowler/providers/alibabacloud/services/sls/sls_rds_instance_configuration_changes_alert_enabled/sls_rds_instance_configuration_changes_alert_enabled.py +72 -0
  233. prowler/providers/alibabacloud/services/sls/sls_root_account_usage_alert_enabled/__init__.py +0 -0
  234. prowler/providers/alibabacloud/services/sls/sls_root_account_usage_alert_enabled/sls_root_account_usage_alert_enabled.metadata.json +39 -0
  235. prowler/providers/alibabacloud/services/sls/sls_root_account_usage_alert_enabled/sls_root_account_usage_alert_enabled.py +50 -0
  236. prowler/providers/alibabacloud/services/sls/sls_security_group_changes_alert_enabled/__init__.py +0 -0
  237. prowler/providers/alibabacloud/services/sls/sls_security_group_changes_alert_enabled/sls_security_group_changes_alert_enabled.metadata.json +39 -0
  238. prowler/providers/alibabacloud/services/sls/sls_security_group_changes_alert_enabled/sls_security_group_changes_alert_enabled.py +56 -0
  239. prowler/providers/alibabacloud/services/sls/sls_service.py +137 -0
  240. prowler/providers/alibabacloud/services/sls/sls_unauthorized_api_calls_alert_enabled/__init__.py +0 -0
  241. prowler/providers/alibabacloud/services/sls/sls_unauthorized_api_calls_alert_enabled/sls_unauthorized_api_calls_alert_enabled.metadata.json +39 -0
  242. prowler/providers/alibabacloud/services/sls/sls_unauthorized_api_calls_alert_enabled/sls_unauthorized_api_calls_alert_enabled.py +56 -0
  243. prowler/providers/alibabacloud/services/sls/sls_vpc_changes_alert_enabled/__init__.py +0 -0
  244. prowler/providers/alibabacloud/services/sls/sls_vpc_changes_alert_enabled/sls_vpc_changes_alert_enabled.metadata.json +39 -0
  245. prowler/providers/alibabacloud/services/sls/sls_vpc_changes_alert_enabled/sls_vpc_changes_alert_enabled.py +57 -0
  246. prowler/providers/alibabacloud/services/sls/sls_vpc_network_route_changes_alert_enabled/__init__.py +0 -0
  247. prowler/providers/alibabacloud/services/sls/sls_vpc_network_route_changes_alert_enabled/sls_vpc_network_route_changes_alert_enabled.metadata.json +39 -0
  248. prowler/providers/alibabacloud/services/sls/sls_vpc_network_route_changes_alert_enabled/sls_vpc_network_route_changes_alert_enabled.py +52 -0
  249. prowler/providers/alibabacloud/services/vpc/__init__.py +0 -0
  250. prowler/providers/alibabacloud/services/vpc/vpc_client.py +4 -0
  251. prowler/providers/alibabacloud/services/vpc/vpc_flow_logs_enabled/__init__.py +0 -0
  252. prowler/providers/alibabacloud/services/vpc/vpc_flow_logs_enabled/vpc_flow_logs_enabled.metadata.json +39 -0
  253. prowler/providers/alibabacloud/services/vpc/vpc_flow_logs_enabled/vpc_flow_logs_enabled.py +30 -0
  254. prowler/providers/alibabacloud/services/vpc/vpc_service.py +102 -0
  255. prowler/providers/aws/aws_regions_by_service.json +20 -0
  256. prowler/providers/aws/services/apigateway/apigateway_restapi_waf_acl_attached/apigateway_restapi_waf_acl_attached.metadata.json +1 -3
  257. prowler/providers/aws/services/apigateway/apigateway_service.py +4 -1
  258. prowler/providers/aws/services/cloudtrail/cloudtrail_insights_exist/cloudtrail_insights_exist.metadata.json +1 -1
  259. prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_acls_alarm_configured/cloudwatch_changes_to_network_acls_alarm_configured.metadata.json +1 -2
  260. prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_gateways_alarm_configured/cloudwatch_changes_to_network_gateways_alarm_configured.metadata.json +1 -2
  261. 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
  262. prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_vpcs_alarm_configured/cloudwatch_changes_to_vpcs_alarm_configured.metadata.json +1 -2
  263. 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
  264. 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
  265. prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_authentication_failures/cloudwatch_log_metric_filter_authentication_failures.metadata.json +1 -2
  266. prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_aws_organizations_changes/cloudwatch_log_metric_filter_aws_organizations_changes.metadata.json +1 -2
  267. 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
  268. prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_policy_changes/cloudwatch_log_metric_filter_policy_changes.metadata.json +1 -2
  269. prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_root_usage/cloudwatch_log_metric_filter_root_usage.metadata.json +1 -2
  270. prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_security_group_changes/cloudwatch_log_metric_filter_security_group_changes.metadata.json +1 -2
  271. 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
  272. prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_unauthorized_api_calls/cloudwatch_log_metric_filter_unauthorized_api_calls.metadata.json +0 -1
  273. prowler/providers/aws/services/guardduty/guardduty_centrally_managed/guardduty_centrally_managed.metadata.json +16 -10
  274. prowler/providers/aws/services/guardduty/guardduty_ec2_malware_protection_enabled/guardduty_ec2_malware_protection_enabled.metadata.json +23 -14
  275. prowler/providers/aws/services/guardduty/guardduty_eks_audit_log_enabled/guardduty_eks_audit_log_enabled.metadata.json +19 -13
  276. prowler/providers/aws/services/guardduty/guardduty_eks_runtime_monitoring_enabled/guardduty_eks_runtime_monitoring_enabled.metadata.json +18 -12
  277. prowler/providers/aws/services/guardduty/guardduty_is_enabled/guardduty_is_enabled.metadata.json +24 -13
  278. prowler/providers/aws/services/guardduty/guardduty_lambda_protection_enabled/guardduty_lambda_protection_enabled.metadata.json +20 -14
  279. prowler/providers/aws/services/guardduty/guardduty_no_high_severity_findings/guardduty_no_high_severity_findings.metadata.json +18 -9
  280. prowler/providers/aws/services/guardduty/guardduty_rds_protection_enabled/guardduty_rds_protection_enabled.metadata.json +18 -11
  281. prowler/providers/aws/services/guardduty/guardduty_s3_protection_enabled/guardduty_s3_protection_enabled.metadata.json +21 -12
  282. prowler/providers/aws/services/lightsail/lightsail_database_public/lightsail_database_public.metadata.json +21 -13
  283. prowler/providers/aws/services/lightsail/lightsail_instance_automated_snapshots/lightsail_instance_automated_snapshots.metadata.json +24 -13
  284. prowler/providers/aws/services/lightsail/lightsail_instance_public/lightsail_instance_public.metadata.json +21 -13
  285. prowler/providers/aws/services/lightsail/lightsail_static_ip_unused/lightsail_static_ip_unused.metadata.json +23 -14
  286. prowler/providers/aws/services/macie/macie_automated_sensitive_data_discovery_enabled/macie_automated_sensitive_data_discovery_enabled.metadata.json +20 -12
  287. prowler/providers/aws/services/macie/macie_is_enabled/macie_is_enabled.metadata.json +17 -12
  288. prowler/providers/aws/services/mq/mq_broker_active_deployment_mode/mq_broker_active_deployment_mode.metadata.json +22 -13
  289. prowler/providers/aws/services/mq/mq_broker_auto_minor_version_upgrades/mq_broker_auto_minor_version_upgrades.metadata.json +21 -12
  290. prowler/providers/aws/services/mq/mq_broker_cluster_deployment_mode/mq_broker_cluster_deployment_mode.metadata.json +23 -14
  291. prowler/providers/aws/services/mq/mq_broker_logging_enabled/mq_broker_logging_enabled.metadata.json +22 -13
  292. prowler/providers/aws/services/mq/mq_broker_not_publicly_accessible/mq_broker_not_publicly_accessible.metadata.json +20 -12
  293. prowler/providers/aws/services/networkfirewall/networkfirewall_deletion_protection/networkfirewall_deletion_protection.metadata.json +21 -13
  294. prowler/providers/aws/services/networkfirewall/networkfirewall_in_all_vpc/networkfirewall_in_all_vpc.metadata.json +23 -13
  295. prowler/providers/aws/services/networkfirewall/networkfirewall_logging_enabled/networkfirewall_logging_enabled.metadata.json +20 -13
  296. prowler/providers/aws/services/networkfirewall/networkfirewall_multi_az/networkfirewall_multi_az.metadata.json +22 -14
  297. prowler/providers/aws/services/networkfirewall/networkfirewall_policy_default_action_fragmented_packets/networkfirewall_policy_default_action_fragmented_packets.metadata.json +26 -14
  298. prowler/providers/aws/services/networkfirewall/networkfirewall_policy_default_action_full_packets/networkfirewall_policy_default_action_full_packets.metadata.json +22 -13
  299. prowler/providers/aws/services/networkfirewall/networkfirewall_policy_rule_group_associated/networkfirewall_policy_rule_group_associated.metadata.json +25 -14
  300. prowler/providers/common/provider.py +12 -0
  301. prowler/providers/gcp/services/accesscontextmanager/__init__.py +0 -0
  302. prowler/providers/gcp/services/accesscontextmanager/accesscontextmanager_client.py +6 -0
  303. prowler/providers/gcp/services/accesscontextmanager/accesscontextmanager_service.py +101 -0
  304. prowler/providers/gcp/services/cloudresourcemanager/cloudresourcemanager_service.py +10 -0
  305. prowler/providers/gcp/services/cloudstorage/cloudstorage_service.py +13 -0
  306. prowler/providers/gcp/services/cloudstorage/cloudstorage_uses_vpc_service_controls/__init__.py +0 -0
  307. prowler/providers/gcp/services/cloudstorage/cloudstorage_uses_vpc_service_controls/cloudstorage_uses_vpc_service_controls.metadata.json +36 -0
  308. prowler/providers/gcp/services/cloudstorage/cloudstorage_uses_vpc_service_controls/cloudstorage_uses_vpc_service_controls.py +67 -0
  309. prowler/providers/gcp/services/compute/compute_instance_automatic_restart_enabled/__init__.py +0 -0
  310. prowler/providers/gcp/services/compute/compute_instance_automatic_restart_enabled/compute_instance_automatic_restart_enabled.metadata.json +36 -0
  311. prowler/providers/gcp/services/compute/compute_instance_automatic_restart_enabled/compute_instance_automatic_restart_enabled.py +35 -0
  312. prowler/providers/gcp/services/compute/compute_instance_deletion_protection_enabled/__init__.py +0 -0
  313. prowler/providers/gcp/services/compute/compute_instance_deletion_protection_enabled/compute_instance_deletion_protection_enabled.metadata.json +36 -0
  314. prowler/providers/gcp/services/compute/compute_instance_deletion_protection_enabled/compute_instance_deletion_protection_enabled.py +29 -0
  315. prowler/providers/gcp/services/compute/compute_instance_preemptible_vm_disabled/__init__.py +0 -0
  316. prowler/providers/gcp/services/compute/compute_instance_preemptible_vm_disabled/compute_instance_preemptible_vm_disabled.metadata.json +37 -0
  317. prowler/providers/gcp/services/compute/compute_instance_preemptible_vm_disabled/compute_instance_preemptible_vm_disabled.py +32 -0
  318. prowler/providers/gcp/services/compute/compute_service.py +16 -0
  319. prowler/providers/github/services/repository/repository_immutable_releases_enabled/__init__.py +0 -0
  320. prowler/providers/github/services/repository/repository_immutable_releases_enabled/repository_immutable_releases_enabled.metadata.json +33 -0
  321. prowler/providers/github/services/repository/repository_immutable_releases_enabled/repository_immutable_releases_enabled.py +41 -0
  322. prowler/providers/github/services/repository/repository_service.py +52 -0
  323. {prowler_cloud-5.14.2.dist-info → prowler_cloud-5.15.1.dist-info}/METADATA +40 -22
  324. {prowler_cloud-5.14.2.dist-info → prowler_cloud-5.15.1.dist-info}/RECORD +327 -74
  325. {prowler_cloud-5.14.2.dist-info → prowler_cloud-5.15.1.dist-info}/LICENSE +0 -0
  326. {prowler_cloud-5.14.2.dist-info → prowler_cloud-5.15.1.dist-info}/WHEEL +0 -0
  327. {prowler_cloud-5.14.2.dist-info → prowler_cloud-5.15.1.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,1833 @@
1
+ {
2
+ "Framework": "CIS",
3
+ "Name": "CIS Alibaba Cloud Foundations Benchmark v2.0.0",
4
+ "Version": "2.0",
5
+ "Provider": "alibabacloud",
6
+ "Description": "The CIS Alibaba Cloud Foundations Benchmark provides prescriptive guidance for configuring security options for a subset of Alibaba Cloud services with an emphasis on foundational, testable, and architecture agnostic settings.",
7
+ "Requirements": [
8
+ {
9
+ "Id": "1.1",
10
+ "Description": "Avoid the use of the root account",
11
+ "Attributes": [
12
+ {
13
+ "Section": "1. Identity and Access Management",
14
+ "Profile": "Level 1",
15
+ "AssessmentStatus": "Manual",
16
+ "Description": "An Alibaba Cloud account can be viewed as a “root” account. The root account has full control permissions to all cloud products and resources under such account. It is highly recommended that the use of this account should be avoided.",
17
+ "RationaleStatement": "The root account is the owner of the resources under an Alibaba Cloud account. This account pays for and has full control permissions to resources. Minimizing the use of such account and adopting the principle of least privilege for access management can reduce the risk of accidental or unauthorized changes and disclosure of highly privileged credentials.",
18
+ "ImpactStatement": "",
19
+ "RemediationProcedure": "All users should operate resources at the RAM user level and follow the principle of least privilege. Follow the remediation instructions of the Ensure RAM policies are attached only to groups or roles recommendation. For more information about RAM user, see terms of RAM user.",
20
+ "AuditProcedure": "You can enable ActionTrail for your account, and create a trail to deliver all action logs to Alibaba Cloud Log Service. Then, you can enable an alarm to discover the usage of root account and receive notifications on those conditions. Implement the Ensure a log metric filter and alarm exist for usage of root account recommendation in the Logging and Monitoring section to receive notifications of root account usage. Note: There are a few conditions under which the use of the root account is required, such as requesting account security report or configuring multi-factor authentication (MFA) for the root account.",
21
+ "AdditionalInformation": "",
22
+ "References": "https://www.alibabacloud.com/help/doc-detail/102600.htm",
23
+ "DefaultValue": ""
24
+ }
25
+ ],
26
+ "Checks": []
27
+ },
28
+ {
29
+ "Id": "1.2",
30
+ "Description": "Ensure no root account access key exists",
31
+ "Attributes": [
32
+ {
33
+ "Section": "1. Identity and Access Management",
34
+ "Profile": "Level 1",
35
+ "AssessmentStatus": "Manual",
36
+ "Description": "Access keys provide programmatic access to a given Alibaba Cloud account. It is recommended that all access keys associated with the root account be removed.",
37
+ "RationaleStatement": "An Alibaba Cloud account can be viewed as a “root” account. The root account has the highest privilege of an Alibaba Cloud account. Removing access keys associated with the root account limits the opportunity that the account can be compromised.",
38
+ "ImpactStatement": "Programs that already use root account access keys may stop working if you disable or delete the access keys without replacing them with other RAM user access keys in your program.",
39
+ "RemediationProcedure": "Perform the following to delete or disable active root access keys: Using the management console 1. Logon to RAM console by using your Alibaba Cloud account (root account). 2. Move the pointer over the account icon in the upper-right corner and click AccessKey. 3. Click Continue to manage AccessKey. 4. On the Security Management page, find the target access keys and perform the following operations: o Click Disable to disable the target access keys temporarily. o Click Delete to delete the target access keys permanently.",
40
+ "AuditProcedure": "Perform the following to determine if the root account has access keys: Using the management console: 1. Logon to Resource Access Management (RAM) console https://ram.console.aliyun.com/overview by using your Alibaba Cloud account (root account). 2. In the left-side navigation pane, click Overview. 3. In the Security Check section, make sure that No AK for Root Account is marked as Finished.",
41
+ "AdditionalInformation": "",
42
+ "References": "https://www.alibabacloud.com/help/doc-detail/102600.htm",
43
+ "DefaultValue": "By default, no access key is created for the root account."
44
+ }
45
+ ],
46
+ "Checks": [
47
+ "ram_no_root_access_key"
48
+ ]
49
+ },
50
+ {
51
+ "Id": "1.3",
52
+ "Description": "Ensure MFA is enabled for the root account",
53
+ "Attributes": [
54
+ {
55
+ "Section": "1. Identity and Access Management",
56
+ "Profile": "Level 1",
57
+ "AssessmentStatus": "Manual",
58
+ "Description": "With MFA enabled, anytime the “root” account logs on to Alibaba Cloud, it will be prompted for username and password followed by an authentication code from the virtual MFA device. It is recommended that MFA be enabled for the “root” user.",
59
+ "RationaleStatement": "It is important to prevent “root” account from being compromised. Enabling MFA requires the “root” account holder to provide additional information on top of username and password. When MFA is enabled, an attacker faces at least two different authentication mechanisms. The additional security makes it harder for an attacker to gain access to protected resources or data.",
60
+ "ImpactStatement": "",
61
+ "RemediationProcedure": "Perform the following to enable MFA for “root” account Using the management console: 1. Logon to RAM console by using your Alibaba Cloud account (root account). 2. Move the pointer over the account icon in the upper-right corner and click Security Settings. 3. In the Account Protection section, Click Edit. 4. On the displayed page, select a scenario and select TOTP. 5. Click Submit. 6. On the displayed page, click Verify now. 7. Enter the verification code and click Submit. 8. Download and install a mobile application that supports TOTP MFA, such as Google Authenticator, on your mobile phone. Note: If you already installed Google Authenticator, click Next. o For iOS: Install Google Authenticator from the App Store. o For Android: Install Google Authenticator from the Google Play Store. Note: You need to install a QR code scanner from the Google Play Store for Google Authenticator to identify QR codes. 9. After you install Google Authenticator, go back to the Identity Verification page and click Next. 10. Open Google Authenticator and tap BEGIN SETUP. o Tap Scan barcode and scan the QR code on the Identity Verification page. o Tap Manual entry, enter the username and key, and then tap the check mark (√) icon. Note: You can obtain the username and key by moving the pointer over Scan failed on the Identity Verification page. 11. On the Identity Verification page, enter the 6-digit verification code obtained from Google Authenticator and click Next. Note: The verification code is refreshed at an interval of 30 seconds.",
62
+ "AuditProcedure": "Perform the following to determine if an MFA device is enabled for the “root” account: Using the management console: 1. Logon to RAM console by using your Alibaba Cloud account (root account). 2. In the left-side navigation pane, click Overview. 3. In the Security Check section, make sure that Enable MFA for Root Account is marked as Finished.",
63
+ "AdditionalInformation": "",
64
+ "References": "http://tools.ietf.org/html/rfc6238 https://www.alibabacloud.com/help/doc-detail/28635.htm",
65
+ "DefaultValue": ""
66
+ }
67
+ ],
68
+ "Checks": []
69
+ },
70
+ {
71
+ "Id": "1.4",
72
+ "Description": "Ensure that multi-factor authentication is enabled for all RAM users that have a console password",
73
+ "Attributes": [
74
+ {
75
+ "Section": "1. Identity and Access Management",
76
+ "Profile": "Level 1",
77
+ "AssessmentStatus": "Automated",
78
+ "Description": "Multi-Factor Authentication (MFA) adds an extra layer of protection on top of a username and password. With MFA enabled, when a user logs on to Alibaba Cloud, they will be prompted for their user name and password followed by an authentication code from their virtual MFA device. It is recommended that MFA be enabled for all users that have a console password.",
79
+ "RationaleStatement": "MFA requires users to verify their identities by entering two authentication factors. When MFA is enabled, an attacker faces at least two different authentication mechanisms. The additional security makes it harder for an attacker to gain access to protected resources or data.",
80
+ "ImpactStatement": "",
81
+ "RemediationProcedure": "Perform the following to determine if an MFA device is enabled for all RAM users having a console password: Using the management console: 1. Logon to RAM console. 2. Choose Identities > Users. 3. In the User Logon Name/Display Name column, click the username of each RAM user. 4. In the Console Logon Management section, click Modify Logon Settings. 5. Select Enabled for Console Password Logon, and Required for Enable MFA. Note: After you select Enabled for Console Password Logon, and Required for Enable MFA when modifying the logon settings of a RAM user, the user can go to step 7 when logging on to the RAM console for the first time. 6. In the MFA Device section, click Enable the device. 7. Download and install Google Authenticator on your mobile phone. o For iOS: Install Google Authenticator from the App Store. o For Android: Install Google Authenticator from the Google Play Store. Note: You need to install a QR code scanner from the Google Play Store for Google Authenticator to identify QR codes. 8. Open Google Authenticator and tap BEGIN SETUP. o Tap Scan barcode and scan the QR code displayed on the Scan the code tab in the console. o Tap Manual entry, enter the username and key, and then tap the check mark (√) icon. Note: You can obtain the username and key from the Retrieval manually enter information tab in the console. 9. On the Scan the code tab, enter the two consecutive security codes obtained from Google Authenticator and click Enable. Note: The security code is refreshed at an interval of 30 seconds. For more information, see Enable an MFA device for a RAM user.",
82
+ "AuditProcedure": "Perform the following to determine if an MFA device is enabled for all RAM users having a console password: Using the management console: 1. Logon to RAM console. 2. Choose Identities > Users. 3. In the User Logon Name/Display Name column, click the username of each RAM user. 4. In the Console Logon Management section, if Console Access is set to Enabled, make sure that Required to Enable MFA is set to Yes. Using the CLI Run the following command to determine if an MFA device is enabled for a RAM user: aliyun ram GetUserMFAInfo --UserName <ram_user> Note: If an error is reported, no MFA device is enabled for the RAM user.",
83
+ "AdditionalInformation": "",
84
+ "References": "http://tools.ietf.org/html/rfc6238 https://www.alibabacloud.com/help/doc-detail/93720.htm https://www.alibabacloud.com/help/doc-detail/119555.htm https://www.alibabacloud.com/help/en/ram/user-guide/bind-an-mfa-device-to-a-",
85
+ "DefaultValue": "MFA is enabled by default for RAM users"
86
+ }
87
+ ],
88
+ "Checks": [
89
+ "ram_user_mfa_enabled_console_access"
90
+ ]
91
+ },
92
+ {
93
+ "Id": "1.5",
94
+ "Description": "Ensure users not logged on for 90 days or longer are disabled for console logon",
95
+ "Attributes": [
96
+ {
97
+ "Section": "1. Identity and Access Management",
98
+ "Profile": "Level 1",
99
+ "AssessmentStatus": "Automated",
100
+ "Description": "Alibaba Cloud RAM users can logon to Alibaba Cloud console by using their user name and password. If a user has not logged on for 90 days or longer, it is recommended to disable the console access of the user.",
101
+ "RationaleStatement": "Disabling users from having unnecessary logon privileges will reduce the opportunity that an abandoned user or a user with compromised password to be used.",
102
+ "ImpactStatement": "RAM users who still need to log on to the management console or other Alibaba Cloud sites may encounter logon failure.",
103
+ "RemediationProcedure": "Perform the following to disable console logon for a user: Using the management console: 1. Logon to RAM console. 2. Choose Identities > Users. 3. In the User Logon Name/Display Name column, click the username of the target RAM user. 4. In the Console Logon Management section, click Modify Logon Settings. 5. In the Console Password Logon section, select Disabled. 6. Click OK. Using the CLI aliyun ram DeleteLoginProfile --UserName <ram_user>",
104
+ "AuditProcedure": "Perform the following to determine if a user has not logged on for 90 days or longer: Using the management console: 1. Logon RAM console. 2. Choose Identities > Users. 3. In the User Logon Name/Display Name column, click the username of each RAM user. 4. In the Console Logon Management section, check the latest logon time of each user in the Last Console Logon field. 5. Make sure that each user does not have a last console logon time dated earlier than 90 days ago.",
105
+ "AdditionalInformation": "",
106
+ "References": "",
107
+ "DefaultValue": ""
108
+ }
109
+ ],
110
+ "Checks": [
111
+ "ram_user_console_access_unused"
112
+ ]
113
+ },
114
+ {
115
+ "Id": "1.6",
116
+ "Description": "Ensure access keys are rotated every 90 days or less",
117
+ "Attributes": [
118
+ {
119
+ "Section": "1. Identity and Access Management",
120
+ "Profile": "Level 1",
121
+ "AssessmentStatus": "Automated",
122
+ "Description": "An access key consists of an access key ID and a secret, which are used to sign programmatic requests that you make to Alibaba Cloud. RAM users need their own access keys to make programmatic calls to Alibaba Cloud from the Alibaba Cloud SDKs, CLIs, or direct HTTP/HTTPS calls using the APIs for individual Alibaba Cloud services. It is recommended that all access keys be regularly rotated.",
123
+ "RationaleStatement": "Access keys might be compromised by leaving them in codes, configuration files, on premise and cloud storages, and then stolen by attackers. Rotating access keys will reduce the window of opportunity that a compromised access key to be used.",
124
+ "ImpactStatement": "",
125
+ "RemediationProcedure": "Perform the following to disable and delete access keys: Using the management console: 1. Logon to RAM console. 2. In the left-side navigation pane, click Users under Identities. 3. In the User Logon Name/Display Name column, click the username of the target RAM user. 4. In the User AccessKeys section, click Create AccessKey. 5. Click OK to create a new AccessKy pair for rotation. 6. Update all applications and systems to use the new AccessKey pair. 7. Disable the original AccessKey pair by following below steps: a) Log on to RAM console. b) In the left-side navigation pane, click Users under Identities. c) On the Users page, click username of the target RAM user in the User Logon Name/Display Name column. d) In the User AccessKeys section, find the target AccessKey pair and click Disable. 8. Confirm that your applications and systems are working. 9. Delete the original AccessKey pair by following below steps: a) Log on to RAM console. b) In the left-side navigation pane, click Users under Identities. c) In the User Logon Name/Display Name column, click the username of the target RAM user. d) In the User AccessKeys section, find the target access keys and Click Delete. e) In the dialog box that appears, select I am aware of the risk and confirm the deletion. 10. Click OK. Using the CLI: • Run the following command to delete an access key: aliyun ram DeleteAccessKey --UserAccessKeyId <access_key_ID> --UserName <ram_user > • Run the following command to disable an active access key: aliyun ram UpdateAccessKey --UserAccessKeyId <access_key_ID> --Status Inactive --UserName <ram_user> • Run the following command to delete an access key: aliyun ram DeleteAccessKey --UserAccessKeyId <access_key_ID> --UserName <ram_user > Your programs that use access keys may stop working if you rotate the access keys without replacing them in your program prior to the rotation.",
126
+ "AuditProcedure": "Perform the following to determine if access keys are rotated within 90 days: Using the management console: 1. Logon to RAM console. 2. Choose Identities > Groups. 3. In the User Logon Name/Display Name column, click the username of each RAM user. 4. In the User AccessKeys section, check the date and time that an access key was created. 5. Make sure that no user has an access key created earlier than 90 days ago. Using the CLI: Run the following command to obtain a list of access keys of a RAM user, and then determine if the access keys are rotated within 90 days according to the CreateDate parameter: aliyun ram ListAccessKeys --UserName <ram_user> Note: In the output, if the AccessKey parameter is empty, no access key exists.",
127
+ "AdditionalInformation": "",
128
+ "References": "https://www.alibabacloud.com/help/doc-detail/116806.htm https://www.alibabacloud.com/help/doc-detail/116808.htm https://www.alibabacloud.com/help/doc-detail/152682.htm https://www.alibabacloud.com/help/doc-detail/116401.htm",
129
+ "DefaultValue": ""
130
+ }
131
+ ],
132
+ "Checks": [
133
+ "ram_rotate_access_key_90_days"
134
+ ]
135
+ },
136
+ {
137
+ "Id": "1.7",
138
+ "Description": "Ensure RAM password policy requires at least one uppercase letter",
139
+ "Attributes": [
140
+ {
141
+ "Section": "1. Identity and Access Management",
142
+ "Profile": "Level 1",
143
+ "AssessmentStatus": "Automated",
144
+ "Description": "RAM password policies can be used to ensure password complexity. It is recommended that the password policy require at least one uppercase letter.",
145
+ "RationaleStatement": "Enhancing complexity of a password policy increases account resiliency against brute force logon attempts.",
146
+ "ImpactStatement": "",
147
+ "RemediationProcedure": "Perform the following to set the password policy as expected: Using the management console: 1. Logon to RAM console. 2. Choose Settings. 3. In the Password section, click Modify. 4. In the Charset section, select Upper case. 5. Click OK. Using the CLI: aliyun ram SetPasswordPolicy --RequireUppercaseCharacters true",
148
+ "AuditProcedure": "Perform the following to ensure the password policy is configured as expected: Using the management console: 1. Logon to RAM console. 2. Choose Settings. 3. In the Password section, make sure that the value of Charset contains Upper case. Using the CLI: aliyun ram GetPasswordPolicy In the output, make sure that the RequireUppercaseCharacters parameter is set to true.",
149
+ "AdditionalInformation": "",
150
+ "References": "https://www.alibabacloud.com/help/doc-detail/116413.htm",
151
+ "DefaultValue": "The default password policy does not enforce any charset in a password."
152
+ }
153
+ ],
154
+ "Checks": [
155
+ "ram_password_policy_uppercase"
156
+ ]
157
+ },
158
+ {
159
+ "Id": "1.8",
160
+ "Description": "Ensure RAM password policy requires at least one lowercase letter",
161
+ "Attributes": [
162
+ {
163
+ "Section": "1. Identity and Access Management",
164
+ "Profile": "Level 1",
165
+ "AssessmentStatus": "Automated",
166
+ "Description": "RAM password policies can be used to ensure password complexity. It is recommended that the password policy require at least one lowercase letter.",
167
+ "RationaleStatement": "Enhancing complexity of a password policy increases account resiliency against brute force logon attempts.",
168
+ "ImpactStatement": "",
169
+ "RemediationProcedure": "Perform the following to set the password policy as expected: Using the management console: 1. Logon to RAM console. 2. Choose Settings. 3. In the Password section, click Modify. 4. In the Charset section, select Upper case. 5. Click OK. Using the CLI: aliyun ram SetPasswordPolicy --RequireLowercaseCharacters true",
170
+ "AuditProcedure": "Perform the following to ensure the password policy is configured as expected: Using the management console: 1. Logon to RAM console. 2. Choose Settings. 3. In the Password section, make sure that the value of Charset contains Lower case. Using the CLI: aliyun ram GetPasswordPolicy In the output, make sure that the RequireLowercaseCharacters parameter is set to true.",
171
+ "AdditionalInformation": "",
172
+ "References": "https://www.alibabacloud.com/help/doc-detail/116413.htm",
173
+ "DefaultValue": "The default password policy does not enforce any Charset in a password."
174
+ }
175
+ ],
176
+ "Checks": [
177
+ "ram_password_policy_lowercase"
178
+ ]
179
+ },
180
+ {
181
+ "Id": "1.9",
182
+ "Description": "Ensure RAM password policy require at least one symbol",
183
+ "Attributes": [
184
+ {
185
+ "Section": "1. Identity and Access Management",
186
+ "Profile": "Level 1",
187
+ "AssessmentStatus": "Automated",
188
+ "Description": "RAM password policies can be used to ensure password complexity. It is recommended that the password policy require at least one symbol.",
189
+ "RationaleStatement": "Enhancing complexity of a password policy increases account resiliency against brute force logon attempts.",
190
+ "ImpactStatement": "",
191
+ "RemediationProcedure": "Perform the following to set the password policy as expected: Using the management console: 1. Logon to RAM console. 2. Choose Settings. 3. In the Password section, click Modify. 4. In the Charset section, select Symbol. 5. Click OK. Using the CLI: aliyun ram SetPasswordPolicy --RequireSymbols true",
192
+ "AuditProcedure": "Perform the following to ensure the password policy is configured as expected: Using the management console: 1. Logon to RAM console. 2. Choose Settings. 3. In the Password section, make sure that the value of Charset contains Symbol. Using the CLI: aliyun ram GetPasswordPolicy In the output, make sure that the RequireSymbols parameter is set to true.",
193
+ "AdditionalInformation": "",
194
+ "References": "https://www.alibabacloud.com/help/doc-detail/116413.htm",
195
+ "DefaultValue": "The default password policy does not enforce any Charset in a password."
196
+ }
197
+ ],
198
+ "Checks": [
199
+ "ram_password_policy_symbol"
200
+ ]
201
+ },
202
+ {
203
+ "Id": "1.10",
204
+ "Description": "Ensure RAM password policy require at least one number",
205
+ "Attributes": [
206
+ {
207
+ "Section": "1. Identity and Access Management",
208
+ "Profile": "Level 1",
209
+ "AssessmentStatus": "Automated",
210
+ "Description": "RAM password policies can be used to ensure password complexity. It is recommended that the password policy require at least one number.",
211
+ "RationaleStatement": "Enhancing complexity of a password policy increases account resiliency against brute force logon attempts.",
212
+ "ImpactStatement": "",
213
+ "RemediationProcedure": "Perform the following to set the password policy as expected: Using the management console 1. Logon to RAM console. 2. Choose Settings. 3. In the Password section, click Modify. 4. In the Charset section, select Number. 5. Click OK. Using the CLI aliyun ram SetPasswordPolicy --RequireNumbers true",
214
+ "AuditProcedure": "Perform the following to ensure the password policy is configured as expected: Using the management console: 1. Logon to RAM console. 2. Choose Settings. 3. In the Password section, make sure that the value of Charset contains Number. Using the CLI: aliyun ram GetPasswordPolicy In the output, make sure that the RequireNumbers parameter is set to true.",
215
+ "AdditionalInformation": "",
216
+ "References": "https://www.alibabacloud.com/help/doc-detail/116413.htm",
217
+ "DefaultValue": "The default password policy does not enforce any charset in a password."
218
+ }
219
+ ],
220
+ "Checks": []
221
+ },
222
+ {
223
+ "Id": "1.11",
224
+ "Description": "Ensure RAM password policy requires minimum length of 14 or greater",
225
+ "Attributes": [
226
+ {
227
+ "Section": "1. Identity and Access Management",
228
+ "Profile": "Level 1",
229
+ "AssessmentStatus": "Automated",
230
+ "Description": "RAM password policies can be used to ensure password complexity. It is recommended that the password policy require a minimum of 14 or greater characters for any password.",
231
+ "RationaleStatement": "Enhancing complexity of a password policy increases account resiliency against brute force logon attempts.",
232
+ "ImpactStatement": "",
233
+ "RemediationProcedure": "Perform the following to set the password policy: Using the management console: 1. Logon to RAM console. 2. Choose Settings. 3. In the Password section, click Modify. 4. In the Length section, enter 14 or a greater number. 5. Click OK. Using the CLI aliyun ram SetPasswordPolicy --MinimumPasswordLength 14",
234
+ "AuditProcedure": "Perform the following to ensure the password policy is configured as expected: Using the management console: 1. Logon to RAM console. 2. Choose Settings. 3. In the Password section, make sure that the value of Length is a value of 14 to 32. Using the CLI: aliyun ram GetPasswordPolicy In the output, make sure that the MinimumPasswordLength parameter is set to 14 or a greater number.",
235
+ "AdditionalInformation": "",
236
+ "References": "https://www.alibabacloud.com/help/doc-detail/116413.htm",
237
+ "DefaultValue": "The default password policy requires a minimum of 8 characters for a password."
238
+ }
239
+ ],
240
+ "Checks": [
241
+ "ram_password_policy_minimum_length"
242
+ ]
243
+ },
244
+ {
245
+ "Id": "1.12",
246
+ "Description": "Ensure RAM password policy prevents password reuse",
247
+ "Attributes": [
248
+ {
249
+ "Section": "1. Identity and Access Management",
250
+ "Profile": "Level 1",
251
+ "AssessmentStatus": "Automated",
252
+ "Description": "It is recommended that the password policy prevent the reuse of passwords.",
253
+ "RationaleStatement": "Preventing password reuse increases account resiliency against brute force logon attempt.",
254
+ "ImpactStatement": "",
255
+ "RemediationProcedure": "Perform the following to set the password policy as expected: Using the management console: 1. Logon to RAM console. 2. Choose Settings. 3. In the Password section, click Modify. 4. In the Do Not repeat History section field, enter '5'. 5. Click OK. Using the CLI: aliyun ram SetPasswordPolicy --PasswordReusePrevention 5",
256
+ "AuditProcedure": "Perform the following to ensure the password policy is configured as expected: Using the management console: 1. Logon to RAM console. 2. Choose Settings. 3. In the Password section, make sure that the value of Do Not Repeat History is set to 5. Using the CLI: aliyun ram GetPasswordPolicy In the output, make sure that the PasswordReusePrevention parameter is set to 5.",
257
+ "AdditionalInformation": "",
258
+ "References": "https://www.alibabacloud.com/help/doc-detail/116413.htm",
259
+ "DefaultValue": "The default password policy does not prevent password reuse."
260
+ }
261
+ ],
262
+ "Checks": [
263
+ "ram_password_policy_password_reuse_prevention"
264
+ ]
265
+ },
266
+ {
267
+ "Id": "1.13",
268
+ "Description": "Ensure RAM password policy expires passwords in 365 days or greater",
269
+ "Attributes": [
270
+ {
271
+ "Section": "1. Identity and Access Management",
272
+ "Profile": "Level 1",
273
+ "AssessmentStatus": "Automated",
274
+ "Description": "RAM password policies can require passwords to be expired after a given number of days. It is recommended that the password policy expire passwords after 365 days or greater.",
275
+ "RationaleStatement": "To frequent password changes are more harmful than beneficial. They offer no containment benefits and enforce bad habits—since they encourage users to choose variants of older passwords. In an effort to scale back, the CIS now recommends an annual password reset. Users inevitably share credentials between accounts, and this measure causes minimal burden. This compliments other industry best practices that call for password to be changed only when there's a confirmed or suspected breach.",
276
+ "ImpactStatement": "",
277
+ "RemediationProcedure": "Perform the following to set the password policy as expected: Using the management console: 1. Logon to RAM console. 2. Choose Setting. 3. In the Password section, click Modify. 4. check the box under Max Age, enter 365 or a greater number up to 1095. 5. Click OK. Using the CLI: aliyun ram SetPasswordPolicy --MaxPasswordAge 365",
278
+ "AuditProcedure": "Perform the following to ensure the password policy is configured as expected: Using the management console: 1. Logon to RAM console. 2. Choose Settings. 3. In the Password section, make sure that the value of Max Age is either disabled or greater than 365. Using the CLI: aliyun ram GetPasswordPolicy In the output, make sure that the MaxPasswordAge parameter is set to <365> or a greater number.",
279
+ "AdditionalInformation": "",
280
+ "References": "https://www.alibabacloud.com/help/doc-detail/116413.htm",
281
+ "DefaultValue": "The default password policy does not define max age."
282
+ }
283
+ ],
284
+ "Checks": [
285
+ "ram_password_policy_max_password_age"
286
+ ]
287
+ },
288
+ {
289
+ "Id": "1.14",
290
+ "Description": "Ensure RAM password policy temporarily blocks logon after 5 incorrect logon attempts within an hour",
291
+ "Attributes": [
292
+ {
293
+ "Section": "1. Identity and Access Management",
294
+ "Profile": "Level 1",
295
+ "AssessmentStatus": "Automated",
296
+ "Description": "RAM password policies can temporarily block logon after several incorrect logon attempts within an hour. It is recommended that the password policy is set to temporarily block logon after 5 incorrect logon attempts within an hour.",
297
+ "RationaleStatement": "Temporarily blocking logon for incorrect password input increases account resiliency against brute force logon attempts.",
298
+ "ImpactStatement": "",
299
+ "RemediationProcedure": "Perform the following to set the password policy as expected: Using the management console: 1. Logon to RAM console. 2. Choose Settings. 3. In the Password section, click MOdify. 4. In the Max Attempts field, Check the box next to Enable and enter 5 in the field. 5. Click OK. Using the CLI: aliyun ram SetPasswordPolicy --MaxLoginAttemps 5",
300
+ "AuditProcedure": "Perform the following to ensure the password policy is configured as expected: Using the management console: 1. Logon to RAM console. 2. Choose Settings. 3. In the Password section, make sure that the value of Max Attempts is 5. Using the CLI: aliyun ram GetPasswordPolicy In the output, make sure that the MaxLoginAttemps parameter is set to <5>.",
301
+ "AdditionalInformation": "",
302
+ "References": "https://www.alibabacloud.com/help/doc-detail/116413.htm",
303
+ "DefaultValue": "The default password policy does not define Max Attempts."
304
+ }
305
+ ],
306
+ "Checks": [
307
+ "ram_password_policy_max_login_attempts"
308
+ ]
309
+ },
310
+ {
311
+ "Id": "1.15",
312
+ "Description": "Ensure RAM policies that allow full *:* administrative privileges are not created",
313
+ "Attributes": [
314
+ {
315
+ "Section": "1. Identity and Access Management",
316
+ "Profile": "Level 1",
317
+ "AssessmentStatus": "Automated",
318
+ "Description": "RAM policies represent permissions that can be granted to users, groups, or roles. It is recommended and considered a standard security advice to grant least privilege—that is, granting only the permissions required to perform tasks. Determine what users need to do and then create policies with permissions only fits those tasks, instead of allowing full administrative privileges.",
319
+ "RationaleStatement": "It is more secure to start with a minimum set of permissions and grant additional permissions as necessary, rather than starting with permissions that exceed the necessity and then trying to tighten them later. Providing full administrative privileges exposes your resources on Alibaba Cloud to potentially unwanted actions. RAM policies that have a statement with Effect: Allow, Action: *, and Resource: * should be prohibited.",
320
+ "ImpactStatement": "If you edit the policy document, or remove all references from the policy, the identities using this policy may encounter access denied errors for the actions and resources that are not covered by their current permissions.",
321
+ "RemediationProcedure": "Perform the following to detach the policy that has full administrative privileges and remove them: Using the management console: 1. Logon to RAM console. 2. Choose Permissions > Policies. 3. From the Policy Type drop-down list, select Custom Policy. 4. In the Policy Name column, click the name of the target policy. 5. In the Policy Document section, check whether the policy has a statement that includes Effect: Allow, Action: , and Resource: . o If it does not, skip this section. o If it does, edit the policy to remove such statement or remove the policy from any RAM users, user groups, or roles that have this policy attached. - To edit the policy: a. On the Policy Document tab, click Modify Policy Document. b. Remove the entire “Statement” element which contains the full : administrative privilege, or modify it to a smaller permission. - To remove all references from the policy: a. Go to the References tab, review if there is any reference of the custom policy. b. For each reference, click Revoke Permission. 6. Click OK. Using the CLI: 1. Run the following command to list all RAM users, groups, and roles to which the specified policy (i.e. policy with .) is attached: aliyun ram ListEntitiesForPolicy --PolicyName <policy_name> --PolicyType Custom 2. Run the following command to detach the policy from all RAM users: aliyun ram DetachPolicyFromUser --PolicyName <policy_name> --PolicyType Custom --UserName <ram_user > 3. Run the following command to detach the policy from all RAM user groups: aliyun ram DetachPolicyFromGroup --PolicyName <policy_name> --PolicyType Custom --GroupName <ram_group> 4. Run the following command to detach the policy from all RAM roles: aliyun ram DetachPolicyFromRole --PolicyName <policy_name> --PolicyType Custom --RoleName <ram_role>",
322
+ "AuditProcedure": "Perform the following to check what permissions are allowed inside a policy: Using the management console: 1. Logon to RAM console. 2. Choose Permissions > Policies. 3. From the Policy Type drop-down list, select Custom Policy. 4. In the Policy Name column, click the name of each policy. 5. In the Policy Document section, make sure that no policy has a statement that includes Effect: Allow, Action: *, and Resource: *, or any policy with such statement is not attached to any RAM identities (including RAM user, group, or role). Using the CLI: 1. Run the following command to obtain a list of policies aliyun ram ListPolicies --PolicyType Custom 2. For each policy returned, run the following command to determine if any policies allow full administrative privileges: aliyun ram GetPolicy --PolicyName <policy_name> --PolicyType Custom Note: In the preceding command, policy_name is the value of the PolicyName parameter in each policy the ListPolicies command returned. In the output, check the value of PolicyDocument under DefaultPolicyVersion to make sure that no policy has a statement that includes Effect: Allow, Action: *, and Resource: *, or make sure that the value of AttachmentCount under Policy is set to 0 for such policies.",
323
+ "AdditionalInformation": "",
324
+ "References": "https://www.alibabacloud.com/help/doc-detail/93733.htm https://www.alibabacloud.com/help/doc-detail/116803.htm https://www.alibabacloud.com/help/doc-detail/116818.htm",
325
+ "DefaultValue": "By default, no custom policy is created."
326
+ }
327
+ ],
328
+ "Checks": [
329
+ "ram_policy_no_administrative_privileges"
330
+ ]
331
+ },
332
+ {
333
+ "Id": "1.16",
334
+ "Description": "Ensure RAM policies are attached only to groups or roles",
335
+ "Attributes": [
336
+ {
337
+ "Section": "1. Identity and Access Management",
338
+ "Profile": "Level 1",
339
+ "AssessmentStatus": "Automated",
340
+ "Description": "By default, RAM users, groups, and roles have no access to Alibaba Cloud resources. RAM policies are the means by which privileges are granted to users, groups, or roles. It is recommended that RAM policies be applied directly to groups and roles but not users.",
341
+ "RationaleStatement": "Assigning privileges at the group or role level reduces the complexity of access management as the number of users grows. Reducing access management complexity may in-turn reduce opportunity for a principal to inadvertently receive or retain excessive privileges.",
342
+ "ImpactStatement": "There may be cases that a user needs to have permissions that cannot be covered by the groups it joins or roles it can assume. It may still be needed to attach specific policies to RAM users for certain operation that cannot be grouped with other permission under role or group.",
343
+ "RemediationProcedure": "Perform the following to create a RAM user group and assign a policy to it: Using the management console: 1. Log on to RAM console. 2. Choose Identities > Users. 3. Click Create Group, and enter the group name, display name, and description. 4. Click OK. 5. In the Group Name/Display Name column, find the target RAM user group and click Add Permissions. 6. In the Select Policy section, select the target policy or policies and click OK. Using the CLI: 1. Run the following command to create a RAM user group: aliyun ram CreateGroup –GroupName <ram_user_group> 2. Run the following command to attach a policy to the group: aliyun ram AttachPolicyToGroup --GroupName <ram_user_group> --PolicyName <policy_name> --PolicyType <System|Custom> Perform the following to add a user to a given group: Using the management console: 1. Log on to RAM console. 2. Choose Identities > Groups. 3. In the Group Name/Display Name column, find the target RAM user group and click Add Group Members. 4. In the User section, select the target RAM user and click OK. Using the CLI: Run the following command to add a RAM user to a user group: aliyun ram AddUserToGroup --GroupName <ram_user_group> --UserName <ram_user > Perform the following to remove a direct association between a user and policy: Using the management console: 1. Logon to RAM console. 2. Choose Permissions > Grants. 3. In the Principal column, find the target RAM user and click Revoke Permission. 4. Click OK. Using the CLI: Run the following command to remove a policy from a RAM user: aliyun ram DetachPolicyFromUser --PolicyName <policy_name> --PolicyType <System|Custom> --UserName <ram_user >",
344
+ "AuditProcedure": "Perform the following to determine if policies are attached directly to users: Using the management console: 1. Logon to RAM console. 2. Choose Identities > Users. 3. In the User Logon Name/Display Name column, click the username of each RAM user. 4. Click the Permissions tab. 5. On the Individual tab, make sure that no policy exists. Using the CLI: 1. Run the following command to obtain a list of RAM users: aliyun ram ListUsers 2. For each user returned, run the following command to determine if any policies are attached to the user: aliyun ram ListPoliciesForUser --UserName <ram_user> If any polices are returned, the user has a direct policy attached.",
345
+ "AdditionalInformation": "",
346
+ "References": "https://www.alibabacloud.com/help/doc-detail/116809.htm https://www.alibabacloud.com/help/doc-detail/116815.htm https://www.alibabacloud.com/help/doc-detail/116147.htm https://www.alibabacloud.com/help/doc-detail/116820.htm",
347
+ "DefaultValue": ""
348
+ }
349
+ ],
350
+ "Checks": [
351
+ "ram_policy_attached_only_to_group_or_roles"
352
+ ]
353
+ },
354
+ {
355
+ "Id": "2.1",
356
+ "Description": "Ensure that ActionTrail are configured to export copies of all Log entries",
357
+ "Attributes": [
358
+ {
359
+ "Section": "2. Logging and Monitoring",
360
+ "Profile": "Level 1",
361
+ "AssessmentStatus": "Automated",
362
+ "Description": "ActionTrail is a web service that records API calls for your account and delivers log files to you. The recorded information includes the identity of the API caller, the time of the API call, the source IP address of the API caller, the request parameters, and the response elements returned by the Alibaba Cloud service. ActionTrail provides a history of API calls for an account, including API calls made via the Management Console, SDKs, command line tools.",
363
+ "RationaleStatement": "The API call history produced by ActionTrail enables security analysis, resource change tracking, and compliance auditing. Moreover, ensuring that a multi-regions trail exists will ensure that any unexpected activities occurring in otherwise unused regions are detected. Global Service Logging should be enabled by default to capture recording of events generated on Alibaba Cloud global services for a multi-regions trail, therefore, ensuring the recording of management operations that are performed on all resources in an Alibaba Cloud account.",
364
+ "ImpactStatement": "OSS lifecycle features can be used to manage the accumulation and management of logs over time. See the following resource for more information on these features: http://help.aliyun.com/document_detail/31863.html",
365
+ "RemediationProcedure": "Perform the following to enable global (Multi-region) ActionTrail logging: Using the management Console: 1. Logon to ActionTrail Console. 2. Click on Trails on the left navigation pane. 3. Click Add new trail. a. Enter a trail name in the Trail name box. b. Set Yes for Apply Trail to All Regions. c. Specify an OSS bucket name in the OSS bucket box. d. Specify an SLS project name in the SLS project box. e. Click Create. Using CLI: aliyun actiontrail CreateTrail --Name <trail_name> --OssBucketName <oss_bucket_for_actiontrail> --RoleName aliyunactiontraildefaultrole --SlsProjectArn <sls_project_arn_for_actiontrail> --SlsWriteRoleArn <sls_role_arn_for_actiontrail> --EventRW <api_type_for_actiontrail> aliyun actiontrail UpdateTrail --Name <trail_name> --OssBucketName <oss_bucket_for_actiontrail> --RoleName aliyunactiontraildefaultrole --SlsProjectArn <sls_project_arn_for_actiontrail> --SlsWriteRoleArn <sls_role_arn_for_actiontrail> --EventRW <api_type_for_actiontrail>",
366
+ "AuditProcedure": "Perform the following to determine if ActionTrail is enabled for all regions: Using the management Console: 1. Logon to ActionTrail Console. 2. Click on Trails on the left navigation pane, you will be presented with a list of trails across all regions. 3. Ensure at least one Trail has All specified in the Region column. 4. Click on a trail via the link in the Name column. 5. Ensure Logging is set to Enable to export log copies to OSS for storage. 6. Ensure Yes is selected for Apply Trail to All Regions. Using CLI: Ensure Trail is set to enable and Trail Region is set to All aliyun actiontrail DescribeTrails",
367
+ "AdditionalInformation": "",
368
+ "References": "https://www.alibabacloud.com/help/doc-detail/28829.htm",
369
+ "DefaultValue": "By default, there are no trails configured. Once the trail is enabled, it applies to all regions by default."
370
+ }
371
+ ],
372
+ "Checks": [
373
+ "actiontrail_multi_region_enabled"
374
+ ]
375
+ },
376
+ {
377
+ "Id": "2.2",
378
+ "Description": "Ensure the OSS used to store ActionTrail logs is not publicly accessible",
379
+ "Attributes": [
380
+ {
381
+ "Section": "2. Logging and Monitoring",
382
+ "Profile": "Level 1",
383
+ "AssessmentStatus": "Automated",
384
+ "Description": "ActionTrail logs a record of every API call made in your Alibaba Cloud account. These logs file are stored in an OSS bucket. It is recommended that the access control list (ACL) of the OSS bucket, which ActionTrail logs to, shall prevent public access to the ActionTrail logs.",
385
+ "RationaleStatement": "Allowing public access to ActionTrail log content may aid an adversary in identifying weaknesses in the affected account's use or configuration.",
386
+ "ImpactStatement": "",
387
+ "RemediationProcedure": "Perform the following to remove any public access that has been granted to the bucket via an ACL: Using the Management Console: 1. Logon to OSS Console. 2. Right on the bucket and click Basic Settings. 3. In the Access Control List pane, click the Configure. 4. The Bucket ACL tab shows three kind of grants. Like Private, Public Read, Public Read/Write. 5. Ensure Private be set to the bucket. 6. Click Save to save the ACL.",
388
+ "AuditProcedure": "Perform the following to determine if any public access is granted to an OSS bucket via an ACL: Using the Management Console: 1. Logon to ActionTrail Console. 2. In the API activity history pane on the left, click Trails. 3. In the Trails pane, note the bucket names in the OSS bucket column. 4. Log on to OSS Console. 5. For each bucket noted in step 3, click on the bucket and click Basic Settings. 6. In the Access Control List pane, click the Configure. 7. The Bucket ACL tab shows three kind of grants, Private Public Read, Public Read/Write. 8. Ensure Private be set to the bucket. Using CLI: 1. Get the name of the OSS bucket that ActionTrail is logging to: aliyuncli actiontrail DescribeTrails 2. Ensure the Bucket ACL is to be set private: ossutil set-acl oss://<bucketName> private -b",
389
+ "AdditionalInformation": "",
390
+ "References": "https://help.aliyun.com/document_detail/31954.html",
391
+ "DefaultValue": "By default, OSS buckets are not publicly accessible."
392
+ }
393
+ ],
394
+ "Checks": [
395
+ "actiontrail_oss_bucket_not_publicly_accessible"
396
+ ]
397
+ },
398
+ {
399
+ "Id": "2.3",
400
+ "Description": "Ensure audit logs for multiple cloud resources are integrated with Log Service",
401
+ "Attributes": [
402
+ {
403
+ "Section": "2. Logging and Monitoring",
404
+ "Profile": "Level 1",
405
+ "AssessmentStatus": "Manual",
406
+ "Description": "Log Service provides functions of log collection and analysis in real time across multiple cloud resources under the authorized resource owners. This enable the large-scale corporate for security governance over all resources owned by multiple accounts by integrating the log from different sources and monitoring. For example, Log Service supports the integration to collect logs from the following sources: • ActionTrail is a cloud service that records API calls made in a given Alibaba Cloud account. • ApsaraDB RDS and DRDS audit records all data manipulation language (DML) and data definition language (DDL) operations through network protocol analysis and only consumes a small amount of CPU resources. The Trial Edition of SQL Explorer retains SQL log data generated within up to one day free of charge. • Object Storage Service (OSS) support recording every changes to its resources including bucket, ACL, replications, and files, as well as file access logs. • The access log feature of SLB can be applied to HTTP- and HTTPS-based Layer 7 load balancing. Access logs can contain about 30 fields such as the time when a request is received, the IP address of the client, processing latency, request URI, backend server (ECS instance) address, and returned status code. As an Internet access point, SLB needs to distribute a large number of access requests. • Alibaba Cloud API Gateway provides API hosting service to facilitate micro- service aggregation, frontend and backend isolation, and system integration. Each API request corresponds to an access record, which contains information such as the IP address of the API caller, requested URL, response latency, returned status code, and number of bytes for each request and response. With the preceding information, you can understand the operating status of your web services. • NAS audit and access log support to record each request to Network File System (NFS) file system including file changes and access, details of the access request, such as the operation type, target object, and response status of the current user. Log Service also provides rich functions such as real-time query and analysis, and dashboard presentation for this part of logs.",
407
+ "RationaleStatement": "Sending the audit logs to Log Service will facilitate real-time and historic activity logging based on user, API, resource, and IP address, and provides benefits to collect logs under multiple accounts, store logs centrally, establish alarms and notifications for anomalous or sensitivity account activity, and extend the default log retention period to 180 days.",
408
+ "ImpactStatement": "RDS Audit Log integration requires to enable SQL Explorer feature on RDS side, which may introduce extra charge.",
409
+ "RemediationProcedure": "Perform the following to ensure the logs are integrated with Log Services: 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane. 3. Go to Access to Cloud Products > Global Configuration page. a. Select a location of project for logs. b. Check the appropriate product logging selection, such as Action Trail, RDS SQL Audit Logs, OSS Access Logs, SLB Access Log, NAS Access Log, API Gateway Access log and configure a proper storage period (in days). c. Click Save to save the changes. 4. Go to Multi-Account Configurations > Global Configuration page. a. Modify it to input the other resource owner account ID. b. Click Save to save the changes. 5. Go to Access to Cloud Products > Status Dashboard page to ensure the Status is Green.",
410
+ "AuditProcedure": "Perform the following to ensure the logs are integrated with Log Services: 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane to go to the Log Service Audit Service page. 3. Ensure the Action Trail, RDS SQL Audit Logs, OSS Access Logs, SLB Access Log, NAS Access Log, API Gateway Access log are Enabled under the Access to Cloud Products > Global Configuration page. 4. Ensure all resource owners account are tracked under the Multi-Account Configurations > Global Configuration page. 5. Ensure the Status is Green under the Access to Cloud Products > Status Dashboard page.",
411
+ "AdditionalInformation": "",
412
+ "References": "https://www.alibabacloud.com/help/doc-detail/84920.htm",
413
+ "DefaultValue": "Not enabled."
414
+ }
415
+ ],
416
+ "Checks": []
417
+ },
418
+ {
419
+ "Id": "2.4",
420
+ "Description": "Ensure Log Service is enabled for Container Service for Kubernetes",
421
+ "Attributes": [
422
+ {
423
+ "Section": "2. Logging and Monitoring",
424
+ "Profile": "Level 1",
425
+ "AssessmentStatus": "Manual",
426
+ "Description": "Log Service shall be connected with Kubernetes clusters of Alibaba Cloud Container Service to collect the audit log for central monitoring and analysis. You can simply enable Log Service when creating a cluster for log collection.",
427
+ "RationaleStatement": "By enabling Log Service Audit Log function to integrate audit log of Kubernetes, it is possible to capture all events on container to improve the security of serverless cluster. Central log collection and monitoring allows access to all log information on one dashboard which can be useful in security and incident response workflows.",
428
+ "ImpactStatement": "",
429
+ "RemediationProcedure": "Perform the following ensure the Log Service for Kubernetes clusters is enabled: 1. Logon to ACK Console. 2. Click Clusters in the left-side navigation pane and click Create Kubernetes Cluster in the upper-right corner. 3. Scroll to the bottom of the page and select the Using Log Service check box. The log plug-in will be installed in the newly created Kubernetes cluster. 4. When you select the Using Log Service check box, project options are displayed. A project is the unit in Log Service to manage logs. 5. After you complete the configuration, click Create in the upper-right corner. 6. In the displayed dialog box, click OK.",
430
+ "AuditProcedure": "Perform the following to ensure the Kubernetes logs are integrated with Log Services: 1. Logon to ACK Console. 2. Click Cluster > Clusters in the left-side navigation pane and select a cluster to click Action > Manage. 3. Ensure the Cluster Auditing page is available.",
431
+ "AdditionalInformation": "",
432
+ "References": "https://www.alibabacloud.com/help/doc-detail/87540.htm https://www.alibabacloud.com/help/doc-detail/87540.htm",
433
+ "DefaultValue": "Logging is disabled."
434
+ }
435
+ ],
436
+ "Checks": []
437
+ },
438
+ {
439
+ "Id": "2.5",
440
+ "Description": "Ensure virtual network flow log service is enabled",
441
+ "Attributes": [
442
+ {
443
+ "Section": "2. Logging and Monitoring",
444
+ "Profile": "Level 1",
445
+ "AssessmentStatus": "Manual",
446
+ "Description": "The flow log can be used to capture the traffic of an Elastic Network Interface (ENI), Virtual Private Cloud (VPC) or Virtual Switch (VSwitch). The flow log of a VPC or VSwitch shall be integrated with Log Service to capture the traffic of all ENIs in the VPC or VSwtich including the ENIs created after the flow log function is enabled. The traffic data captured by flow logs is stored in Log Service for real-time monitoring and analysis. A capture window is about 10 minutes, during which the traffic data is aggregated and then released to flow log record.",
447
+ "RationaleStatement": "By integrating virtual network flow log to Log Service, the inbound and outbound traffic over the ENI in your VPC is captured for monitoring and analysis which can be useful in monitoring network traffic and access control rules as well as network trouble shooting.",
448
+ "ImpactStatement": "",
449
+ "RemediationProcedure": "Perform the following ensure the virtual network flow log is enabled: 1. Logon to VPC console. 2. In the left-side navigation pane, click FlowLog. 3. Select the region to which the flow log is to be created. 4. On the FlowLog page, click Create FlowLog. 5. On the Create FlowLog page, set the required parameters by following the instruction, and then click OK.",
450
+ "AuditProcedure": "Perform the following ensure the virtual network flow log is enabled: 1. Logon to VPC console. 2. In the left-side navigation pane, click FlowLog. 3. Select the region to which the target flow log belongs. 4. On the FlowLog page, ensure the target flow log and logstore is configured.",
451
+ "AdditionalInformation": "",
452
+ "References": "https://www.alibabacloud.com/help/doc-detail/90628.htm",
453
+ "DefaultValue": "Logging is disabled."
454
+ }
455
+ ],
456
+ "Checks": []
457
+ },
458
+ {
459
+ "Id": "2.6",
460
+ "Description": "Ensure Anti-DDoS access and security log service is enabled",
461
+ "Attributes": [
462
+ {
463
+ "Section": "2. Logging and Monitoring",
464
+ "Profile": "Level 2",
465
+ "AssessmentStatus": "Manual",
466
+ "Description": "Alibaba Cloud Anti-DDoS Pro supports integration with Log Service for website access log (including HTTP flood attack logs) to enable the real-time analysis and reporting center features. The log collected can be monitored on a central dashboard on Log Service.",
467
+ "RationaleStatement": "By integrating Anti-DDoS access and security log to Log Service, the website access log and flood attack logs can be collected and monitored to enable real-time query and improve the network security.",
468
+ "ImpactStatement": "Extra charge will incur.",
469
+ "RemediationProcedure": "Perform the following ensure the Anti-DDoS access and security log is enabled: 1. Logon to Anti-DDoS Pro Console, and go to the Log > Full Log page. 2. Select the specific website for which you want to enable the Full Log service and click to turn on the Status switch.",
470
+ "AuditProcedure": "Perform the following ensure the Anti-DDoS access and security log is enabled: 1. Logon to Anti-DDoS Pro Console, and go to the Log > Full Log page. 2. Select the specific website. 3. Ensure the Log Collection is turned on. 4. Ensure the log volume usage indicator is sufficient for log storage.",
471
+ "AdditionalInformation": "",
472
+ "References": "https://www.alibabacloud.com/help/doc-detail/85007.htm",
473
+ "DefaultValue": "Logging is disabled."
474
+ }
475
+ ],
476
+ "Checks": []
477
+ },
478
+ {
479
+ "Id": "2.7",
480
+ "Description": "Ensure Web Application Firewall access and security log service is enabled",
481
+ "Attributes": [
482
+ {
483
+ "Section": "2. Logging and Monitoring",
484
+ "Profile": "Level 2",
485
+ "AssessmentStatus": "Manual",
486
+ "Description": "Log Service collects log entries that record visits to and attacks on websites that are protected by Alibaba Cloud Web Application Firewall (WAF), and supports real-time log query and analysis. The query results are centrally displayed in dashboards.",
487
+ "RationaleStatement": "The WAF access and security log shall be enabled to enable timely analytical investigation on visits to and attacks on your websites and help security engineers to develop protection strategies.",
488
+ "ImpactStatement": "Extra charge will incur by enabling the log.",
489
+ "RemediationProcedure": "Perform the following ensure the Anti-DDoS access and security log is enabled: 1. Logon to WAF Console. 2. Choose App Market > App Management. 3. Select the region where your WAF instance is located. 4. Click Upgrade in Real-time Log Query and Analysis Service. 5. Enable Log Service. 6. Select the log storage period and the log storage size, and click Buy Now. 7. Return to the WAF Console and choose App Market > App Management, and then click Authorize in Real-time Log Query and Analysis Service. 8. Click Agree to authorize WAF to write log entries to your exclusive logstore. 9. Return to the WAF Console and choose App Market > App Management and then, click Configure in Real-time Log Query and Analysis Service. 10. On the Log Service page, select the domain name of your website that is protected by WAF, and turn on the Status switch on the right to enable WAF Log Service. These log entries can be queried and analyzed in real time.",
490
+ "AuditProcedure": "Perform the following ensure the WAF access and security log is enabled: 1. Logon to WAF Console. 2. Choose App Market > App Management. 3. Click Configure in Real-time Log Query and Analysis Service. 4. On Log Service page, select the specific domain name of your website. 5. Ensure the Status switch on the right is turned on. 6. Ensure the log volume usage indicator is sufficient for log storage.",
491
+ "AdditionalInformation": "",
492
+ "References": "https://www.alibabacloud.com/help/doc-detail/95267",
493
+ "DefaultValue": "Logging is disabled."
494
+ }
495
+ ],
496
+ "Checks": []
497
+ },
498
+ {
499
+ "Id": "2.8",
500
+ "Description": "Ensure Cloud Firewall access and security log analysis is enabled",
501
+ "Attributes": [
502
+ {
503
+ "Section": "2. Logging and Monitoring",
504
+ "Profile": "Level 2",
505
+ "AssessmentStatus": "Manual",
506
+ "Description": "Log Service collects log entries of internet traffic that are protected by Cloud Firewall, and supports real-time log query and analysis. The query results are centrally displayed in dashboards.",
507
+ "RationaleStatement": "The Cloud Firewall log shall be enabled with the Log Service to collect and store real- time log of both inbound and outbound traffic for timely analysis, reports, alarms and downstream computing interconnection and provides the detailed results displaying centrally on dashboard to monitor and improve network security.",
508
+ "ImpactStatement": "Extra charge will incur by enabling the log.",
509
+ "RemediationProcedure": "Perform the following ensure the Cloud Firewall access and security log is enabled: 1. Logon to Cloud Firewall Console. 2. In the left-side navigation pane, select Advanced Features > Log Analysis. 3. Click Active Now on the Log Analysis page. 4. Select your log storage capacity, and then click Pay to complete the payment. 5. Go back to Log Analysis page on Cloud Firewall console. 6. Click the Status on the right side to enable the Log Analysis service.",
510
+ "AuditProcedure": "Perform the following ensure the Cloud Firewall access and security log is enabled: 1. Logon to Cloud Firewall Console. 2. In the left-side navigation pane, select Advanced Features > Log Analysis. 3. Ensure the Status switch on the right side is enabled. 4. Ensure the log volume usage indicator is not exhausted.",
511
+ "AdditionalInformation": "",
512
+ "References": "https://www.alibabacloud.com/help/doc-detail/113184.htm",
513
+ "DefaultValue": "Logging is disabled."
514
+ }
515
+ ],
516
+ "Checks": []
517
+ },
518
+ {
519
+ "Id": "2.9",
520
+ "Description": "Ensure Security Center Network, Host and Security log analysis is enabled",
521
+ "Attributes": [
522
+ {
523
+ "Section": "2. Logging and Monitoring",
524
+ "Profile": "Level 2",
525
+ "AssessmentStatus": "Manual",
526
+ "Description": "Log Service collects log entries of Security Center for security logs, network logs, and host logs, with 14 subtypes, including 1. Security logs a. Vulnerability logs b. Baseline logs c. Security alerting logs 2. Security logs a. Vulnerability logs b. Baseline logs c. Security alerting logs 3. Network logs a. DNS logs b. Local DNS logs c. Network session logs d. Web logs 4. Server logs a. Process initiation logs b. Network connection logs c. System logon logs d. Brute-force cracking logs e. Process snapshots f. Account snapshots g. Port listening snapshots The Log Service supports real-time log query and analysis over the logs mentioned above. The query results are centrally displayed in dashboards.",
527
+ "RationaleStatement": "The Security Center log shall be enabled to collect and store real-time security log, network log and server log to better protect your assets in real time.",
528
+ "ImpactStatement": "Extra charge will incur by enabling the log.",
529
+ "RemediationProcedure": "Perform the following ensure the Cloud Firewall access and security log is enabled: 1. Logon to Security Center Console. 2. In the left-side navigation pane, select Investigation > Log Analysis to enter the Activate Log Analysis page. 3. Click Active Now on the Activate log Analysis page. 4. On the Purchase page, check Full Log and configure some other settings as needed. 5. Click Purchase Now. 6. In the Activate log Analysis click Activate log Analysis to complete the authorization. 7. In the log type menu, check the log types to enable the log collection.",
530
+ "AuditProcedure": "Perform the following ensure the Cloud Firewall access and security log is enabled: 1. Logon to Security Center Console. 2. In the left-side navigation pane, select Investigation > Log Analysis to enter the Activate Log Analysis page. 3. In the Activate Log Analysis page, ensure the switch for the specific log type are turned on. 4. Ensure the log volume usage indicator is not exhausted.",
531
+ "AdditionalInformation": "",
532
+ "References": "https://www.alibabacloud.com/help/doc-detail/93065.htm https://www.alibabacloud.com/help/doc-detail/93117.htm",
533
+ "DefaultValue": "Logging is disabled."
534
+ }
535
+ ],
536
+ "Checks": []
537
+ },
538
+ {
539
+ "Id": "2.10",
540
+ "Description": "Ensure log monitoring and alerts are set up for RAM Role changes",
541
+ "Attributes": [
542
+ {
543
+ "Section": "2. Logging and Monitoring",
544
+ "Profile": "Level 1",
545
+ "AssessmentStatus": "Manual",
546
+ "Description": "It is recommended that a query and alarm should be established for RAM Role creation, deletion and updating activities.",
547
+ "RationaleStatement": "Alibaba Cloud Resource Access Management (RAM) provides predefined roles that give granular access to specific resources and prevent unwanted access to other resources. Log Service provides ability to create custom monitoring query: monitoring role creation, deletion and updating activities will help in identifying any potential malicious actions at early stage.",
548
+ "ImpactStatement": "",
549
+ "RemediationProcedure": "Perform the following to ensure the log monitoring and alerts are set up for RAM Role Changes: 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane. 3. Go to Access to Cloud Products > Global Configuration page. a. Select a location of project for logs. b. Check the Action Trail and configure a proper days. c. Click Save to save the changes. 4. Go to Access to Cloud Products > Global Configurations click Central Project. 5. Select Log Management > Actiontrail Log. 6. In the search/analytics console, input below query (event.serviceName: ResourceManager or event.serviceName: Ram) and (event.eventName: CreatePolicy or event.eventName: DeletePolicy or event.eventName: CreatePolicyVersion or event.eventName: UpdatePolicyVersion or event.eventName: SetDefaultPolicyVersion or event.eventName: DeletePolicyVersion) | select count(1) as c 7. Create a dashboard and set alert for the query result.",
550
+ "AuditProcedure": "Perform the following to ensure the log monitoring and alerts are set up for RAM Role Changes: 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane to go to the Log Service Audit Service page. 3. Ensure the Action Trail are Enabled under the Access to Cloud Products > Global Configuration page, and click Central Project. 4. Select Alerts. 5. Ensure below alert rule has been enabled and saved in the target actiontrail_log (event.serviceName: ResourceManager or event.serviceName: Ram) and (event.eventName: CreatePolicy or event.eventName: DeletePolicy or event.eventName: CreatePolicyVersion or event.eventName: UpdatePolicyVersion or event.eventName: SetDefaultPolicyVersion or event.eventName: DeletePolicyVersion) | select count(1) as c",
551
+ "AdditionalInformation": "",
552
+ "References": "https://www.alibabacloud.com/help/doc-detail/91784.htm",
553
+ "DefaultValue": "The monitoring dashboard and alert is not set by default"
554
+ }
555
+ ],
556
+ "Checks": [
557
+ "sls_ram_role_changes_alert_enabled"
558
+ ]
559
+ },
560
+ {
561
+ "Id": "2.11",
562
+ "Description": "Ensure log monitoring and alerts are set up for Cloud Firewall changes",
563
+ "Attributes": [
564
+ {
565
+ "Section": "2. Logging and Monitoring",
566
+ "Profile": "Level 2",
567
+ "AssessmentStatus": "Manual",
568
+ "Description": "It is recommended that a metric filter and alarm be established for Cloud Firewall rule changes.",
569
+ "RationaleStatement": "Monitoring for Create or Update firewall rule events gives insight network access changes and may reduce the time it takes to detect suspicious activity.",
570
+ "ImpactStatement": "",
571
+ "RemediationProcedure": "Perform the following to ensure the log monitoring and alerts are set up Cloud Firewall Changes: 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane. 3. Go to Access to Cloud Products > Global Configuration page. a. Select a location of project for logs. b. Check the Action Trail and configure a proper days. c. Click Save to save the changes. 4. Go to Access to Cloud Products > Global Configurations click Central Project. 5. Select Log Management > Actiontrail Log. 6. In the search/analytics console, input below query event.serviceName: Cloudfw and (event.eventName: CreateVpcFirewallControlPolicy or event.eventName: DeleteVpcFirewallControlPolicy or event.eventName: ModifyVpcFirewallControlPolicy) | select count(1) as c 7. Create a dashboard and set alert for the query result.",
572
+ "AuditProcedure": "Perform the following to ensure the log monitoring and alerts are set up for Cloud Firewall Changes: 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane to go to the Log Service Audit Service page. 3. Ensure the Action Trail are Enabled under the Access to Cloud Products > Global Configuration page, and click Central Project. 4. Select Alerts. 5. Ensure below alert rule has been enabled and saved in the target actiontrail_log event.serviceName: Cloudfw and (event.eventName: CreateVpcFirewallControlPolicy or event.eventName: DeleteVpcFirewallControlPolicy or event.eventName: ModifyVpcFirewallControlPolicy) | select count(1) as c",
573
+ "AdditionalInformation": "",
574
+ "References": "https://www.alibabacloud.com/help/en/doc-detail/91784.htm",
575
+ "DefaultValue": "The monitoring dashboard and alert is not set by default"
576
+ }
577
+ ],
578
+ "Checks": [
579
+ "sls_cloud_firewall_changes_alert_enabled"
580
+ ]
581
+ },
582
+ {
583
+ "Id": "2.12",
584
+ "Description": "Ensure log monitoring and alerts are set up for VPC network route changes",
585
+ "Attributes": [
586
+ {
587
+ "Section": "2. Logging and Monitoring",
588
+ "Profile": "Level 1",
589
+ "AssessmentStatus": "Manual",
590
+ "Description": "It is recommended that a metric filter and alarm be established for VPC network route changes.",
591
+ "RationaleStatement": "Routes define the paths network traffic takes from a VM instance to another destinations. The other destination can be inside your VPC network (such as another VM) or outside of it. Every route consists of a destination and a next hop. Traffic whose destination IP is within the destination range is sent to the next hop for delivery. Monitoring changes to route tables will help ensure that all VPC traffic flows through an expected path.",
592
+ "ImpactStatement": "",
593
+ "RemediationProcedure": "Perform the following to ensure the log monitoring and alerts are set up for VPC network route changes: 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane. 3. Go to Access to Cloud Products > Global Configuration page. a. Select a location of project for logs. b. Check the Action Trail and configure a proper days. c. Click Save to save the changes. 4. Go to Access to Cloud Products > Global Configurations click Central Project. 5. Select Log Management > Actiontrail Log. 6. In the search/analytics console, input below query (event.serviceName: Ecs or event.serviceName: Vpc) and (event.eventName: CreateRouteEntry or event.eventName: DeleteRouteEntry or event.eventName: ModifyRouteEntry or event.eventName: AssociateRouteTable or event.eventName: UnassociateRouteTable) | select count(1) as c 7. Create a dashboard and set alert for the query result.",
594
+ "AuditProcedure": "Perform the following steps to ensure log monitoring and alerts are set for VPC network route changes. 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane to go to the Log Service Audit Service page. 3. Ensure the Action Trail are Enabled under the Access to Cloud Products > Global Configuration page, and click Central Project. 4. Select Alerts. 5. Ensure below alert rule has been enabled and saved in the target actiontrail_log (event.serviceName: Ecs or event.serviceName: Vpc) and (event.eventName: CreateRouteEntry or event.eventName: DeleteRouteEntry or event.eventName: ModifyRouteEntry or event.eventName: AssociateRouteTable or event.eventName: UnassociateRouteTable) | select count(1) as c",
595
+ "AdditionalInformation": "",
596
+ "References": "https://www.alibabacloud.com/help/en/doc-detail/91784.htm",
597
+ "DefaultValue": "The monitoring dashboard and alert is not set by default."
598
+ }
599
+ ],
600
+ "Checks": [
601
+ "sls_vpc_network_route_changes_alert_enabled"
602
+ ]
603
+ },
604
+ {
605
+ "Id": "2.13",
606
+ "Description": "Ensure log monitoring and alerts are set up for VPC changes",
607
+ "Attributes": [
608
+ {
609
+ "Section": "2. Logging and Monitoring",
610
+ "Profile": "Level 1",
611
+ "AssessmentStatus": "Manual",
612
+ "Description": "It is recommended that a log search/analysis query and alarm be established for VPC changes.",
613
+ "RationaleStatement": "Monitoring changes to VPC will help ensure VPC traffic flow is not getting impacted.",
614
+ "ImpactStatement": "",
615
+ "RemediationProcedure": "Perform the following to ensure the log monitoring and alerts are set up for VPC changes: 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane. 3. Go to Access to Cloud Products > Global Configuration page. a. Select a location of project for logs. b. Check the Action Trail and configure a proper days. c. Click Save to save the changes. 4. Go to Access to Cloud Products > Global Configurations click Central Project. 5. Select Log Management > Actiontrail Log. 6. In the search/analytics console, input below query (event.serviceName: Ecs or event.serviceName: Vpc) and (event.eventName: CreateVpc or event.eventName: DeleteVpc or event.eventName: DisableVpcClassicLink or event.eventName: EnableVpcClassicLink or event.eventName: DeletionProtection or event.eventName: AssociateVpcCidrBlock or event.eventName: UnassociateVpcCidrBlock or event.eventName: RevokeInstanceFromCen or event.eventName: CreateVSwitch or event.eventName: DeleteVSwitch or event.eventName: CreateVSwitch) | select count(1) as c 7. Create a dashboard and set alert for the query result.",
616
+ "AuditProcedure": "Perform the following steps to ensure log monitoring and alerts are set for VPC changes. 1. Logon to the SLS Console. 2. Click Log Service Audit Service in the navigation pane to go to the Log Service Audit Service page. 3. Ensure the Action Trail are Enabled under the Access to Cloud Products > Global Configuration page, and click Central Project. 4. Select Alerts. 5. Ensure below alert rule has been enabled and saved in the target actiontrail_log (event.serviceName: Ecs or event.serviceName: Vpc) and (event.eventName: CreateVpc or event.eventName: DeleteVpc or event.eventName: DisableVpcClassicLink or event.eventName: EnableVpcClassicLink or event.eventName: DeletionProtection or event.eventName: AssociateVpcCidrBlock or event.eventName: UnassociateVpcCidrBlock or event.eventName: RevokeInstanceFromCen or event.eventName: CreateVSwitch or event.eventName: DeleteVSwitch or event.eventName: CreateVSwitch) | select count(1) as c",
617
+ "AdditionalInformation": "",
618
+ "References": "https://www.alibabacloud.com/help/en/doc-detail/91784.htm",
619
+ "DefaultValue": "The monitoring dashboard and alert is not set by default."
620
+ }
621
+ ],
622
+ "Checks": [
623
+ "sls_vpc_changes_alert_enabled"
624
+ ]
625
+ },
626
+ {
627
+ "Id": "2.14",
628
+ "Description": "Ensure log monitoring and alerts are set up for OSS permission changes",
629
+ "Attributes": [
630
+ {
631
+ "Section": "2. Logging and Monitoring",
632
+ "Profile": "Level 1",
633
+ "AssessmentStatus": "Manual",
634
+ "Description": "It is recommended that a metric filter and alarm be established for OSS Bucket RAM changes.",
635
+ "RationaleStatement": "Monitoring changes to OSS permissions may reduce time to detect and correct permissions on sensitive OSS bucket and objects inside the bucket.",
636
+ "ImpactStatement": "",
637
+ "RemediationProcedure": "Perform the following to ensure the log monitoring and alerts are set up for OSS permission changes: 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane. 3. Go to Access to Cloud Products > Global Configuration page. a. Select a location of project for logs. b. Check the OSS and configure a proper days. c. Click Save to save the changes. 4. Go to Access to Cloud Products > Global Configurations click Central Project. 5. Select Log Management > OSS Log. 6. In the search/analytics console, input below query (operation: PutBucket and request_uri: acl) or operation: PutObjectAcl| select bucket, count (1) as c group by bucket 7. Create a dashboard and set alert for the query result.",
638
+ "AuditProcedure": "Perform the following steps to ensure log monitoring and alerts are set for OSS permission changes. 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane to go to the Log Service Audit Service page. 3. Ensure the OSS are Enabled under the Access to Cloud Products > Global Configuration page, and click Central Project. 4. Select Alerts. 5. Ensure below alert rule has been enabled and saved in the target oss_log (operation: PutBucket and request_uri: acl) or operation: PutObjectAcl| select bucket, count (1) as c group by bucket",
639
+ "AdditionalInformation": "",
640
+ "References": "https://www.alibabacloud.com/help/en/doc-detail/91784.htm",
641
+ "DefaultValue": "The monitoring dashboard and alert is not set by default."
642
+ }
643
+ ],
644
+ "Checks": [
645
+ "sls_oss_permission_changes_alert_enabled"
646
+ ]
647
+ },
648
+ {
649
+ "Id": "2.15",
650
+ "Description": "Ensure log monitoring and alerts are set up for RDS instance configuration changes",
651
+ "Attributes": [
652
+ {
653
+ "Section": "2. Logging and Monitoring",
654
+ "Profile": "Level 1",
655
+ "AssessmentStatus": "Manual",
656
+ "Description": "It is recommended that a metric filter and alarm be established for RDS Instance configuration changes.",
657
+ "RationaleStatement": "Monitoring changes to RDS Instance configuration changes may reduce time to detect and correct misconfigurations done on database server. Below are the few of configurable Options which may impact security posture of a RDS Instance: 1. Enable auto backups and high availability: Misconfiguration may adversely impact Business continuity, Disaster Recovery and High Availability. 2. Authorize networks : Misconfiguration may increase exposure to the untrusted networks.",
658
+ "ImpactStatement": "",
659
+ "RemediationProcedure": "Perform the following to ensure the log monitoring and alerts are set up for RDS instance configuration changes: 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane. 3. Go to Access to Cloud Products > Global Configuration page. a. Select a location of project for logs. b. Check the Action Trail and configure a proper days. c. Click Save to save the changes. 4. Go to Access to Cloud Products > Global Configurations click Central Project. 5. Select Log Management > Actiontrail Log. 6. In the search/analytics console, input below query event.serviceName: rds and (event.eventName: ModifyHASwitchConfig or event.eventName: ModifyDBInstanceHAConfig or event.eventName: SwitchDBInstanceHA or event.eventName: ModifyDBInstanceSpec or event.eventName: MigrateSecurityIPMode or event.eventName: ModifySecurityIps or event.eventName: ModifyDBInstanceSSL or event.eventName: MigrateToOtherZone or event.eventName: UpgradeDBInstanceKernelVersion or event.eventName: UpgradeDBInstanceEngineVersion or event.eventName: ModifyDBInstanceMaintainTime or event.eventName: ModifyDBInstanceAutoUpgradeMinorVersion or event.eventName: AllocateInstancePublicConnection or event.eventName: ModifyDBInstanceConnectionString or event.eventName: ModifyDBInstanceNetworkExpireTime or event.eventName: ReleaseInstancePublicConnection or event.eventName: SwitchDBInstanceNetType or event.eventName: ModifyDBInstanceNetworkType or event.eventName: ModifyDBInstanceSSL or event.eventName: ModifyDTCSecurityIpHostsForSQLServer or event.eventName: ModifySecurityGroupConfiguration or event.eventName: CreateBackup or event.eventName: ModifyBackupPolicy or event.eventName: DeleteBackup or event.eventName: CreateDdrInstance or event.eventName: ModifyInstanceCrossBackupPolicy) | select count(1) as cnt 7. Create a dashboard and set alert for the query result.",
660
+ "AuditProcedure": "Perform the following steps to ensure log monitoring and alerts are set for SQL instance configuration changes. 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane to go to the Log Service Audit Service page. 3. Ensure the Action Trail are Enabled under the Access to Cloud Products > Global Configuration page, and click Central Project. 4. Select Alerts. 5. Ensure below alert rule has been enabled and saved in the target actiontrail_log event.serviceName: rds and (event.eventName: ModifyHASwitchConfig or event.eventName: ModifyDBInstanceHAConfig or event.eventName: SwitchDBInstanceHA or event.eventName: ModifyDBInstanceSpec or event.eventName: MigrateSecurityIPMode or event.eventName: ModifySecurityIps or event.eventName: ModifyDBInstanceSSL or event.eventName: MigrateToOtherZone or event.eventName: UpgradeDBInstanceKernelVersion or event.eventName: UpgradeDBInstanceEngineVersion or event.eventName: ModifyDBInstanceMaintainTime or event.eventName: ModifyDBInstanceAutoUpgradeMinorVersion or event.eventName: AllocateInstancePublicConnection or event.eventName: ModifyDBInstanceConnectionString or event.eventName: ModifyDBInstanceNetworkExpireTime or event.eventName: ReleaseInstancePublicConnection or event.eventName: SwitchDBInstanceNetType or event.eventName: ModifyDBInstanceNetworkType or event.eventName: ModifyDBInstanceSSL or event.eventName: ModifyDTCSecurityIpHostsForSQLServer or event.eventName: ModifySecurityGroupConfiguration or event.eventName: CreateBackup or event.eventName: ModifyBackupPolicy or event.eventName: DeleteBackup or event.eventName: CreateDdrInstance or event.eventName: ModifyInstanceCrossBackupPolicy) | select count(1) as cnt",
661
+ "AdditionalInformation": "",
662
+ "References": "https://www.alibabacloud.com/help/en/doc-detail/91784.htm",
663
+ "DefaultValue": "The monitoring dashboard and alert is not set by default."
664
+ }
665
+ ],
666
+ "Checks": [
667
+ "sls_rds_instance_configuration_changes_alert_enabled"
668
+ ]
669
+ },
670
+ {
671
+ "Id": "2.16",
672
+ "Description": "Ensure a log monitoring and alerts are set up for unauthorized API calls",
673
+ "Attributes": [
674
+ {
675
+ "Section": "2. Logging and Monitoring",
676
+ "Profile": "Level 1",
677
+ "AssessmentStatus": "Manual",
678
+ "Description": "Real-time monitoring of API calls can be achieved by directing ActionTrail Logs to LogService and establishing corresponding query and alarms. It is recommended that a query and alarm be established for unauthorized API calls.",
679
+ "RationaleStatement": "Monitoring unauthorized API calls will help reveal application errors and may reduce time to detect malicious activity.",
680
+ "ImpactStatement": "",
681
+ "RemediationProcedure": "Perform the following to ensure the log monitoring and alerts are set up for unauthorized API calls: 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane. 3. Go to Access to Cloud Products > Global Configuration page. a. Select a location of project for logs. b. Check the Action Trail and configure a proper days. c. Click Save to save the changes. 4. Go to Access to Cloud Products > Global Configurations click Central Project. 5. Select Log Management > Actiontrail Log. 6. In the search/analytics console, input below query event.eventType: ApiCall and (event.errorCode: NoPermission or event.errorCode: NoPermission.* or event.errorCode: Forbidden or event.errorCode: Forbbiden or event.errorCode: Forbidden.* or event.errorCode: InvalidAccessKeyId or event.errorCode: InvalidAccessKeyId.* or event.errorCode: InvalidSecurityToken or event.errorCode: InvalidSecurityToken.* or event.errorCode: SignatureDoesNotMatch or event.errorCode: InvalidAuthorization or event.errorCode: AccessForbidden or event.errorCode: NotAuthorized) | select count(1) as cnt 7. Create a dashboard and set alert for the query result.",
682
+ "AuditProcedure": "Perform the following steps to ensure log monitoring and alerts are set for unauthorized API calls. 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane to go to the Log Service Audit Service page. 3. Ensure the Action Trail are Enabled under the Access to Cloud Products > Global Configuration page, and click Central Project. 4. Select Alerts. 5. Ensure below alert rule has been enabled and saved in the target actiontrail_log event.eventType: ApiCall and (event.errorCode: NoPermission or event.errorCode: NoPermission.* or event.errorCode: Forbidden or event.errorCode: Forbbiden or event.errorCode: Forbidden.* or event.errorCode: InvalidAccessKeyId or event.errorCode: InvalidAccessKeyId.* or event.errorCode: InvalidSecurityToken or event.errorCode: InvalidSecurityToken.* or event.errorCode: SignatureDoesNotMatch or event.errorCode: InvalidAuthorization or event.errorCode: AccessForbidden or event.errorCode: “NotAuthorized) | select count(1) as cnt",
683
+ "AdditionalInformation": "",
684
+ "References": "https://www.alibabacloud.com/help/en/doc-detail/91784.htm",
685
+ "DefaultValue": "The monitoring dashboard and alert is not set by default."
686
+ }
687
+ ],
688
+ "Checks": [
689
+ "sls_unauthorized_api_calls_alert_enabled"
690
+ ]
691
+ },
692
+ {
693
+ "Id": "2.17",
694
+ "Description": "Ensure a log monitoring and alerts are set up for Management Console sign-in without MFA",
695
+ "Attributes": [
696
+ {
697
+ "Section": "2. Logging and Monitoring",
698
+ "Profile": "Level 1",
699
+ "AssessmentStatus": "Manual",
700
+ "Description": "Real-time monitoring of API calls can be achieved by directing ActionTrail Logs to Log Service and establishing corresponding query and alarms. It is recommended that a query and alarm be established for console logins that are not protected by multi-factor authentication (MFA).",
701
+ "RationaleStatement": "Monitoring for single-factor console logins will increase visibility into accounts that are not protected by MFA.",
702
+ "ImpactStatement": "",
703
+ "RemediationProcedure": "Perform the following to ensure the log monitoring and alerts are set up for Management Console sign-in without MFA: 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane. 3. Go to Access to Cloud Products > Global Configuration page. a. Select a location of project for logs. b. Check the Action Trail and configure a proper days. c. Click Save to save the changes. 4. Go to Access to Cloud Products > Global Configurations click Central Project. 5. Select Log Management > Actiontrail Log. 6. In the search/analytics console, input below query event.eventName: ConsoleSignin and addionalEventData.loginAccount: false 7. Create a dashboard and set alert for the query result.",
704
+ "AuditProcedure": "Perform the following steps to ensure log monitoring and alerts are set for Management Console sign-in without MFA. 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane to go to the Log Service Audit Service page. 3. Ensure the Action Trail are Enabled under the Access to Cloud Products > Global Configuration page, and click Central Project. 4. Select Alerts. 5. Ensure below alert rule has been enabled and saved in the target actiontrail_log event.eventName: ConsoleSignin and addionalEventData.loginAccount: false",
705
+ "AdditionalInformation": "",
706
+ "References": "https://www.alibabacloud.com/help/en/doc-detail/91784.htm",
707
+ "DefaultValue": "The monitoring dashboard and alert is not set by default."
708
+ }
709
+ ],
710
+ "Checks": [
711
+ "sls_management_console_signin_without_mfa_alert_enabled"
712
+ ]
713
+ },
714
+ {
715
+ "Id": "2.18",
716
+ "Description": "Ensure a log monitoring and alerts are set up for usage of root account",
717
+ "Attributes": [
718
+ {
719
+ "Section": "2. Logging and Monitoring",
720
+ "Profile": "Level 1",
721
+ "AssessmentStatus": "Manual",
722
+ "Description": "Real-time monitoring of API calls can be achieved by directing ActionTrail Logs to Log Service and establishing corresponding query and alarms. It is recommended that a query and alarm be established for console logins that are not protected by root login attempts.",
723
+ "RationaleStatement": "Monitoring for root account logins will provide visibility into the use of a fully privileged account and an opportunity to reduce the use of it.",
724
+ "ImpactStatement": "",
725
+ "RemediationProcedure": "Perform the following to ensure the log monitoring and alerts are set up for usage of “root” account: 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane. 3. Go to Access to Cloud Products > Global Configuration page. a. Select a location of project for logs. b. Check the Action Trail and configure a proper days. c. Click Save to save the changes. 4. Go to Access to Cloud Products > Global Configurations click Central Project. 5. Select Log Management > Actiontrail Log. 6. In the search/analytics console, input below query event.eventName: ConsoleSignin and event.userIdentity.type : root-account 7. Create a dashboard and set alert for the query result.",
726
+ "AuditProcedure": "Perform the following steps to ensure log monitoring and alerts are set for usage of “root” account. 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane to go to the Log Service Audit Service page. 3. Ensure the Action Trail are Enabled under the Access to Cloud Products > Global Configuration page, and click Central Project. 4. Select Alerts. 5. Ensure below alert rule has been enabled and saved in the target actiontrail_log event.eventName: ConsoleSignin and event.userIdentity.type : root-account",
727
+ "AdditionalInformation": "",
728
+ "References": "https://www.alibabacloud.com/help/en/doc-detail/91784.htm",
729
+ "DefaultValue": "The monitoring dashboard and alert is not set by default."
730
+ }
731
+ ],
732
+ "Checks": [
733
+ "sls_root_account_usage_alert_enabled"
734
+ ]
735
+ },
736
+ {
737
+ "Id": "2.19",
738
+ "Description": "Ensure a log monitoring and alerts are set up for Management Console authentication failures",
739
+ "Attributes": [
740
+ {
741
+ "Section": "2. Logging and Monitoring",
742
+ "Profile": "Level 2",
743
+ "AssessmentStatus": "Manual",
744
+ "Description": "Real-time monitoring of API calls can be achieved by directing ActionTrail Logs to Log Service and establishing corresponding query and alarms. It is recommended that a query and alarm be established for failed console authentication attempts.",
745
+ "RationaleStatement": "Monitoring failed console logins may decrease lead time to detect an attempt to brute force a credential, which may provide an indicator, such as source IP, that can be used in other event correlation.",
746
+ "ImpactStatement": "",
747
+ "RemediationProcedure": "Perform the following to ensure the log monitoring and alerts are set up for Management Console authentication failures: 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane. 3. Go to Access to Cloud Products > Global Configuration page. a. Select a location of project for logs. b. Check the Action Trail and configure a proper days. c. Click Save to save the changes. 4. Go to Access to Cloud Products > Global Configurations click Central Project. 5. Select Log Management > Actiontrail Log. 6. In the search/analytics console, input below query event.eventName: ConsoleSignin and event.errorCode : * and not event.errorCode : | select count(1) as cnt 7. Create a dashboard and set alert for the query result.",
748
+ "AuditProcedure": "Perform the following steps to ensure log monitoring and alerts are set for Management Console authentication failures. 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane to go to the Log Service Audit Service page. 3. Ensure the Action Trail are Enabled under the Access to Cloud Products > Global Configuration page, and click Central Project. 4. Select Alerts. 5. Ensure below alert rule has been enabled and saved in the target actiontrail_log event.eventName: ConsoleSignin and event.errorCode : * and not event.errorCode : | select count(1) as cnt",
749
+ "AdditionalInformation": "",
750
+ "References": "https://www.alibabacloud.com/help/en/doc-detail/28810.htm https://www.alibabacloud.com/help/en/doc-detail/91784.htm https://www.alibabacloud.com/help/en/doc-detail/93517.html",
751
+ "DefaultValue": "The monitoring dashboard and alert is not set by default."
752
+ }
753
+ ],
754
+ "Checks": [
755
+ "sls_management_console_authentication_failures_alert_enabled"
756
+ ]
757
+ },
758
+ {
759
+ "Id": "2.20",
760
+ "Description": "Ensure a log monitoring and alerts are set up for disabling or deletion of customer created CMKs",
761
+ "Attributes": [
762
+ {
763
+ "Section": "2. Logging and Monitoring",
764
+ "Profile": "Level 2",
765
+ "AssessmentStatus": "Manual",
766
+ "Description": "Real-time monitoring of API calls can be achieved by directing ActionTrail Logs to Log Service and establishing corresponding query and alarms. It is recommended that a query and alarm be established for customer created KMSs which have changed state to disabled or deletion.",
767
+ "RationaleStatement": "Data encrypted with disabled or deleted keys will no longer be accessible.",
768
+ "ImpactStatement": "",
769
+ "RemediationProcedure": "Perform the following to ensure the log monitoring and alerts are set up for disabling or scheduled deletion of customer created CMKs: 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane. 3. Go to Access to Cloud Products > Global Configuration page. a. Select a location of project for logs. b. Check the Action Trail and configure a proper days. c. Click Save to save the changes. 4. Go to Access to Cloud Products > Global Configurations click Central Project. 5. Select Log Management > Actiontrail Log. 6. In the search/analytics console, input below query. event.serviceName: Kms and (event.eventName: DisableKey or event.eventName: ScheduleKeyDeletion or event.eventName: DeleteKeyMaterial 7. Create a dashboard and set alert for the query result",
770
+ "AuditProcedure": "Perform the following steps to ensure log monitoring and alerts are set for disabling or deletion of customer created CMKs. 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane to go to the Log Service Audit Service page. 3. Ensure the Action Trail are Enabled under the Access to Cloud Products > Global Configuration page, and click Central Project. 4. Select Alerts. 5. Ensure below alert rule has been enabled and saved in the target actiontrail_log event.serviceName: Kms and (event.eventName: DisableKey or event.eventName: ScheduleKeyDeletion or event.eventName: DeleteKeyMaterial",
771
+ "AdditionalInformation": "",
772
+ "References": "https://www.alibabacloud.com/help/en/doc-detail/91784.htm",
773
+ "DefaultValue": "The monitoring dashboard and alert is not set by default."
774
+ }
775
+ ],
776
+ "Checks": [
777
+ "sls_customer_created_cmk_changes_alert_enabled"
778
+ ]
779
+ },
780
+ {
781
+ "Id": "2.21",
782
+ "Description": "Ensure a log monitoring and alerts are set up for OSS bucket policy changes",
783
+ "Attributes": [
784
+ {
785
+ "Section": "2. Logging and Monitoring",
786
+ "Profile": "Level 1",
787
+ "AssessmentStatus": "Manual",
788
+ "Description": "Real-time monitoring of API calls can be achieved by directing ActionTrail Logs to Log Service and establishing corresponding query and alarms. It is recommended that a query and alarm be established for changes to OSS bucket policies.",
789
+ "RationaleStatement": "Monitoring changes to OSS bucket policies may reduce time to detect and correct permissive policies on sensitive OSS buckets.",
790
+ "ImpactStatement": "",
791
+ "RemediationProcedure": "Perform the following to ensure the log monitoring and alerts are set up for OSS bucket policy changes. 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane. 3. Go to Access to Cloud Products > Global Configuration page. a. Select a location of project for logs. b. Check the Action Trail and configure a proper days. c. Click Save to save the changes. 4. Go to Access to Cloud Products > Global Configurations click Central Project. 5. Select Log Management > Actiontrail Log. 6. In the search/analytics console, input below query. event.eventName: PutBucketLifecycle or event.eventName: PutBucketPolicy or event.eventName: PutBucketCors or event.eventName: PutBucketEncryption or event.eventName: PutBucketReplication or event.eventName: DeleteBucketPolicy or event.eventName: DeleteBucketCors or event.eventName: DeleteBucketLifecycle or event.eventName: DeleteBucketEncryption or event.eventName: DeleteBucketReplication) | select bucket, count(1) as cnt 7. Create a dashboard and set alert for the query result.",
792
+ "AuditProcedure": "Perform the following steps to ensure log monitoring and alerts are set for OSS bucket policy changes. 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane to go to the Log Service Audit Service page. 3. Ensure the Action Trail are Enabled under the Access to Cloud Products > Global Configuration page, and click Central Project. 4. Select Alerts. 5. Ensure below alert rule has been enabled and saved in the target actiontrail_log event.eventName: PutBucketLifecycle or event.eventName: PutBucketPolicy or event.eventName: PutBucketCors or event.eventName: PutBucketEncryption or event.eventName: PutBucketReplication or event.eventName: DeleteBucketPolicy or event.eventName: DeleteBucketCors or event.eventName: DeleteBucketLifecycle or event.eventName: DeleteBucketEncryption or event.eventName: DeleteBucketReplication) | select bucket, count(1) as cnt",
793
+ "AdditionalInformation": "",
794
+ "References": "https://www.alibabacloud.com/help/en/doc-detail/91784.htm",
795
+ "DefaultValue": "The monitoring dashboard and alert is not set by default."
796
+ }
797
+ ],
798
+ "Checks": [
799
+ "sls_oss_bucket_policy_changes_alert_enabled"
800
+ ]
801
+ },
802
+ {
803
+ "Id": "2.22",
804
+ "Description": "Ensure a log monitoring and alerts are set up for security group changes",
805
+ "Attributes": [
806
+ {
807
+ "Section": "2. Logging and Monitoring",
808
+ "Profile": "Level 2",
809
+ "AssessmentStatus": "Manual",
810
+ "Description": "Real-time monitoring of API calls can be achieved by directing ActionTrail Logs to Log Service and establishing corresponding query and alarms. Security Groups are a stateful packet filter that controls ingress and egress traffic within a VPC. It is recommended that a query and alarm be established changes to Security Groups.",
811
+ "RationaleStatement": "Monitoring changes to security group will help ensure that resources and services are not unintentionally exposed.",
812
+ "ImpactStatement": "",
813
+ "RemediationProcedure": "Perform the following to ensure the log monitoring and alerts are set up for security group changes。 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane. 3. Go to Access to Cloud Products > Global Configuration page. a. Select a location of project for logs. b. Check the Action Trail and configure a proper days. c. Click Save to save the changes. 4. Go to Access to Cloud Products > Global Configurations click Central Project. 5. Select Log Management > Actiontrail Log. 6. In the search/analytics console, input below query. (event_name: CreateSecurityGroup or event_name: AuthorizeSecurityGroup or event_name: AuthorizeSecurityGroupEgress or event_name: RevokeSecurityGroup or event_name: RevokeSecurityGroupEgress or event_name: JoinSecurityGroup or event_name: LeaveSecurityGroup or event_name: DeleteSecurityGroup or event_name: ModifySecurityGroupPolicy) | select count(1) as cnt 7. Create a dashboard and set alert for the query result.",
814
+ "AuditProcedure": "Perform the following steps to ensure log monitoring and alerts are set for security group changes. 1. Logon to SLS Console. 2. Click Log Service Audit Service in the navigation pane to go to the Log Service Audit Service page. 3. Ensure the Action Trail are Enabled under the Access to Cloud Products > Global Configuration page, and click Central Project. 4. Select Alerts. 5. Ensure below alert rule has been enabled and saved in the target actiontrail_log (event_name: CreateSecurityGroup or event_name: AuthorizeSecurityGroup or event_name: AuthorizeSecurityGroupEgress or event_name: RevokeSecurityGroup or event_name: RevokeSecurityGroupEgress or event_name: JoinSecurityGroup or event_name: LeaveSecurityGroup or event_name: DeleteSecurityGroup or event_name: ModifySecurityGroupPolicy) | select count(1) as cnt",
815
+ "AdditionalInformation": "",
816
+ "References": "https://www.alibabacloud.com/help/en/doc-detail/91784.htm",
817
+ "DefaultValue": "The monitoring dashboard and alert is not set by default."
818
+ }
819
+ ],
820
+ "Checks": [
821
+ "sls_security_group_changes_alert_enabled"
822
+ ]
823
+ },
824
+ {
825
+ "Id": "2.23",
826
+ "Description": "Ensure that Logstore data retention period is set 365 days or greater",
827
+ "Attributes": [
828
+ {
829
+ "Section": "2. Logging and Monitoring",
830
+ "Profile": "Level 2",
831
+ "AssessmentStatus": "Manual",
832
+ "Description": "Ensure Activity Log Retention is set for 365 days or greater",
833
+ "RationaleStatement": "Logstore life cycle controls how your activity log is exported and retained. It is recommended to retain your activity log for 365 days or more in order to have time to respond to any incidents.",
834
+ "ImpactStatement": "",
835
+ "RemediationProcedure": "Perform below steps to ensure the log retention is set to 365 days or greater. 1. Logon to SLS Console. 2. Find the project in the Projects section, and then click the target project name. 3. On the page that appears, click Modify a Logstore icon next to the Logstore, and then choose Modify. 4. On the page that appears, click Modify, modify the Data Retention Period, to 365 or greater and then click Save.",
836
+ "AuditProcedure": "Perform below steps to ensure the log retention is set to 365 days or greater. 1. Logon to SLS Console. 2. In the Projects section, click the target project name. On the page that appears, click the plus sign (+) next to the search box. 3. In the dialog box that appears, check whether the Permanent Storage is turned on, which means the log data will be stored permanently, or else 4. Ensure the Data Retention Period is set to 365 or greater.",
837
+ "AdditionalInformation": "",
838
+ "References": "https://www.alibabacloud.com/help/doc-detail/48990.htm",
839
+ "DefaultValue": "The Permanent Storage is turned off by default."
840
+ }
841
+ ],
842
+ "Checks": [
843
+ "sls_logstore_retention_period"
844
+ ]
845
+ },
846
+ {
847
+ "Id": "3.1",
848
+ "Description": "Ensure legacy networks does not exist",
849
+ "Attributes": [
850
+ {
851
+ "Section": "3. Networking",
852
+ "Profile": "Level 1",
853
+ "AssessmentStatus": "Manual",
854
+ "Description": "In order to prevent use of legacy networks, ECS instances should not have a legacy network configured.",
855
+ "RationaleStatement": "Legacy networks have a single network IPv4 prefix range and a single gateway IP address for the whole network. With legacy networks, you cannot create subnetworks or switch from legacy to auto or custom subnet networks. Legacy networks can thus have an impact for high network traffic ECS instance and subject to the single point of failure.",
856
+ "ImpactStatement": "",
857
+ "RemediationProcedure": "1. Logon to ECS Console 2. In the left-side navigation pane, choose Instance & Image > Instances. 3. Click Create Instance. 4. Specify the basic instance information required by following the instruction and click Next: Networking. 5. Select the Network Type of VPC.",
858
+ "AuditProcedure": "1. Logon to ECS Console 2. In the left-side navigation pane, choose Instance & Image > Instances. 3. Check all ECS instances to ensure the Network Type is not classic",
859
+ "AdditionalInformation": "",
860
+ "References": "https://www.alibabacloud.com/help/doc-detail/87190.htm",
861
+ "DefaultValue": "By default the ECS are created with VPC Network Type."
862
+ }
863
+ ],
864
+ "Checks": [
865
+ "ecs_instance_no_legacy_network"
866
+ ]
867
+ },
868
+ {
869
+ "Id": "3.2",
870
+ "Description": "Ensure that SSH access is restricted from the internet",
871
+ "Attributes": [
872
+ {
873
+ "Section": "3. Networking",
874
+ "Profile": "Level 2",
875
+ "AssessmentStatus": "Manual",
876
+ "Description": "Security groups provide stateful filtering of ingress/egress network traffic to Alibaba Cloud resources. It is recommended that no security group allows unrestricted ingress access to port 22 or port 3389.",
877
+ "RationaleStatement": "Removing unfettered connectivity to remote console services, such as SSH or RDP, reduces a server's exposure to risk.",
878
+ "ImpactStatement": "All SSH or RDP connections from outside of the network to the concerned VPC(s) will be blocked. There could be a business need where ssh access is required from outside of the network to access resources associated with the VPC. In that case, specific source IP(s) should be mentioned in firewall rules to white-list access to SSH or RDP port for the concerned VPC(s).",
879
+ "RemediationProcedure": "1. Logon to ECS Console 2. Go to Security Group 3. Find the Security Group you want to modify 4. Modify Source IP range to specific IP 5. Save",
880
+ "AuditProcedure": "1. Logon to ECS Console 2. In the left-side navigation pane, choose Network & Security > Security Groups. 3. Ensure Port is not equal to 22 or 3389 and Action is not Allow. 4. Ensure IP Ranges is not equal to 0.0.0.0 under Source filters.",
881
+ "AdditionalInformation": "",
882
+ "References": "https://www.alibabacloud.com/help/doc-detail/25475.htm https://www.alibabacloud.com/help/doc-detail/100380.htm",
883
+ "DefaultValue": "SSH connection is allowed by default."
884
+ }
885
+ ],
886
+ "Checks": [
887
+ "ecs_securitygroup_restrict_ssh_internet"
888
+ ]
889
+ },
890
+ {
891
+ "Id": "3.3",
892
+ "Description": "Ensure VPC flow logging is enabled in all VPCs",
893
+ "Attributes": [
894
+ {
895
+ "Section": "3. Networking",
896
+ "Profile": "Level 2",
897
+ "AssessmentStatus": "Manual",
898
+ "Description": "You can use the flow log function to monitor the IP traffic information for an ENI, a VSwitch or a VPC. If you create a flow log for a VSwitch or a VPC, all the Elastic Network Interfaces, including the newly created Elastic Network Interfaces, are monitored. Such flow log data is stored in Log Service, where you can view and analyze IP traffic information. It is recommended that VPC Flow Logs be enabled for packet Rejects for VPCs.",
899
+ "RationaleStatement": "VPC Flow Logs provide visibility into network traffic that traverses the VPC and can be used to detect anomalous traffic or insight during security workflows.",
900
+ "ImpactStatement": "Currently, the flow log function is available for free. However, corresponding storage and indexing fees associated with the use of Log Service are billed. Before you activate the flow log function, note the following: • The object where a flow log is created can only be ENI. • Only the following resource types support the creation of flow logs: VPC, VSwitch, and ENI. • The maximum number of flow log instances that can be created in each region is 10. If you need to create more flow log instances, open a ticket.",
901
+ "RemediationProcedure": "1. Logon to VPC console. 2. In the left-side navigation pane, click FlowLog. 3. Follow the instruction to create FlowLog for each of your VPCs",
902
+ "AuditProcedure": "1. Logon to VPC console. 2. In the left-side navigation pane, click FlowLog. 3. Check for every existing VPC to ensure that there is an associated VPC ID on the FlowLog tab.",
903
+ "AdditionalInformation": "",
904
+ "References": "https://www.alibabacloud.com/help/doc-detail/90628.html",
905
+ "DefaultValue": "By default, Flow Logs is not enabled when you create a new VPC"
906
+ }
907
+ ],
908
+ "Checks": [
909
+ "vpc_flow_logs_enabled"
910
+ ]
911
+ },
912
+ {
913
+ "Id": "3.4",
914
+ "Description": "Ensure routing tables for VPC peering are least access",
915
+ "Attributes": [
916
+ {
917
+ "Section": "3. Networking",
918
+ "Profile": "Level 1",
919
+ "AssessmentStatus": "Manual",
920
+ "Description": "Once a VPC peering connection is established, routing tables must be updated to establish any connections between the peered VPCs. These routes can be as specific as desired, even peering a VPC to only a single host on the other side of the connection.",
921
+ "RationaleStatement": "Although the routing table is empty by default upon creation for any newly created routing table, hence it denies any default access, it is recommended that the table entry is only added based on the least access principle. Being highly selective in peering routing tables is a very effective way of minimizing the impact of breach as resources outside of these routes are inaccessible to the peered VPC.",
922
+ "ImpactStatement": "",
923
+ "RemediationProcedure": "1. Logon to VPC console. 2. Open the routing table 3. Remove and add route table entries to ensure that the least number of subnets or hosts as is required to accomplish the purpose for peering are routable.",
924
+ "AuditProcedure": "1. Logon to VPC console. 2. Open the routing table 3. Review routing tables of peered VPCs for whether they route all subnets of each VPC and whether that is necessary to accomplish the intended purposes for peering the VPCs.",
925
+ "AdditionalInformation": "",
926
+ "References": "https://www.alibabacloud.com/help/doc-detail/97766.htm",
927
+ "DefaultValue": "Routing table is empty by default upon creation for any newly created routing table, hence it denies any default access"
928
+ }
929
+ ],
930
+ "Checks": []
931
+ },
932
+ {
933
+ "Id": "3.5",
934
+ "Description": "Ensure the security group are configured with fine grained rules",
935
+ "Attributes": [
936
+ {
937
+ "Section": "3. Networking",
938
+ "Profile": "Level 1",
939
+ "AssessmentStatus": "Manual",
940
+ "Description": "Security groups provide stateful filtering of ingress/egress network traffic to Alibaba Cloud resources. It is recommended that all security group configured with fine grained rules.",
941
+ "RationaleStatement": "Configure fine grained security group rules is a very effective way of minimizing the impact of breach as resources outside of these rules are inaccessible to the ECS instance.",
942
+ "ImpactStatement": "",
943
+ "RemediationProcedure": "1. Logon to ECS Console. 2. In the left-side navigation pane, choose Network & Security > Security Groups. 3. Remove any unnecessary rules in all security groups.",
944
+ "AuditProcedure": "1. Logon to ECS Console. 2. In the left-side navigation pane, choose Network & Security > Security Groups. 3. Ensure the rules in each of your security groups are all necessary for your operation.",
945
+ "AdditionalInformation": "",
946
+ "References": "https://www.alibabacloud.com/help/doc-detail/25475.htm",
947
+ "DefaultValue": ""
948
+ }
949
+ ],
950
+ "Checks": []
951
+ },
952
+ {
953
+ "Id": "4.1",
954
+ "Description": "Ensure that 'Unattached disks' are encrypted",
955
+ "Attributes": [
956
+ {
957
+ "Section": "4. Virtual Machines",
958
+ "Profile": "Level 1",
959
+ "AssessmentStatus": "Manual",
960
+ "Description": "Ensure that unattached disks in a subscription are encrypted.",
961
+ "RationaleStatement": "Cloud disk encryption protects your data at rest. The cloud disk data encryption feature automatically encrypts data when data is transferred from ECS instances to disks, and decrypts data when the data is read from disks.",
962
+ "ImpactStatement": "",
963
+ "RemediationProcedure": "1. Logon to ECS Console 2. In the left-side navigation pane, choose Storage & Snapshots > Disk. 3. In the upper-right corner of the Disks page, click Create Disk. 4. In the Disk section, check the Disk Encryption box and then select a key from the drop-down list.",
964
+ "AuditProcedure": "1. Logon to ECS Console 2. In the left pane, click to expand Storage and Snapshots, click Disks 3. Select each Disk 4. Ensure that each disk has Disks Encryption has Encryption checked with the value of key tag is true",
965
+ "AdditionalInformation": "",
966
+ "References": "https://www.alibabacloud.com/help/doc-detail/59643.htm",
967
+ "DefaultValue": "By default, data disks are not encrypted."
968
+ }
969
+ ],
970
+ "Checks": [
971
+ "ecs_unattached_disk_encrypted"
972
+ ]
973
+ },
974
+ {
975
+ "Id": "4.2",
976
+ "Description": "Ensure that Virtual Machines disk are encrypted",
977
+ "Attributes": [
978
+ {
979
+ "Section": "4. Virtual Machines",
980
+ "Profile": "Level 1",
981
+ "AssessmentStatus": "Manual",
982
+ "Description": "Ensure that disk are encrypted when it is created with the creation of VM instance.",
983
+ "RationaleStatement": "ECS cloud disk encryption protects your data at rest. The cloud disk data encryption feature automatically encrypts data when data is transferred from ECS instances to disks, and decrypts data when the data is read from disks.",
984
+ "ImpactStatement": "",
985
+ "RemediationProcedure": "Encrypt a system disk when copying an image in the ECS console by following the below steps: 1. Logon to ECS Console 2. In the left-side navigation pane, choose Instances & Images > Instances 3. In the top navigation bar, select a region. 4. On the Images page, click the Custom Image tab. 5. Select the target image and click copy Image in the Actions column. 6. In the Copy Image dialog box, check the Encrypt box and then select a key from the drop-down list. 7. Click OK. You can encrypt a data disk when creating an instance by following the below steps: 1. Logon to ECS Console 2. In the left-side navigation pane, choose Instances & Images > Instances 3. On the Instances page, click Create Instance 4. On the Basic Configurations page, find the Storage section and perform the following steps a) Click Add Disk b) Specify the disk category and capacity of data disk c) Select Disk Encryption and then select a key from the drop-down list.",
986
+ "AuditProcedure": "1. Logon to ECS Console 2. In the left pane, click to expand Storage and Snapshots, click Disks 3. Select each Data disk 4. Ensure that each disk under Data disks has encryption",
987
+ "AdditionalInformation": "",
988
+ "References": "https://www.alibabacloud.com/help/doc-detail/59643.htm",
989
+ "DefaultValue": "Not checked"
990
+ }
991
+ ],
992
+ "Checks": [
993
+ "ecs_attached_disk_encrypted"
994
+ ]
995
+ },
996
+ {
997
+ "Id": "4.3",
998
+ "Description": "Ensure no security groups allow ingress from 0.0.0.0/0 to port 22",
999
+ "Attributes": [
1000
+ {
1001
+ "Section": "4. Virtual Machines",
1002
+ "Profile": "Level 1",
1003
+ "AssessmentStatus": "Manual",
1004
+ "Description": "Security groups provide stateful filtering of ingress/egress network traffic to Alibaba Cloud resources. It is recommended that no security group allows unrestricted ingress access to port 22.",
1005
+ "RationaleStatement": "Rationale: Removing unfettered connectivity to remote console services, such as SSH, reduces a server's exposure to risk.",
1006
+ "ImpactStatement": "For valid operation needs, such as updating an existing environment, care should be taken to ensure that administrators currently relying on an existing ingress from 0.0.0.0/0 have access to ports 22 through another security group.",
1007
+ "RemediationProcedure": "1. Logon to ECS Console . 2. In the left pane, click to expand Network* and Security, click Security Groups 3. For each security group, perform the following: a)Select the security group b)Click Add Rules c)Click the Inbound tab d)Identify the rules to be removed f)Click Delete in the Remove column g)Click OK",
1008
+ "AuditProcedure": "1. Logon to ECS Console . 2. In the left pane, click to expand Network and Security, click Security Groups 3. For each security group, perform the following: 4. Select the security group 5. Click Add Rules 6. Click the Inbound tab 7. Ensure no rule exists that has a port range that includes port 22 and has an Authorization Object of 0.0.0.0/0 Note: A Port value of ALL or a port range such as 0-1024 also includes port 22.",
1009
+ "AdditionalInformation": "",
1010
+ "References": "https://www.alibabacloud.com/help/doc-detail/51170.htm",
1011
+ "DefaultValue": "By default, Authorization Object and port range are not set."
1012
+ }
1013
+ ],
1014
+ "Checks": [
1015
+ "ecs_securitygroup_restrict_ssh_internet"
1016
+ ]
1017
+ },
1018
+ {
1019
+ "Id": "4.4",
1020
+ "Description": "Ensure no security groups allow ingress from 0.0.0.0/0 to port 3389",
1021
+ "Attributes": [
1022
+ {
1023
+ "Section": "4. Virtual Machines",
1024
+ "Profile": "Level 1",
1025
+ "AssessmentStatus": "Manual",
1026
+ "Description": "Security groups provide filtering of ingress/egress network traffic to Aliyun resources. It is recommended that no security group allows unrestricted ingress access to port 3389.",
1027
+ "RationaleStatement": "Removing unfettered connectivity to remote console services, such as RDP, reduces a server's exposure to risk.",
1028
+ "ImpactStatement": "For valid operation needs, such as updating an existing environment, care should be taken to ensure that administrators currently relying on an existing ingress from 0.0.0.0/0 have access to ports 3389 through another security group.",
1029
+ "RemediationProcedure": "1. Logon to ECS Console . 2. In the left pane, click to expand Network and Security, click Security Groups For each security group, perform the following: 1. Select the security group 2. Click Add Rules 3. Click the Inbound tab 4. Identify the rules to be removed 5. Click Delete in the Remove column 6. Click OK",
1030
+ "AuditProcedure": "1. Logon to ECS Console . 2. In the left pane, click to expand Network and Security, click Security Groups 3. For each security group, perform the following: 4. Select the security group 5. Click Add Rules 6. Click the Inbound tab 7. Ensure no rule exists that has a port range that includes port 3389 and has an Authorization Object of 0.0.0.0/0 Note: A Port value of ALL or a port range such as 0-1024 also includes port 3389.",
1031
+ "AdditionalInformation": "",
1032
+ "References": "https://www.alibabacloud.com/help/doc-detail/51170.htm",
1033
+ "DefaultValue": "By default, Authorization Object and port range are not set."
1034
+ }
1035
+ ],
1036
+ "Checks": [
1037
+ "ecs_securitygroup_restrict_rdp_internet"
1038
+ ]
1039
+ },
1040
+ {
1041
+ "Id": "4.5",
1042
+ "Description": "Ensure that the latest OS Patches for all Virtual Machines are applied",
1043
+ "Attributes": [
1044
+ {
1045
+ "Section": "4. Virtual Machines",
1046
+ "Profile": "Level 1",
1047
+ "AssessmentStatus": "Manual",
1048
+ "Description": "Ensure that the latest OS patches for all virtual machines are applied.",
1049
+ "RationaleStatement": "Windows and Linux virtual machines should be kept updated to: • Address a specific bug or flaw • Improve an OS or applications general stability • Fix a security vulnerability The Alibaba Cloud Security Center checks for the latest updates in Linux and Windows systems. If an ECS instance is missing a system update, the Security Center will recommend system updates be applied.",
1050
+ "ImpactStatement": "",
1051
+ "RemediationProcedure": "1. Logon to Security Center Console 2. Select Vulnerabilities 3. Apply all patches for vulnerabilities",
1052
+ "AuditProcedure": "1. Logon to Security Center Console 2. Select Vulnerabilities 3. Ensure all vulnerabilities are fixed",
1053
+ "AdditionalInformation": "",
1054
+ "References": "",
1055
+ "DefaultValue": "By default, patches are not automatically deployed."
1056
+ }
1057
+ ],
1058
+ "Checks": [
1059
+ "ecs_instance_latest_os_patches_applied"
1060
+ ]
1061
+ },
1062
+ {
1063
+ "Id": "4.6",
1064
+ "Description": "Ensure that the endpoint protection for all Virtual Machines is installed",
1065
+ "Attributes": [
1066
+ {
1067
+ "Section": "4. Virtual Machines",
1068
+ "Profile": "Level 1",
1069
+ "AssessmentStatus": "Manual",
1070
+ "Description": "Install endpoint protection for all virtual machines.",
1071
+ "RationaleStatement": "Installing endpoint protection systems (like Security Center for Alibaba Cloud) provides for real-time protection capability that helps identify and remove viruses, spyware, and other malicious software, with configurable alerts when known malicious software attempts to install itself or run on ECS.",
1072
+ "ImpactStatement": "",
1073
+ "RemediationProcedure": "Using the Alibaba Cloud Management Console: 1. Logon to Security Center Console 2. Select Settings 3. Click Agent 4. On the Agent tab, select the virtual machines without Security Center agent installed 5. Click Install",
1074
+ "AuditProcedure": "Using the Alibaba Cloud Management Console: 1. Logon to Security Center Console 2. Select Overview 3. Ensure all ECS are installed with Security Center agent",
1075
+ "AdditionalInformation": "",
1076
+ "References": "",
1077
+ "DefaultValue": "Not installed"
1078
+ }
1079
+ ],
1080
+ "Checks": [
1081
+ "ecs_instance_endpoint_protection_installed"
1082
+ ]
1083
+ },
1084
+ {
1085
+ "Id": "5.1",
1086
+ "Description": "Ensure that OSS bucket is not anonymously or publicly accessible",
1087
+ "Attributes": [
1088
+ {
1089
+ "Section": "5. Storage",
1090
+ "Profile": "Level 1",
1091
+ "AssessmentStatus": "Automated",
1092
+ "Description": "A bucket is a container used to store objects in Object Storage Service (OSS). All objects in OSS are stored in buckets. It is recommended that the access policy on OSS bucket does not allows anonymous and/or public access.",
1093
+ "RationaleStatement": "Allowing anonymous and/or public access grants permissions to anyone to access bucket content. Such access might not be desired if you are storing any sensitive data. Hence, ensure that anonymous and/or public access to a bucket is not allowed.",
1094
+ "ImpactStatement": "Customers may set ACL to public due to the business needs.",
1095
+ "RemediationProcedure": "The anonymous or public access to OSS bucket can be restricted through both Bucket ACL and Bucket Policy. Using the Bucket ACL: 1. Logon to OSS console. 2. In the bucket-list pane, click on a target OSS bucket 3. Click on Basic Setting in top middle of the console 4. Under ACL section, click on configure 5. Click Private 6. Click Save Using Bucket Policy: 1. Logon to OSS console. 2. Click Bucket, and then click the name of target bucket. 3. Click the Files tab. On the page that appears, click Authorize. 4. In the Authorize dialog box that appears, click Authorize. 5. In the Authorize dialog box that appears, choose the Anonymous Accounts (*) for Accounts and choose None for Authorized Operation`. 6. Click OK.",
1096
+ "AuditProcedure": "The anonymous or public access to OSS bucket can be restricted through both Bucket Access Control List (ACL) and Bucket Policy. Using the Bucket ACL: 1. Logon to OSS console. 2. In the bucket-list pane, click on a target OSS bucket 3. Click on Basic Setting in top middle of the console 4. Under ACL section, ensure the Bucket ACL is set to `Private. Using Bucket Policy: 1. Logon to OSS console. 2. Click Bucket, and then click the name of target bucket. 3. Click the Files tab. On the page that appears, click Authorize. 4. In the Authorize dialog box that appears, click Authorize. 5. In the Authorize dialog box that appears, ensure the Anonymous Accounts (*) is selected under Accounts and None is selected under Authorized Operation.",
1097
+ "AdditionalInformation": "",
1098
+ "References": "https://www.alibabacloud.com/help/doc-detail/31896.htm",
1099
+ "DefaultValue": "Private"
1100
+ }
1101
+ ],
1102
+ "Checks": [
1103
+ "oss_bucket_not_publicly_accessible"
1104
+ ]
1105
+ },
1106
+ {
1107
+ "Id": "5.2",
1108
+ "Description": "Ensure that there are no publicly accessible objects in storage buckets",
1109
+ "Attributes": [
1110
+ {
1111
+ "Section": "5. Storage",
1112
+ "Profile": "Level 1",
1113
+ "AssessmentStatus": "Manual",
1114
+ "Description": "A bucket is a container used to store objects in Object Storage Service (OSS). All objects in OSS are stored in buckets. It is recommended that storage object ACL should not grant public access.",
1115
+ "RationaleStatement": "Allowing public access to objects allows anyone with an internet connection to access sensitive data that is important to your business. Also note that even if a bucket ACL applied on storage does not allow public access, there could be object specific ACLs that allows public access to the specific access to the specific objects inside the buckets. Hence it is important to check object ACLs at individual object level.",
1116
+ "ImpactStatement": "Customers may set ACL to public due to the business needs.",
1117
+ "RemediationProcedure": "Using the Management Console: 1. Logon to OSS console. 2. In the bucket-list pane, click on a target OSS bucket 3. Click on Files in top middle of the console 4. Hover on More in the right column on a target object 5. Click Set ACL 6. Click Private 7. Click Save",
1118
+ "AuditProcedure": "Using the Management Console: 1. Logon to OSS console. 2. In the bucket-list pane, click on a target OSS bucket 3. Click on Files in top middle of the console 4. Click on View details in the right column on a target object 5. Ensure File ACL is set to private",
1119
+ "AdditionalInformation": "",
1120
+ "References": "https://www.alibabacloud.com/help/doc-detail/31909.htm",
1121
+ "DefaultValue": "By Default, object ACLs is inherited from corresponding bucket ACL."
1122
+ }
1123
+ ],
1124
+ "Checks": []
1125
+ },
1126
+ {
1127
+ "Id": "5.3",
1128
+ "Description": "Ensure that logging is enabled for OSS buckets",
1129
+ "Attributes": [
1130
+ {
1131
+ "Section": "5. Storage",
1132
+ "Profile": "Level 1",
1133
+ "AssessmentStatus": "Automated",
1134
+ "Description": "OSS Bucket Access Logging generates a log that contains access records for each request made to your OSS bucket. An access log record contains details about the request, such as the request type, the resources specified in the request worked, and the time and date the request was processed. It is recommended that bucket access logging be enabled on the OSS bucket.",
1135
+ "RationaleStatement": "By enabling OSS bucket logging on target OSS buckets, it is possible to capture all events which may affect objects within an target buckets. Configuring logs to be placed in a separate bucket allows access to log information which can be useful in security and incident response workflows.",
1136
+ "ImpactStatement": "Extra cost for log storage may incur.",
1137
+ "RemediationProcedure": "Perform the following to enable OSS bucket logging: Through the management console: 1. Logon to OSS console. 2. In the bucket-list pane, click on a target OSS bucket 3. Under Log, click configure 4. Configure bucket logging 5. Click the Enabled checkbox 6. Select Target Bucket from list 7. Enter a Target Prefix 8. Click Save",
1138
+ "AuditProcedure": "Perform the following ensure the OSS bucket has access logging is enabled: Through the management console: 1. Logon to the OSS console. 2. In the bucket-list pane, click on a target OSS bucket 3. Under Log, ensure Enabled is checked.",
1139
+ "AdditionalInformation": "",
1140
+ "References": "https://www.alibabacloud.com/help/doc-detail/31900.htm",
1141
+ "DefaultValue": "Logging is disabled."
1142
+ }
1143
+ ],
1144
+ "Checks": [
1145
+ "oss_bucket_logging_enabled"
1146
+ ]
1147
+ },
1148
+ {
1149
+ "Id": "5.4",
1150
+ "Description": "Ensure that 'Secure transfer required' is set to 'Enabled'",
1151
+ "Attributes": [
1152
+ {
1153
+ "Section": "5. Storage",
1154
+ "Profile": "Level 1",
1155
+ "AssessmentStatus": "Automated",
1156
+ "Description": "Enable the data encryption in transit.",
1157
+ "RationaleStatement": "The secure transfer enhances the security of OSS bucket by only allowing requests to the storage account by a secure connection. For example, when calling REST APIs to access storage accounts, the connection must use HTTPS. Any requests using HTTP will be rejected.",
1158
+ "ImpactStatement": "",
1159
+ "RemediationProcedure": "USing the management console: 1. Logon to OSS console. 2. In the bucket-list pane, click on a target OSS bucket 3. Click on Files in top middle of the console 4. Click on Authorize 5. Click on Whole Bucket,*, None (Authorized Operation) and http (Conditions:Access Method) 6. Click on Save",
1160
+ "AuditProcedure": "Using the management console: 1. Logon to OSS console. 2. In the bucket-list pane, click on a target OSS bucket 3. Click on Files in top middle of the console 4. Click on Authorize 5. Ensure a policy is set to None (Authorized Operation) and http (Conditions:Access Method)",
1161
+ "AdditionalInformation": "",
1162
+ "References": "https://www.alibabacloud.com/help/doc-detail/85111.htm",
1163
+ "DefaultValue": ""
1164
+ }
1165
+ ],
1166
+ "Checks": [
1167
+ "oss_bucket_secure_transport_enabled"
1168
+ ]
1169
+ },
1170
+ {
1171
+ "Id": "5.5",
1172
+ "Description": "Ensure that the shared URL signature expires within an hour",
1173
+ "Attributes": [
1174
+ {
1175
+ "Section": "5. Storage",
1176
+ "Profile": "Level 1",
1177
+ "AssessmentStatus": "Manual",
1178
+ "Description": "Expire the shared URL signature within an hour.",
1179
+ "RationaleStatement": "URL signature is a URL that grants access rights to OSS. You can add signature information to a URL so that you can forward the URL to the third party for authorized access. A URL signature can be provided to the third party for authorized access. Providing a URL signature to these clients allows them access to a resource for a specified period of time. This time should be set as low as possible, and preferably no longer than an hour.",
1180
+ "ImpactStatement": "",
1181
+ "RemediationProcedure": "Through the management console: 1. Logon to OSS console. 2. In the bucket-list pane, click on a target OSS bucket 3. Click on Files in top middle of the console 4. Click on View Details in the right column on a target object 5. Set Validity Period to a value less than 3600",
1182
+ "AuditProcedure": "Through the management console: 1. Logon to OSS console. 2. In the bucket-list pane, click on a target OSS bucket 3. Click Files in top middle of the console 4. Click View Details in the right column on a target object 5. Ensure Validity Period is set to less than 3600",
1183
+ "AdditionalInformation": "",
1184
+ "References": "https://www.alibabacloud.com/help/doc-detail/31912.htm",
1185
+ "DefaultValue": "300 seconds."
1186
+ }
1187
+ ],
1188
+ "Checks": []
1189
+ },
1190
+ {
1191
+ "Id": "5.6",
1192
+ "Description": "Ensure that URL signature is allowed only over https",
1193
+ "Attributes": [
1194
+ {
1195
+ "Section": "5. Storage",
1196
+ "Profile": "Level 1",
1197
+ "AssessmentStatus": "Manual",
1198
+ "Description": "URL signature is a URL that grants access rights to OSS. You can add signature information to a URL so that you can forward the URL to the third party for authorized access.A URL signature can be provided to the third party for authorized access.",
1199
+ "RationaleStatement": "It is recommended to allow such access requests over HTTPS protocol only. URL signature should be allowed only over HTTPS protocol.",
1200
+ "ImpactStatement": "",
1201
+ "RemediationProcedure": "Using the management console: 1. Logon to OSS console. 2. In the bucket-list pane, click on a target OSS bucket 3. Click on Files in top middle of the console 4. Click on View Details in the right column on a target object 5. Set HTTPS to Enabled",
1202
+ "AuditProcedure": "Using the management console: 1. Logon to OSS console. 2. In the bucket-list pane, click on a target OSS bucket 3. Click on Files in top middle of the console 4. Click on View Details in the right column on a target object 5. Ensure HTTPS is set to Enabled",
1203
+ "AdditionalInformation": "",
1204
+ "References": "",
1205
+ "DefaultValue": "Enabled"
1206
+ }
1207
+ ],
1208
+ "Checks": []
1209
+ },
1210
+ {
1211
+ "Id": "5.7",
1212
+ "Description": "Ensure network access rule for storage bucket is not set to publicly accessible",
1213
+ "Attributes": [
1214
+ {
1215
+ "Section": "5. Storage",
1216
+ "Profile": "Level 2",
1217
+ "AssessmentStatus": "Automated",
1218
+ "Description": "Restricting default network access helps to provide a new layer of security, since OSS accept connections from clients on any network. To limit access to selected networks, the default action must be changed.",
1219
+ "RationaleStatement": "Access can be granted to public internet IP address ranges, to enable connections from specific internet or on-premises clients. When network rules are configured, only applications from allowed networks can access OSS bucket.",
1220
+ "ImpactStatement": "",
1221
+ "RemediationProcedure": "Using the management console: 1. Logon to OSS console. 2. In the bucket-list pane, click on a target OSS bucket 3. Click on Files in top middle of the console 4. Click on Authorize 5. Click on Whole Bucket,*,None, Condition IP = specified IP address or IP address segment 6. Click on Save",
1222
+ "AuditProcedure": "Using the management console: 1. Logon to OSS console. 2. In the bucket-list pane, click on a target OSS bucket 3. Click on Files in top middle of the console 4. Click on Authorize 5. Ensure a policy is set to be granted to public internet IP address ranges",
1223
+ "AdditionalInformation": "",
1224
+ "References": "https://www.alibabacloud.com/help/doc-detail/85111.htm",
1225
+ "DefaultValue": "Not set."
1226
+ }
1227
+ ],
1228
+ "Checks": []
1229
+ },
1230
+ {
1231
+ "Id": "5.8",
1232
+ "Description": "Ensure server-side encryption is set to Encrypt with Service Key",
1233
+ "Attributes": [
1234
+ {
1235
+ "Section": "5. Storage",
1236
+ "Profile": "Level 2",
1237
+ "AssessmentStatus": "Manual",
1238
+ "Description": "Enable server-side encryption (Encrypt with Service Key) for objects.",
1239
+ "RationaleStatement": "Server-side encryption protects your data at rest.",
1240
+ "ImpactStatement": "Service key incurs an additional cost from accessing the KMS service.",
1241
+ "RemediationProcedure": "Using the management console: Perform the following to configure the OSS bucket to use SSE-KMS: 1. Logon to OSS console. 2. In the bucket-list pane, click on the target OSS bucket 3. Click Basic Setting in top middle of the console 4. Under the Server-side Encryption section, click on configure 5. Click KMS and select KMS service key(alias/acs/oss)",
1242
+ "AuditProcedure": "Perform the following to determine if the OSS bucket is configured to use SSE-KMS: Using the management console: 1. Logon to OSS console. 2. In the bucket-list pane, click on the target OSS bucket 3. Click on Basic Setting in top middle of the console 4. Under the Server-side Encryption section, ensure the target OSS Bucket Encryption is set to KMS and the Encryption Method of KMS and the service key (alias/acs/oss) is selected.",
1243
+ "AdditionalInformation": "",
1244
+ "References": "https://www.alibabacloud.com/help/doc-detail/108880.htm",
1245
+ "DefaultValue": "Not encrypted."
1246
+ }
1247
+ ],
1248
+ "Checks": []
1249
+ },
1250
+ {
1251
+ "Id": "5.9",
1252
+ "Description": "Ensure server-side encryption is set to Encrypt with BYOK",
1253
+ "Attributes": [
1254
+ {
1255
+ "Section": "5. Storage",
1256
+ "Profile": "Level 2",
1257
+ "AssessmentStatus": "Manual",
1258
+ "Description": "Enable server-side encryption (Encrypt with BYOK) for objects.",
1259
+ "RationaleStatement": "Server-side encryption protects your data at rest.",
1260
+ "ImpactStatement": "Service key incurs an additional cost from accessing the KMS service.",
1261
+ "RemediationProcedure": "Perform the following to configure the OSS bucket to use SSE-KMS: Using the management console: 1. Logon to OSS console. 2. In the bucket-list pane, click on the target OSS bucket 3. Click on Basic Setting in top middle of the console 4. Under the Server-side Encryption section, click on configure 5. Click on KMS and select an existing CMK from the KMS key Id drop-down menu 6. Click save",
1262
+ "AuditProcedure": "Perform the following to determine if the OSS bucket is configured to use SSE-KMS: Using the management console: 1. Logon to OSS console. 2. In the bucket-list pane, click on the target OSS bucket 3. Click on Basic Setting in top middle of the console 4. Under the Server-side Encryption section, ensure the target OSS Bucket Encryption is set to KMS and a customer created KMS key ID is specified in the KMS Key Id field.",
1263
+ "AdditionalInformation": "",
1264
+ "References": "https://www.alibabacloud.com/help/doc-detail/108880.htm",
1265
+ "DefaultValue": "By default, Buckets are not set to be encrypted."
1266
+ }
1267
+ ],
1268
+ "Checks": []
1269
+ },
1270
+ {
1271
+ "Id": "6.1",
1272
+ "Description": "Ensure that RDS instance requires all incoming connections to use SSL",
1273
+ "Attributes": [
1274
+ {
1275
+ "Section": "6. Relational Database Services",
1276
+ "Profile": "Level 1",
1277
+ "AssessmentStatus": "Automated",
1278
+ "Description": "It is recommended to enforce all incoming connections to SQL database instance to use SSL.",
1279
+ "RationaleStatement": "SQL database connections if successfully trapped (MITM); can reveal sensitive data like credentials, database queries, query outputs etc. For security, it is recommended to always use SSL encryption when connecting to your instance. This recommendation is applicable for PostgreSQL and MySQL Instances.",
1280
+ "ImpactStatement": "",
1281
+ "RemediationProcedure": "Using the management console: 1. Logon to RDS Console. 2. Select the region where the target instance is located. 3. Click the ID of the target instance to enter the Basic Information page. 4. In the left-side navigation pane, click Data Security. 5. Click the SSL Encryption tab. 6. Click the switch next to Disabled in the SSL Encryption parameter. 7. In the Configure SSL dialog box, select the endpoint for which you want to enable SSL encryption and then click OK. 8. Click Download CA Certificate to download an SSL certificate. 9. The downloaded SSL certificate is a package including the following files: p7b file: is used to import the CA certificate on Windows OS. PEM file: is used to import the CA certificate on other systems or for other applications. JKS file: is a Java truststore certificate file used for importing CA certificate chains in Java programs. The password is apsaradb.",
1282
+ "AuditProcedure": "Using the management console: 1. Logon to RDS Console. 2. Select the region where the target instance is located. 3. Click the ID of the target instance to enter the Basic Information page. 4. In the left-side navigation pane, click Data Security to go to the Security page. 5. Click the SSL Encryption tab. 6. Check the button SSL Encryption is Enabled.",
1283
+ "AdditionalInformation": "",
1284
+ "References": "https://www.alibabacloud.com/help/doc-detail/32474.htm",
1285
+ "DefaultValue": "Encryption is off by default."
1286
+ }
1287
+ ],
1288
+ "Checks": [
1289
+ "rds_instance_ssl_enabled"
1290
+ ]
1291
+ },
1292
+ {
1293
+ "Id": "6.2",
1294
+ "Description": "Ensure that RDS Instances are not open to the world",
1295
+ "Attributes": [
1296
+ {
1297
+ "Section": "6. Relational Database Services",
1298
+ "Profile": "Level 1",
1299
+ "AssessmentStatus": "Automated",
1300
+ "Description": "Database Server should accept connections only from trusted Network(s)/IP(s) and restrict access from the world.",
1301
+ "RationaleStatement": "To minimize attack surface on a Database server Instance, only trusted/known and required IP(s) should be white-listed to connect to it. Authorized network should not have IPs/networks configured to 0.0.0.0 or /0 which will allow access to the instance from anywhere in the world.",
1302
+ "ImpactStatement": "",
1303
+ "RemediationProcedure": "Using the management console: 1. Logon to RDS Console. 2. In the upper left corner, select the region where the target instance is located. 3. Locate the target instance and click its ID. 4. In the left-side navigation pane, click Data Security to visit the Security page. 5. On the Whitelist Settings tab page, follow below instructions based on your scenario: • To access the RDS instance from an ECS instance located within a VPC, click Edit for the default VPC whitelist. • To access the RDS instance from an ECS instance located within a classic network, click Edit for the default Classic Network whitelist. • To access the RDS instance from a server or computer located in a public network, click Edit for the default Classic Network whitelist. 6. In the displayed Edit Whitelist dialog box, remove any 0.0.0.0 or /0 entries, and only add the IP addresses that need to access the instance, and then click OK. • If you add an IP address range, such as 10.10.10.0/24, any IP address in 10.10.10.X format can access the RDS instance. • If you add multiple IP addresses or IP address ranges, separate them with a comma (without spaces), for example, 192.168.0.1,172.16.213.9. • You can click Add Internal IP Addresses of ECS Instance to display the IP addresses of all the ECS instances under your Alibaba Cloud account and add to the whitelist.",
1304
+ "AuditProcedure": "Using the management console: 1. Logon to RDS Console. 2. In the upper left corner, select the region where the target instance is located. 3. Locate the target instance and click its ID. 4. In the left-side navigation pane, click Data Security to visit the Security page. 5. On the Whitelist Settings tab, check if the authorized servers IPs have been configured, and it is not configured as 0.0.0.0 or /0. Note: You can also click Add a Whitelist Group to create a new group.",
1305
+ "AdditionalInformation": "",
1306
+ "References": "https://www.alibabacloud.com/help/doc-detail/26198.htm",
1307
+ "DefaultValue": "By default, the whitelist setting is 127.0.0.1 that is not allowing any connection from any server."
1308
+ }
1309
+ ],
1310
+ "Checks": [
1311
+ "rds_instance_no_public_access_whitelist"
1312
+ ]
1313
+ },
1314
+ {
1315
+ "Id": "6.3",
1316
+ "Description": "Ensure that 'Auditing' is set to 'On' for applicable database instances",
1317
+ "Attributes": [
1318
+ {
1319
+ "Section": "6. Relational Database Services",
1320
+ "Profile": "Level 2",
1321
+ "AssessmentStatus": "Automated",
1322
+ "Description": "Enable SQL auditing on all RDS except SQL Server 2012/2016/2017 and MariaDB TX.",
1323
+ "RationaleStatement": "The Alibaba Cloud allows MySQL instance to be created as a service. Enabling auditing at the server level ensures that all existing and newly created databases on the MySQL instance are audited. Auditing policy applied on the MySQL database does not override auditing policy and settings applied on the particular MySQL server where the database is hosted. Auditing tracks database events and writes them to an audit log in the Alibaba Cloud MySQL account. It also helps to maintain regulatory compliance, understand database activity, and gain insight into discrepancies and anomalies that could indicate business concerns or suspected security violations.",
1324
+ "ImpactStatement": "By activating Auditing, the system then automatically starts charging an hourly fee of US$ 0.0018 per GB.",
1325
+ "RemediationProcedure": "Using the management console: 1. Logon to RDS Console. 2. In the upper-left corner, select the region of the target instance. 3. Locate the target instance, and click the instance ID. 4. In the left-side navigation pane, select SQL Explorer. 5. Click Activate Now. 6. Specify the SQL log storage duration (for how long you want to keep the SQL log), and click Activate.",
1326
+ "AuditProcedure": "Using the management console: 1. Logon to RDS Console. 2. In the upper-left corner, select the region of the target instance. 3. Locate the target instance, and click the instance ID. 4. In the left-side navigation pane, select SQL Explorer. 5. Check if there is a “Welcome to Use SQL Explore” page, as such a page indicates that the auditing is not yet enabled. If the auditing is enabled, then the SQL Explorer should show the SQL Explore dashboard directly.",
1327
+ "AdditionalInformation": "",
1328
+ "References": "https://www.alibabacloud.com/help/doc-detail/96123",
1329
+ "DefaultValue": "Disable"
1330
+ }
1331
+ ],
1332
+ "Checks": [
1333
+ "rds_instance_sql_audit_enabled"
1334
+ ]
1335
+ },
1336
+ {
1337
+ "Id": "6.4",
1338
+ "Description": "Ensure that 'Auditing' Retention is 'greater than 6 months'",
1339
+ "Attributes": [
1340
+ {
1341
+ "Section": "6. Relational Database Services",
1342
+ "Profile": "Level 1",
1343
+ "AssessmentStatus": "Automated",
1344
+ "Description": "Database SQL Audit Retention should be configured to be greater than 90 days.",
1345
+ "RationaleStatement": "Audit Logs can be used to check for anomalies and give insight into suspected breaches or misuse of information and access.",
1346
+ "ImpactStatement": "",
1347
+ "RemediationProcedure": "Using the management console: 1. Logon to RDS Console. 2. In the upper-left corner, select the region of the target instance. 3. Locate the target instance, and click the instance ID. 4. In the left-side navigation pane, select SQL Explore. 5. Click Service Setting button on the top right corner. 6. In the service setting page, enable Activate SQL Explore, set the storage duration as 6 months or longer.",
1348
+ "AuditProcedure": "Using the management console: 1. Logon to RDS Console. 2. In the upper-left corner, select the region of the target instance. 3. Locate the target instance, and click the instance ID. 4. In the left-side navigation pane, select SQL Explore. 5. Click Service Setting button on the top right corner. 6. In the service setting page, assure the storage duration is set as 6 months or longer.",
1349
+ "AdditionalInformation": "",
1350
+ "References": "https://www.alibabacloud.com/help/doc-detail/96123.htm",
1351
+ "DefaultValue": "Active SQL Explorer is disabled."
1352
+ }
1353
+ ],
1354
+ "Checks": [
1355
+ "rds_instance_sql_audit_retention"
1356
+ ]
1357
+ },
1358
+ {
1359
+ "Id": "6.5",
1360
+ "Description": "Ensure that 'TDE' is set to 'Enabled' on for applicable database instance",
1361
+ "Attributes": [
1362
+ {
1363
+ "Section": "6. Relational Database Services",
1364
+ "Profile": "Level 1",
1365
+ "AssessmentStatus": "Automated",
1366
+ "Description": "Enable Transparent Data Encryption on every RDS instance.",
1367
+ "RationaleStatement": "RDS Database transparent data encryption helps protect against the threat of malicious activity by performing real-time encryption and decryption of the database, associated backups, and log files at rest without requiring changes to the application.",
1368
+ "ImpactStatement": "",
1369
+ "RemediationProcedure": "Using the management console: 1. Logon to RDS Console. 2. In the upper-left corner, select the region of the target instance. 3. Locate the target instance, and click the instance ID to enter the Basic Information page. 4. In the left-side navigation pane, click Data Security to go to the Security page. 5. Click the TDE tab. 6. On the TDE tab, find TDE Status and click the switch next to Disabled. 7. In the displayed dialog box, choose automatically generated key or custom key, click Confirm. • Encrypt a table a. For RDS for MySQL, connect to the instance and run the following command to encrypt tables. alter table <tablename> engine=innodb, block_format=encrypted b. For RDS for SQL Server, click Configure TDE, select the databases to encrypt, add them to the right, and click OK. • Decrypt data a. To decrypt a MySQL table encrypted by TDE, run the following command: alter table <tablename> engine=innodb, block_format=default b. To decrypt a SQL Server table encrypted by TDE, click Configure TDE and move the database to the left.",
1370
+ "AuditProcedure": "Using the management console: 1. Logon to RDS Console. 2. In the upper-left corner, select the region of the target instance. 3. Locate the target instance, and click the instance ID. 4. In the left-side navigation pane, click Data Security to go to the Security page. 5. Click the TDE tab. 6. Check the button TDE Status is Enabled.",
1371
+ "AdditionalInformation": "",
1372
+ "References": "https://www.alibabacloud.com/help/doc-detail/33510.html",
1373
+ "DefaultValue": "Disabled"
1374
+ }
1375
+ ],
1376
+ "Checks": [
1377
+ "rds_instance_tde_enabled"
1378
+ ]
1379
+ },
1380
+ {
1381
+ "Id": "6.6",
1382
+ "Description": "Ensure RDS instance TDE protector is encrypted with BYOK (Use your own key)",
1383
+ "Attributes": [
1384
+ {
1385
+ "Section": "6. Relational Database Services",
1386
+ "Profile": "Level 2",
1387
+ "AssessmentStatus": "Automated",
1388
+ "Description": "TDE with BYOK support provides increased transparency and control, increased security with an HSM-backed KMS service, and promotion of separation of duties. With TDE, data is encrypted at rest with a symmetric key (called the database encryption key). With BYOK support for TDE, the DEK can be protected with an asymmetric key that is stored in the KMS. Based on business needs or criticality of data, it is recommended that the TDE protector is encrypted by a key that is managed by the data owner (BYOK).",
1389
+ "RationaleStatement": "Bring Your Own Key (BYOK) support for Transparent Data Encryption (TDE) allows user control of TDE encryption keys and restricts who can access them and when. Alibaba Cloud KMS, a cloud-based key management system is the service where TDE has integrated support for BYOK. With BYOK, the database encryption key is protected by an asymmetric key stored in the KMS.",
1390
+ "ImpactStatement": "Additional investment in administration time is needed to produce, maintain, store, etc. customer provided keys.",
1391
+ "RemediationProcedure": "Using the management console: 1. Logon to RDS Console. 2. In the upper-left corner, select the region of the target instance. 3. Locate the target instance, and click the instance ID to enter the Basic Information page. 4. In the left-side navigation pane, click Data Security to go to the Security page. 5. Click the TDE tab. 6. On the TDE tab, find TDE Status and click the switch next to Disabled. 7. In the displayed dialog box, choose custom key, click Confirm.",
1392
+ "AuditProcedure": "Using the management console: 1. Logon to RDS Console. 2. In the upper-left corner, select the region of the target instance. 3. Locate the target instance, and click the instance ID. 4. In the left-side navigation pane, click Data Security to go to the Security page. 5. Click the TDE tab. 6. Check the button TDE Status is Enabled and a custom key ID is shown for the Key field and the status is Valid.",
1393
+ "AdditionalInformation": "",
1394
+ "References": "https://www.alibabacloud.com/help/doc-detail/96121.htm",
1395
+ "DefaultValue": "Disabled"
1396
+ }
1397
+ ],
1398
+ "Checks": [
1399
+ "rds_instance_tde_key_custom"
1400
+ ]
1401
+ },
1402
+ {
1403
+ "Id": "6.7",
1404
+ "Description": "Ensure parameter 'log_connections' is set to 'ON' for PostgreSQL Database",
1405
+ "Attributes": [
1406
+ {
1407
+ "Section": "6. Relational Database Services",
1408
+ "Profile": "Level 1",
1409
+ "AssessmentStatus": "Automated",
1410
+ "Description": "Enable log_connections on PostgreSQL Servers.",
1411
+ "RationaleStatement": "Enabling log_connections helps PostgreSQL Database to log attempted connection to the server, as well as successful completion of client authentication. Log data can be used to identify, troubleshoot, and repair configuration errors and suboptimal performance.",
1412
+ "ImpactStatement": "",
1413
+ "RemediationProcedure": "Using the management console: 1. Logon to RDS Console. 2. In the upper-left corner, select the region of the target instance. 3. Locate the target instance, and click the instance ID to enter the Basic Information page. 4. In the left-side navigation pane, select Parameters. 5. Click the Edit icon of log_connection parameter next the Actual Value column. 6. Enter On as the Actual Value and click Confirm. 7. Click Apply Changes. 8. In the message that appears, click Confirm.",
1414
+ "AuditProcedure": "Using the management console: 1. Logon to RDS Console. 2. In the upper-left corner, select the region of the target instance. 3. Locate the target instance, and click the instance ID to enter the Basic Information page. 4. In the left-side navigation pane, select Parameters and ensure the log_connection is set as On in the Actual Value column.",
1415
+ "AdditionalInformation": "",
1416
+ "References": "https://www.alibabacloud.com/help/doc-detail/96751.htm",
1417
+ "DefaultValue": "Off"
1418
+ }
1419
+ ],
1420
+ "Checks": [
1421
+ "rds_instance_postgresql_log_connections_enabled"
1422
+ ]
1423
+ },
1424
+ {
1425
+ "Id": "6.8",
1426
+ "Description": "Ensure server parameter 'log_disconnections' is set to 'ON' for PostgreSQL Database Server",
1427
+ "Attributes": [
1428
+ {
1429
+ "Section": "6. Relational Database Services",
1430
+ "Profile": "Level 1",
1431
+ "AssessmentStatus": "Automated",
1432
+ "Description": "Enable log_disconnections on PostgreSQL Servers.",
1433
+ "RationaleStatement": "Enabling log_disconnections helps PostgreSQL Database to log session terminations of the server, as well as duration of the session. Log data can be used to identify, troubleshoot, and repair configuration errors and suboptimal performance.",
1434
+ "ImpactStatement": "",
1435
+ "RemediationProcedure": "Using the management console: 1. Login to RDS Console. 2. In the upper-left corner, select the region of the target instance. 3. Locate the target instance, and click the instance ID to enter the Basic Information page. 4. In the left-side navigation pane, select Parameters. 5. Click the Edit icon of log_disconnections parameter next the Actual Value column. 6. Enter On as the Actual Value and click Confirm. 7. Click Apply Changes. 8. In the message that appears, click Confirm.",
1436
+ "AuditProcedure": "Using the management console: 1. Logon to RDS Console. 2. In the upper-left corner, select the region of the target instance. 3. Locate the target instance, and click the instance ID to enter the Basic Information page. 4. In the left-side navigation pane, select Parameters and ensure the log_disconnections is set as On in the Actual Value column.",
1437
+ "AdditionalInformation": "",
1438
+ "References": "https://www.alibabacloud.com/help/doc-detail/96751.htm",
1439
+ "DefaultValue": "Off"
1440
+ }
1441
+ ],
1442
+ "Checks": [
1443
+ "rds_instance_postgresql_log_disconnections_enabled"
1444
+ ]
1445
+ },
1446
+ {
1447
+ "Id": "6.9",
1448
+ "Description": "Ensure server parameter 'log_duration is set to 'ON' for PostgreSQL Database Server",
1449
+ "Attributes": [
1450
+ {
1451
+ "Section": "6. Relational Database Services",
1452
+ "Profile": "Level 1",
1453
+ "AssessmentStatus": "Automated",
1454
+ "Description": "Enable log_duration on PostgreSQL Servers.",
1455
+ "RationaleStatement": "Enabling log_duration helps PostgreSQL Database to Logs the duration of each completed SQL statement which in turn generates query and error logs. Query and error logs can be used to identify, troubleshoot, and repair configuration errors and sub- optimal performance.",
1456
+ "ImpactStatement": "",
1457
+ "RemediationProcedure": "Using the management console: 1. Logon to RDS Console. 2. In the upper-left corner, select the region of the target instance. 3. Locate the target instance, and click the instance ID to enter the Basic Information page. 4. In the left-side navigation pane, select Parameters. 5. Click the Edit icon of log_durantion parameter next the Actual Value column. 6. Enter On as the Actual Value and click Confirm. 7. Click Apply Changes. 8. In the message that appears, click Confirm.",
1458
+ "AuditProcedure": "Using the management console: 1. Logon to RDS Console. 2. In the upper-left corner, select the region of the target instance. 3. Locate the target instance, and click the instance ID to enter the Basic Information page. 4. In the left-side navigation pane, select Parameters and ensure the log_durantion is set as On in the Actual Value column.",
1459
+ "AdditionalInformation": "",
1460
+ "References": "https://www.alibabacloud.com/help/doc-detail/96751.htm",
1461
+ "DefaultValue": "Off"
1462
+ }
1463
+ ],
1464
+ "Checks": [
1465
+ "rds_instance_postgresql_log_duration_enabled"
1466
+ ]
1467
+ },
1468
+ {
1469
+ "Id": "7.1",
1470
+ "Description": "Ensure Log Service is set to Enabled on Kubernetes Engine Clusters",
1471
+ "Attributes": [
1472
+ {
1473
+ "Section": "7. Kubernetes Engine",
1474
+ "Profile": "Level 1",
1475
+ "AssessmentStatus": "Automated",
1476
+ "Description": "Log Service is a complete real-time data logging service on Alibaba Cloud to support collection, shipping, search, storage and analysis for logs. It includes a user interface to call the Log Viewer and an API to management logs pragmatically. Log Service could automatically collect, process, and store your container and audit logs in a dedicated, persistent datastore. Container logs are collected from your containers. Audit logs are collected from the kube-apiserver or the deployed ingress. Events are logs about activity in the cluster, such as the deleting of Pods or Secrets.",
1477
+ "RationaleStatement": "By enabling you will have container and system logs, Kubernetes Engine deploys a per- node logging agent that reads container logs, adds helpful metadata, and then stores them. The logging agent would help to collecting the following sources: • kube-apiserver audit logs • ingress visiting logs • Standard output and standard error logs from containerized processes For events, Kubernetes Engine uses a Deployment in the kube-system namespace which automatically collects events and sends them to Log Service. Log Service is compatible with JSON formats.",
1478
+ "ImpactStatement": "",
1479
+ "RemediationProcedure": "Using the management console: 1. Logon to ACK console 2. Click Create Kubernetes Cluster and set Enable Log Service to Enabled when creating cluster",
1480
+ "AuditProcedure": "Using the management console: 1. Logon to ACK console 2. Select the target cluster and click its name into cluster detail page 3. Select Cluster Auditing on the left column and check if audit page shown",
1481
+ "AdditionalInformation": "",
1482
+ "References": "https://help.aliyun.com/document_detail/91406.html https://help.aliyun.com/document_detail/86532.html",
1483
+ "DefaultValue": "By default, logging service is disabled when you create a new cluster using console."
1484
+ }
1485
+ ],
1486
+ "Checks": [
1487
+ "cs_kubernetes_log_service_enabled"
1488
+ ]
1489
+ },
1490
+ {
1491
+ "Id": "7.2",
1492
+ "Description": "Ensure CloudMonitor is set to Enabled on Kubernetes Engine Clusters",
1493
+ "Attributes": [
1494
+ {
1495
+ "Section": "7. Kubernetes Engine",
1496
+ "Profile": "Level 1",
1497
+ "AssessmentStatus": "Automated",
1498
+ "Description": "The monitoring service in Kubernetes Engine clusters depends on the Alibaba Cloud CloudMonitor agent to access additional system resources and application services in virtual machine instances. The monitor can access metrics about CPU utilization, some disk traffic metrics, network traffic, and disk IO information, which help to monitor signals and build operations in your Kubernetes Engine clusters.",
1499
+ "RationaleStatement": "By Enabling CloudMonitor installation you will have system metrics and custom metrics. System metrics are measurements of the cluster's infrastructure, such as CPU or memory usage. For system metrics, a monitor controller would be created and periodically connects to each node and collects metrics about its Pods and containers, then sends the metrics to CloudMonitor server. Metrics for usage of system resources are collected from the CPU, Memory, Evictable memory, Non-evictable memory, and Disk sources.",
1500
+ "ImpactStatement": "",
1501
+ "RemediationProcedure": "Using the management console: 1. Logon to ACK console 2. Click the Create Kubernetes Cluster button and set CloudMonitor Agent to Enabled under creation options.",
1502
+ "AuditProcedure": "Using the management console: 1. Logon to ACK console 2. Select the target cluster and click its name into cluster detail page 3. Select the Nodes on the left column and click the Monitor link on the Actions column of the selected node 4. Check if OS Metrics data existing in the CloudMonitor page of the selected ECS node",
1503
+ "AdditionalInformation": "",
1504
+ "References": "https://help.aliyun.com/document_detail/125508.html https://help.aliyun.com/document_detail/102337.html",
1505
+ "DefaultValue": "By default, CloudMonitor Agent installation is disenabled when you create a new cluster using console."
1506
+ }
1507
+ ],
1508
+ "Checks": [
1509
+ "cs_kubernetes_cloudmonitor_enabled"
1510
+ ]
1511
+ },
1512
+ {
1513
+ "Id": "7.3",
1514
+ "Description": "Ensure role-based access control (RBAC) authorization is Enabled on Kubernetes Engine Clusters",
1515
+ "Attributes": [
1516
+ {
1517
+ "Section": "7. Kubernetes Engine",
1518
+ "Profile": "Level 1",
1519
+ "AssessmentStatus": "Automated",
1520
+ "Description": "In Kubernetes, authorizers interact by granting a permission if any authorizer grants the permission. The legacy authorizer in Kubernetes Engine grants broad, statically defined permissions. To ensure that RBAC limits permissions correctly, you must disable the legacy authorizer. RBAC has significant security advantages, can help you ensure that users only have access to specific cluster resources within their own namespace and is now stable in Kubernetes.",
1521
+ "RationaleStatement": "In Kubernetes, RBAC is used to grant permissions to resources at the cluster and namespace level. RBAC allows you to define roles with rules containing a set of permissions, and the subaccounts who bind the roles could only have the permissions to access the specific resources in the cluster or namespaces defined in RBAC policies.",
1522
+ "ImpactStatement": "",
1523
+ "RemediationProcedure": "Using the management console: 1. Logon to ACK console 2. Select the target RAM sub-account and configure the RBAC roles on specific clusters or namespaces.",
1524
+ "AuditProcedure": "Using the management console: 1. Logon to ACK console 2. Select the target RAM sub-account in the Clusters -> Authorizations page 3. After RAM user/role is selected, configure the RBAC roles on specific clusters or namespaces",
1525
+ "AdditionalInformation": "",
1526
+ "References": "https://help.aliyun.com/document_detail/87656.html https://help.aliyun.com/document_detail/119596.html",
1527
+ "DefaultValue": "By default, RBAC authorization is enabled on ACK clusters, and the legacy authorizations as ABAC is disenable. Besides, the RAM sub-users have no permissions to access any resources in ACK clusters by default."
1528
+ }
1529
+ ],
1530
+ "Checks": [
1531
+ "cs_kubernetes_rbac_enabled"
1532
+ ]
1533
+ },
1534
+ {
1535
+ "Id": "7.4",
1536
+ "Description": "Ensure Cluster Check triggered at least once per week for Kubernetes Clusters",
1537
+ "Attributes": [
1538
+ {
1539
+ "Section": "7. Kubernetes Engine",
1540
+ "Profile": "Level 1",
1541
+ "AssessmentStatus": "Automated",
1542
+ "Description": "Kubernetes Engine's cluster check feature helps you verify the system nodes and components healthy status. When you trigger the checking, the process would check on the health state of each node in your cluster and also the cluster configuration as kubelet\\docker daemon\\kernel and network iptables configuration, if there are fails consecutive health checks, the diagnose would report to admin for further repair.",
1543
+ "RationaleStatement": "Kubernetes Engine uses the node's health status to determine if a node needs to be repaired. A node reporting a Ready status is considered healthy. The cluster administrator could choose to trigger the cluster check periodically. An cluster healthy checking including: • The cloud resource healthy status, including the VPC/VSwitch SLB and every ECS node status in cluster. • The kubelet, docker daemon, kernel, iptables configurations on every node in cluster. Kubernetes Engine generates the diagnose report when checking finish. You can check the diagnose suggestion on ACK console.",
1544
+ "ImpactStatement": "",
1545
+ "RemediationProcedure": "Using the management console: 1. Logon to ACK console 2. Select the target cluster and open the More pop-menu for advance options on cluster 3. Select Global Check and click the Start button to trigger the checking",
1546
+ "AuditProcedure": "Using the management console: 1. Logon to ACK console 2. Select the target cluster and open the More pop-menu for advance options on cluster. 3. Select Overview page on left column and check if the Last check status is Normal. 4. Verify the checking time and details in Global Check.",
1547
+ "AdditionalInformation": "",
1548
+ "References": "https://help.aliyun.com/document_detail/114882.html",
1549
+ "DefaultValue": "By default, the cluster checking process is not auto triggered, the cluster administrator could start it in ACK console."
1550
+ }
1551
+ ],
1552
+ "Checks": [
1553
+ "cs_kubernetes_cluster_check_recent"
1554
+ ]
1555
+ },
1556
+ {
1557
+ "Id": "7.5",
1558
+ "Description": "Ensure Kubernetes web UI / Dashboard is not enabled",
1559
+ "Attributes": [
1560
+ {
1561
+ "Section": "7. Kubernetes Engine",
1562
+ "Profile": "Level 1",
1563
+ "AssessmentStatus": "Automated",
1564
+ "Description": "Dashboard is a web-based Kubernetes user interface. It can be used to deploy containerized applications to a Kubernetes cluster, troubleshoot your containerized application, and manage the cluster itself along with its attendant resources. You can use Dashboard to get an overview of applications running on your cluster, as well as for creating or modifying individual Kubernetes resources (such as Deployments, Jobs, DaemonSets, etc). For example, you can scale a Deployment, initiate a rolling update, restart a pod or deploy new applications using a deploy wizard.",
1565
+ "RationaleStatement": "You should disable the Kubernetes Web UI (Dashboard) when running on Kubernetes Engine. The Kubernetes Web UI (Dashboard) is backed by a highly privileged Kubernetes Service Account. It is recommended to use ACK User Console instead of Dashboard to avoid any privileged escalation via compromise the dashboard.",
1566
+ "ImpactStatement": "",
1567
+ "RemediationProcedure": "Using the management console: 1. Logon to ACK console 2. Select the target cluster and select the kube-system namespace in the Namespace pop-menu 3. Input dashboard in the deploy filter bar, make sure there is no result exist after the filter, delete the dashboard deployment by selecting the Delete in More pop- menu.",
1568
+ "AuditProcedure": "Using the management console: 1. Logon to ACK console 2. Select the target cluster and select the kube-system namespace in the Namespace pop-menu 3. Input dashboard in the deploy filter bar, and make sure there is no result exist after the filter.",
1569
+ "AdditionalInformation": "",
1570
+ "References": "",
1571
+ "DefaultValue": "By default, the kube-dashboard would not install in cluster, and the overview console use the managed dashboard which controlled by ACK service."
1572
+ }
1573
+ ],
1574
+ "Checks": [
1575
+ "cs_kubernetes_dashboard_disabled"
1576
+ ]
1577
+ },
1578
+ {
1579
+ "Id": "7.6",
1580
+ "Description": "Ensure Basic Authentication is not enabled on Kubernetes Engine Clusters",
1581
+ "Attributes": [
1582
+ {
1583
+ "Section": "7. Kubernetes Engine",
1584
+ "Profile": "Level 1",
1585
+ "AssessmentStatus": "Automated",
1586
+ "Description": "Basic authentication allows a user to authenticate to the cluster with a username and password and it is stored in plain text without any encryption. Disabling Basic authentication will prevent attacks like brute force. Its recommended to use either client certificate or RAM for authentication.",
1587
+ "RationaleStatement": "When disabled, you will still be able to authenticate to the cluster with client certificate or RAM. A client certificate is a base 64-encoded public certificate used by clients to authenticate to the cluster endpoint, and ACK cluster would auto generate the client certificate for each logging RAM user.",
1588
+ "ImpactStatement": "",
1589
+ "RemediationProcedure": "1. ssh into any master node in cluster 2. Make sure the basic-auth-file not exist in apiserver manifest with below command: cat /etc/kubernetes/manifests/kube-apiserver.yaml | grep basic-auth-file 3. If you found basic-auth-file existing in apiserver manitfest, please override the manifest file with new manifest content to not include the basic-auth-file and then restart the apiserver, you need repeat the action on all of the master nodes",
1590
+ "AuditProcedure": "1. ssh into any master node in cluster 2. Make sure the basic-auth-file not exist in apiserver manifest with below command: cat /etc/kubernetes/manifests/kube-apiserver.yaml | grep basic-auth-file",
1591
+ "AdditionalInformation": "",
1592
+ "References": "https://help.aliyun.com/document_detail/86494.html https://help.aliyun.com/document_detail/123848.html https://github.com/AliyunContainerService/ack-ram-authenticator",
1593
+ "DefaultValue": "By default, Basic authentication is not enabled when you create a new cluster."
1594
+ }
1595
+ ],
1596
+ "Checks": []
1597
+ },
1598
+ {
1599
+ "Id": "7.7",
1600
+ "Description": "Ensure Network policy is enabled on Kubernetes Engine Clusters",
1601
+ "Attributes": [
1602
+ {
1603
+ "Section": "7. Kubernetes Engine",
1604
+ "Profile": "Level 1",
1605
+ "AssessmentStatus": "Automated",
1606
+ "Description": "A network policy is a specification of how groups of pods are allowed to communicate with each other and other network endpoints. NetworkPolicy resources use labels to select pods and define rules which specify what traffic is allowed to the selected pods. The Kubernetes Network Policy API allows the cluster administrator to specify what pods are allowed to communicate with each other.",
1607
+ "RationaleStatement": "By default, pods are non-isolated; they accept traffic from any source. Pods become isolated by having a NetworkPolicy that selects them. Once there is any NetworkPolicy in a namespace selecting a particular pod, that pod will reject any connections that are not allowed by any NetworkPolicy. (Other pods in the namespace that are not selected by any NetworkPolicy will continue to accept all traffic.)",
1608
+ "ImpactStatement": "",
1609
+ "RemediationProcedure": "Only the Terway network plugin support the Network Policy feature, so please make sure not choose Flannel as network plugin when creating cluster. Using the management console: 1. Logon to ACK console 2. Click the Create Kubernetes Cluster button and select Terway in Network Plugin option.",
1610
+ "AuditProcedure": "Using the management console: 1. Logon to ACK console 2. Click the Create Kubernetes Cluster button and make sure Terway is selected in Network Plugin option.",
1611
+ "AdditionalInformation": "",
1612
+ "References": "https://help.aliyun.com/document_detail/97621.html https://help.aliyun.com/document_detail/86949.html",
1613
+ "DefaultValue": "By default, Network Policy is disabled when you create a new cluster, and you should choose the Terway as the cluster network plugin when creating the cluster."
1614
+ }
1615
+ ],
1616
+ "Checks": [
1617
+ "cs_kubernetes_network_policy_enabled"
1618
+ ]
1619
+ },
1620
+ {
1621
+ "Id": "7.8",
1622
+ "Description": "Ensure ENI multiple IP mode support for Kubernetes Cluster",
1623
+ "Attributes": [
1624
+ {
1625
+ "Section": "7. Kubernetes Engine",
1626
+ "Profile": "Level 1",
1627
+ "AssessmentStatus": "Automated",
1628
+ "Description": "Alibaba Cloud ENI (Elastic Network Interface) has supported assign ranges of internal IP addresses as aliases to a single virtual machine's ENI network interfaces. This is useful if you have lots of services running on a VM and you want to assign each service a different IP address without quota limitation.",
1629
+ "RationaleStatement": "With the feature of ENI multiple IP mode, Kubernetes Engine clusters can allocate IP addresses from a CIDR block known to Terway network plugin. This makes your cluster more scalable and allows your cluster to better interact with other Alibaba Cloud products and entities. Using ENI multiple IPs has several benefits: • Pod IPs are reserved within the network ahead of time, which prevents conflict with other compute resources. • Firewall controls for Pods can be applied separately from their nodes. • Alias IPs allow Pods to directly access hosted services without using a NAT gateway.",
1630
+ "ImpactStatement": "",
1631
+ "RemediationProcedure": "Only the Terway network plugin support the Network Policy feature, so please make sure not choose Flannel as network plugin when creating cluster. Using the management console: 1. Logon to ACK console 2. Click the Create Kubernetes Cluster button and select Terway in Network Plugin option.",
1632
+ "AuditProcedure": "Using the management console: 1. Logon to ACK console 2. Select the target cluster name and go into the cluster detail page 3. Check if the meta of Network Plugin in Cluster Information is Terway",
1633
+ "AdditionalInformation": "",
1634
+ "References": "https://github.com/AliyunContainerService/terway/blob/master/README.md#eni- https://help.aliyun.com/document_detail/97467.html",
1635
+ "DefaultValue": "By default, ENI multiple IP mode is not support in Flannel network plugin which is the default plugin when creating the cluster, and you should choose the Terway as the cluster network plugin when creating the cluster."
1636
+ }
1637
+ ],
1638
+ "Checks": [
1639
+ "cs_kubernetes_eni_multiple_ip_enabled"
1640
+ ]
1641
+ },
1642
+ {
1643
+ "Id": "7.9",
1644
+ "Description": "Ensure Kubernetes Cluster is created with Private cluster enabled",
1645
+ "Attributes": [
1646
+ {
1647
+ "Section": "7. Kubernetes Engine",
1648
+ "Profile": "Level 1",
1649
+ "AssessmentStatus": "Automated",
1650
+ "Description": "A private cluster is a cluster that makes your master inaccessible from the public internet. In a private cluster, nodes do not have public IP addresses, so your workloads run in an environment that is isolated from the internet. Nodes have addresses only in the private address space. Nodes and masters communicate with each other privately using VPC peering.",
1651
+ "RationaleStatement": "With a Private cluster enabled, VPC network peering gives you several advantages over using external IP addresses or VPNs to connect networks, including: • Network Latency: Public IP networking suffers higher latency than private networking. • Network Security: Service owners do not need to have their services exposed to the public Internet to reduce any associated risks. • Network Cost: Alibaba Cloud charges egress bandwidth pricing for networks using external IPs to communicate even if the traffic is within the same zone. If, however, the networks are peered they can use internal IPs to communicate and save on those egress costs. Regular network pricing still applies to all traffic.",
1652
+ "ImpactStatement": "",
1653
+ "RemediationProcedure": "Using the management console: 1. Logon to ACK console 2. Click the Create Kubernetes Cluster button and make sure Public Access is not enabled.",
1654
+ "AuditProcedure": "Using the management console: 1. Logon to ACK console 2. Select the target cluster name and go into the cluster detail page 3. Check if there is no meta of API Server Public Network Endpoint under Cluster Information",
1655
+ "AdditionalInformation": "",
1656
+ "References": "https://help.aliyun.com/document_detail/100380.html",
1657
+ "DefaultValue": "By default, public access is not enabled when creating new cluster."
1658
+ }
1659
+ ],
1660
+ "Checks": [
1661
+ "cs_kubernetes_private_cluster_enabled"
1662
+ ]
1663
+ },
1664
+ {
1665
+ "Id": "8.1",
1666
+ "Description": "Ensure that Security Center is Advanced or Enterprise Edition",
1667
+ "Attributes": [
1668
+ {
1669
+ "Section": "8. Security Center",
1670
+ "Profile": "Level 2",
1671
+ "AssessmentStatus": "Automated",
1672
+ "Description": "The Advanced or Enterprise Edition enables threat detection for network and endpoints, providing malware detection, webshell detection and anomaly detection in Security Center.",
1673
+ "RationaleStatement": "The Advanced or Enterprise Edition allows for full protection to defend cloud threats.",
1674
+ "ImpactStatement": "Additional cost will be incurred by enabling other versions of Security Center",
1675
+ "RemediationProcedure": "Using the management console: 1. Logon to Security Center Console. 2. Select Overview. 3. Click Upgrade. 4. Select Advanced or Enterprise Edition. 5. Finish order placement.",
1676
+ "AuditProcedure": "Using the management console: 1. Logon to Security Center Console 2. Select Overview 3. Ensure Current Edition is Advanced or Enterprise Edition",
1677
+ "AdditionalInformation": "",
1678
+ "References": "https://www.alibabacloud.com/help/product/28498.htm",
1679
+ "DefaultValue": "Not installed."
1680
+ }
1681
+ ],
1682
+ "Checks": [
1683
+ "securitycenter_advanced_or_enterprise_edition"
1684
+ ]
1685
+ },
1686
+ {
1687
+ "Id": "8.2",
1688
+ "Description": "Ensure that all assets are installed with security agent",
1689
+ "Attributes": [
1690
+ {
1691
+ "Section": "8. Security Center",
1692
+ "Profile": "Level 2",
1693
+ "AssessmentStatus": "Automated",
1694
+ "Description": "Enable protection on all endpoints.",
1695
+ "RationaleStatement": "The endpoint protection of Security requires an agent to be installed on the endpoint to work. Such an agent-based approach allows the security center to provide a set of more comprehensive endpoint intrusion detection and protection capabilities, such as includes remote logon detection, webshell detection and removal, anomaly detection (detection of abnormal process behaviors and abnormal network connections), and detection of changes in key files and suspicious accounts in systems and applications.",
1696
+ "ImpactStatement": "Additional cost may be incurred by enabling Security Center and install the agent",
1697
+ "RemediationProcedure": "Using the management console: 1. Logon to Security Center Console. 2. Select Settings. 3. Click Agent. 4. On Client to be installed tab, select all items on the list. 5. Click On-click installation to install the agent all asset.",
1698
+ "AuditProcedure": "Using the management console: 1. Logon to Security Center Console. 2. Select Overview. 3. Ensure Unprotected Assets is 0.",
1699
+ "AdditionalInformation": "",
1700
+ "References": "https://www.alibabacloud.com/help/doc-detail/111650.htm",
1701
+ "DefaultValue": "Not installed."
1702
+ }
1703
+ ],
1704
+ "Checks": [
1705
+ "securitycenter_all_assets_agent_installed"
1706
+ ]
1707
+ },
1708
+ {
1709
+ "Id": "8.3",
1710
+ "Description": "Ensure that Automatic Quarantine is enabled",
1711
+ "Attributes": [
1712
+ {
1713
+ "Section": "8. Security Center",
1714
+ "Profile": "Level 2",
1715
+ "AssessmentStatus": "Manual",
1716
+ "Description": "Enable automatic quarantine in Security Center may 1ncure additional cost.",
1717
+ "RationaleStatement": "Once a virus is detected, the automatic quarantine feature prevents the virus from being executed.",
1718
+ "ImpactStatement": "Enabling Automatic Quarantine in security center may incur additional cost",
1719
+ "RemediationProcedure": "Using the management console: 1. Logon to Security Center Console. 2. Select Settings. 3. Click General. 4. Enable Virus Blocking.",
1720
+ "AuditProcedure": "Using the management console: 1. Logon to Security Center Console. 2. Select Settings. 3. Click General. 4. Ensure Virus Blocking is enabled.",
1721
+ "AdditionalInformation": "",
1722
+ "References": "https://www.alibabacloud.com/help/doc-detail/111847.htm",
1723
+ "DefaultValue": "Not enabled."
1724
+ }
1725
+ ],
1726
+ "Checks": []
1727
+ },
1728
+ {
1729
+ "Id": "8.4",
1730
+ "Description": "Ensure that Webshell detection is enabled on all web servers",
1731
+ "Attributes": [
1732
+ {
1733
+ "Section": "8. Security Center",
1734
+ "Profile": "Level 1",
1735
+ "AssessmentStatus": "Manual",
1736
+ "Description": "Enable webshell detection on all web servers to scans periodically the Web directories for detecting webshells on servers.",
1737
+ "RationaleStatement": "Web servers are exposed to the Internet and they are commonly attacked through injected webshell by attackers.",
1738
+ "ImpactStatement": "",
1739
+ "RemediationProcedure": "Using the management console: 1. Logon to Security Center Console. 2. Select Settings. 3. Click General. 4. Click Manage in Webshell Detection. 5. Add all web servers.",
1740
+ "AuditProcedure": "Using the management console: 1. Logon to Security Center Console. 2. Select Settings. 3. Click General. 4. Click Manage in Webshell Detection. 5. Ensure all web servers are included.",
1741
+ "AdditionalInformation": "",
1742
+ "References": "https://www.alibabacloud.com/help/doc-detail/111847.htm",
1743
+ "DefaultValue": "Not enabled."
1744
+ }
1745
+ ],
1746
+ "Checks": []
1747
+ },
1748
+ {
1749
+ "Id": "8.5",
1750
+ "Description": "Ensure that notification is enabled on all high risk items",
1751
+ "Attributes": [
1752
+ {
1753
+ "Section": "8. Security Center",
1754
+ "Profile": "Level 1",
1755
+ "AssessmentStatus": "Automated",
1756
+ "Description": "Enable all risk item notification in Vulnerability, Baseline Risks, Alerts and Accesskey Leak event detection categories.",
1757
+ "RationaleStatement": "To make sure that relevant security operators would receive notifications as soon as security events happens.",
1758
+ "ImpactStatement": "",
1759
+ "RemediationProcedure": "Using the management console: 1. Logon to Security Center Console. 2. Select Settings. 3. Click Notification. 4. Enable all high-risk items on Notification setting.",
1760
+ "AuditProcedure": "Using the management console: 1. Logon to Security Center Console. 2. Select Settings. 3. Click Notification. 4. Review notification settings and ensure all high-risk items are enabled.",
1761
+ "AdditionalInformation": "",
1762
+ "References": "https://www.alibabacloud.com/help/doc-detail/111648.htm",
1763
+ "DefaultValue": "Not enabled."
1764
+ }
1765
+ ],
1766
+ "Checks": [
1767
+ "securitycenter_notification_enabled_high_risk"
1768
+ ]
1769
+ },
1770
+ {
1771
+ "Id": "8.6",
1772
+ "Description": "Ensure that Config Assessment is granted with privilege",
1773
+ "Attributes": [
1774
+ {
1775
+ "Section": "8. Security Center",
1776
+ "Profile": "Level 1",
1777
+ "AssessmentStatus": "Manual",
1778
+ "Description": "Grant Security Centers Cloud Platform Configuration Assessment the privilege to access other cloud product.",
1779
+ "RationaleStatement": "Prior to using Cloud Platform Configuration Assessment, it requires privilege to assess other cloud products settings.",
1780
+ "ImpactStatement": "",
1781
+ "RemediationProcedure": "Using the management console: 1. Logon to Security Center Console. 2. Select Config Assessment. 3. Click Authorize.",
1782
+ "AuditProcedure": "Using the management console: 1. Logon to Security Center Console. 2. Select Config Assessment. 3. Ensure that the prompt of asking privilege is not shown.",
1783
+ "AdditionalInformation": "",
1784
+ "References": "https://www.alibabacloud.com/help/doc-detail/42302.htm",
1785
+ "DefaultValue": "No privilege is authorized by default."
1786
+ }
1787
+ ],
1788
+ "Checks": []
1789
+ },
1790
+ {
1791
+ "Id": "8.7",
1792
+ "Description": "Ensure that scheduled vulnerability scan is enabled on all servers",
1793
+ "Attributes": [
1794
+ {
1795
+ "Section": "8. Security Center",
1796
+ "Profile": "Level 1",
1797
+ "AssessmentStatus": "Automated",
1798
+ "Description": "Ensure that scheduled vulnerability scan is enabled on all servers.",
1799
+ "RationaleStatement": "Be sure that vulnerability scan is performed periodically to discover system vulnerabilities in time.",
1800
+ "ImpactStatement": "",
1801
+ "RemediationProcedure": "1. Login to Security Center Console. 2. Select Vulnerabilities. 3. Click Settings. 4. Apply all type of vulnerabilities. 5. Enable High and Medium vulnerabilities scan level.",
1802
+ "AuditProcedure": "1. Logon to Security Center Console. 2. Select Vulnerabilities. 3. Click Settings. 4. Ensure that all type of vulnerabilities is enabled. 5. Ensure that High and Medium vulnerabilities scan level are enabled.",
1803
+ "AdditionalInformation": "",
1804
+ "References": "https://www.alibabacloud.com/help/doc-detail/109076.htm",
1805
+ "DefaultValue": "Not enabled."
1806
+ }
1807
+ ],
1808
+ "Checks": [
1809
+ "securitycenter_vulnerability_scan_enabled"
1810
+ ]
1811
+ },
1812
+ {
1813
+ "Id": "8.8",
1814
+ "Description": "Ensure that Asset Fingerprint automatically collects asset fingerprint data",
1815
+ "Attributes": [
1816
+ {
1817
+ "Section": "8. Security Center",
1818
+ "Profile": "Level 1",
1819
+ "AssessmentStatus": "Manual",
1820
+ "Description": "The Enterprise Edition enables asset fingerprint collection for endpoints providing a collection of port, software, processes, scheduled tasks and middleware in Security Center.",
1821
+ "RationaleStatement": "The Enterprise Edition allows for enhanced investigation collection of artifacts to identify root cause in a more timely manner of single or multiple server instances hosted within the cloud.",
1822
+ "ImpactStatement": "",
1823
+ "RemediationProcedure": "Using the management console: 1. Logon to Security Center Console 2. Select Investigation> Asset Fingerprints 3. Click Setting and set the Refresh Frequencies 4. Set refresh frequency Automatic collection to Collected once a day",
1824
+ "AuditProcedure": "Using the management console: 1. Logon to Security Center Console 2. Select Investigation > Asset Fingerprints 3. Click Settings 4. Ensure the Refresh Frequencies are all set to Collected once a day",
1825
+ "AdditionalInformation": "",
1826
+ "References": "https://www.alibabacloud.com/help/doc-detail/146565.htm",
1827
+ "DefaultValue": "Not Enabled"
1828
+ }
1829
+ ],
1830
+ "Checks": []
1831
+ }
1832
+ ]
1833
+ }