167 checks across 20 services. Every row links to the full check page — description, risk, recommendation, remediation snippets (CLI / Terraform / Native IaC / Dashboard), and references. Check IDs are stable. They appear unchanged on every finding in the dashboard, in every export (SARIF / CSV / JSON / PDF), and in compliance scorecards. Severity drives quality-gate behaviour — CRITICAL and HIGH block by default.

Services in this catalog

aisearch

1 checks.
Check IDTitleSeverity
aisearch_service_not_publicly_accessibleAI Search service has public network access disabledHIGH

aks

4 checks.
Check IDTitleSeverity
aks_cluster_rbac_enabledAKS cluster has RBAC enabledHIGH
aks_clusters_created_with_private_nodesAKS cluster nodes do not have public IP addressesHIGH
aks_clusters_public_access_disabledAKS cluster has a private endpoint and node public access is disabledHIGH
aks_network_policy_enabledAKS cluster has network policy enabledMEDIUM

apim

1 checks.
Check IDTitleSeverity
apim_threat_detection_llm_jackingNo potential LLM Jacking attacks detected across all Azure API Management instancesCRITICAL

app

19 checks.
Check IDTitleSeverity
app_client_certificates_onWeb app requires incoming client certificatesMEDIUM
app_ensure_auth_is_set_upApp Service app has App Service Authentication enabledMEDIUM
app_ensure_http_is_redirected_to_httpsApp Service web app redirects HTTP to HTTPSHIGH
app_ensure_java_version_is_latestApp Service web app uses the latest supported Java version or 17 by defaultLOW
app_ensure_php_version_is_latestApp Service web app uses the latest supported PHP version or 8.2 by defaultLOW
app_ensure_python_version_is_latestApp Service web app uses the latest supported Python version or 3.12 by defaultLOW
app_ensure_using_http20App Service web app has HTTP/2.0 enabledLOW
app_ftp_deployment_disabledApp Service web app has FTP disabled or FTPS-only enforcedHIGH
app_function_access_keys_configuredFunction app has function keys configuredHIGH
app_function_application_insights_enabledFunction App has Application Insights configuredMEDIUM
app_function_ftps_deployment_disabledFunction app has FTP and FTPS deployments disabledMEDIUM
app_function_identity_is_configuredFunction app has a system-assigned or user-assigned managed identity enabledMEDIUM
app_function_identity_without_admin_privilegesFunction app managed identity is not assigned Owner, Contributor, User Access Administrator, or Role Based Acc…HIGH
app_function_latest_runtime_versionFunction app uses the latest supported runtime version (~4)MEDIUM
app_function_not_publicly_accessibleFunction app is not publicly accessibleHIGH
app_function_vnet_integration_enabledFunction app has Virtual Network integration enabledMEDIUM
app_http_logs_enabledApp Service web app has HTTP logs enabled in diagnostic settingsLOW
app_minimum_tls_version_12App Service web app has minimum TLS version set to 1.2 or 1.3MEDIUM
app_register_with_identityApp Service web app has a managed identity configuredMEDIUM

appinsights

1 checks.
Check IDTitleSeverity
appinsights_ensure_is_configuredSubscription has at least one Application Insights resource configuredLOW

containerregistry

3 checks.
Check IDTitleSeverity
containerregistry_admin_user_disabledContainer Registry admin user is disabledHIGH
containerregistry_not_publicly_accessibleContainer Registry public network access is disabledHIGH
containerregistry_uses_private_linkContainer Registry uses a private endpoint (Private Link)HIGH

cosmosdb

3 checks.
Check IDTitleSeverity
cosmosdb_account_firewall_use_selected_networksCosmos DB account firewall allows access only from selected networksMEDIUM
cosmosdb_account_use_aad_and_rbacCosmos DB account has local authentication disabled and uses Azure AD authentication with Azure RBACHIGH
cosmosdb_account_use_private_endpointsCosmos DB account uses private endpoint connectionsHIGH

databricks

2 checks.
Check IDTitleSeverity
databricks_workspace_cmk_encryption_enabledDatabricks workspace uses a customer-managed key (CMK) for encryption at restHIGH
databricks_workspace_vnet_injection_enabledDatabricks workspace is deployed in a customer-managed VNet (VNet Injection enabled)HIGH

