@robinmordasiewicz/f5xc-terraform-mcp 2.4.8 → 2.6.2

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 (290) hide show
  1. package/dist/docs/data-sources/addon_subscription.md +85 -2
  2. package/dist/docs/data-sources/address_allocator.md +85 -2
  3. package/dist/docs/data-sources/advertise_policy.md +85 -2
  4. package/dist/docs/data-sources/alert_policy.md +85 -2
  5. package/dist/docs/data-sources/alert_receiver.md +85 -2
  6. package/dist/docs/data-sources/allowed_tenant.md +85 -2
  7. package/dist/docs/data-sources/api_crawler.md +85 -2
  8. package/dist/docs/data-sources/api_credential.md +85 -2
  9. package/dist/docs/data-sources/api_definition.md +85 -2
  10. package/dist/docs/data-sources/api_discovery.md +85 -2
  11. package/dist/docs/data-sources/api_testing.md +85 -2
  12. package/dist/docs/data-sources/apm.md +85 -2
  13. package/dist/docs/data-sources/app_api_group.md +85 -2
  14. package/dist/docs/data-sources/app_firewall.md +85 -2
  15. package/dist/docs/data-sources/app_setting.md +85 -2
  16. package/dist/docs/data-sources/app_type.md +85 -2
  17. package/dist/docs/data-sources/authentication.md +85 -2
  18. package/dist/docs/data-sources/aws_tgw_site.md +85 -2
  19. package/dist/docs/data-sources/aws_vpc_site.md +85 -2
  20. package/dist/docs/data-sources/azure_vnet_site.md +85 -2
  21. package/dist/docs/data-sources/bgp.md +85 -2
  22. package/dist/docs/data-sources/bgp_asn_set.md +85 -2
  23. package/dist/docs/data-sources/bgp_routing_policy.md +85 -2
  24. package/dist/docs/data-sources/bigip_irule.md +85 -2
  25. package/dist/docs/data-sources/bot_defense_app_infrastructure.md +85 -2
  26. package/dist/docs/data-sources/cdn_cache_rule.md +85 -2
  27. package/dist/docs/data-sources/cdn_loadbalancer.md +85 -2
  28. package/dist/docs/data-sources/certificate.md +85 -2
  29. package/dist/docs/data-sources/certificate_chain.md +85 -2
  30. package/dist/docs/data-sources/child_tenant.md +85 -2
  31. package/dist/docs/data-sources/child_tenant_manager.md +85 -2
  32. package/dist/docs/data-sources/cloud_connect.md +85 -2
  33. package/dist/docs/data-sources/cloud_credentials.md +85 -2
  34. package/dist/docs/data-sources/cloud_elastic_ip.md +85 -2
  35. package/dist/docs/data-sources/cloud_link.md +85 -2
  36. package/dist/docs/data-sources/cluster.md +85 -2
  37. package/dist/docs/data-sources/cminstance.md +85 -2
  38. package/dist/docs/data-sources/code_base_integration.md +85 -2
  39. package/dist/docs/data-sources/contact.md +85 -2
  40. package/dist/docs/data-sources/container_registry.md +85 -2
  41. package/dist/docs/data-sources/crl.md +85 -2
  42. package/dist/docs/data-sources/customer_support.md +85 -2
  43. package/dist/docs/data-sources/data_group.md +85 -2
  44. package/dist/docs/data-sources/data_type.md +85 -2
  45. package/dist/docs/data-sources/dc_cluster_group.md +85 -2
  46. package/dist/docs/data-sources/discovery.md +85 -2
  47. package/dist/docs/data-sources/dns_compliance_checks.md +85 -2
  48. package/dist/docs/data-sources/dns_domain.md +85 -2
  49. package/dist/docs/data-sources/dns_lb_health_check.md +85 -2
  50. package/dist/docs/data-sources/dns_lb_pool.md +85 -2
  51. package/dist/docs/data-sources/dns_load_balancer.md +85 -2
  52. package/dist/docs/data-sources/dns_zone.md +85 -2
  53. package/dist/docs/data-sources/endpoint.md +85 -2
  54. package/dist/docs/data-sources/enhanced_firewall_policy.md +85 -2
  55. package/dist/docs/data-sources/external_connector.md +85 -2
  56. package/dist/docs/data-sources/fast_acl.md +85 -2
  57. package/dist/docs/data-sources/fast_acl_rule.md +85 -2
  58. package/dist/docs/data-sources/filter_set.md +85 -2
  59. package/dist/docs/data-sources/fleet.md +85 -2
  60. package/dist/docs/data-sources/forward_proxy_policy.md +85 -2
  61. package/dist/docs/data-sources/forwarding_class.md +85 -2
  62. package/dist/docs/data-sources/gcp_vpc_site.md +85 -2
  63. package/dist/docs/data-sources/geo_location_set.md +85 -2
  64. package/dist/docs/data-sources/global_log_receiver.md +85 -2
  65. package/dist/docs/data-sources/healthcheck.md +85 -2
  66. package/dist/docs/data-sources/http_loadbalancer.md +85 -2
  67. package/dist/docs/data-sources/ike1.md +85 -2
  68. package/dist/docs/data-sources/ike2.md +85 -2
  69. package/dist/docs/data-sources/ike_phase1_profile.md +85 -2
  70. package/dist/docs/data-sources/ike_phase2_profile.md +85 -2
  71. package/dist/docs/data-sources/infraprotect_asn.md +85 -2
  72. package/dist/docs/data-sources/infraprotect_asn_prefix.md +85 -2
  73. package/dist/docs/data-sources/infraprotect_deny_list_rule.md +85 -2
  74. package/dist/docs/data-sources/infraprotect_firewall_rule.md +85 -2
  75. package/dist/docs/data-sources/infraprotect_firewall_rule_group.md +85 -2
  76. package/dist/docs/data-sources/infraprotect_internet_prefix_advertisement.md +85 -2
  77. package/dist/docs/data-sources/infraprotect_tunnel.md +85 -2
  78. package/dist/docs/data-sources/ip_prefix_set.md +85 -2
  79. package/dist/docs/data-sources/irule.md +85 -2
  80. package/dist/docs/data-sources/k8s_cluster.md +85 -2
  81. package/dist/docs/data-sources/k8s_cluster_role.md +85 -2
  82. package/dist/docs/data-sources/k8s_cluster_role_binding.md +85 -2
  83. package/dist/docs/data-sources/k8s_pod_security_admission.md +85 -2
  84. package/dist/docs/data-sources/k8s_pod_security_policy.md +85 -2
  85. package/dist/docs/data-sources/log_receiver.md +85 -2
  86. package/dist/docs/data-sources/malicious_user_mitigation.md +85 -2
  87. package/dist/docs/data-sources/managed_tenant.md +85 -2
  88. package/dist/docs/data-sources/namespace.md +85 -2
  89. package/dist/docs/data-sources/nat_policy.md +85 -2
  90. package/dist/docs/data-sources/network_connector.md +85 -2
  91. package/dist/docs/data-sources/network_firewall.md +85 -2
  92. package/dist/docs/data-sources/network_interface.md +85 -2
  93. package/dist/docs/data-sources/network_policy.md +85 -2
  94. package/dist/docs/data-sources/network_policy_rule.md +85 -2
  95. package/dist/docs/data-sources/network_policy_view.md +85 -2
  96. package/dist/docs/data-sources/nfv_service.md +85 -2
  97. package/dist/docs/data-sources/oidc_provider.md +85 -2
  98. package/dist/docs/data-sources/origin_pool.md +85 -2
  99. package/dist/docs/data-sources/policer.md +85 -2
  100. package/dist/docs/data-sources/policy_based_routing.md +85 -2
  101. package/dist/docs/data-sources/protocol_inspection.md +85 -2
  102. package/dist/docs/data-sources/protocol_policer.md +85 -2
  103. package/dist/docs/data-sources/proxy.md +85 -2
  104. package/dist/docs/data-sources/quota.md +85 -2
  105. package/dist/docs/data-sources/rate_limiter.md +85 -2
  106. package/dist/docs/data-sources/rate_limiter_policy.md +85 -2
  107. package/dist/docs/data-sources/registration.md +85 -2
  108. package/dist/docs/data-sources/report_config.md +85 -2
  109. package/dist/docs/data-sources/role.md +85 -2
  110. package/dist/docs/data-sources/route.md +85 -2
  111. package/dist/docs/data-sources/secret_management_access.md +85 -2
  112. package/dist/docs/data-sources/secret_policy.md +85 -2
  113. package/dist/docs/data-sources/secret_policy_rule.md +85 -2
  114. package/dist/docs/data-sources/securemesh_site.md +85 -2
  115. package/dist/docs/data-sources/securemesh_site_v2.md +85 -2
  116. package/dist/docs/data-sources/segment.md +85 -2
  117. package/dist/docs/data-sources/sensitive_data_policy.md +85 -2
  118. package/dist/docs/data-sources/service_policy.md +85 -2
  119. package/dist/docs/data-sources/service_policy_rule.md +85 -2
  120. package/dist/docs/data-sources/site_mesh_group.md +85 -2
  121. package/dist/docs/data-sources/srv6_network_slice.md +85 -2
  122. package/dist/docs/data-sources/subnet.md +85 -2
  123. package/dist/docs/data-sources/tcp_loadbalancer.md +85 -2
  124. package/dist/docs/data-sources/tenant_configuration.md +85 -2
  125. package/dist/docs/data-sources/tenant_profile.md +85 -2
  126. package/dist/docs/data-sources/ticket_tracking_system.md +85 -2
  127. package/dist/docs/data-sources/token.md +85 -2
  128. package/dist/docs/data-sources/tpm_api_key.md +85 -2
  129. package/dist/docs/data-sources/tpm_category.md +85 -2
  130. package/dist/docs/data-sources/tpm_manager.md +85 -2
  131. package/dist/docs/data-sources/trusted_ca_list.md +85 -2
  132. package/dist/docs/data-sources/tunnel.md +85 -2
  133. package/dist/docs/data-sources/udp_loadbalancer.md +85 -2
  134. package/dist/docs/data-sources/usb_policy.md +85 -2
  135. package/dist/docs/data-sources/user_identification.md +85 -2
  136. package/dist/docs/data-sources/virtual_host.md +85 -2
  137. package/dist/docs/data-sources/virtual_k8s.md +85 -2
  138. package/dist/docs/data-sources/virtual_network.md +85 -2
  139. package/dist/docs/data-sources/virtual_site.md +85 -2
  140. package/dist/docs/data-sources/voltshare_admin_policy.md +85 -2
  141. package/dist/docs/data-sources/voltstack_site.md +85 -2
  142. package/dist/docs/data-sources/waf_exclusion_policy.md +85 -2
  143. package/dist/docs/data-sources/workload.md +85 -2
  144. package/dist/docs/data-sources/workload_flavor.md +85 -2
  145. package/dist/docs/guides/advanced-http-loadbalancer.md +569 -0
  146. package/dist/docs/resources/addon_subscription.md +87 -10
  147. package/dist/docs/resources/address_allocator.md +86 -3
  148. package/dist/docs/resources/advertise_policy.md +112 -57
  149. package/dist/docs/resources/alert_policy.md +91 -8
  150. package/dist/docs/resources/alert_receiver.md +94 -55
  151. package/dist/docs/resources/allowed_tenant.md +87 -10
  152. package/dist/docs/resources/api_crawler.md +86 -3
  153. package/dist/docs/resources/api_credential.md +86 -3
  154. package/dist/docs/resources/api_definition.md +89 -6
  155. package/dist/docs/resources/api_discovery.md +86 -3
  156. package/dist/docs/resources/api_testing.md +95 -52
  157. package/dist/docs/resources/apm.md +156 -519
  158. package/dist/docs/resources/app_api_group.md +90 -25
  159. package/dist/docs/resources/app_firewall.md +87 -6
  160. package/dist/docs/resources/app_setting.md +97 -66
  161. package/dist/docs/resources/app_type.md +86 -3
  162. package/dist/docs/resources/authentication.md +90 -27
  163. package/dist/docs/resources/aws_tgw_site.md +125 -222
  164. package/dist/docs/resources/aws_vpc_site.md +149 -352
  165. package/dist/docs/resources/azure_vnet_site.md +233 -860
  166. package/dist/docs/resources/bgp.md +103 -32
  167. package/dist/docs/resources/bgp_asn_set.md +86 -3
  168. package/dist/docs/resources/bgp_routing_policy.md +86 -3
  169. package/dist/docs/resources/bigip_irule.md +86 -3
  170. package/dist/docs/resources/bot_defense_app_infrastructure.md +86 -3
  171. package/dist/docs/resources/cdn_cache_rule.md +97 -120
  172. package/dist/docs/resources/cdn_loadbalancer.md +325 -1620
  173. package/dist/docs/resources/certificate.md +87 -10
  174. package/dist/docs/resources/certificate_chain.md +86 -3
  175. package/dist/docs/resources/child_tenant.md +88 -17
  176. package/dist/docs/resources/child_tenant_manager.md +88 -17
  177. package/dist/docs/resources/cloud_connect.md +98 -63
  178. package/dist/docs/resources/cloud_credentials.md +92 -39
  179. package/dist/docs/resources/cloud_elastic_ip.md +91 -8
  180. package/dist/docs/resources/cloud_link.md +90 -29
  181. package/dist/docs/resources/cluster.md +109 -66
  182. package/dist/docs/resources/cminstance.md +86 -3
  183. package/dist/docs/resources/code_base_integration.md +100 -87
  184. package/dist/docs/resources/contact.md +86 -3
  185. package/dist/docs/resources/container_registry.md +86 -3
  186. package/dist/docs/resources/crl.md +86 -3
  187. package/dist/docs/resources/customer_support.md +91 -8
  188. package/dist/docs/resources/data_group.md +86 -3
  189. package/dist/docs/resources/data_type.md +88 -9
  190. package/dist/docs/resources/dc_cluster_group.md +86 -3
  191. package/dist/docs/resources/discovery.md +115 -104
  192. package/dist/docs/resources/dns_compliance_checks.md +86 -3
  193. package/dist/docs/resources/dns_domain.md +86 -3
  194. package/dist/docs/resources/dns_lb_health_check.md +86 -3
  195. package/dist/docs/resources/dns_lb_pool.md +87 -10
  196. package/dist/docs/resources/dns_load_balancer.md +95 -40
  197. package/dist/docs/resources/dns_zone.md +86 -3
  198. package/dist/docs/resources/endpoint.md +101 -18
  199. package/dist/docs/resources/enhanced_firewall_policy.md +89 -32
  200. package/dist/docs/resources/external_connector.md +94 -29
  201. package/dist/docs/resources/fast_acl.md +100 -101
  202. package/dist/docs/resources/fast_acl_rule.md +101 -18
  203. package/dist/docs/resources/filter_set.md +86 -3
  204. package/dist/docs/resources/fleet.md +170 -541
  205. package/dist/docs/resources/forward_proxy_policy.md +90 -31
  206. package/dist/docs/resources/forwarding_class.md +87 -10
  207. package/dist/docs/resources/gcp_vpc_site.md +141 -328
  208. package/dist/docs/resources/geo_location_set.md +86 -3
  209. package/dist/docs/resources/global_log_receiver.md +116 -181
  210. package/dist/docs/resources/healthcheck.md +86 -3
  211. package/dist/docs/resources/http_loadbalancer.md +523 -2778
  212. package/dist/docs/resources/ike1.md +86 -3
  213. package/dist/docs/resources/ike2.md +86 -3
  214. package/dist/docs/resources/ike_phase1_profile.md +86 -3
  215. package/dist/docs/resources/ike_phase2_profile.md +86 -3
  216. package/dist/docs/resources/infraprotect_asn.md +86 -3
  217. package/dist/docs/resources/infraprotect_asn_prefix.md +87 -10
  218. package/dist/docs/resources/infraprotect_deny_list_rule.md +86 -3
  219. package/dist/docs/resources/infraprotect_firewall_rule.md +86 -3
  220. package/dist/docs/resources/infraprotect_firewall_rule_group.md +86 -3
  221. package/dist/docs/resources/infraprotect_internet_prefix_advertisement.md +86 -3
  222. package/dist/docs/resources/infraprotect_tunnel.md +90 -29
  223. package/dist/docs/resources/ip_prefix_set.md +86 -3
  224. package/dist/docs/resources/irule.md +86 -3
  225. package/dist/docs/resources/k8s_cluster.md +93 -58
  226. package/dist/docs/resources/k8s_cluster_role.md +87 -8
  227. package/dist/docs/resources/k8s_cluster_role_binding.md +87 -10
  228. package/dist/docs/resources/k8s_pod_security_admission.md +86 -3
  229. package/dist/docs/resources/k8s_pod_security_policy.md +87 -8
  230. package/dist/docs/resources/log_receiver.md +88 -15
  231. package/dist/docs/resources/malicious_user_mitigation.md +86 -3
  232. package/dist/docs/resources/managed_tenant.md +89 -12
  233. package/dist/docs/resources/namespace.md +86 -3
  234. package/dist/docs/resources/nat_policy.md +126 -43
  235. package/dist/docs/resources/network_connector.md +94 -51
  236. package/dist/docs/resources/network_firewall.md +90 -31
  237. package/dist/docs/resources/network_interface.md +93 -46
  238. package/dist/docs/resources/network_policy.md +96 -13
  239. package/dist/docs/resources/network_policy_rule.md +91 -8
  240. package/dist/docs/resources/network_policy_view.md +96 -13
  241. package/dist/docs/resources/nfv_service.md +153 -446
  242. package/dist/docs/resources/oidc_provider.md +86 -3
  243. package/dist/docs/resources/origin_pool.md +108 -145
  244. package/dist/docs/resources/policer.md +86 -3
  245. package/dist/docs/resources/policy_based_routing.md +100 -89
  246. package/dist/docs/resources/protocol_inspection.md +87 -10
  247. package/dist/docs/resources/protocol_policer.md +91 -8
  248. package/dist/docs/resources/proxy.md +154 -571
  249. package/dist/docs/resources/quota.md +86 -3
  250. package/dist/docs/resources/rate_limiter.md +91 -8
  251. package/dist/docs/resources/rate_limiter_policy.md +100 -23
  252. package/dist/docs/resources/registration.md +86 -3
  253. package/dist/docs/resources/report_config.md +87 -10
  254. package/dist/docs/resources/role.md +86 -3
  255. package/dist/docs/resources/route.md +113 -82
  256. package/dist/docs/resources/secret_management_access.md +127 -156
  257. package/dist/docs/resources/secret_policy.md +87 -4
  258. package/dist/docs/resources/secret_policy_rule.md +86 -3
  259. package/dist/docs/resources/securemesh_site.md +137 -380
  260. package/dist/docs/resources/securemesh_site_v2.md +289 -1204
  261. package/dist/docs/resources/segment.md +86 -3
  262. package/dist/docs/resources/sensitive_data_policy.md +87 -10
  263. package/dist/docs/resources/service_policy.md +115 -122
  264. package/dist/docs/resources/service_policy_rule.md +110 -59
  265. package/dist/docs/resources/site_mesh_group.md +92 -15
  266. package/dist/docs/resources/srv6_network_slice.md +86 -3
  267. package/dist/docs/resources/subnet.md +89 -20
  268. package/dist/docs/resources/tcp_loadbalancer.md +114 -185
  269. package/dist/docs/resources/tenant_configuration.md +86 -3
  270. package/dist/docs/resources/tenant_profile.md +87 -10
  271. package/dist/docs/resources/ticket_tracking_system.md +86 -3
  272. package/dist/docs/resources/token.md +86 -3
  273. package/dist/docs/resources/tpm_api_key.md +91 -8
  274. package/dist/docs/resources/tpm_category.md +91 -8
  275. package/dist/docs/resources/tpm_manager.md +86 -3
  276. package/dist/docs/resources/trusted_ca_list.md +86 -3
  277. package/dist/docs/resources/tunnel.md +91 -8
  278. package/dist/docs/resources/udp_loadbalancer.md +97 -80
  279. package/dist/docs/resources/usb_policy.md +86 -3
  280. package/dist/docs/resources/user_identification.md +86 -3
  281. package/dist/docs/resources/virtual_host.md +152 -177
  282. package/dist/docs/resources/virtual_k8s.md +92 -15
  283. package/dist/docs/resources/virtual_network.md +91 -8
  284. package/dist/docs/resources/virtual_site.md +86 -3
  285. package/dist/docs/resources/voltshare_admin_policy.md +86 -11
  286. package/dist/docs/resources/voltstack_site.md +380 -1365
  287. package/dist/docs/resources/waf_exclusion_policy.md +91 -28
  288. package/dist/docs/resources/workload.md +1189 -4148
  289. package/dist/docs/resources/workload_flavor.md +86 -3
  290. package/package.json +1 -1
