Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
903 commits
Select commit Hold shift + click to select a range
21e3add
fix(rego): add searchLine to azure_paas_private_endpoint_missing
cx-antero-silva Apr 15, 2026
d9d6cfc
fix(rego): add searchLine to azure_production_workload_basic_consumpt…
cx-antero-silva Apr 15, 2026
7300f0c
fix(rego): add searchLine to azure_recovery_services_vault_cross_regi…
cx-antero-silva Apr 15, 2026
2e2b839
fix(rego): add searchLine to azure_recovery_services_vault_infrastruc…
cx-antero-silva Apr 15, 2026
d3c6d80
fix(rego): add searchLine to azure_storage_account_geo_redundancy_dis…
cx-antero-silva Apr 15, 2026
652b127
fix(rego): add searchLine to azure_storage_account_infrastructure_enc…
cx-antero-silva Apr 15, 2026
aec2ee6
fix(rego): add searchLine to azure_storage_account_read_only_lock_mis…
cx-antero-silva Apr 15, 2026
2c44697
fix(rego): add searchLine to azure_storage_account_versioning_disabled
cx-antero-silva Apr 15, 2026
44c9e0e
fix(rego): add searchLine to azure_storage_blob_logging_disabled
cx-antero-silva Apr 15, 2026
fef47fd
fix(rego): add searchLine to azure_storage_container_immutability_not…
cx-antero-silva Apr 15, 2026
4a11ced
fix(rego): add searchLine to azure_storage_queue_logging_disabled
cx-antero-silva Apr 15, 2026
2417d49
fix(rego): add searchLine to azure_storage_table_logging_disabled
cx-antero-silva Apr 15, 2026
0f8a25e
fix(rego): add searchLine to gcp_access_approval_disabled
cx-antero-silva Apr 15, 2026
bbc5d70
fix(rego): add searchLine to gcp_api_key_api_targets_missing
cx-antero-silva Apr 15, 2026
e81ac64
fix(rego): add searchLine to gcp_api_key_restrictions_manual
cx-antero-silva Apr 15, 2026
768e859
fix(rego): add searchLine to gcp_app_engine_https_enforcement_manual
cx-antero-silva Apr 15, 2026
8b1c511
fix(rego): add searchLine to gcp_compute_logging_service_disabled
cx-antero-silva Apr 15, 2026
f2d36a7
fix(rego): add searchLine to gcp_gke_default_service_account_used
cx-antero-silva Apr 15, 2026
1db7827
fix(rego): add searchLine to gcp_gke_metadata_server_disabled
cx-antero-silva Apr 15, 2026
a947210
fix(rego): add searchLine to gcp_gke_sandbox_disabled
cx-antero-silva Apr 15, 2026
12ca574
fix(rego): add searchLine to gcp_gke_secrets_encryption_cmek_disabled
cx-antero-silva Apr 15, 2026
0fcbd1a
fix(rego): add searchLine to gcp_http_load_balancer_logging_disabled
cx-antero-silva Apr 15, 2026
2370e20
fix(rego): add searchLine to gcp_iap_backend_service_disabled
cx-antero-silva Apr 15, 2026
4b48a9d
fix(rego): add searchLine to gcp_sql_postgresql_log_error_verbosity_v…
cx-antero-silva Apr 15, 2026
d40ee7c
fix(rego): add searchLine to oci_compute_secure_boot_disabled
cx-antero-silva Apr 15, 2026
8d2a5ea
fix(rego): add searchLine to gcp_sql_postgresql_log_statement_imprope…
cx-antero-silva Apr 15, 2026
85ebf3f
fix(rego): add searchLine to ibm_certificate_manager_auto_renew_disabled
cx-antero-silva Apr 15, 2026
c8d4e32
fix(rego): add searchLine to ibm_cis_dns_not_proxied_manual
cx-antero-silva Apr 15, 2026
e450b14
fix(rego): add searchLine to ibm_cis_waf_enabled_manual
cx-antero-silva Apr 15, 2026
ba116cb
fix(rego): add searchLine to ibm_cloudant_cmk_encryption_manual
cx-antero-silva Apr 15, 2026
add9dc4
fix(rego): add searchLine to ibm_container_cluster_entitlement_check
cx-antero-silva Apr 15, 2026
89d8109
fix(rego): add searchLine to ibm_container_registry_va_alerts_missing
cx-antero-silva Apr 15, 2026
d9ca32b
fix(rego): add searchLine to ibm_database_cmk_encryption_manual
cx-antero-silva Apr 15, 2026
5e8b294
fix(rego): add searchLine to ibm_iam_account_ip_restrictions_manual
cx-antero-silva Apr 15, 2026
beb88f2
fix(rego): add searchLine to ibm_iam_session_expiration_too_long
cx-antero-silva Apr 15, 2026
81c8140
fix(rego): add searchLine to ibm_iks_cluster_logging_disabled
cx-antero-silva Apr 15, 2026
be1d55b
fix(rego): add searchLine to ibm_iks_cluster_monitoring_disabled
cx-antero-silva Apr 15, 2026
70dfa9e
fix(rego): add searchLine to ibm_instance_os_disk_encryption_manual
cx-antero-silva Apr 15, 2026
052f452
fix(rego): add searchLine to ibm_kms_key_rotation_disabled
cx-antero-silva Apr 15, 2026
1dceb30
fix(rego): add searchLine to ibm_logdna_archiving_disabled
cx-antero-silva Apr 15, 2026
14ec72b
fix(rego): add searchLine to ibm_logdna_view_without_alert
cx-antero-silva Apr 15, 2026
7f6ff20
fix(rego): add searchLine to oci_compute_legacy_metadata_enabled
cx-antero-silva Apr 15, 2026
2a660a6
fix(rego): add searchLine to oci_iam_password_expiration_manual
cx-antero-silva Apr 15, 2026
2109024
fix(rego): add searchLine to oci_iam_password_policy_length
cx-antero-silva Apr 15, 2026
f06f8dd
fix(rego): add searchLine to oci_iam_password_reuse_manual
cx-antero-silva Apr 15, 2026
6490ed9
fix(rego): add searchLine to oci_iam_service_admins_manual
cx-antero-silva Apr 15, 2026
7223ab3
fix(rego): add searchLine to oci_instance_transit_encryption
cx-antero-silva Apr 15, 2026
e220929
fix(rego): add searchLine to oci_objectstorage_bucket_logging_enabled
cx-antero-silva Apr 15, 2026
05c549a
fix(rego): add searchLine to oci_objectstorage_bucket_versioning_disa…
cx-antero-silva Apr 15, 2026
4c560c3
fix(rego): add searchLine to oci_resource_created_in_root_compartment
cx-antero-silva Apr 15, 2026
213a81b
fix(rego): add searchLine to oci_storage_admin_no_delete_manual
cx-antero-silva Apr 15, 2026
953b393
fix(rego): add searchLine to oci_subnet_flow_logging_disabled
cx-antero-silva Apr 15, 2026
489d0b1
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
5d65e3a
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
aebeaf2
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
92a2b33
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
dbf512f
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
109f23c
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
c5cb859
chore: translate Spanish comments to English in negative1.tf
cx-antero-silva Apr 15, 2026
5dac325
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
0ba03fb
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
0e4070b
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
189b767
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
ab0df21
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
98caec1
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
aced76a
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
1feec07
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
25ff973
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
48a5a00
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
9faa21d
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
ae3080e
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
c0905db
chore: translate Spanish comments to English in positive3.tf
cx-antero-silva Apr 15, 2026
a6242ca
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
f0b2d5e
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
dc113a1
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
4a8f3d0
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
8c02a0f
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
c0747af
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
c621dac
chore: translate Spanish comments to English in positive3.tf
cx-antero-silva Apr 15, 2026
ca25699
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
f919ef9
chore: translate Spanish comments to English in negative1.tf
cx-antero-silva Apr 15, 2026
e0d01ce
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
78aa4b0
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
d24e34f
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
e6c4625
chore: translate Spanish comments to English in negative1.tf
cx-antero-silva Apr 15, 2026
a78d48c
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
8e6ea0b
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
1549e93
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
5994bcb
chore: translate Spanish comments to English in negative1.tf
cx-antero-silva Apr 15, 2026
54a994d
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
4f3ccee
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
cdca1cc
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
aa6cf40
chore: translate Spanish comments to English in negative1.tf
cx-antero-silva Apr 15, 2026
62b855c
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
2800fb8
chore: translate Spanish comments to English in negative1.tf
cx-antero-silva Apr 15, 2026
47f5d8e
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
ca047c2
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
f9aaeb7
chore: translate Spanish comments to English in negative1.tf
cx-antero-silva Apr 15, 2026
2c84275
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
2f725c4
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
6e7056d
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
5a59ec3
chore: translate Spanish comments to English in negative1.tf
cx-antero-silva Apr 15, 2026
0bee53b
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
42a8b95
chore: translate Spanish comments to English in positive3.tf
cx-antero-silva Apr 15, 2026
ba66f97
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
1d23db1
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
63528ef
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
6bc7500
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
4bef1a1
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
cd35bff
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
ce98993
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
d000d57
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
07e37c6
chore: translate Spanish comments to English in negative1.tf
cx-antero-silva Apr 15, 2026
f46707e
chore: translate Spanish comments to English in positive3.tf
cx-antero-silva Apr 15, 2026
7189e78
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
77dabe7
chore: translate Spanish comments to English in negative1.tf
cx-antero-silva Apr 15, 2026
d06659e
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
8f46a5f
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
0e6d85a
chore: translate Spanish comments to English in positive3.tf
cx-antero-silva Apr 15, 2026
2d36b06
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
488f27d
chore: translate Spanish comments to English in positive3.tf
cx-antero-silva Apr 15, 2026
5fea006
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
f111cd3
chore: translate Spanish comments to English in negative1.tf
cx-antero-silva Apr 15, 2026
5523202
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
0e10e08
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
45dc7c8
chore: translate Spanish comments to English in positive3.tf
cx-antero-silva Apr 15, 2026
4acf10a
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
e4e1961
chore: translate Spanish comments to English in negative1.tf
cx-antero-silva Apr 15, 2026
0900bb9
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
2f9c2cf
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
d492cb0
chore: translate Spanish comments to English in positive3.tf
cx-antero-silva Apr 15, 2026
7a04e52
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
378c51e
chore: translate Spanish comments to English in negative1.tf
cx-antero-silva Apr 15, 2026
77fba54
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
f052594
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
cb8775d
chore: translate Spanish comments to English in positive3.tf
cx-antero-silva Apr 15, 2026
34da588
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
64d0f0c
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
696ab62
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
c700e5b
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
cce33c8
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
683d231
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
4bf2e75
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
3eda2be
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
5b59388
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
02483df
chore: translate Spanish comments to English in positive3.tf
cx-antero-silva Apr 15, 2026
368a978
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
25ab6e2
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
33977d0
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
5949ff5
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
37d12f1
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
dd440b4
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
56b8c97
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
6f9f4d4
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
ac7f5c9
chore: translate Spanish comments to English in negative1.tf
cx-antero-silva Apr 15, 2026
5d01f05
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
beef953
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
07cad64
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
9160707
chore: translate Spanish comments to English in negative1.tf
cx-antero-silva Apr 15, 2026
7ec0935
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
4f8389f
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
56296f0
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
8a35c7f
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
4438240
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
7a46a0a
chore: translate Spanish comments to English in negative1.tf
cx-antero-silva Apr 15, 2026
78646b0
chore: translate Spanish comments to English in negative2.tf
cx-antero-silva Apr 15, 2026
291471d
chore: translate Spanish comments to English in positive1.tf
cx-antero-silva Apr 15, 2026
4276ca0
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
a245280
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
b9bb1cd
chore: translate Spanish comments to English in positive2.tf
cx-antero-silva Apr 15, 2026
ab94221
chore: translate Spanish comments to English in positive3.tf
cx-antero-silva Apr 15, 2026
c6a2ec7
chore: translate Spanish comments to English in positive4.tf
cx-antero-silva Apr 15, 2026
7a71e58
chore: translate Spanish comments to English in query.rego
cx-antero-silva Apr 15, 2026
e6c14f3
refactor: use application_insights_keys list with count check in query
cx-antero-silva Apr 15, 2026
9ea5330
docs: update descriptionUrl to Microsoft configure-monitoring docs
cx-antero-silva Apr 15, 2026
bb3fea5
chore: translate Spanish comment to English in negative1.tf
cx-antero-silva Apr 15, 2026
db0caa6
chore: translate Spanish comment to English in negative2.tf
cx-antero-silva Apr 15, 2026
6b58393
chore: remove azure_app_service_http_logs_disabled (duplicate of PR #…
cx-antero-silva Apr 15, 2026
706eb84
chore: remove azure_app_service_http_logs_disabled (duplicate of PR #…
cx-antero-silva Apr 15, 2026
a1409ec
chore: remove azure_app_service_http_logs_disabled (duplicate of PR #…
cx-antero-silva Apr 15, 2026
ca4be06
chore: remove azure_app_service_http_logs_disabled (duplicate of PR #…
cx-antero-silva Apr 15, 2026
a4a8981
chore: remove azure_app_service_http_logs_disabled (duplicate of PR #…
cx-antero-silva Apr 15, 2026
d4c7651
chore: remove azure_app_service_http_logs_disabled (duplicate of PR #…
cx-antero-silva Apr 15, 2026
8d66715
fix: gate cross_region_restore rules on GeoRedundant redundancy
cx-antero-silva Apr 15, 2026
f9abe5b
chore: fix inline Spanish comment in positive2.tf
cx-antero-silva Apr 15, 2026
1df4623
test: add negative case for LocallyRedundant vault (CRR not applicable)
cx-antero-silva Apr 15, 2026
ca25143
fix: rename query to Backup Vault Managed Identity Not Configured; al…
cx-antero-silva Apr 15, 2026
d4a7be2
fix: update rule comment and result messages to reflect identity/CMK …
cx-antero-silva Apr 15, 2026
0f42234
chore: translate Spanish comment to English in positive1.tf
cx-antero-silva Apr 15, 2026
2d3c8f1
test: update queryName in expected results to match renamed query
cx-antero-silva Apr 15, 2026
90597b8
fix: add Rule 2 checking Bastion ip_configuration presence; document …
cx-antero-silva Apr 15, 2026
f6a9478
docs: expand description to cover ip_configuration requirement and sc…
cx-antero-silva Apr 15, 2026
b091cd2
test: add positive case for Bastion without ip_configuration block
cx-antero-silva Apr 15, 2026
6c59e21
test: add positive2.tf to expected results
cx-antero-silva Apr 15, 2026
67fc8e4
Merge branch 'master' into new_IBM-Cloud_queries
cx-antero-silva Apr 15, 2026
57fa414
fix: rename to Elastic SAN Volume Group Network Rules Not Configured;…
cx-antero-silva Apr 15, 2026
9f1b9d3
fix: update comment to clarify network_rule scope and public_network_…
cx-antero-silva Apr 15, 2026
f19ce5a
chore: translate Spanish comment to English in positive1.tf
cx-antero-silva Apr 15, 2026
7bb98a8
test: update queryName in expected results to match renamed query
cx-antero-silva Apr 15, 2026
8a07e9f
fix: add Rule 2 for security solution with enabled=false
cx-antero-silva Apr 15, 2026
3847568
test: add positive case for security solution with enabled=false
cx-antero-silva Apr 15, 2026
ada6413
test: add positive2.tf result for disabled security solution
cx-antero-silva Apr 15, 2026
99d9b9a
fix: replace broken Registry anchor with Azure CMK docs URL; clarify …
cx-antero-silva Apr 15, 2026
cca560f
docs: add provider source reference to encryption_key comment for tra…
cx-antero-silva Apr 15, 2026
2815385
fix: remove azurerm_mssql_server from targets (MSSQL != MySQL); align…
cx-antero-silva Apr 15, 2026
79f4c48
fix: rewrite description to accurately reflect manual check intent an…
cx-antero-silva Apr 15, 2026
553333e
fix: replace azurerm_mssql_server with azurerm_mysql_flexible_server …
cx-antero-silva Apr 15, 2026
aede0f2
fix: remove non-existent positive2.tf from expected results
cx-antero-silva Apr 15, 2026
780689c
fix: remove dangling positive2.tf (no longer needed with single targe…
cx-antero-silva Apr 15, 2026
f1ed1ae
chore: remove azure_mysql_audit_log_enabled_manual (always-fire manua…
cx-antero-silva Apr 15, 2026
bb16b4e
chore: remove azure_mysql_audit_log_enabled_manual (always-fire manua…
cx-antero-silva Apr 15, 2026
34162da
chore: remove azure_mysql_audit_log_enabled_manual (always-fire manua…
cx-antero-silva Apr 15, 2026
bbca055
chore: remove azure_mysql_audit_log_enabled_manual (always-fire manua…
cx-antero-silva Apr 15, 2026
6b4142e
chore: remove azure_mysql_audit_log_enabled_manual (always-fire manua…
cx-antero-silva Apr 15, 2026
9caa4cd
chore: remove azure_mysql_audit_log_enabled_manual (always-fire manua…
cx-antero-silva Apr 15, 2026
29403fa
chore: remove azure_mysql_audit_log_events_connection_manual (always-…
cx-antero-silva Apr 15, 2026
4da02e2
chore: remove azure_mysql_audit_log_events_connection_manual (always-…
cx-antero-silva Apr 15, 2026
1de7eb9
chore: remove azure_mysql_audit_log_events_connection_manual (always-…
cx-antero-silva Apr 15, 2026
b549e0e
chore: remove azure_mysql_audit_log_events_connection_manual (always-…
cx-antero-silva Apr 15, 2026
4ad2844
chore: remove azure_mysql_audit_log_events_connection_manual (always-…
cx-antero-silva Apr 15, 2026
038c4fb
fix: gate cross_region_restore rules on GeoRedundant storage_mode_typ…
cx-antero-silva Apr 15, 2026
2e90f4e
test: add negative case for LocallyRedundant vault
cx-antero-silva Apr 15, 2026
e86941c
docs: enumerate checked resources; note scope limitation and library …
cx-antero-silva Apr 15, 2026
125b86e
test: add positive case for azurerm_cosmosdb_account without private …
cx-antero-silva Apr 15, 2026
ec1a4be
test: add positive case for azurerm_redis_cache without private endpoint
cx-antero-silva Apr 15, 2026
0ac4df1
test: add positive3.tf and positive4.tf to expected results
cx-antero-silva Apr 15, 2026
31db70d
fix: list specific flagged SKUs with documented limitations; point UR…
cx-antero-silva Apr 15, 2026
65ab095
fix(azure_bastion_host_missing): shorten descriptionText to under 500…
cx-antero-silva Apr 15, 2026
35c305e
fix(gcp_compute_logging_service_disabled): use metadata path for sear…
cx-antero-silva Apr 15, 2026
270e0c3
fix(gcp_compute_logging_service_disabled): update positive3.tf expect…
cx-antero-silva Apr 15, 2026
544bb05
fix(gcp_gke_secrets_encryption_cmek_disabled): use database_encryptio…
cx-antero-silva Apr 15, 2026
7a48bd9
fix: add missing common_lib import and searchLine
cx-antero-silva Apr 15, 2026
5dd0d9b
fix: add missing common_lib import and searchLine
cx-antero-silva Apr 15, 2026
232d9f5
fix: add missing common_lib import and searchLine
cx-antero-silva Apr 15, 2026
c6afbf8
fix: add missing common_lib import
cx-antero-silva Apr 15, 2026
951d3ec
fix: add missing common_lib import and searchLine
cx-antero-silva Apr 15, 2026
173c7eb
fix: add missing common_lib import
cx-antero-silva Apr 15, 2026
9dc3ac3
fix: add missing common_lib import and searchLine
cx-antero-silva Apr 15, 2026
4056f60
fix: add missing common_lib import and searchLine
cx-antero-silva Apr 15, 2026
db3de0e
fix: add missing common_lib import and searchLine
cx-antero-silva Apr 15, 2026
c950d77
fix: add missing common_lib import and searchLine
cx-antero-silva Apr 15, 2026
f04c90d
fix(oci_iam_policy_change_event_rule_missing): correct positive1.tf e…
cx-antero-silva Apr 15, 2026
f6601e1
fix: add missing common_lib import and searchLine
cx-antero-silva Apr 15, 2026
ffc2a4b
fix: add missing common_lib import and searchLine
cx-antero-silva Apr 15, 2026
f2468c7
fix: add missing common_lib import and searchLine
cx-antero-silva Apr 15, 2026
9a06fa9
fix: add missing common_lib import and searchLine
cx-antero-silva Apr 15, 2026
f063faf
fix: add missing common_lib import and searchLine
cx-antero-silva Apr 15, 2026
3369e0e
fix: add missing common_lib import and searchLine
cx-antero-silva Apr 15, 2026
6487839
fix: add missing common_lib import and searchLine
cx-antero-silva Apr 15, 2026
7da3fd8
fix: add missing common_lib import and searchLine
cx-antero-silva Apr 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"id": "721c26ff-776f-4d7a-b151-45447712343b",
"queryName": "Beta - App Service Application Insights Not Configured",
"severity": "MEDIUM",
"category": "Observability",
"descriptionText": "Ensures that Azure App Services and Function Apps are linked to Application Insights for performance monitoring and error tracking.",
"descriptionUrl": "https://learn.microsoft.com/en-us/azure/azure-functions/configure-monitoring?tabs=v2#enable-application-insights-integration",
"platform": "Terraform",
"descriptionID": "721c26ff",
"cloudProvider": "azure",
"cwe": "778",
"riskScore": "3.0",
"experimental": "true"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package Cx

import data.generic.common as common_lib
import data.generic.terraform as tf_lib

targets := {
"azurerm_linux_web_app",
"azurerm_windows_web_app",
"azurerm_linux_function_app",
"azurerm_windows_function_app"
}

application_insights_keys := [
"APPLICATIONINSIGHTS_CONNECTION_STRING",
"APPINSIGHTS_INSTRUMENTATIONKEY",
]

# RULE 1: The 'app_settings' block is missing entirely.
CxPolicy[result] {
doc := input.document[i]
resource_type := targets[_]
app := doc.resource[resource_type][name]

not app.app_settings

result := {
"documentId": doc.id,
"resourceType": resource_type,
"resourceName": tf_lib.get_resource_name(app, name),
"searchKey": sprintf("%s[%s]", [resource_type, name]),
"searchLine": common_lib.build_search_line(["resource", resource_type, name], []),
"issueType": "MissingAttribute",
"keyExpectedValue": sprintf("'%s.%s' should have 'app_settings' with an Application Insights key configured", [resource_type, name]),
"keyActualValue": sprintf("'%s.%s' is missing 'app_settings'", [resource_type, name]),
}
}

# RULE 2: 'app_settings' exists but neither Application Insights key is configured.
# Iterates application_insights_keys and counts how many are present; fires when none are found.
CxPolicy[result] {
doc := input.document[i]
resource_type := targets[_]
app := doc.resource[resource_type][name]

app.app_settings
count({k | k := application_insights_keys[_]; app.app_settings[k]}) == 0

result := {
"documentId": doc.id,
"resourceType": resource_type,
"resourceName": tf_lib.get_resource_name(app, name),
"searchKey": sprintf("%s[%s].app_settings", [resource_type, name]),
"searchLine": common_lib.build_search_line(["resource", resource_type, name, "app_settings"], []),
"issueType": "IncorrectValue",
"keyExpectedValue": sprintf("'app_settings' should contain '%s' or '%s'", [application_insights_keys[0], application_insights_keys[1]]),
"keyActualValue": "'app_settings' does not contain any Application Insights configuration key",
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Case: Connection String (Recommended)
resource "azurerm_linux_web_app" "pass_connection_string" {
name = "pass-app-1"
resource_group_name = "rg"
location = "West Europe"
service_plan_id = "plan-id"

app_settings = {
"APPLICATIONINSIGHTS_CONNECTION_STRING" = "InstrumentationKey=0000;IngestionEndpoint=https://..."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Case: Instrumentation Key (Legacy)
resource "azurerm_windows_web_app" "pass_instrumentation_key" {
name = "pass-app-2"
resource_group_name = "rg"
location = "West Europe"
service_plan_id = "plan-id"

app_settings = {
"APPINSIGHTS_INSTRUMENTATIONKEY" = "0000-0000-0000-0000"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
resource "azurerm_linux_web_app" "fail_no_settings" {
name = "fail-app-no-settings"
resource_group_name = "rg"
location = "West Europe"
service_plan_id = "plan-id"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
resource "azurerm_windows_web_app" "fail_incomplete_settings" {
name = "fail-app-incomplete"
resource_group_name = "rg"
location = "West Europe"
service_plan_id = "plan-id"

app_settings = {
"WEBSITE_NODE_DEFAULT_VERSION" = "14.15.0"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[
{
"queryName": "Beta - App Service Application Insights Not Configured",
"severity": "MEDIUM",
"line": 1,
"fileName": "positive1.tf"
},
{
"queryName": "Beta - App Service Application Insights Not Configured",
"severity": "MEDIUM",
"line": 7,
"fileName": "positive2.tf"
}
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"id": "0117fb32-4265-444d-8030-a0a034958489",
"queryName": "Beta - Backup Vault Cross Region Restore Disabled",
"severity": "MEDIUM",
"category": "Backup",
"descriptionText": "Ensures that 'Cross Region Restore' is enabled for Azure Backup Vaults. This allows backup data to be restored in a secondary region, which is critical for disaster recovery scenarios.",
"descriptionUrl": "https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/data_protection_backup_vault#cross_region_restore_enabled",
"platform": "Terraform",
"descriptionID": "0117fb32",
"cloudProvider": "azure",
"cwe": "668",
"riskScore": "3.0",
"experimental": "true"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package Cx

import data.generic.common as common_lib
import data.generic.terraform as tf_lib

# RULE 1: Vault redundancy is GeoRedundant but 'cross_region_restore_enabled' is not defined.
# The attribute defaults to false when absent; it is only applicable to GeoRedundant vaults.
CxPolicy[result] {
doc := input.document[i]
vault := doc.resource.azurerm_data_protection_backup_vault[name]

vault.redundancy == "GeoRedundant"
object.get(vault, "cross_region_restore_enabled", null) == null

result := {
"documentId": doc.id,
"resourceType": "azurerm_data_protection_backup_vault",
"resourceName": tf_lib.get_resource_name(vault, name),
"searchKey": sprintf("azurerm_data_protection_backup_vault[%s]", [name]),
"searchLine": common_lib.build_search_line(["resource", "azurerm_data_protection_backup_vault", name], []),
"issueType": "MissingAttribute",
"keyExpectedValue": sprintf("'azurerm_data_protection_backup_vault.%s' should have 'cross_region_restore_enabled' set to true when 'redundancy' is 'GeoRedundant'", [name]),
"keyActualValue": sprintf("'azurerm_data_protection_backup_vault.%s' is missing 'cross_region_restore_enabled' (defaults to false)", [name]),
}
}

# RULE 2: Vault redundancy is GeoRedundant but 'cross_region_restore_enabled' is explicitly false.
CxPolicy[result] {
doc := input.document[i]
vault := doc.resource.azurerm_data_protection_backup_vault[name]

vault.redundancy == "GeoRedundant"
vault.cross_region_restore_enabled == false

result := {
"documentId": doc.id,
"resourceType": "azurerm_data_protection_backup_vault",
"resourceName": tf_lib.get_resource_name(vault, name),
"searchKey": sprintf("azurerm_data_protection_backup_vault[%s].cross_region_restore_enabled", [name]),
"searchLine": common_lib.build_search_line(["resource", "azurerm_data_protection_backup_vault", name, "cross_region_restore_enabled"], []),
"issueType": "IncorrectValue",
"keyExpectedValue": "'cross_region_restore_enabled' should be set to true when 'redundancy' is 'GeoRedundant'",
"keyActualValue": "'cross_region_restore_enabled' is explicitly set to false",
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
resource "azurerm_data_protection_backup_vault" "pass" {
name = "vault-ok"
resource_group_name = "rg-test"
location = "West Europe"
datastore_type = "VaultStore"
redundancy = "GeoRedundant"

cross_region_restore_enabled = true
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# PASS: LocallyRedundant vault — cross_region_restore_enabled is not applicable
resource "azurerm_data_protection_backup_vault" "pass_local_redundant" {
name = "vault-local-redundant"
resource_group_name = "rg-test"
location = "West Europe"
datastore_type = "VaultStore"
redundancy = "LocallyRedundant"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
resource "azurerm_data_protection_backup_vault" "fail_missing" {
name = "vault-missing-crr"
resource_group_name = "rg-test"
location = "West Europe"
datastore_type = "VaultStore"
redundancy = "GeoRedundant"
# FAIL: Missing cross_region_restore_enabled
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
resource "azurerm_data_protection_backup_vault" "fail_explicit" {
name = "vault-disabled-crr"
resource_group_name = "rg-test"
location = "West Europe"
datastore_type = "VaultStore"
redundancy = "GeoRedundant"

cross_region_restore_enabled = false # FAIL
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[
{
"queryName": "Beta - Backup Vault Cross Region Restore Disabled",
"severity": "MEDIUM",
"line": 1,
"fileName": "positive1.tf"
},
{
"queryName": "Beta - Backup Vault Cross Region Restore Disabled",
"severity": "MEDIUM",
"line": 8,
"fileName": "positive2.tf"
}
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"id": "f7bf03d5-ae0e-4b36-aab3-f8d2346a8843",
"queryName": "Beta - Backup Vault Managed Identity Not Configured",
"severity": "MEDIUM",
"category": "Encryption",
"descriptionText": "Ensures that Azure Backup Vaults have a managed identity configured. The 'identity' block is required to enable Customer-Managed Keys (CMK) for vault encryption. Without it, the vault relies solely on Microsoft-managed platform encryption, removing customer control over key lifecycle and rotation.",
"descriptionUrl": "https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/data_protection_backup_vault#identity",
"platform": "Terraform",
"descriptionID": "f7bf03d5",
"cloudProvider": "azure",
"cwe": "312",
"riskScore": "3.0",
"experimental": "true"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package Cx

import data.generic.common as common_lib
import data.generic.terraform as tf_lib

# RULE 1: The 'identity' block is absent, preventing Customer-Managed Key (CMK) encryption.
# Without a managed identity the vault is limited to Microsoft-managed platform encryption,
# removing customer control over key lifecycle and rotation.
CxPolicy[result] {
doc := input.document[i]
vault := doc.resource.azurerm_data_protection_backup_vault[name]

not vault.identity

result := {
"documentId": doc.id,
"resourceType": "azurerm_data_protection_backup_vault",
"resourceName": tf_lib.get_resource_name(vault, name),
"searchKey": sprintf("azurerm_data_protection_backup_vault[%s]", [name]),
"searchLine": common_lib.build_search_line(["resource", "azurerm_data_protection_backup_vault", name], []),
"issueType": "MissingAttribute",
"keyExpectedValue": sprintf("'azurerm_data_protection_backup_vault.%s' should have an 'identity' block to enable Customer-Managed Key (CMK) encryption", [name]),
"keyActualValue": sprintf("'azurerm_data_protection_backup_vault.%s' is missing the 'identity' block; vault uses Microsoft-managed platform encryption only", [name]),
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
resource "azurerm_data_protection_backup_vault" "pass" {
name = "vault-with-identity"
resource_group_name = "rg"
location = "West Europe"
datastore_type = "VaultStore"
redundancy = "LocallyRedundant"

identity {
type = "SystemAssigned"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
resource "azurerm_data_protection_backup_vault" "fail" {
name = "vault-no-identity"
resource_group_name = "rg"
location = "West Europe"
datastore_type = "VaultStore"
redundancy = "LocallyRedundant"
# FAIL: Missing identity block
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[
{
"queryName": "Beta - Backup Vault Managed Identity Not Configured",
"severity": "MEDIUM",
"line": 1,
"fileName": "positive1.tf"
}
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"id": "a3e941c5-7708-40d1-943b-7093446ef5e6",
"queryName": "Beta - Azure Bastion Host Missing",
"severity": "MEDIUM",
"category": "Networking and Firewall",
"descriptionText": "Ensures Azure Virtual Networks are protected by a Bastion Host with a valid ip_configuration block. Azure Bastion provides secure RDP/SSH access to VMs without public internet exposure. A complete setup requires an azurerm_bastion_host with ip_configuration referencing AzureBastionSubnet and a Standard-tier public IP. Note: subnet-level VNet association is not verified.",
"descriptionUrl": "https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/bastion_host",
"platform": "Terraform",
"descriptionID": "a3e941c5",
"cloudProvider": "azure",
"cwe": "284",
"riskScore": "3.0",
"experimental": "true"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package Cx

import data.generic.common as common_lib
import data.generic.terraform as tf_lib

# RULE 1: A VNet exists but no azurerm_bastion_host is declared in the same document.
# Note: this is a document-level check; Bastion association to a specific VNet subnet
# cannot be verified without cross-resource reference resolution.
CxPolicy[result] {
doc := input.document[i]

vnet := doc.resource.azurerm_virtual_network[name]

count([b | b := doc.resource.azurerm_bastion_host[_]]) == 0

result := {
"documentId": doc.id,
"resourceType": "azurerm_virtual_network",
"resourceName": tf_lib.get_resource_name(vnet, name),
"searchKey": sprintf("azurerm_virtual_network[%s]", [name]),
"searchLine": common_lib.build_search_line(["resource", "azurerm_virtual_network", name], []),
"issueType": "MissingAttribute",
"keyExpectedValue": sprintf("An 'azurerm_bastion_host' resource should be defined to protect Virtual Network '%s'", [name]),
"keyActualValue": "No 'azurerm_bastion_host' resource was found in the configuration",
}
}

# RULE 2: An azurerm_bastion_host is declared but missing the required ip_configuration block.
# ip_configuration is mandatory in the Terraform schema and must reference a dedicated
# subnet named 'AzureBastionSubnet' and a Standard-tier public IP address.
CxPolicy[result] {
doc := input.document[i]

bastion := doc.resource.azurerm_bastion_host[name]
not bastion.ip_configuration

result := {
"documentId": doc.id,
"resourceType": "azurerm_bastion_host",
"resourceName": tf_lib.get_resource_name(bastion, name),
"searchKey": sprintf("azurerm_bastion_host[%s]", [name]),
"searchLine": common_lib.build_search_line(["resource", "azurerm_bastion_host", name], []),
"issueType": "MissingAttribute",
"keyExpectedValue": sprintf("'azurerm_bastion_host.%s' should have an 'ip_configuration' block referencing an 'AzureBastionSubnet' subnet", [name]),
"keyActualValue": sprintf("'azurerm_bastion_host.%s' is missing the required 'ip_configuration' block", [name]),
}
}
Loading
Loading