defender

25 checks.
Check IDTitleSeverity
defender_additional_email_configured_with_a_security_contactSecurity contact has additional email addresses configuredLOW
defender_assessments_vm_endpoint_protection_installedAll virtual machines in the subscription have endpoint protection installedHIGH
defender_attack_path_notifications_properly_configuredSecurity contact has attack path email notifications enabled at or above the configured minimum risk levelHIGH
defender_auto_provisioning_log_analytics_agent_vms_onDefender auto-provisioning of Log Analytics agent for Azure VMs is enabledHIGH
defender_auto_provisioning_vulnerabilty_assessments_machines_onAll virtual machines in the subscription have a vulnerability assessment solution installedMEDIUM
defender_container_images_resolved_vulnerabilitiesAll Azure running container images in the subscription have no unresolved vulnerabilitiesCRITICAL
defender_container_images_scan_enabledSubscription has container image vulnerability scanning enabledHIGH
defender_ensure_defender_for_app_services_is_onDefender for App Services is set to On (Standard pricing tier)HIGH
defender_ensure_defender_for_arm_is_onDefender for Azure Resource Manager is set to On (Standard pricing tier)HIGH
defender_ensure_defender_for_azure_sql_databases_is_onDefender for Azure SQL databases is set to On (Standard pricing tier)HIGH
defender_ensure_defender_for_containers_is_onDefender for Containers is set to On (Standard pricing tier)HIGH
defender_ensure_defender_for_cosmosdb_is_onDefender for Cosmos DB is set to On (Standard pricing tier)HIGH
defender_ensure_defender_for_databases_is_onDefender for Databases is set to On (Standard pricing tier)HIGH
defender_ensure_defender_for_dns_is_onDefender for DNS is set to On (Standard pricing tier)HIGH
defender_ensure_defender_for_keyvault_is_onDefender for Key Vaults is set to On (Standard pricing tier)HIGH
defender_ensure_defender_for_os_relational_databases_is_onDefender for Open-Source Relational Databases is set to On (Standard pricing tier)HIGH
defender_ensure_defender_for_server_is_onDefender for Servers is set to On (Standard pricing tier)HIGH
defender_ensure_defender_for_sql_servers_is_onDefender for SQL servers on machines is set to On (Standard pricing tier)HIGH
defender_ensure_defender_for_storage_is_onDefender for Storage is set to On (Standard pricing tier)HIGH
defender_ensure_iot_hub_defender_is_onDefender for IoT Hub is set to OnHIGH
defender_ensure_mcas_is_enabledDefender for Cloud Apps is enabledMEDIUM
defender_ensure_notify_alerts_severity_is_highSecurity contact has alert notifications enabled with minimum severity High or lowerHIGH
defender_ensure_notify_emails_to_ownersSecurity contact notifications include the Owner roleMEDIUM
defender_ensure_system_updates_are_appliedAll virtual machines in the subscription have system updates appliedHIGH
defender_ensure_wdatp_is_enabledDefender for Endpoint is enabledHIGH

entra

16 checks.
Check IDTitleSeverity
entra_conditional_access_policy_require_mfa_for_admin_portalsConditional Access policy requires MFA for Microsoft Admin PortalsMEDIUM
entra_conditional_access_policy_require_mfa_for_management_apiMultifactor Authentication is required for Windows Azure Service Management APIMEDIUM
entra_global_admin_in_less_than_five_usersGlobal Administrator role has fewer than 5 membersHIGH
entra_non_privileged_user_has_mfaNon-privileged user has multi-factor authentication enabledMEDIUM
entra_policy_default_users_cannot_create_security_groupsAuthorization policy disallows non-privileged users from creating security groupsMEDIUM
entra_policy_ensure_default_user_cannot_create_appsTenant does not allow non-admin users to register applicationsHIGH
entra_policy_ensure_default_user_cannot_create_tenantsAuthorization policy restricts non-admin users from creating tenantsMEDIUM
entra_policy_guest_invite_only_for_admin_rolesTenant authorization policy restricts guest invitations to users with specific admin roles or disables guest i…HIGH
entra_policy_guest_users_access_restrictionsAuthorization policy restricts guest user access to properties and memberships of their own directory objectsMEDIUM
entra_policy_restricts_user_consent_for_appsEntra authorization policy disallows user consent for applicationsHIGH
entra_policy_user_consent_for_verified_appsEntra tenant does not allow users to consent to non-verified applicationsHIGH
entra_privileged_user_has_mfaPrivileged user has multi-factor authentication enabledHIGH
entra_security_defaults_enabledMicrosoft Entra ID tenant has Security Defaults enabledCRITICAL
entra_trusted_named_locations_existsEntra tenant has a trusted named location with IP ranges definedLOW
entra_user_with_vm_access_has_mfaEntra ID user with VM access has multi-factor authentication enabledHIGH
entra_users_cannot_create_microsoft_365_groupsMicrosoft 365 group creation by users is disabledMEDIUM