@@ -0,0 +1,569 @@
1
+ ---
2
+ page_title: "Guide: Advanced HTTP Load Balancer Security"
3
+ subcategory: "Guides"
4
+ description: |-
5
+ Advanced guide to deploying a fully-secured HTTP Load Balancer with all security
6
+ controls including WAF, Data Guard, IP Reputation, Malicious User Detection, and
7
+ Threat Mesh using F5 Distributed Cloud and Terraform.
8
+ ---
9
+
10
+ # Advanced HTTP Load Balancer Security
11
+
12
+ This guide extends the [basic HTTP Load Balancer guide](http-loadbalancer) with advanced security features for production deployments requiring comprehensive protection against sophisticated threats.
13
+
14
+ By following this guide, you'll deploy an HTTP Load Balancer with **11 security controls**:
15
+
16
+ | Security Layer | Feature | Protection |
17
+ |----------------|---------|------------|
18
+ | **Perimeter** | IP Reputation | Blocks known malicious IPs by threat category |
19
+ | **Perimeter** | Threat Mesh | Global threat intelligence sharing |
20
+ | **Bot Defense** | JavaScript Challenge | Client-side bot detection |
21
+ | **Bot Defense** | Malicious User Detection | Behavioral analysis and risk scoring |
22
+ | **Application** | Web Application Firewall | Blocks SQLi, XSS, and OWASP Top 10 |
23
+ | **Application** | Bot Protection Settings | Signature-based bot classification |
24
+ | **Rate Control** | Rate Limiting | Prevents abuse with configurable thresholds |
25
+ | **Data Protection** | Data Guard | Masks sensitive data (CC, SSN) in responses |
26
+
27
+ ## Prerequisites
28
+
29
+ Before you begin, ensure you have:
30
+
31
+ - **F5 Distributed Cloud Account** - Sign up at <https://www.f5.com/cloud/products/distributed-cloud-console>
32
+ - **API Token** - Generate credentials from the F5XC Console ([documentation](https://docs.cloud.f5.com/docs/how-to/user-mgmt/credentials))
33
+ - **Terraform >= 1.8** - Download from <https://www.terraform.io/downloads>
34
+ - **Namespace** - An existing namespace or permissions to create one
35
+ - **Backend Origin** - Your application server accessible from the internet
36
+
37
+ -> **Tip:** Review the [Authentication Guide](authentication) for detailed credential setup instructions.
38
+
39
+ ## Complete Configuration
40
+
41
+ The following configuration creates a production-ready HTTP Load Balancer with all security features enabled.
42
+
43
+ ### Provider Configuration
44
+
45
+ ```hcl
46
+ terraform {
47
+ required_version = ">= 1.0"
48
+ required_providers {
49
+ f5xc = {
50
+ source = "robinmordasiewicz/f5xc"
51
+ version = ">= 2.5"
52
+ }
53
+ }
54
+ }
55
+
56
+ provider "f5xc" {
57
+ api_token = var.api_token
58
+ api_url = var.api_url
59
+ }
60
+ ```
61
+
62
+ ### Variables
63
+
64
+ ```hcl
65
+ variable "api_token" {
66
+ description = "F5 XC API token for authentication"
67
+ type = string
68
+ sensitive = true
69
+ }
70
+
71
+ variable "api_url" {
72
+ description = "F5 XC API URL (e.g., https://your-tenant.console.ves.volterra.io/api)"
73
+ type = string
74
+ }
75
+
76
+ variable "namespace" {
77
+ description = "F5 XC namespace for the load balancer"
78
+ type = string
79
+ default = "default"
80
+ }
81
+
82
+ variable "name_prefix" {
83
+ description = "Prefix for resource names"
84
+ type = string
85
+ default = "secure-app"
86
+ }
87
+
88
+ variable "domain" {
89
+ description = "Domain for the load balancer"
90
+ type = string
91
+ }
92
+
93
+ variable "origin_server" {
94
+ description = "Backend origin server DNS name"
95
+ type = string
96
+ }
97
+ ```
98
+
99
+ ### Web Application Firewall
100
+
101
+ The WAF provides signature-based attack detection with configurable bot protection. For detailed WAF configuration options, see [Create Web Application Firewall](https://docs.cloud.f5.com/docs-v2/web-app-and-api-protection/how-to/app-security/application-firewall).
102
+
103
+ ```hcl
104
+ resource "f5xc_app_firewall" "waf" {
105
+ name = "${var.name_prefix}-waf"
106
+ namespace = var.namespace
107
+
108
+ # Blocking mode actively mitigates threats
109
+ # Use monitoring {} for detection-only mode
110
+ blocking {}
111
+
112
+ detection_settings {
113
+ signature_selection_setting {
114
+ default_attack_type_settings {}
115
+ high_medium_accuracy_signatures {}
116
+ }
117
+ enable_suppression {}
118
+ enable_threat_campaigns {}
119
+
120
+ # Bot protection with graduated response
121
+ bot_protection_setting {
122
+ malicious_bot_action = "BLOCK"
123
+ suspicious_bot_action = "REPORT"
124
+ good_bot_action = "REPORT"
125
+ }
126
+ }
127
+ }
128
+ ```
129
+
130
+ ~> **Note:** The default enforcement mode is `monitoring`, meaning threats are logged but not blocked. Use `blocking {}` for production deployments. See [WAF Enforcement Modes](https://docs.cloud.f5.com/docs-v2/web-app-and-api-protection/how-to/app-security/application-firewall) for details.
131
+
132
+ ### Health Check
133
+
134
+ Configure active health monitoring for your origin servers:
135
+
136
+ ```hcl
137
+ resource "f5xc_healthcheck" "http" {
138
+ name = "${var.name_prefix}-healthcheck"
139
+ namespace = var.namespace
140
+
141
+ http_health_check {
142
+ path = "/health"
143
+ expected_status_codes = ["200"]
144
+ }
145
+
146
+ timeout = 3
147
+ interval = 15
148
+ unhealthy_threshold = 3
149
+ healthy_threshold = 2
150
+ }
151
+ ```
152
+
153
+ ### Origin Pool
154
+
155
+ The origin pool defines your backend servers. For additional origin pool options, see [Origin Pools](https://docs.cloud.f5.com/docs-v2/multi-cloud-app-connect/how-to/load-balance/create-http-load-balancer).
156
+
157
+ ```hcl
158
+ resource "f5xc_origin_pool" "backend" {
159
+ name = "${var.name_prefix}-origin-pool"
160
+ namespace = var.namespace
161
+
162
+ origin_servers {
163
+ public_name {
164
+ dns_name = var.origin_server
165
+ }
166
+ }
167
+
168
+ port = 443
169
+
170
+ use_tls {
171
+ skip_server_verification {}
172
+ tls_config {
173
+ default_security {}
174
+ }
175
+ sni = var.origin_server
176
+ }
177
+
178
+ endpoint_selection = "LOCAL_PREFERRED"
179
+ loadbalancer_algorithm = "ROUND_ROBIN"
180
+
181
+ healthcheck {
182
+ name = f5xc_healthcheck.http.name
183
+ namespace = var.namespace
184
+ }
185
+ }
186
+ ```
187
+
188
+ ### HTTP Load Balancer with All Security Features
189
+
190
+ This is the main resource that brings together all security controls:
191
+
192
+ ```hcl
193
+ resource "f5xc_http_loadbalancer" "app" {
194
+ name = "${var.name_prefix}-lb"
195
+ namespace = var.namespace
196
+ domains = [var.domain]
197
+
198
+ http {
199
+ port = 80
200
+ }
201
+
202
+ advertise_on_public_default_vip {}
203
+
204
+ default_route_pools {
205
+ pool {
206
+ name = f5xc_origin_pool.backend.name
207
+ namespace = var.namespace
208
+ }
209
+ weight = 1
210
+ }
211
+
212
+ round_robin {}
213
+
214
+ # ─────────────────────────────────────────────────────────────────────────────
215
+ # WAF Configuration
216
+ # ─────────────────────────────────────────────────────────────────────────────
217
+ app_firewall {
218
+ name = f5xc_app_firewall.waf.name
219
+ namespace = var.namespace
220
+ }
221
+
222
+ # ─────────────────────────────────────────────────────────────────────────────
223
+ # Rate Limiting
224
+ # Prevents abuse by limiting requests per client IP
225
+ # See: https://docs.cloud.f5.com/docs/how-to/advanced-security/user-rate-limit
226
+ # ─────────────────────────────────────────────────────────────────────────────
227
+ rate_limit {
228
+ no_ip_allowed_list {}
229
+ rate_limiter {
230
+ total_number = 100
231
+ unit = "MINUTE"
232
+ burst_multiplier = 2
233
+ leaky_bucket {}
234
+ }
235
+ }
236
+
237
+ # ─────────────────────────────────────────────────────────────────────────────
238
+ # IP Reputation Filtering
239
+ # Blocks IPs based on threat intelligence categories
240
+ # See: https://docs.cloud.f5.com/docs/how-to/advanced-security/configure-ip-reputation
241
+ # ─────────────────────────────────────────────────────────────────────────────
242
+ enable_ip_reputation {
243
+ ip_threat_categories = [
244
+ "SPAM_SOURCES",
245
+ "WEB_ATTACKS",
246
+ "BOTNETS",
247
+ "SCANNERS",
248
+ "PHISHING",
249
+ "PROXY",
250
+ "TOR_PROXY",
251
+ "DENIAL_OF_SERVICE"
252
+ ]
253
+ }
254
+
255
+ # ─────────────────────────────────────────────────────────────────────────────
256
+ # JavaScript Challenge
257
+ # Client-side bot detection using JS challenge
258
+ # ─────────────────────────────────────────────────────────────────────────────
259
+ js_challenge {
260
+ js_script_delay = 1000
261
+ cookie_expiry = 3600
262
+ }
263
+
264
+ # ─────────────────────────────────────────────────────────────────────────────
265
+ # Data Guard
266
+ # Masks sensitive data (credit cards, SSN) in responses
267
+ # Requires WAF to be enabled
268
+ # ─────────────────────────────────────────────────────────────────────────────
269
+ data_guard_rules {
270
+ metadata {
271
+ name = "${var.name_prefix}-data-guard"
272
+ description_spec = "Mask sensitive data in all responses"
273
+ }
274
+ any_domain {}
275
+ path {
276
+ prefix = "/"
277
+ }
278
+ apply_data_guard {}
279
+ }
280
+
281
+ # ─────────────────────────────────────────────────────────────────────────────
282
+ # Malicious User Detection
283
+ # Behavioral analysis with risk scoring
284
+ # See: https://docs.cloud.f5.com/docs-v2/web-app-and-api-protection/how-to/adv-security/malicious-users
285
+ # ─────────────────────────────────────────────────────────────────────────────
286
+ enable_malicious_user_detection {}
287
+
288
+ # ─────────────────────────────────────────────────────────────────────────────
289
+ # Threat Mesh
290
+ # Global threat intelligence sharing across F5XC network
291
+ # ─────────────────────────────────────────────────────────────────────────────
292
+ enable_threat_mesh {}
293
+
294
+ labels = {
295
+ environment = "production"
296
+ managed_by = "terraform"
297
+ security = "advanced"
298
+ }
299
+ }
300
+ ```
301
+
302
+ ## Understanding Each Security Feature
303
+
304
+ ### IP Reputation Service
305
+
306
+ The IP Reputation service maintains a continuously-updated database of known malicious IP addresses. When enabled, requests from IPs matching configured threat categories are automatically blocked.
307
+
308
+ | Threat Category | Description |
309
+ |-----------------|-------------|
310
+ | `SPAM_SOURCES` | Known spam-sending IP addresses |
311
+ | `WEB_ATTACKS` | IPs involved in web-based attacks |
312
+ | `BOTNETS` | Command & control and infected hosts |
313
+ | `SCANNERS` | Reconnaissance, probes, brute force |
314
+ | `PHISHING` | Phishing and fraud operations |
315
+ | `PROXY` | Anonymous proxy services |
316
+ | `TOR_PROXY` | Tor exit nodes |
317
+ | `DENIAL_OF_SERVICE` | DoS and DDoS sources |
318
+
319
+ -> **Tip:** Start with all categories enabled, then selectively disable based on your application requirements. For example, disable `TOR_PROXY` if you need to support privacy-focused users.
320
+
321
+ ### Data Guard
322
+
323
+ Data Guard automatically detects and masks sensitive data in HTTP responses before they reach clients. This protects against accidental data exposure such as:
324
+
325
+ - Credit card numbers (PAN)
326
+ - Social Security Numbers (SSN)
327
+ - Custom patterns (configurable)
328
+
329
+ !> **Important:** Data Guard requires WAF to be enabled. If you disable WAF, Data Guard will not function.
330
+
331
+ ### Malicious User Detection
332
+
333
+ This feature uses behavioral analysis to identify potentially malicious users based on:
334
+
335
+ - **Rate Limiting Violations** - Exceeding configured rate limits
336
+ - **WAF Violations** - Triggering WAF rules
337
+ - **Bot Detection Signals** - Failing JavaScript challenges
338
+ - **Threat Intelligence** - IP reputation matches
339
+
340
+ Users are assigned a risk score, and mitigation actions can be configured based on thresholds.
341
+
342
+ ### Threat Mesh
343
+
344
+ Threat Mesh enables sharing of threat intelligence across the F5 Distributed Cloud network. When a threat is detected at one customer's load balancer, that intelligence can protect all participating customers.
345
+
346
+ ## Configuration Variations
347
+
348
+ ### Conditional Security Features
349
+
350
+ Use Terraform variables to make security features configurable:
351
+
352
+ ```hcl
353
+ variable "enable_waf" {
354
+ description = "Enable WAF protection"
355
+ type = bool
356
+ default = true
357
+ }
358
+
359
+ variable "enable_data_guard" {
360
+ description = "Enable Data Guard (requires WAF)"
361
+ type = bool
362
+ default = true
363
+ }
364
+
365
+ variable "enable_ip_reputation" {
366
+ description = "Enable IP Reputation filtering"
367
+ type = bool
368
+ default = true
369
+ }
370
+
371
+ variable "ip_threat_categories" {
372
+ description = "IP threat categories to block"
373
+ type = list(string)
374
+ default = [
375
+ "SPAM_SOURCES",
376
+ "WEB_ATTACKS",
377
+ "BOTNETS",
378
+ "SCANNERS"
379
+ ]
380
+ }
381
+ ```
382
+
383
+ Then use dynamic blocks in the load balancer:
384
+
385
+ ```hcl
386
+ resource "f5xc_http_loadbalancer" "app" {
387
+ # ... base configuration ...
388
+
389
+ dynamic "app_firewall" {
390
+ for_each = var.enable_waf ? [1] : []
391
+ content {
392
+ name = f5xc_app_firewall.waf[0].name
393
+ namespace = var.namespace
394
+ }
395
+ }
396
+
397
+ dynamic "disable_waf" {
398
+ for_each = var.enable_waf ? [] : [1]
399
+ content {}
400
+ }
401
+
402
+ dynamic "enable_ip_reputation" {
403
+ for_each = var.enable_ip_reputation ? [1] : []
404
+ content {
405
+ ip_threat_categories = var.ip_threat_categories
406
+ }
407
+ }
408
+
409
+ dynamic "disable_ip_reputation" {
410
+ for_each = var.enable_ip_reputation ? [] : [1]
411
+ content {}
412
+ }
413
+
414
+ dynamic "data_guard_rules" {
415
+ for_each = var.enable_data_guard && var.enable_waf ? [1] : []
416
+ content {
417
+ metadata {
418
+ name = "${var.name_prefix}-data-guard"
419
+ description_spec = "Mask sensitive data"
420
+ }
421
+ any_domain {}
422
+ path {
423
+ prefix = "/"
424
+ }
425
+ apply_data_guard {}
426
+ }
427
+ }
428
+ }
429
+ ```
430
+
431
+ ### WAF Monitoring Mode
432
+
433
+ For initial deployment or debugging, use monitoring mode instead of blocking:
434
+
435
+ ```hcl
436
+ resource "f5xc_app_firewall" "waf" {
437
+ name = "${var.name_prefix}-waf"
438
+ namespace = var.namespace
439
+
440
+ # Monitoring mode - detect but don't block
441
+ monitoring {}
442
+
443
+ detection_settings {
444
+ # ... same detection settings ...
445
+ }
446
+ }
447
+ ```
448
+
449
+ ### Custom Rate Limiting
450
+
451
+ Adjust rate limiting based on your application's traffic patterns:
452
+
453
+ ```hcl
454
+ variable "rate_limit_requests" {
455
+ description = "Number of requests allowed per rate limit period"
456
+ type = number
457
+ default = 100
458
+ }
459
+
460
+ variable "rate_limit_unit" {
461
+ description = "Rate limit period: SECOND, MINUTE, or HOUR"
462
+ type = string
463
+ default = "MINUTE"
464
+
465
+ validation {
466
+ condition = contains(["SECOND", "MINUTE", "HOUR"], var.rate_limit_unit)
467
+ error_message = "Rate limit unit must be SECOND, MINUTE, or HOUR."
468
+ }
469
+ }
470
+ ```
471
+
472
+ ## Outputs
473
+
474
+ Add outputs to retrieve deployment information:
475
+
476
+ ```hcl
477
+ output "load_balancer_name" {
478
+ description = "Name of the HTTP load balancer"
479
+ value = f5xc_http_loadbalancer.app.name
480
+ }
481
+
482
+ output "security_summary" {
483
+ description = "Summary of enabled security controls"
484
+ value = {
485
+ waf_enabled = var.enable_waf
486
+ waf_mode = var.enable_waf ? "blocking" : "disabled"
487
+ rate_limiting = "${var.rate_limit_requests} per ${var.rate_limit_unit}"
488
+ ip_reputation = var.enable_ip_reputation
489
+ data_guard = var.enable_data_guard && var.enable_waf
490
+ malicious_user_detection = true
491
+ threat_mesh = true
492
+ js_challenge = true
493
+ }
494
+ }
495
+ ```
496
+
497
+ ## Troubleshooting
498
+
499
+ ### Data Guard Not Masking Data
500
+
501
+ **Symptom:** Sensitive data appears in responses despite Data Guard being configured.
502
+
503
+ **Solutions:**
504
+
505
+ 1. Verify WAF is enabled (Data Guard requires WAF)
506
+ 2. Check the path configuration matches your application routes
507
+ 3. Verify the response content type is text-based (HTML, JSON, XML)
508
+
509
+ ### IP Reputation Blocking Legitimate Users
510
+
511
+ **Symptom:** Users from corporate networks or VPNs are being blocked.
512
+
513
+ **Solutions:**
514
+
515
+ 1. Review blocked requests in Security Analytics
516
+ 2. Consider removing `PROXY` category if your users use VPNs
517
+ 3. Add IP allow lists for known-good networks:
518
+
519
+ ```hcl
520
+ rate_limit {
521
+ ip_allowed_list {
522
+ prefixes = ["10.0.0.0/8", "192.168.0.0/16"]
523
+ }
524
+ rate_limiter {
525
+ # ... configuration ...
526
+ }
527
+ }
528
+ ```
529
+
530
+ ### JavaScript Challenge Breaking Application
531
+
532
+ **Symptom:** API calls or mobile apps fail with JavaScript challenge.
533
+
534
+ **Solutions:**
535
+
536
+ 1. Use `no_challenge {}` instead of `js_challenge {}` for API-only endpoints
537
+ 2. Configure trusted client rules to bypass JS challenge for specific clients
538
+ 3. Consider using `captcha_challenge {}` for interactive applications
539
+
540
+ ## Security Best Practices
541
+
542
+ 1. **Start with monitoring mode** - Deploy WAF in monitoring mode first to understand your traffic patterns
543
+ 2. **Review security analytics** - Regularly review blocked requests in the F5XC Console
544
+ 3. **Tune gradually** - Enable features one at a time and monitor impact
545
+ 4. **Use all layers** - Defense in depth requires multiple security controls
546
+ 5. **Keep Terraform state secure** - Use remote state with encryption for production
547
+
548
+ ## Related Documentation
549
+
550
+ ### F5 Distributed Cloud Documentation
551
+
552
+ - [Create HTTP Load Balancer](https://docs.cloud.f5.com/docs-v2/multi-cloud-app-connect/how-to/load-balance/create-http-load-balancer)
553
+ - [Web Application Firewall](https://docs.cloud.f5.com/docs-v2/web-app-and-api-protection/how-to/app-security/application-firewall)
554
+ - [IP Reputation Service](https://docs.cloud.f5.com/docs/how-to/advanced-security/configure-ip-reputation)
555
+ - [Rate Limiting](https://docs.cloud.f5.com/docs/how-to/advanced-security/user-rate-limit)
556
+ - [Bot Defense](https://docs.cloud.f5.com/docs/how-to/advanced-security/bot-defense)
557
+ - [Malicious User Detection](https://docs.cloud.f5.com/docs-v2/web-app-and-api-protection/how-to/adv-security/malicious-users)
558
+
559
+ ### Provider Resources
560
+
561
+ - [f5xc_http_loadbalancer](../resources/http_loadbalancer)
562
+ - [f5xc_app_firewall](../resources/app_firewall)
563
+ - [f5xc_origin_pool](../resources/origin_pool)
564
+ - [f5xc_healthcheck](../resources/healthcheck)
565
+
566
+ ## Support
567
+
568
+ - **Provider Issues:** [GitHub Issues](https://github.com/robinmordasiewicz/terraform-provider-f5xc/issues)
569
+ - **F5 Support:** [F5 Distributed Cloud Support](https://docs.cloud.f5.com/docs/support)
@@ -2,12 +2,12 @@
2
2
  page_title: "f5xc_addon_subscription Resource - terraform-provider-f5xc"
3
3
  subcategory: "Subscriptions"
4
4
  description: |-
5
- [Namespace: required] Manages new Addon Subscription with Addon Subscription State in F5 Distributed Cloud.
5
+ Manages new Addon Subscription with Addon Subscription State in F5 Distributed Cloud.
6
6
  ---
7
7
 
8
8
  # f5xc_addon_subscription (Resource)
9
9
 
10
- [Namespace: required] Manages new Addon Subscription with Addon Subscription State in F5 Distributed Cloud.
10
+ Manages new Addon Subscription with Addon Subscription State in F5 Distributed Cloud.
11
11
 
12
12
  ~> **Note** Please refer to [Addon Subscription API docs](https://docs.cloud.f5.com/docs-v2/api/pbac-addon-subscription) to learn more.
13
13
 
@@ -15,7 +15,7 @@ description: |-
15
15
 
16
16
  ```terraform
17
17
  # Addon Subscription Resource Example
18
- # [Namespace: required] Manages new Addon Subscription with Addon Subscription State in F5 Distributed Cloud.
18
+ # Manages new Addon Subscription with Addon Subscription State in F5 Distributed Cloud.
19
19
 
20
20
  # Basic Addon Subscription configuration
21
21
  resource "f5xc_addon_subscription" "example" {
@@ -84,13 +84,7 @@ In addition to all arguments above, the following attributes are exported:
84
84
 
85
85
  #### Addon Service
86
86
 
87
- An [`addon_service`](#addon-service) block supports the following:
88
-
89
- <a id="addon-service-name"></a>&#x2022; [`name`](#addon-service-name) - Optional String<br>Name. When a configuration object(e.g. virtual_host) refers to another(e.g route) then name will hold the referred object's(e.g. route's) name
90
-
91
- <a id="addon-service-namespace"></a>&#x2022; [`namespace`](#addon-service-namespace) - Optional String<br>Namespace. When a configuration object(e.g. virtual_host) refers to another(e.g route) then namespace will hold the referred object's(e.g. route's) namespace
92
-
93
- <a id="addon-service-tenant"></a>&#x2022; [`tenant`](#addon-service-tenant) - Optional String<br>Tenant. When a configuration object(e.g. virtual_host) refers to another(e.g route) then tenant will hold the referred object's(e.g. route's) tenant
87
+ <a id="objref-40d406"></a>Uses standard [Object Reference](#common-object-reference) fields (name, namespace, tenant).
94
88
 
95
89
  #### Notification Preference
96
90
 
@@ -126,6 +120,89 @@ A [`timeouts`](#timeouts) block supports the following:
126
120
 
127
121
  <a id="timeouts-update"></a>&#x2022; [`update`](#timeouts-update) - Optional String (Defaults to `10 minutes`)<br>Used when updating the resource
128
122
 
123
+ ---
124
+
125
+ ## Common Types
126
+
127
+ The following type definitions are used throughout this resource. See the full definition here rather than repeated inline.
128
+
129
+ ### Object Reference {#common-object-reference}
130
+
131
+ Object references establish a direct reference from one configuration object to another in F5 Distributed Cloud. References use the format `tenant/namespace/name`.
132
+
133
+ | Field | Type | Description |
134
+ | ----- | ---- | ----------- |
135
+ | `name` | String | Name of the referenced object |
136
+ | `namespace` | String | Namespace containing the referenced object |
137
+ | `tenant` | String | Tenant of the referenced object (system-managed) |
138
+
139
+ ### Transformers {#common-transformers}
140
+
141
+ Transformers apply transformations to input values before matching. Multiple transformers can be applied in order.
142
+
143
+ | Value | Description |
144
+ | ----- | ----------- |
145
+ | `LOWER_CASE` | Convert to lowercase |
146
+ | `UPPER_CASE` | Convert to uppercase |
147
+ | `BASE64_DECODE` | Decode base64 content |
148
+ | `NORMALIZE_PATH` | Normalize URL path |
149
+ | `REMOVE_WHITESPACE` | Remove whitespace characters |
150
+ | `URL_DECODE` | Decode URL-encoded characters |
151
+ | `TRIM_LEFT` | Trim leading whitespace |
152
+ | `TRIM_RIGHT` | Trim trailing whitespace |
153
+ | `TRIM` | Trim both leading and trailing whitespace |
154
+
155
+ ### HTTP Methods {#common-http-methods}
156
+
157
+ HTTP methods used for request matching.
158
+
159
+ | Value | Description |
160
+ | ----- | ----------- |
161
+ | `ANY` | Match any HTTP method |
162
+ | `GET` | HTTP GET request |
163
+ | `HEAD` | HTTP HEAD request |
164
+ | `POST` | HTTP POST request |
165
+ | `PUT` | HTTP PUT request |
166
+ | `DELETE` | HTTP DELETE request |
167
+ | `CONNECT` | HTTP CONNECT request |
168
+ | `OPTIONS` | HTTP OPTIONS request |
169
+ | `TRACE` | HTTP TRACE request |
170
+ | `PATCH` | HTTP PATCH request |
171
+ | `COPY` | HTTP COPY request (WebDAV) |
172
+
173
+ ### TLS Fingerprints {#common-tls-fingerprints}
174
+
175
+ TLS fingerprint categories for malicious client detection.
176
+
177
+ | Value | Description |
178
+ | ----- | ----------- |
179
+ | `TLS_FINGERPRINT_NONE` | No fingerprint matching |
180
+ | `ANY_MALICIOUS_FINGERPRINT` | Match any known malicious fingerprint |
181
+ | `ADWARE` | Adware-associated fingerprints |
182
+ | `DRIDEX` | Dridex malware fingerprints |
183
+ | `GOOTKIT` | Gootkit malware fingerprints |
184
+ | `RANSOMWARE` | Ransomware-associated fingerprints |
185
+ | `TRICKBOT` | Trickbot malware fingerprints |
186
+
187
+ ### IP Threat Categories {#common-ip-threat-categories}
188
+
189
+ IP address threat categories for security filtering.
190
+
191
+ | Value | Description |
192
+ | ----- | ----------- |
193
+ | `SPAM_SOURCES` | Known spam sources |
194
+ | `WINDOWS_EXPLOITS` | Windows exploit sources |
195
+ | `WEB_ATTACKS` | Web attack sources |
196
+ | `BOTNETS` | Known botnet IPs |
197
+ | `SCANNERS` | Network scanner IPs |
198
+ | `REPUTATION` | Poor reputation IPs |
199
+ | `PHISHING` | Phishing-related IPs |
200
+ | `PROXY` | Anonymous proxy IPs |
201
+ | `MOBILE_THREATS` | Mobile threat sources |
202
+ | `TOR_PROXY` | Tor exit nodes |
203
+ | `DENIAL_OF_SERVICE` | DoS attack sources |
204
+ | `NETWORK` | Known bad network ranges |
205
+
129
206
  ## Import
130
207
 
131
208
  Import is supported using the following syntax: