@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.
- package/dist/docs/data-sources/addon_subscription.md +85 -2
- package/dist/docs/data-sources/address_allocator.md +85 -2
- package/dist/docs/data-sources/advertise_policy.md +85 -2
- package/dist/docs/data-sources/alert_policy.md +85 -2
- package/dist/docs/data-sources/alert_receiver.md +85 -2
- package/dist/docs/data-sources/allowed_tenant.md +85 -2
- package/dist/docs/data-sources/api_crawler.md +85 -2
- package/dist/docs/data-sources/api_credential.md +85 -2
- package/dist/docs/data-sources/api_definition.md +85 -2
- package/dist/docs/data-sources/api_discovery.md +85 -2
- package/dist/docs/data-sources/api_testing.md +85 -2
- package/dist/docs/data-sources/apm.md +85 -2
- package/dist/docs/data-sources/app_api_group.md +85 -2
- package/dist/docs/data-sources/app_firewall.md +85 -2
- package/dist/docs/data-sources/app_setting.md +85 -2
- package/dist/docs/data-sources/app_type.md +85 -2
- package/dist/docs/data-sources/authentication.md +85 -2
- package/dist/docs/data-sources/aws_tgw_site.md +85 -2
- package/dist/docs/data-sources/aws_vpc_site.md +85 -2
- package/dist/docs/data-sources/azure_vnet_site.md +85 -2
- package/dist/docs/data-sources/bgp.md +85 -2
- package/dist/docs/data-sources/bgp_asn_set.md +85 -2
- package/dist/docs/data-sources/bgp_routing_policy.md +85 -2
- package/dist/docs/data-sources/bigip_irule.md +85 -2
- package/dist/docs/data-sources/bot_defense_app_infrastructure.md +85 -2
- package/dist/docs/data-sources/cdn_cache_rule.md +85 -2
- package/dist/docs/data-sources/cdn_loadbalancer.md +85 -2
- package/dist/docs/data-sources/certificate.md +85 -2
- package/dist/docs/data-sources/certificate_chain.md +85 -2
- package/dist/docs/data-sources/child_tenant.md +85 -2
- package/dist/docs/data-sources/child_tenant_manager.md +85 -2
- package/dist/docs/data-sources/cloud_connect.md +85 -2
- package/dist/docs/data-sources/cloud_credentials.md +85 -2
- package/dist/docs/data-sources/cloud_elastic_ip.md +85 -2
- package/dist/docs/data-sources/cloud_link.md +85 -2
- package/dist/docs/data-sources/cluster.md +85 -2
- package/dist/docs/data-sources/cminstance.md +85 -2
- package/dist/docs/data-sources/code_base_integration.md +85 -2
- package/dist/docs/data-sources/contact.md +85 -2
- package/dist/docs/data-sources/container_registry.md +85 -2
- package/dist/docs/data-sources/crl.md +85 -2
- package/dist/docs/data-sources/customer_support.md +85 -2
- package/dist/docs/data-sources/data_group.md +85 -2
- package/dist/docs/data-sources/data_type.md +85 -2
- package/dist/docs/data-sources/dc_cluster_group.md +85 -2
- package/dist/docs/data-sources/discovery.md +85 -2
- package/dist/docs/data-sources/dns_compliance_checks.md +85 -2
- package/dist/docs/data-sources/dns_domain.md +85 -2
- package/dist/docs/data-sources/dns_lb_health_check.md +85 -2
- package/dist/docs/data-sources/dns_lb_pool.md +85 -2
- package/dist/docs/data-sources/dns_load_balancer.md +85 -2
- package/dist/docs/data-sources/dns_zone.md +85 -2
- package/dist/docs/data-sources/endpoint.md +85 -2
- package/dist/docs/data-sources/enhanced_firewall_policy.md +85 -2
- package/dist/docs/data-sources/external_connector.md +85 -2
- package/dist/docs/data-sources/fast_acl.md +85 -2
- package/dist/docs/data-sources/fast_acl_rule.md +85 -2
- package/dist/docs/data-sources/filter_set.md +85 -2
- package/dist/docs/data-sources/fleet.md +85 -2
- package/dist/docs/data-sources/forward_proxy_policy.md +85 -2
- package/dist/docs/data-sources/forwarding_class.md +85 -2
- package/dist/docs/data-sources/gcp_vpc_site.md +85 -2
- package/dist/docs/data-sources/geo_location_set.md +85 -2
- package/dist/docs/data-sources/global_log_receiver.md +85 -2
- package/dist/docs/data-sources/healthcheck.md +85 -2
- package/dist/docs/data-sources/http_loadbalancer.md +85 -2
- package/dist/docs/data-sources/ike1.md +85 -2
- package/dist/docs/data-sources/ike2.md +85 -2
- package/dist/docs/data-sources/ike_phase1_profile.md +85 -2
- package/dist/docs/data-sources/ike_phase2_profile.md +85 -2
- package/dist/docs/data-sources/infraprotect_asn.md +85 -2
- package/dist/docs/data-sources/infraprotect_asn_prefix.md +85 -2
- package/dist/docs/data-sources/infraprotect_deny_list_rule.md +85 -2
- package/dist/docs/data-sources/infraprotect_firewall_rule.md +85 -2
- package/dist/docs/data-sources/infraprotect_firewall_rule_group.md +85 -2
- package/dist/docs/data-sources/infraprotect_internet_prefix_advertisement.md +85 -2
- package/dist/docs/data-sources/infraprotect_tunnel.md +85 -2
- package/dist/docs/data-sources/ip_prefix_set.md +85 -2
- package/dist/docs/data-sources/irule.md +85 -2
- package/dist/docs/data-sources/k8s_cluster.md +85 -2
- package/dist/docs/data-sources/k8s_cluster_role.md +85 -2
- package/dist/docs/data-sources/k8s_cluster_role_binding.md +85 -2
- package/dist/docs/data-sources/k8s_pod_security_admission.md +85 -2
- package/dist/docs/data-sources/k8s_pod_security_policy.md +85 -2
- package/dist/docs/data-sources/log_receiver.md +85 -2
- package/dist/docs/data-sources/malicious_user_mitigation.md +85 -2
- package/dist/docs/data-sources/managed_tenant.md +85 -2
- package/dist/docs/data-sources/namespace.md +85 -2
- package/dist/docs/data-sources/nat_policy.md +85 -2
- package/dist/docs/data-sources/network_connector.md +85 -2
- package/dist/docs/data-sources/network_firewall.md +85 -2
- package/dist/docs/data-sources/network_interface.md +85 -2
- package/dist/docs/data-sources/network_policy.md +85 -2
- package/dist/docs/data-sources/network_policy_rule.md +85 -2
- package/dist/docs/data-sources/network_policy_view.md +85 -2
- package/dist/docs/data-sources/nfv_service.md +85 -2
- package/dist/docs/data-sources/oidc_provider.md +85 -2
- package/dist/docs/data-sources/origin_pool.md +85 -2
- package/dist/docs/data-sources/policer.md +85 -2
- package/dist/docs/data-sources/policy_based_routing.md +85 -2
- package/dist/docs/data-sources/protocol_inspection.md +85 -2
- package/dist/docs/data-sources/protocol_policer.md +85 -2
- package/dist/docs/data-sources/proxy.md +85 -2
- package/dist/docs/data-sources/quota.md +85 -2
- package/dist/docs/data-sources/rate_limiter.md +85 -2
- package/dist/docs/data-sources/rate_limiter_policy.md +85 -2
- package/dist/docs/data-sources/registration.md +85 -2
- package/dist/docs/data-sources/report_config.md +85 -2
- package/dist/docs/data-sources/role.md +85 -2
- package/dist/docs/data-sources/route.md +85 -2
- package/dist/docs/data-sources/secret_management_access.md +85 -2
- package/dist/docs/data-sources/secret_policy.md +85 -2
- package/dist/docs/data-sources/secret_policy_rule.md +85 -2
- package/dist/docs/data-sources/securemesh_site.md +85 -2
- package/dist/docs/data-sources/securemesh_site_v2.md +85 -2
- package/dist/docs/data-sources/segment.md +85 -2
- package/dist/docs/data-sources/sensitive_data_policy.md +85 -2
- package/dist/docs/data-sources/service_policy.md +85 -2
- package/dist/docs/data-sources/service_policy_rule.md +85 -2
- package/dist/docs/data-sources/site_mesh_group.md +85 -2
- package/dist/docs/data-sources/srv6_network_slice.md +85 -2
- package/dist/docs/data-sources/subnet.md +85 -2
- package/dist/docs/data-sources/tcp_loadbalancer.md +85 -2
- package/dist/docs/data-sources/tenant_configuration.md +85 -2
- package/dist/docs/data-sources/tenant_profile.md +85 -2
- package/dist/docs/data-sources/ticket_tracking_system.md +85 -2
- package/dist/docs/data-sources/token.md +85 -2
- package/dist/docs/data-sources/tpm_api_key.md +85 -2
- package/dist/docs/data-sources/tpm_category.md +85 -2
- package/dist/docs/data-sources/tpm_manager.md +85 -2
- package/dist/docs/data-sources/trusted_ca_list.md +85 -2
- package/dist/docs/data-sources/tunnel.md +85 -2
- package/dist/docs/data-sources/udp_loadbalancer.md +85 -2
- package/dist/docs/data-sources/usb_policy.md +85 -2
- package/dist/docs/data-sources/user_identification.md +85 -2
- package/dist/docs/data-sources/virtual_host.md +85 -2
- package/dist/docs/data-sources/virtual_k8s.md +85 -2
- package/dist/docs/data-sources/virtual_network.md +85 -2
- package/dist/docs/data-sources/virtual_site.md +85 -2
- package/dist/docs/data-sources/voltshare_admin_policy.md +85 -2
- package/dist/docs/data-sources/voltstack_site.md +85 -2
- package/dist/docs/data-sources/waf_exclusion_policy.md +85 -2
- package/dist/docs/data-sources/workload.md +85 -2
- package/dist/docs/data-sources/workload_flavor.md +85 -2
- package/dist/docs/guides/advanced-http-loadbalancer.md +569 -0
- package/dist/docs/resources/addon_subscription.md +87 -10
- package/dist/docs/resources/address_allocator.md +86 -3
- package/dist/docs/resources/advertise_policy.md +112 -57
- package/dist/docs/resources/alert_policy.md +91 -8
- package/dist/docs/resources/alert_receiver.md +94 -55
- package/dist/docs/resources/allowed_tenant.md +87 -10
- package/dist/docs/resources/api_crawler.md +86 -3
- package/dist/docs/resources/api_credential.md +86 -3
- package/dist/docs/resources/api_definition.md +89 -6
- package/dist/docs/resources/api_discovery.md +86 -3
- package/dist/docs/resources/api_testing.md +95 -52
- package/dist/docs/resources/apm.md +156 -519
- package/dist/docs/resources/app_api_group.md +90 -25
- package/dist/docs/resources/app_firewall.md +87 -6
- package/dist/docs/resources/app_setting.md +97 -66
- package/dist/docs/resources/app_type.md +86 -3
- package/dist/docs/resources/authentication.md +90 -27
- package/dist/docs/resources/aws_tgw_site.md +125 -222
- package/dist/docs/resources/aws_vpc_site.md +149 -352
- package/dist/docs/resources/azure_vnet_site.md +233 -860
- package/dist/docs/resources/bgp.md +103 -32
- package/dist/docs/resources/bgp_asn_set.md +86 -3
- package/dist/docs/resources/bgp_routing_policy.md +86 -3
- package/dist/docs/resources/bigip_irule.md +86 -3
- package/dist/docs/resources/bot_defense_app_infrastructure.md +86 -3
- package/dist/docs/resources/cdn_cache_rule.md +97 -120
- package/dist/docs/resources/cdn_loadbalancer.md +325 -1620
- package/dist/docs/resources/certificate.md +87 -10
- package/dist/docs/resources/certificate_chain.md +86 -3
- package/dist/docs/resources/child_tenant.md +88 -17
- package/dist/docs/resources/child_tenant_manager.md +88 -17
- package/dist/docs/resources/cloud_connect.md +98 -63
- package/dist/docs/resources/cloud_credentials.md +92 -39
- package/dist/docs/resources/cloud_elastic_ip.md +91 -8
- package/dist/docs/resources/cloud_link.md +90 -29
- package/dist/docs/resources/cluster.md +109 -66
- package/dist/docs/resources/cminstance.md +86 -3
- package/dist/docs/resources/code_base_integration.md +100 -87
- package/dist/docs/resources/contact.md +86 -3
- package/dist/docs/resources/container_registry.md +86 -3
- package/dist/docs/resources/crl.md +86 -3
- package/dist/docs/resources/customer_support.md +91 -8
- package/dist/docs/resources/data_group.md +86 -3
- package/dist/docs/resources/data_type.md +88 -9
- package/dist/docs/resources/dc_cluster_group.md +86 -3
- package/dist/docs/resources/discovery.md +115 -104
- package/dist/docs/resources/dns_compliance_checks.md +86 -3
- package/dist/docs/resources/dns_domain.md +86 -3
- package/dist/docs/resources/dns_lb_health_check.md +86 -3
- package/dist/docs/resources/dns_lb_pool.md +87 -10
- package/dist/docs/resources/dns_load_balancer.md +95 -40
- package/dist/docs/resources/dns_zone.md +86 -3
- package/dist/docs/resources/endpoint.md +101 -18
- package/dist/docs/resources/enhanced_firewall_policy.md +89 -32
- package/dist/docs/resources/external_connector.md +94 -29
- package/dist/docs/resources/fast_acl.md +100 -101
- package/dist/docs/resources/fast_acl_rule.md +101 -18
- package/dist/docs/resources/filter_set.md +86 -3
- package/dist/docs/resources/fleet.md +170 -541
- package/dist/docs/resources/forward_proxy_policy.md +90 -31
- package/dist/docs/resources/forwarding_class.md +87 -10
- package/dist/docs/resources/gcp_vpc_site.md +141 -328
- package/dist/docs/resources/geo_location_set.md +86 -3
- package/dist/docs/resources/global_log_receiver.md +116 -181
- package/dist/docs/resources/healthcheck.md +86 -3
- package/dist/docs/resources/http_loadbalancer.md +523 -2778
- package/dist/docs/resources/ike1.md +86 -3
- package/dist/docs/resources/ike2.md +86 -3
- package/dist/docs/resources/ike_phase1_profile.md +86 -3
- package/dist/docs/resources/ike_phase2_profile.md +86 -3
- package/dist/docs/resources/infraprotect_asn.md +86 -3
- package/dist/docs/resources/infraprotect_asn_prefix.md +87 -10
- package/dist/docs/resources/infraprotect_deny_list_rule.md +86 -3
- package/dist/docs/resources/infraprotect_firewall_rule.md +86 -3
- package/dist/docs/resources/infraprotect_firewall_rule_group.md +86 -3
- package/dist/docs/resources/infraprotect_internet_prefix_advertisement.md +86 -3
- package/dist/docs/resources/infraprotect_tunnel.md +90 -29
- package/dist/docs/resources/ip_prefix_set.md +86 -3
- package/dist/docs/resources/irule.md +86 -3
- package/dist/docs/resources/k8s_cluster.md +93 -58
- package/dist/docs/resources/k8s_cluster_role.md +87 -8
- package/dist/docs/resources/k8s_cluster_role_binding.md +87 -10
- package/dist/docs/resources/k8s_pod_security_admission.md +86 -3
- package/dist/docs/resources/k8s_pod_security_policy.md +87 -8
- package/dist/docs/resources/log_receiver.md +88 -15
- package/dist/docs/resources/malicious_user_mitigation.md +86 -3
- package/dist/docs/resources/managed_tenant.md +89 -12
- package/dist/docs/resources/namespace.md +86 -3
- package/dist/docs/resources/nat_policy.md +126 -43
- package/dist/docs/resources/network_connector.md +94 -51
- package/dist/docs/resources/network_firewall.md +90 -31
- package/dist/docs/resources/network_interface.md +93 -46
- package/dist/docs/resources/network_policy.md +96 -13
- package/dist/docs/resources/network_policy_rule.md +91 -8
- package/dist/docs/resources/network_policy_view.md +96 -13
- package/dist/docs/resources/nfv_service.md +153 -446
- package/dist/docs/resources/oidc_provider.md +86 -3
- package/dist/docs/resources/origin_pool.md +108 -145
- package/dist/docs/resources/policer.md +86 -3
- package/dist/docs/resources/policy_based_routing.md +100 -89
- package/dist/docs/resources/protocol_inspection.md +87 -10
- package/dist/docs/resources/protocol_policer.md +91 -8
- package/dist/docs/resources/proxy.md +154 -571
- package/dist/docs/resources/quota.md +86 -3
- package/dist/docs/resources/rate_limiter.md +91 -8
- package/dist/docs/resources/rate_limiter_policy.md +100 -23
- package/dist/docs/resources/registration.md +86 -3
- package/dist/docs/resources/report_config.md +87 -10
- package/dist/docs/resources/role.md +86 -3
- package/dist/docs/resources/route.md +113 -82
- package/dist/docs/resources/secret_management_access.md +127 -156
- package/dist/docs/resources/secret_policy.md +87 -4
- package/dist/docs/resources/secret_policy_rule.md +86 -3
- package/dist/docs/resources/securemesh_site.md +137 -380
- package/dist/docs/resources/securemesh_site_v2.md +289 -1204
- package/dist/docs/resources/segment.md +86 -3
- package/dist/docs/resources/sensitive_data_policy.md +87 -10
- package/dist/docs/resources/service_policy.md +115 -122
- package/dist/docs/resources/service_policy_rule.md +110 -59
- package/dist/docs/resources/site_mesh_group.md +92 -15
- package/dist/docs/resources/srv6_network_slice.md +86 -3
- package/dist/docs/resources/subnet.md +89 -20
- package/dist/docs/resources/tcp_loadbalancer.md +114 -185
- package/dist/docs/resources/tenant_configuration.md +86 -3
- package/dist/docs/resources/tenant_profile.md +87 -10
- package/dist/docs/resources/ticket_tracking_system.md +86 -3
- package/dist/docs/resources/token.md +86 -3
- package/dist/docs/resources/tpm_api_key.md +91 -8
- package/dist/docs/resources/tpm_category.md +91 -8
- package/dist/docs/resources/tpm_manager.md +86 -3
- package/dist/docs/resources/trusted_ca_list.md +86 -3
- package/dist/docs/resources/tunnel.md +91 -8
- package/dist/docs/resources/udp_loadbalancer.md +97 -80
- package/dist/docs/resources/usb_policy.md +86 -3
- package/dist/docs/resources/user_identification.md +86 -3
- package/dist/docs/resources/virtual_host.md +152 -177
- package/dist/docs/resources/virtual_k8s.md +92 -15
- package/dist/docs/resources/virtual_network.md +91 -8
- package/dist/docs/resources/virtual_site.md +86 -3
- package/dist/docs/resources/voltshare_admin_policy.md +86 -11
- package/dist/docs/resources/voltstack_site.md +380 -1365
- package/dist/docs/resources/waf_exclusion_policy.md +91 -28
- package/dist/docs/resources/workload.md +1189 -4148
- package/dist/docs/resources/workload_flavor.md +86 -3
- 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
|
-
|
|
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
|
-
|
|
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
|
-
#
|
|
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
|
-
|
|
88
|
-
|
|
89
|
-
<a id="addon-service-name"></a>• [`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>• [`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>• [`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>• [`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:
|