iam

3 checks.
Check IDTitleSeverity
iam_custom_role_has_permissions_to_administer_resource_locksCustom role has permission to administer resource locksMEDIUM
iam_role_user_access_admin_restrictedRole assignment does not grant the User Access Administrator roleHIGH
iam_subscription_roles_owner_custom_not_createdCustom role is not a subscription owner roleHIGH

keyvault

10 checks.
Check IDTitleSeverity
keyvault_access_only_through_private_endpointsKey Vault using private endpoints has public network access disabledHIGH
keyvault_key_expiration_set_in_non_rbacKey in non-RBAC Key Vault has expiration date setHIGH
keyvault_key_rotation_enabledKey Vault key has automatic rotation enabledHIGH
keyvault_logging_enabledKey Vault has at least one diagnostic setting with audit logging enabledHIGH
keyvault_non_rbac_secret_expiration_setSecret in non-RBAC Key Vault has expiration date setMEDIUM
keyvault_private_endpointsKey Vault uses private endpointsHIGH
keyvault_rbac_enabledKey Vault uses Azure RBAC for access controlHIGH
keyvault_rbac_key_expiration_setKey in RBAC-enabled Key Vault has expiration date setMEDIUM
keyvault_rbac_secret_expiration_setSecret in RBAC-enabled Key Vault has expiration date setMEDIUM
keyvault_recoverableKey Vault has soft delete and purge protection enabledHIGH

monitor

15 checks.
Check IDTitleSeverity
monitor_alert_create_policy_assignmentSubscription has an Azure Monitor activity log alert for policy assignment creationMEDIUM
monitor_alert_create_update_nsgSubscription has an Activity Log alert for Network Security Group create or update operationsHIGH
monitor_alert_create_update_public_ip_address_ruleSubscription has an Activity Log Alert for Public IP address create or update operationsMEDIUM
monitor_alert_create_update_security_solutionSubscription has Activity Log alert for Security Solution create or updateMEDIUM
monitor_alert_create_update_sqlserver_frSubscription has an Activity Log alert for SQL Server firewall rule create or update eventsMEDIUM
monitor_alert_delete_nsgSubscription has an Activity Log alert for Network Security Group delete operationsHIGH
monitor_alert_delete_policy_assignmentSubscription has an Activity Log alert for policy assignment deletionHIGH
monitor_alert_delete_public_ip_address_ruleAzure subscription has an Activity Log alert for public IP address deletionMEDIUM
monitor_alert_delete_security_solutionSubscription has an Azure Monitor Activity Log alert for Microsoft.Security/securitySolutions delete operation…MEDIUM
monitor_alert_delete_sqlserver_frSubscription has an Activity Log Alert for SQL Server firewall rule deletionsMEDIUM
monitor_alert_service_health_existsAzure subscription has an enabled Activity Log alert for Service Health incidentsMEDIUM
monitor_diagnostic_setting_with_appropriate_categoriesSubscription has a diagnostic setting capturing Administrative, Security, Alert, and Policy categoriesHIGH
monitor_diagnostic_settings_existsSubscription has an Activity Log diagnostic settingHIGH
monitor_storage_account_with_activity_logs_cmk_encryptedStorage account storing Activity Log data is encrypted with a customer-managed keyMEDIUM
monitor_storage_account_with_activity_logs_is_privateStorage account storing activity logs does not allow public blob accessHIGH

mysql

4 checks.
Check IDTitleSeverity
mysql_flexible_server_audit_log_connection_activatedMySQL flexible server has audit_log_events including CONNECTIONMEDIUM
mysql_flexible_server_audit_log_enabledMySQL flexible server has audit_log_enabled set to ONMEDIUM
mysql_flexible_server_minimum_tls_version_12MySQL flexible server enforces TLS 1.2 or higherHIGH
mysql_flexible_server_ssl_connection_enabledMySQL Flexible Server enforces SSL connectionsHIGH

network

9 checks.
Check IDTitleSeverity
network_bastion_host_existsAzure subscription has at least one Bastion HostMEDIUM
network_flow_log_captured_sentNetwork Watcher has flow logs enabled and sent to a Log Analytics workspaceHIGH
network_flow_log_more_than_90_daysNetwork Watcher has all flow logs enabled with retention set to 0 or at least 90 daysMEDIUM
network_http_internet_access_restrictedNetwork security group restricts inbound HTTP (port 80) access from the InternetHIGH
network_public_ip_shodanAzure public IP address is not listed in ShodanHIGH
network_rdp_internet_access_restrictedNetwork security group does not allow inbound RDP (TCP 3389) from the InternetHIGH
network_ssh_internet_access_restrictedNetwork security group does not allow inbound SSH (TCP port 22) from the InternetHIGH
network_udp_internet_access_restrictedNetwork security group does not allow inbound UDP from the InternetHIGH
network_watcher_enabledNetwork Watcher is enabled for all locations in the subscriptionHIGH

policy

1 checks.
Check IDTitleSeverity
policy_ensure_asc_enforcement_enabledSecurity Center built-in policy assignment has enforcement mode set to DefaultMEDIUM

postgresql

8 checks.
Check IDTitleSeverity
postgresql_flexible_server_allow_access_services_disabledPostgreSQL flexible server has ‘Allow public access from any Azure service’ disabledHIGH
postgresql_flexible_server_connection_throttling_onFlexible PostgreSQL server has connection_throttling enabledMEDIUM
postgresql_flexible_server_enforce_ssl_enabledPostgreSQL Flexible Server enforces SSL connectionsHIGH
postgresql_flexible_server_entra_id_authentication_enabledMicrosoft Entra ID authentication is enabled for PostgreSQL Flexible ServerMEDIUM
postgresql_flexible_server_log_checkpoints_onPostgreSQL Flexible Server has checkpoint logging enabledLOW
postgresql_flexible_server_log_connections_onPostgreSQL flexible server has log_connections enabledMEDIUM
postgresql_flexible_server_log_disconnections_onPostgreSQL Flexible Server has disconnection logging enabledMEDIUM
postgresql_flexible_server_log_retention_days_greater_3PostgreSQL flexible server log_retention_days is between 4 and 7 daysMEDIUM

sqlserver

12 checks.
Check IDTitleSeverity
sqlserver_auditing_enabledSQL Server has an auditing policy configuredHIGH
sqlserver_auditing_retention_90_daysSQL server has auditing enabled with retention greater than 90 daysMEDIUM
sqlserver_azuread_administrator_enabledSQL Server has an Azure Active Directory administrator configuredMEDIUM
sqlserver_microsoft_defender_enabledSQL Server has Microsoft Defender for SQL enabledHIGH
sqlserver_recommended_minimal_tls_versionSQL server enforces minimal TLS version 1.2 or 1.3MEDIUM
sqlserver_tde_encrypted_with_cmkSQL server uses a customer-managed key for the TDE protector and all databases have TDE enabledCRITICAL
sqlserver_tde_encryption_enabledSQL database has Transparent Data Encryption (TDE) enabledHIGH
sqlserver_unrestricted_inbound_accessAzure SQL Server does not have firewall rules allowing 0.0.0.0-255.255.255.255CRITICAL
sqlserver_va_emails_notifications_admins_enabledSQL Server has Vulnerability Assessment enabled and email notifications to subscription admins configuredMEDIUM
sqlserver_va_periodic_recurring_scans_enabledSQL Server has Vulnerability Assessment periodic recurring scans enabledMEDIUM
sqlserver_va_scan_reports_configuredSQL server has Vulnerability Assessment enabled and scan report recipients configuredMEDIUM
sqlserver_vulnerability_assessment_enabledSQL server has vulnerability assessment enabled with storage container configuredMEDIUM

storage

18 checks.
Check IDTitleSeverity
storage_account_key_access_disabledStorage account has shared key access disabledHIGH
storage_blob_public_access_level_is_disabledStorage account has ‘Allow blob public access’ disabledHIGH
storage_blob_versioning_is_enabledStorage account has blob versioning enabledMEDIUM
storage_cross_tenant_replication_disabledStorage account has cross-tenant replication disabledHIGH
storage_default_network_access_rule_is_deniedStorage account default network access rule is set to DenyHIGH
storage_default_to_entra_authorization_enabledStorage account uses Microsoft Entra authorization by defaultMEDIUM
storage_ensure_azure_services_are_trusted_to_access_is_enabledStorage account has ‘Allow trusted Microsoft services to access this storage account’ enabledMEDIUM
storage_ensure_encryption_with_customer_managed_keysAzure Storage account uses customer-managed keys (CMKs) for encryptionHIGH
storage_ensure_file_shares_soft_delete_is_enabledStorage account has soft delete enabled for file sharesMEDIUM
storage_ensure_minimum_tls_version_12Storage account minimum TLS version is 1.2MEDIUM
storage_ensure_private_endpoints_in_storage_accountsStorage account has private endpoint connectionsMEDIUM
storage_ensure_soft_delete_is_enabledStorage account has soft delete for containers enabledMEDIUM
storage_geo_redundant_enabledAzure Storage account uses geo-redundant replication (GRS, GZRS, RA-GRS, or RA-GZRS)MEDIUM
storage_infrastructure_encryption_is_enabledStorage account has infrastructure encryption enabledLOW
storage_key_rotation_90_daysStorage account has access key expiration period set to 90 days or lessMEDIUM
storage_secure_transfer_required_is_enabledStorage account has secure transfer required enabledHIGH
storage_smb_channel_encryption_with_secure_algorithmStorage account uses AES-256-GCM for SMB channel encryption on file sharesMEDIUM
storage_smb_protocol_version_is_latestStorage account allows only the latest SMB protocol version for file sharesMEDIUM

vm

12 checks.
Check IDTitleSeverity
vm_backup_enabledVirtual Machine is protected by Azure BackupHIGH
vm_desired_sku_sizeVirtual Machine uses an organization-approved SKU sizeMEDIUM
vm_ensure_attached_disks_encrypted_with_cmkVirtual Machine OS or data disk is encrypted with a customer-managed key (CMK)MEDIUM
vm_ensure_unattached_disks_encrypted_with_cmkUnattached disk is encrypted with a customer-managed key (CMK)MEDIUM
vm_ensure_using_approved_imagesVirtual Machine uses an approved custom machine imageHIGH
vm_ensure_using_managed_disksVirtual Machine uses managed disks for OS and data disksHIGH
vm_jit_access_enabledVirtual Machine has Just-in-Time (JIT) access enabledMEDIUM
vm_linux_enforce_ssh_authenticationLinux Virtual Machine has password authentication disabled (SSH key authentication enforced)HIGH
vm_scaleset_associated_with_load_balancerVirtual Machine Scale Set is associated with a load balancer backend poolMEDIUM
vm_scaleset_not_emptyVirtual Machine Scale Set has at least one VM instanceMEDIUM
vm_sufficient_daily_backup_retention_periodVirtual Machine has a backup policy with a daily retention period meeting the configured minimumMEDIUM
vm_trusted_launch_enabledVirtual Machine has Trusted Launch with Secure Boot and vTPM enabledMEDIUM

What’s next

Cloud Security overview

Connect a provider, see findings end-to-end.

All checks

Index across every provider.

Compliance frameworks

How check IDs map to SOC 2 / PCI / HIPAA / ISO controls.

Reports

Per-framework PDF scorecards.