pulumi-alicloud 3.84.0a1756507491__py3-none-any.whl → 3.85.0a1757389637__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pulumi-alicloud might be problematic. Click here for more details.
- pulumi_alicloud/__init__.py +172 -0
- pulumi_alicloud/_inputs.py +635 -0
- pulumi_alicloud/ackone/membership_attachment.py +122 -0
- pulumi_alicloud/actiontrail/__init__.py +1 -0
- pulumi_alicloud/actiontrail/advanced_query_template.py +311 -0
- pulumi_alicloud/actiontrail/trail.py +303 -149
- pulumi_alicloud/actiontrail/trail_deprecated.py +131 -23
- pulumi_alicloud/alb/a_script.py +170 -0
- pulumi_alicloud/alb/get_rules.py +206 -0
- pulumi_alicloud/alb/listener.py +240 -0
- pulumi_alicloud/alb/listener_acl_attachment.py +180 -0
- pulumi_alicloud/alb/listener_additional_certificate_attachment.py +314 -0
- pulumi_alicloud/alb/load_balancer_access_log_config_attachment.py +136 -0
- pulumi_alicloud/alb/load_balancer_common_bandwidth_package_attachment.py +122 -0
- pulumi_alicloud/alb/load_balancer_zone_shifted_attachment.py +124 -0
- pulumi_alicloud/alb/rule.py +202 -0
- pulumi_alicloud/alikafka/sasl_user.py +2 -2
- pulumi_alicloud/amqp/get_instances.py +49 -20
- pulumi_alicloud/amqp/outputs.py +20 -20
- pulumi_alicloud/amqp/virtual_host.py +46 -20
- pulumi_alicloud/apig/environment.py +86 -0
- pulumi_alicloud/arms/__init__.py +6 -0
- pulumi_alicloud/arms/addon_release.py +174 -0
- pulumi_alicloud/arms/env_feature.py +158 -0
- pulumi_alicloud/arms/env_pod_monitor.py +206 -0
- pulumi_alicloud/arms/env_service_monitor.py +204 -0
- pulumi_alicloud/arms/environment.py +150 -0
- pulumi_alicloud/arms/get_addon_releases.py +354 -0
- pulumi_alicloud/arms/get_env_custom_jobs.py +268 -0
- pulumi_alicloud/arms/get_env_features.py +342 -0
- pulumi_alicloud/arms/get_env_pod_monitors.py +390 -0
- pulumi_alicloud/arms/get_env_service_monitors.py +388 -0
- pulumi_alicloud/arms/get_environments.py +282 -0
- pulumi_alicloud/arms/outputs.py +620 -0
- pulumi_alicloud/arms/prometheus_monitoring.py +190 -0
- pulumi_alicloud/cen/transit_router_multicast_domain_member.py +118 -0
- pulumi_alicloud/cen/transit_router_multicast_domain_source.py +160 -0
- pulumi_alicloud/cfg/aggregate_delivery.py +100 -0
- pulumi_alicloud/cfg/delivery_channel.py +54 -0
- pulumi_alicloud/cloudauth/face_config.py +48 -0
- pulumi_alicloud/cloudfirewall/nat_firewall_control_policy.py +236 -0
- pulumi_alicloud/cloudmonitor/__init__.py +1 -0
- pulumi_alicloud/cloudmonitor/get_service_metric_alarm_rules.py +333 -0
- pulumi_alicloud/cloudmonitor/outputs.py +696 -0
- pulumi_alicloud/cloudsso/__init__.py +1 -0
- pulumi_alicloud/cloudsso/access_configuration.py +12 -12
- pulumi_alicloud/cloudsso/access_configuration_provisioning.py +84 -0
- pulumi_alicloud/cloudsso/access_management.py +90 -0
- pulumi_alicloud/cloudsso/delegate_account.py +218 -0
- pulumi_alicloud/cloudsso/group.py +60 -0
- pulumi_alicloud/cloudsso/user.py +66 -0
- pulumi_alicloud/cloudsso/user_attachment.py +82 -0
- pulumi_alicloud/cloudstoragegateway/express_sync.py +154 -0
- pulumi_alicloud/cloudstoragegateway/express_sync_share_attachment.py +160 -0
- pulumi_alicloud/cloudstoragegateway/gateway.py +0 -13
- pulumi_alicloud/cloudstoragegateway/gateway_block_volume.py +132 -0
- pulumi_alicloud/cloudstoragegateway/gateway_cache_disk.py +92 -0
- pulumi_alicloud/cloudstoragegateway/gateway_file_share.py +130 -0
- pulumi_alicloud/cloudstoragegateway/gateway_logging.py +120 -0
- pulumi_alicloud/cloudstoragegateway/gateway_smb_user.py +92 -0
- pulumi_alicloud/cms/alarm.py +4 -4
- pulumi_alicloud/cms/get_site_monitors.py +20 -20
- pulumi_alicloud/cms/hybrid_monitor_fc_task.py +24 -24
- pulumi_alicloud/cms/hybrid_monitor_sls_task.py +164 -0
- pulumi_alicloud/cms/site_monitor.py +20 -20
- pulumi_alicloud/cms/sls_group.py +80 -0
- pulumi_alicloud/compute/nest_service_instance.py +10 -10
- pulumi_alicloud/cs/_inputs.py +565 -0
- pulumi_alicloud/cs/autoscaling_config.py +260 -35
- pulumi_alicloud/cs/get_cluster_credential.py +30 -0
- pulumi_alicloud/cs/get_kubernetes_addon_metadata.py +78 -0
- pulumi_alicloud/cs/get_kubernetes_addons.py +72 -0
- pulumi_alicloud/cs/get_kubernetes_node_pools.py +124 -0
- pulumi_alicloud/cs/kubernetes.py +296 -0
- pulumi_alicloud/cs/kubernetes_addon.py +108 -0
- pulumi_alicloud/cs/kubernetes_permission.py +162 -0
- pulumi_alicloud/cs/managed_kubernetes.py +583 -14
- pulumi_alicloud/cs/node_pool.py +423 -0
- pulumi_alicloud/cs/outputs.py +374 -0
- pulumi_alicloud/dataworks/data_source_shared_rule.py +116 -0
- pulumi_alicloud/dataworks/dw_resource_group.py +82 -0
- pulumi_alicloud/dataworks/network.py +100 -0
- pulumi_alicloud/ddos/bgp_ip.py +57 -48
- pulumi_alicloud/ddos/ddos_bgp_instance.py +246 -106
- pulumi_alicloud/ddos/domain_resource.py +6 -6
- pulumi_alicloud/directmail/mail_address.py +62 -0
- pulumi_alicloud/directmail/receivers.py +40 -0
- pulumi_alicloud/dms/__init__.py +1 -0
- pulumi_alicloud/dms/enterprise_workspace.py +354 -0
- pulumi_alicloud/dns/access_strategy.py +152 -0
- pulumi_alicloud/dns/address_pool.py +4 -4
- pulumi_alicloud/dns/ddos_bgp_instance.py +246 -106
- pulumi_alicloud/dts/job_monitor_rule.py +228 -0
- pulumi_alicloud/dts/migration_job.py +238 -0
- pulumi_alicloud/dts/synchronization_job.py +266 -14
- pulumi_alicloud/ebs/disk_replica_pair.py +112 -0
- pulumi_alicloud/ecs/ecs_network_interface_permission.py +84 -0
- pulumi_alicloud/ecs/image_import.py +2 -2
- pulumi_alicloud/ecs/ram_role_attachment.py +28 -28
- pulumi_alicloud/edas/k8s_application.py +124 -0
- pulumi_alicloud/edas/k8s_cluster.py +104 -0
- pulumi_alicloud/edas/k8s_slb_attachment.py +152 -0
- pulumi_alicloud/eflo/__init__.py +2 -0
- pulumi_alicloud/eflo/_inputs.py +94 -0
- pulumi_alicloud/eflo/er.py +487 -0
- pulumi_alicloud/eflo/node.py +54 -7
- pulumi_alicloud/eflo/node_group_attachment.py +604 -0
- pulumi_alicloud/eflo/outputs.py +75 -0
- pulumi_alicloud/emr/cluster.py +64 -64
- pulumi_alicloud/emr/get_clusters.py +16 -16
- pulumi_alicloud/emrv2/cluster.py +16 -16
- pulumi_alicloud/emrv2/get_cluster_instances.py +16 -16
- pulumi_alicloud/esa/__init__.py +7 -0
- pulumi_alicloud/esa/kv_account.py +145 -0
- pulumi_alicloud/esa/origin_ca_certificate.py +441 -0
- pulumi_alicloud/esa/origin_client_certificate.py +564 -0
- pulumi_alicloud/esa/origin_protection.py +290 -0
- pulumi_alicloud/esa/routine_related_record.py +226 -0
- pulumi_alicloud/esa/site_origin_client_certificate.py +515 -0
- pulumi_alicloud/esa/url_observation.py +352 -0
- pulumi_alicloud/eventbridge/rule.py +102 -0
- pulumi_alicloud/fc/_inputs.py +77 -3
- pulumi_alicloud/fc/custom_domain.py +14 -14
- pulumi_alicloud/fc/function.py +14 -14
- pulumi_alicloud/fc/function_async_invoke_config.py +48 -48
- pulumi_alicloud/fc/get_service.py +2 -2
- pulumi_alicloud/fc/outputs.py +63 -2
- pulumi_alicloud/fc/trigger.py +100 -100
- pulumi_alicloud/fc/v3_async_invoke_config.py +154 -0
- pulumi_alicloud/fc/v3_function.py +189 -3
- pulumi_alicloud/fc/v3_function_version.py +30 -2
- pulumi_alicloud/fnf/execution.py +14 -14
- pulumi_alicloud/fnf/flow.py +14 -14
- pulumi_alicloud/ga/additional_certificate.py +236 -0
- pulumi_alicloud/gpdb/hadoop_data_source.py +16 -16
- pulumi_alicloud/gpdb/streaming_job.py +4 -4
- pulumi_alicloud/gwlb/listener.py +172 -0
- pulumi_alicloud/gwlb/load_balancer.py +96 -0
- pulumi_alicloud/gwlb/server_group.py +160 -0
- pulumi_alicloud/hbr/ecs_backup_plan.py +4 -4
- pulumi_alicloud/hbr/ots_backup_plan.py +28 -28
- pulumi_alicloud/hbr/restore_job.py +4 -4
- pulumi_alicloud/hologram/instance.py +35 -0
- pulumi_alicloud/imm/project.py +14 -14
- pulumi_alicloud/kms/get_aliases.py +6 -6
- pulumi_alicloud/kms/get_instances.py +178 -0
- pulumi_alicloud/kms/instance.py +470 -16
- pulumi_alicloud/kms/policy.py +96 -0
- pulumi_alicloud/log/dashboard.py +40 -40
- pulumi_alicloud/log/ingestion.py +38 -38
- pulumi_alicloud/log/log_tail_attachment.py +20 -20
- pulumi_alicloud/log/log_tail_config.py +20 -20
- pulumi_alicloud/log/oss_export.py +6 -0
- pulumi_alicloud/log/project.py +20 -20
- pulumi_alicloud/log/resource.py +22 -22
- pulumi_alicloud/log/resource_record.py +40 -40
- pulumi_alicloud/maxcompute/get_service.py +2 -2
- pulumi_alicloud/message/__init__.py +1 -0
- pulumi_alicloud/message/_inputs.py +141 -0
- pulumi_alicloud/message/outputs.py +120 -0
- pulumi_alicloud/message/service_event_rule.py +490 -0
- pulumi_alicloud/message/service_subscription.py +48 -1
- pulumi_alicloud/mongodb/__init__.py +1 -0
- pulumi_alicloud/mongodb/global_security_ip_group.py +304 -0
- pulumi_alicloud/mongodb/instance.py +47 -0
- pulumi_alicloud/mongodb/sharding_instance.py +385 -0
- pulumi_alicloud/msc_sub_webhook.py +44 -0
- pulumi_alicloud/mse/cluster.py +47 -0
- pulumi_alicloud/mse/gateway.py +62 -0
- pulumi_alicloud/nas/access_group.py +46 -18
- pulumi_alicloud/nas/access_rule.py +28 -0
- pulumi_alicloud/nas/data_flow.py +114 -0
- pulumi_alicloud/nlb/listener_additional_certificate_attachment.py +328 -0
- pulumi_alicloud/nlb/server_group.py +28 -21
- pulumi_alicloud/oos/execution.py +30 -30
- pulumi_alicloud/oos/get_parameters.py +10 -10
- pulumi_alicloud/oos/get_secret_parameters.py +10 -10
- pulumi_alicloud/oos/template.py +28 -28
- pulumi_alicloud/oss/bucket.py +634 -0
- pulumi_alicloud/oss/bucket_replication.py +56 -56
- pulumi_alicloud/outputs.py +489 -0
- pulumi_alicloud/pai/flow_pipeline.py +70 -70
- pulumi_alicloud/pai/workspace_datasetversion.py +108 -0
- pulumi_alicloud/pai/workspace_run.py +62 -0
- pulumi_alicloud/polardb/cluster.py +7 -7
- pulumi_alicloud/privatelink/vpc_endpoint.py +21 -7
- pulumi_alicloud/privatelink/vpc_endpoint_service.py +11 -11
- pulumi_alicloud/pulumi-plugin.json +1 -1
- pulumi_alicloud/pvtz/endpoint.py +96 -0
- pulumi_alicloud/pvtz/rule.py +122 -0
- pulumi_alicloud/pvtz/rule_attachment.py +150 -0
- pulumi_alicloud/ram/get_policies.py +18 -18
- pulumi_alicloud/ram/get_policy_document.py +2 -2
- pulumi_alicloud/ram/get_role_policy_attachments.py +34 -34
- pulumi_alicloud/ram/get_users.py +32 -32
- pulumi_alicloud/ram/group_membership.py +74 -0
- pulumi_alicloud/ram/group_policy_attachment.py +18 -18
- pulumi_alicloud/ram/policy.py +18 -18
- pulumi_alicloud/ram/role.py +16 -16
- pulumi_alicloud/ram/role_attachment.py +14 -14
- pulumi_alicloud/ram/role_policy_attachment.py +34 -34
- pulumi_alicloud/ram/user_policy_attachment.py +18 -18
- pulumi_alicloud/rds/get_instance_classes.py +6 -4
- pulumi_alicloud/rds/outputs.py +4 -0
- pulumi_alicloud/rds/rds_clone_db_instance.py +8 -1
- pulumi_alicloud/resourcemanager/__init__.py +1 -0
- pulumi_alicloud/resourcemanager/auto_grouping_rule.py +24 -24
- pulumi_alicloud/resourcemanager/control_policy.py +18 -18
- pulumi_alicloud/resourcemanager/control_policy_attachment.py +18 -18
- pulumi_alicloud/resourcemanager/delegated_administrator.py +22 -50
- pulumi_alicloud/resourcemanager/folder.py +106 -29
- pulumi_alicloud/resourcemanager/get_accounts.py +35 -18
- pulumi_alicloud/resourcemanager/get_shared_resources.py +64 -0
- pulumi_alicloud/resourcemanager/message_contact.py +572 -0
- pulumi_alicloud/resourcemanager/outputs.py +31 -20
- pulumi_alicloud/resourcemanager/policy.py +16 -16
- pulumi_alicloud/resourcemanager/policy_attachment.py +82 -0
- pulumi_alicloud/resourcemanager/policy_version.py +32 -32
- pulumi_alicloud/resourcemanager/resource_directory.py +137 -46
- pulumi_alicloud/resourcemanager/role.py +14 -14
- pulumi_alicloud/resourcemanager/shared_resource.py +81 -45
- pulumi_alicloud/resourcemanager/shared_target.py +60 -24
- pulumi_alicloud/rocketmq/qos_policy.py +70 -0
- pulumi_alicloud/ros/_inputs.py +70 -18
- pulumi_alicloud/ros/outputs.py +59 -12
- pulumi_alicloud/ros/stack.py +14 -14
- pulumi_alicloud/ros/stack_group.py +342 -223
- pulumi_alicloud/ros/template.py +2 -2
- pulumi_alicloud/sag/qos_policy.py +70 -0
- pulumi_alicloud/sddp/data_limit.py +148 -0
- pulumi_alicloud/sddp/rule.py +10 -10
- pulumi_alicloud/servicecatalog/principal_portfolio_association.py +16 -16
- pulumi_alicloud/servicecatalog/product_portfolio_association.py +54 -0
- pulumi_alicloud/sls/__init__.py +5 -0
- pulumi_alicloud/sls/_inputs.py +128 -0
- pulumi_alicloud/sls/collection_policy.py +276 -0
- pulumi_alicloud/sls/get_etls.py +294 -0
- pulumi_alicloud/sls/get_logtail_configs.py +395 -0
- pulumi_alicloud/sls/get_machine_groups.py +229 -0
- pulumi_alicloud/sls/logtail_config.py +692 -0
- pulumi_alicloud/sls/machine_group.py +502 -0
- pulumi_alicloud/sls/oss_export_sink.py +134 -0
- pulumi_alicloud/sls/outputs.py +449 -0
- pulumi_alicloud/sslcertificatesservice/__init__.py +9 -0
- pulumi_alicloud/sslcertificatesservice/pca_certificate.py +646 -0
- pulumi_alicloud/star_rocks_instance.py +1425 -0
- pulumi_alicloud/tag/policy.py +2 -2
- pulumi_alicloud/tag/policy_attachment.py +2 -2
- pulumi_alicloud/threatdetection/__init__.py +1 -0
- pulumi_alicloud/threatdetection/_inputs.py +183 -0
- pulumi_alicloud/threatdetection/anti_brute_force_rule.py +50 -1
- pulumi_alicloud/threatdetection/attack_path_sensitive_asset_config.py +218 -0
- pulumi_alicloud/threatdetection/image_event_operation.py +191 -90
- pulumi_alicloud/threatdetection/oss_scan_config.py +257 -65
- pulumi_alicloud/threatdetection/outputs.py +147 -0
- pulumi_alicloud/vod/editing_project.py +8 -8
- pulumi_alicloud/vpc/_inputs.py +87 -54
- pulumi_alicloud/vpc/common_bandwith_package.py +28 -0
- pulumi_alicloud/vpc/dhcp_options_set.py +97 -58
- pulumi_alicloud/vpc/flow_log.py +117 -25
- pulumi_alicloud/vpc/gateway_endpoint.py +12 -12
- pulumi_alicloud/vpc/gateway_endpoint_route_table_attachment.py +12 -12
- pulumi_alicloud/vpc/ha_vip_attachment.py +41 -60
- pulumi_alicloud/vpc/ha_vipv2.py +100 -88
- pulumi_alicloud/vpc/ipam_ipam_pool.py +54 -0
- pulumi_alicloud/vpc/network_acl.py +34 -23
- pulumi_alicloud/vpc/outputs.py +58 -36
- pulumi_alicloud/vpc/route_entry.py +6 -2
- pulumi_alicloud/vpc/vbr_ha.py +100 -0
- pulumi_alicloud/vpc/vpc_network_acl_attachment.py +48 -0
- pulumi_alicloud/vpn/get_gateways.py +98 -0
- pulumi_alicloud/vpn/ssl_vpn_client_cert.py +82 -0
- pulumi_alicloud/vpn/ssl_vpn_server.py +76 -0
- pulumi_alicloud/wafv3/__init__.py +1 -0
- pulumi_alicloud/wafv3/_inputs.py +1318 -182
- pulumi_alicloud/wafv3/defense_rule.py +806 -0
- pulumi_alicloud/wafv3/defense_template.py +87 -124
- pulumi_alicloud/wafv3/domain.py +136 -35
- pulumi_alicloud/wafv3/outputs.py +925 -123
- {pulumi_alicloud-3.84.0a1756507491.dist-info → pulumi_alicloud-3.85.0a1757389637.dist-info}/METADATA +1 -1
- {pulumi_alicloud-3.84.0a1756507491.dist-info → pulumi_alicloud-3.85.0a1757389637.dist-info}/RECORD +283 -251
- {pulumi_alicloud-3.84.0a1756507491.dist-info → pulumi_alicloud-3.85.0a1757389637.dist-info}/WHEEL +0 -0
- {pulumi_alicloud-3.84.0a1756507491.dist-info → pulumi_alicloud-3.85.0a1757389637.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,806 @@
|
|
|
1
|
+
# coding=utf-8
|
|
2
|
+
# *** WARNING: this file was generated by pulumi-language-python. ***
|
|
3
|
+
# *** Do not edit by hand unless you're certain you know what you are doing! ***
|
|
4
|
+
|
|
5
|
+
import builtins as _builtins
|
|
6
|
+
import warnings
|
|
7
|
+
import sys
|
|
8
|
+
import pulumi
|
|
9
|
+
import pulumi.runtime
|
|
10
|
+
from typing import Any, Mapping, Optional, Sequence, Union, overload
|
|
11
|
+
if sys.version_info >= (3, 11):
|
|
12
|
+
from typing import NotRequired, TypedDict, TypeAlias
|
|
13
|
+
else:
|
|
14
|
+
from typing_extensions import NotRequired, TypedDict, TypeAlias
|
|
15
|
+
from .. import _utilities
|
|
16
|
+
from . import outputs
|
|
17
|
+
from ._inputs import *
|
|
18
|
+
|
|
19
|
+
__all__ = ['DefenseRuleArgs', 'DefenseRule']
|
|
20
|
+
|
|
21
|
+
@pulumi.input_type
|
|
22
|
+
class DefenseRuleArgs:
|
|
23
|
+
def __init__(__self__, *,
|
|
24
|
+
config: pulumi.Input['DefenseRuleConfigArgs'],
|
|
25
|
+
defense_scene: pulumi.Input[_builtins.str],
|
|
26
|
+
defense_type: pulumi.Input[_builtins.str],
|
|
27
|
+
instance_id: pulumi.Input[_builtins.str],
|
|
28
|
+
defense_origin: Optional[pulumi.Input[_builtins.str]] = None,
|
|
29
|
+
resource: Optional[pulumi.Input[_builtins.str]] = None,
|
|
30
|
+
rule_name: Optional[pulumi.Input[_builtins.str]] = None,
|
|
31
|
+
rule_status: Optional[pulumi.Input[_builtins.int]] = None,
|
|
32
|
+
template_id: Optional[pulumi.Input[_builtins.int]] = None):
|
|
33
|
+
"""
|
|
34
|
+
The set of arguments for constructing a DefenseRule resource.
|
|
35
|
+
:param pulumi.Input['DefenseRuleConfigArgs'] config: Rule configuration content, in JSON format, constructed with a series of parameters.
|
|
36
|
+
|
|
37
|
+
> **NOTE:** Depending on the specified **protection rule type**(`DefenseScene`), the specific parameters vary. For more information, see **Protection Rule Parameter Description**.
|
|
38
|
+
See `config` below.
|
|
39
|
+
:param pulumi.Input[_builtins.str] defense_scene: The WAF protection scenario to be created.
|
|
40
|
+
|
|
41
|
+
When the protection rule type `DefenseType` is set to `template`, the value is as follows:
|
|
42
|
+
:param pulumi.Input[_builtins.str] defense_type: The protection rule type. Value:
|
|
43
|
+
:param pulumi.Input[_builtins.str] instance_id: The ID of the Web Application Firewall (WAF) instance.
|
|
44
|
+
:param pulumi.Input[_builtins.str] defense_origin: Sources of protection. Value:
|
|
45
|
+
:param pulumi.Input[_builtins.str] resource: The protection object corresponding to the rule to be queried.
|
|
46
|
+
|
|
47
|
+
> **NOTE:** This parameter is required only when `DefenseType` is set to `resource`.
|
|
48
|
+
:param pulumi.Input[_builtins.str] rule_name: The rule name.
|
|
49
|
+
:param pulumi.Input[_builtins.int] rule_status: Protection rule status.
|
|
50
|
+
:param pulumi.Input[_builtins.int] template_id: The protection template ID of the protection rule to be created.
|
|
51
|
+
"""
|
|
52
|
+
pulumi.set(__self__, "config", config)
|
|
53
|
+
pulumi.set(__self__, "defense_scene", defense_scene)
|
|
54
|
+
pulumi.set(__self__, "defense_type", defense_type)
|
|
55
|
+
pulumi.set(__self__, "instance_id", instance_id)
|
|
56
|
+
if defense_origin is not None:
|
|
57
|
+
pulumi.set(__self__, "defense_origin", defense_origin)
|
|
58
|
+
if resource is not None:
|
|
59
|
+
pulumi.set(__self__, "resource", resource)
|
|
60
|
+
if rule_name is not None:
|
|
61
|
+
pulumi.set(__self__, "rule_name", rule_name)
|
|
62
|
+
if rule_status is not None:
|
|
63
|
+
pulumi.set(__self__, "rule_status", rule_status)
|
|
64
|
+
if template_id is not None:
|
|
65
|
+
pulumi.set(__self__, "template_id", template_id)
|
|
66
|
+
|
|
67
|
+
@_builtins.property
|
|
68
|
+
@pulumi.getter
|
|
69
|
+
def config(self) -> pulumi.Input['DefenseRuleConfigArgs']:
|
|
70
|
+
"""
|
|
71
|
+
Rule configuration content, in JSON format, constructed with a series of parameters.
|
|
72
|
+
|
|
73
|
+
> **NOTE:** Depending on the specified **protection rule type**(`DefenseScene`), the specific parameters vary. For more information, see **Protection Rule Parameter Description**.
|
|
74
|
+
See `config` below.
|
|
75
|
+
"""
|
|
76
|
+
return pulumi.get(self, "config")
|
|
77
|
+
|
|
78
|
+
@config.setter
|
|
79
|
+
def config(self, value: pulumi.Input['DefenseRuleConfigArgs']):
|
|
80
|
+
pulumi.set(self, "config", value)
|
|
81
|
+
|
|
82
|
+
@_builtins.property
|
|
83
|
+
@pulumi.getter(name="defenseScene")
|
|
84
|
+
def defense_scene(self) -> pulumi.Input[_builtins.str]:
|
|
85
|
+
"""
|
|
86
|
+
The WAF protection scenario to be created.
|
|
87
|
+
|
|
88
|
+
When the protection rule type `DefenseType` is set to `template`, the value is as follows:
|
|
89
|
+
"""
|
|
90
|
+
return pulumi.get(self, "defense_scene")
|
|
91
|
+
|
|
92
|
+
@defense_scene.setter
|
|
93
|
+
def defense_scene(self, value: pulumi.Input[_builtins.str]):
|
|
94
|
+
pulumi.set(self, "defense_scene", value)
|
|
95
|
+
|
|
96
|
+
@_builtins.property
|
|
97
|
+
@pulumi.getter(name="defenseType")
|
|
98
|
+
def defense_type(self) -> pulumi.Input[_builtins.str]:
|
|
99
|
+
"""
|
|
100
|
+
The protection rule type. Value:
|
|
101
|
+
"""
|
|
102
|
+
return pulumi.get(self, "defense_type")
|
|
103
|
+
|
|
104
|
+
@defense_type.setter
|
|
105
|
+
def defense_type(self, value: pulumi.Input[_builtins.str]):
|
|
106
|
+
pulumi.set(self, "defense_type", value)
|
|
107
|
+
|
|
108
|
+
@_builtins.property
|
|
109
|
+
@pulumi.getter(name="instanceId")
|
|
110
|
+
def instance_id(self) -> pulumi.Input[_builtins.str]:
|
|
111
|
+
"""
|
|
112
|
+
The ID of the Web Application Firewall (WAF) instance.
|
|
113
|
+
"""
|
|
114
|
+
return pulumi.get(self, "instance_id")
|
|
115
|
+
|
|
116
|
+
@instance_id.setter
|
|
117
|
+
def instance_id(self, value: pulumi.Input[_builtins.str]):
|
|
118
|
+
pulumi.set(self, "instance_id", value)
|
|
119
|
+
|
|
120
|
+
@_builtins.property
|
|
121
|
+
@pulumi.getter(name="defenseOrigin")
|
|
122
|
+
def defense_origin(self) -> Optional[pulumi.Input[_builtins.str]]:
|
|
123
|
+
"""
|
|
124
|
+
Sources of protection. Value:
|
|
125
|
+
"""
|
|
126
|
+
return pulumi.get(self, "defense_origin")
|
|
127
|
+
|
|
128
|
+
@defense_origin.setter
|
|
129
|
+
def defense_origin(self, value: Optional[pulumi.Input[_builtins.str]]):
|
|
130
|
+
pulumi.set(self, "defense_origin", value)
|
|
131
|
+
|
|
132
|
+
@_builtins.property
|
|
133
|
+
@pulumi.getter
|
|
134
|
+
def resource(self) -> Optional[pulumi.Input[_builtins.str]]:
|
|
135
|
+
"""
|
|
136
|
+
The protection object corresponding to the rule to be queried.
|
|
137
|
+
|
|
138
|
+
> **NOTE:** This parameter is required only when `DefenseType` is set to `resource`.
|
|
139
|
+
"""
|
|
140
|
+
return pulumi.get(self, "resource")
|
|
141
|
+
|
|
142
|
+
@resource.setter
|
|
143
|
+
def resource(self, value: Optional[pulumi.Input[_builtins.str]]):
|
|
144
|
+
pulumi.set(self, "resource", value)
|
|
145
|
+
|
|
146
|
+
@_builtins.property
|
|
147
|
+
@pulumi.getter(name="ruleName")
|
|
148
|
+
def rule_name(self) -> Optional[pulumi.Input[_builtins.str]]:
|
|
149
|
+
"""
|
|
150
|
+
The rule name.
|
|
151
|
+
"""
|
|
152
|
+
return pulumi.get(self, "rule_name")
|
|
153
|
+
|
|
154
|
+
@rule_name.setter
|
|
155
|
+
def rule_name(self, value: Optional[pulumi.Input[_builtins.str]]):
|
|
156
|
+
pulumi.set(self, "rule_name", value)
|
|
157
|
+
|
|
158
|
+
@_builtins.property
|
|
159
|
+
@pulumi.getter(name="ruleStatus")
|
|
160
|
+
def rule_status(self) -> Optional[pulumi.Input[_builtins.int]]:
|
|
161
|
+
"""
|
|
162
|
+
Protection rule status.
|
|
163
|
+
"""
|
|
164
|
+
return pulumi.get(self, "rule_status")
|
|
165
|
+
|
|
166
|
+
@rule_status.setter
|
|
167
|
+
def rule_status(self, value: Optional[pulumi.Input[_builtins.int]]):
|
|
168
|
+
pulumi.set(self, "rule_status", value)
|
|
169
|
+
|
|
170
|
+
@_builtins.property
|
|
171
|
+
@pulumi.getter(name="templateId")
|
|
172
|
+
def template_id(self) -> Optional[pulumi.Input[_builtins.int]]:
|
|
173
|
+
"""
|
|
174
|
+
The protection template ID of the protection rule to be created.
|
|
175
|
+
"""
|
|
176
|
+
return pulumi.get(self, "template_id")
|
|
177
|
+
|
|
178
|
+
@template_id.setter
|
|
179
|
+
def template_id(self, value: Optional[pulumi.Input[_builtins.int]]):
|
|
180
|
+
pulumi.set(self, "template_id", value)
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
@pulumi.input_type
|
|
184
|
+
class _DefenseRuleState:
|
|
185
|
+
def __init__(__self__, *,
|
|
186
|
+
config: Optional[pulumi.Input['DefenseRuleConfigArgs']] = None,
|
|
187
|
+
defense_origin: Optional[pulumi.Input[_builtins.str]] = None,
|
|
188
|
+
defense_scene: Optional[pulumi.Input[_builtins.str]] = None,
|
|
189
|
+
defense_type: Optional[pulumi.Input[_builtins.str]] = None,
|
|
190
|
+
instance_id: Optional[pulumi.Input[_builtins.str]] = None,
|
|
191
|
+
resource: Optional[pulumi.Input[_builtins.str]] = None,
|
|
192
|
+
rule_id: Optional[pulumi.Input[_builtins.int]] = None,
|
|
193
|
+
rule_name: Optional[pulumi.Input[_builtins.str]] = None,
|
|
194
|
+
rule_status: Optional[pulumi.Input[_builtins.int]] = None,
|
|
195
|
+
template_id: Optional[pulumi.Input[_builtins.int]] = None):
|
|
196
|
+
"""
|
|
197
|
+
Input properties used for looking up and filtering DefenseRule resources.
|
|
198
|
+
:param pulumi.Input['DefenseRuleConfigArgs'] config: Rule configuration content, in JSON format, constructed with a series of parameters.
|
|
199
|
+
|
|
200
|
+
> **NOTE:** Depending on the specified **protection rule type**(`DefenseScene`), the specific parameters vary. For more information, see **Protection Rule Parameter Description**.
|
|
201
|
+
See `config` below.
|
|
202
|
+
:param pulumi.Input[_builtins.str] defense_origin: Sources of protection. Value:
|
|
203
|
+
:param pulumi.Input[_builtins.str] defense_scene: The WAF protection scenario to be created.
|
|
204
|
+
|
|
205
|
+
When the protection rule type `DefenseType` is set to `template`, the value is as follows:
|
|
206
|
+
:param pulumi.Input[_builtins.str] defense_type: The protection rule type. Value:
|
|
207
|
+
:param pulumi.Input[_builtins.str] instance_id: The ID of the Web Application Firewall (WAF) instance.
|
|
208
|
+
:param pulumi.Input[_builtins.str] resource: The protection object corresponding to the rule to be queried.
|
|
209
|
+
|
|
210
|
+
> **NOTE:** This parameter is required only when `DefenseType` is set to `resource`.
|
|
211
|
+
:param pulumi.Input[_builtins.int] rule_id: The protection rule ID.
|
|
212
|
+
:param pulumi.Input[_builtins.str] rule_name: The rule name.
|
|
213
|
+
:param pulumi.Input[_builtins.int] rule_status: Protection rule status.
|
|
214
|
+
:param pulumi.Input[_builtins.int] template_id: The protection template ID of the protection rule to be created.
|
|
215
|
+
"""
|
|
216
|
+
if config is not None:
|
|
217
|
+
pulumi.set(__self__, "config", config)
|
|
218
|
+
if defense_origin is not None:
|
|
219
|
+
pulumi.set(__self__, "defense_origin", defense_origin)
|
|
220
|
+
if defense_scene is not None:
|
|
221
|
+
pulumi.set(__self__, "defense_scene", defense_scene)
|
|
222
|
+
if defense_type is not None:
|
|
223
|
+
pulumi.set(__self__, "defense_type", defense_type)
|
|
224
|
+
if instance_id is not None:
|
|
225
|
+
pulumi.set(__self__, "instance_id", instance_id)
|
|
226
|
+
if resource is not None:
|
|
227
|
+
pulumi.set(__self__, "resource", resource)
|
|
228
|
+
if rule_id is not None:
|
|
229
|
+
pulumi.set(__self__, "rule_id", rule_id)
|
|
230
|
+
if rule_name is not None:
|
|
231
|
+
pulumi.set(__self__, "rule_name", rule_name)
|
|
232
|
+
if rule_status is not None:
|
|
233
|
+
pulumi.set(__self__, "rule_status", rule_status)
|
|
234
|
+
if template_id is not None:
|
|
235
|
+
pulumi.set(__self__, "template_id", template_id)
|
|
236
|
+
|
|
237
|
+
@_builtins.property
|
|
238
|
+
@pulumi.getter
|
|
239
|
+
def config(self) -> Optional[pulumi.Input['DefenseRuleConfigArgs']]:
|
|
240
|
+
"""
|
|
241
|
+
Rule configuration content, in JSON format, constructed with a series of parameters.
|
|
242
|
+
|
|
243
|
+
> **NOTE:** Depending on the specified **protection rule type**(`DefenseScene`), the specific parameters vary. For more information, see **Protection Rule Parameter Description**.
|
|
244
|
+
See `config` below.
|
|
245
|
+
"""
|
|
246
|
+
return pulumi.get(self, "config")
|
|
247
|
+
|
|
248
|
+
@config.setter
|
|
249
|
+
def config(self, value: Optional[pulumi.Input['DefenseRuleConfigArgs']]):
|
|
250
|
+
pulumi.set(self, "config", value)
|
|
251
|
+
|
|
252
|
+
@_builtins.property
|
|
253
|
+
@pulumi.getter(name="defenseOrigin")
|
|
254
|
+
def defense_origin(self) -> Optional[pulumi.Input[_builtins.str]]:
|
|
255
|
+
"""
|
|
256
|
+
Sources of protection. Value:
|
|
257
|
+
"""
|
|
258
|
+
return pulumi.get(self, "defense_origin")
|
|
259
|
+
|
|
260
|
+
@defense_origin.setter
|
|
261
|
+
def defense_origin(self, value: Optional[pulumi.Input[_builtins.str]]):
|
|
262
|
+
pulumi.set(self, "defense_origin", value)
|
|
263
|
+
|
|
264
|
+
@_builtins.property
|
|
265
|
+
@pulumi.getter(name="defenseScene")
|
|
266
|
+
def defense_scene(self) -> Optional[pulumi.Input[_builtins.str]]:
|
|
267
|
+
"""
|
|
268
|
+
The WAF protection scenario to be created.
|
|
269
|
+
|
|
270
|
+
When the protection rule type `DefenseType` is set to `template`, the value is as follows:
|
|
271
|
+
"""
|
|
272
|
+
return pulumi.get(self, "defense_scene")
|
|
273
|
+
|
|
274
|
+
@defense_scene.setter
|
|
275
|
+
def defense_scene(self, value: Optional[pulumi.Input[_builtins.str]]):
|
|
276
|
+
pulumi.set(self, "defense_scene", value)
|
|
277
|
+
|
|
278
|
+
@_builtins.property
|
|
279
|
+
@pulumi.getter(name="defenseType")
|
|
280
|
+
def defense_type(self) -> Optional[pulumi.Input[_builtins.str]]:
|
|
281
|
+
"""
|
|
282
|
+
The protection rule type. Value:
|
|
283
|
+
"""
|
|
284
|
+
return pulumi.get(self, "defense_type")
|
|
285
|
+
|
|
286
|
+
@defense_type.setter
|
|
287
|
+
def defense_type(self, value: Optional[pulumi.Input[_builtins.str]]):
|
|
288
|
+
pulumi.set(self, "defense_type", value)
|
|
289
|
+
|
|
290
|
+
@_builtins.property
|
|
291
|
+
@pulumi.getter(name="instanceId")
|
|
292
|
+
def instance_id(self) -> Optional[pulumi.Input[_builtins.str]]:
|
|
293
|
+
"""
|
|
294
|
+
The ID of the Web Application Firewall (WAF) instance.
|
|
295
|
+
"""
|
|
296
|
+
return pulumi.get(self, "instance_id")
|
|
297
|
+
|
|
298
|
+
@instance_id.setter
|
|
299
|
+
def instance_id(self, value: Optional[pulumi.Input[_builtins.str]]):
|
|
300
|
+
pulumi.set(self, "instance_id", value)
|
|
301
|
+
|
|
302
|
+
@_builtins.property
|
|
303
|
+
@pulumi.getter
|
|
304
|
+
def resource(self) -> Optional[pulumi.Input[_builtins.str]]:
|
|
305
|
+
"""
|
|
306
|
+
The protection object corresponding to the rule to be queried.
|
|
307
|
+
|
|
308
|
+
> **NOTE:** This parameter is required only when `DefenseType` is set to `resource`.
|
|
309
|
+
"""
|
|
310
|
+
return pulumi.get(self, "resource")
|
|
311
|
+
|
|
312
|
+
@resource.setter
|
|
313
|
+
def resource(self, value: Optional[pulumi.Input[_builtins.str]]):
|
|
314
|
+
pulumi.set(self, "resource", value)
|
|
315
|
+
|
|
316
|
+
@_builtins.property
|
|
317
|
+
@pulumi.getter(name="ruleId")
|
|
318
|
+
def rule_id(self) -> Optional[pulumi.Input[_builtins.int]]:
|
|
319
|
+
"""
|
|
320
|
+
The protection rule ID.
|
|
321
|
+
"""
|
|
322
|
+
return pulumi.get(self, "rule_id")
|
|
323
|
+
|
|
324
|
+
@rule_id.setter
|
|
325
|
+
def rule_id(self, value: Optional[pulumi.Input[_builtins.int]]):
|
|
326
|
+
pulumi.set(self, "rule_id", value)
|
|
327
|
+
|
|
328
|
+
@_builtins.property
|
|
329
|
+
@pulumi.getter(name="ruleName")
|
|
330
|
+
def rule_name(self) -> Optional[pulumi.Input[_builtins.str]]:
|
|
331
|
+
"""
|
|
332
|
+
The rule name.
|
|
333
|
+
"""
|
|
334
|
+
return pulumi.get(self, "rule_name")
|
|
335
|
+
|
|
336
|
+
@rule_name.setter
|
|
337
|
+
def rule_name(self, value: Optional[pulumi.Input[_builtins.str]]):
|
|
338
|
+
pulumi.set(self, "rule_name", value)
|
|
339
|
+
|
|
340
|
+
@_builtins.property
|
|
341
|
+
@pulumi.getter(name="ruleStatus")
|
|
342
|
+
def rule_status(self) -> Optional[pulumi.Input[_builtins.int]]:
|
|
343
|
+
"""
|
|
344
|
+
Protection rule status.
|
|
345
|
+
"""
|
|
346
|
+
return pulumi.get(self, "rule_status")
|
|
347
|
+
|
|
348
|
+
@rule_status.setter
|
|
349
|
+
def rule_status(self, value: Optional[pulumi.Input[_builtins.int]]):
|
|
350
|
+
pulumi.set(self, "rule_status", value)
|
|
351
|
+
|
|
352
|
+
@_builtins.property
|
|
353
|
+
@pulumi.getter(name="templateId")
|
|
354
|
+
def template_id(self) -> Optional[pulumi.Input[_builtins.int]]:
|
|
355
|
+
"""
|
|
356
|
+
The protection template ID of the protection rule to be created.
|
|
357
|
+
"""
|
|
358
|
+
return pulumi.get(self, "template_id")
|
|
359
|
+
|
|
360
|
+
@template_id.setter
|
|
361
|
+
def template_id(self, value: Optional[pulumi.Input[_builtins.int]]):
|
|
362
|
+
pulumi.set(self, "template_id", value)
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
@pulumi.type_token("alicloud:wafv3/defenseRule:DefenseRule")
|
|
366
|
+
class DefenseRule(pulumi.CustomResource):
|
|
367
|
+
@overload
|
|
368
|
+
def __init__(__self__,
|
|
369
|
+
resource_name: str,
|
|
370
|
+
opts: Optional[pulumi.ResourceOptions] = None,
|
|
371
|
+
config: Optional[pulumi.Input[Union['DefenseRuleConfigArgs', 'DefenseRuleConfigArgsDict']]] = None,
|
|
372
|
+
defense_origin: Optional[pulumi.Input[_builtins.str]] = None,
|
|
373
|
+
defense_scene: Optional[pulumi.Input[_builtins.str]] = None,
|
|
374
|
+
defense_type: Optional[pulumi.Input[_builtins.str]] = None,
|
|
375
|
+
instance_id: Optional[pulumi.Input[_builtins.str]] = None,
|
|
376
|
+
resource: Optional[pulumi.Input[_builtins.str]] = None,
|
|
377
|
+
rule_name: Optional[pulumi.Input[_builtins.str]] = None,
|
|
378
|
+
rule_status: Optional[pulumi.Input[_builtins.int]] = None,
|
|
379
|
+
template_id: Optional[pulumi.Input[_builtins.int]] = None,
|
|
380
|
+
__props__=None):
|
|
381
|
+
"""
|
|
382
|
+
Provides a WAFV3 Defense Rule resource.
|
|
383
|
+
|
|
384
|
+
For information about WAFV3 Defense Rule and how to use it, see [What is Defense Rule](https://next.api.alibabacloud.com/document/waf-openapi/2021-10-01/CreateDefenseRule).
|
|
385
|
+
|
|
386
|
+
> **NOTE:** Available since v1.257.0.
|
|
387
|
+
|
|
388
|
+
## Example Usage
|
|
389
|
+
|
|
390
|
+
Basic Usage
|
|
391
|
+
|
|
392
|
+
```python
|
|
393
|
+
import pulumi
|
|
394
|
+
import pulumi_alicloud as alicloud
|
|
395
|
+
|
|
396
|
+
config = pulumi.Config()
|
|
397
|
+
name = config.get("name")
|
|
398
|
+
if name is None:
|
|
399
|
+
name = "tfaccwafv310619"
|
|
400
|
+
region_id = config.get("regionId")
|
|
401
|
+
if region_id is None:
|
|
402
|
+
region_id = "cn-hangzhou"
|
|
403
|
+
default = alicloud.wafv3.get_instances()
|
|
404
|
+
default_domain = alicloud.wafv3.Domain("default",
|
|
405
|
+
instance_id=default.ids[0],
|
|
406
|
+
listen={
|
|
407
|
+
"protection_resource": "share",
|
|
408
|
+
"http_ports": [
|
|
409
|
+
81,
|
|
410
|
+
82,
|
|
411
|
+
83,
|
|
412
|
+
],
|
|
413
|
+
"https_ports": [],
|
|
414
|
+
"xff_header_mode": 2,
|
|
415
|
+
"xff_headers": [
|
|
416
|
+
"examplea",
|
|
417
|
+
"exampleb",
|
|
418
|
+
"examplec",
|
|
419
|
+
],
|
|
420
|
+
"custom_ciphers": [],
|
|
421
|
+
"ipv6_enabled": True,
|
|
422
|
+
},
|
|
423
|
+
redirect={
|
|
424
|
+
"keepalive_timeout": 15,
|
|
425
|
+
"backends": [
|
|
426
|
+
"1.1.1.1",
|
|
427
|
+
"3.3.3.3",
|
|
428
|
+
"2.2.2.2",
|
|
429
|
+
],
|
|
430
|
+
"write_timeout": 5,
|
|
431
|
+
"keepalive_requests": 1000,
|
|
432
|
+
"request_headers": [
|
|
433
|
+
{
|
|
434
|
+
"key": "examplekey1",
|
|
435
|
+
"value": "exampleValue1",
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
"key": "key1",
|
|
439
|
+
"value": "value1",
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
"key": "key22",
|
|
443
|
+
"value": "value22",
|
|
444
|
+
},
|
|
445
|
+
],
|
|
446
|
+
"loadbalance": "iphash",
|
|
447
|
+
"focus_http_backend": False,
|
|
448
|
+
"sni_enabled": False,
|
|
449
|
+
"connect_timeout": 5,
|
|
450
|
+
"read_timeout": 5,
|
|
451
|
+
"keepalive": True,
|
|
452
|
+
"retry": True,
|
|
453
|
+
},
|
|
454
|
+
domain="zcexample_250746.wafqax.top",
|
|
455
|
+
access_type="share")
|
|
456
|
+
default_defense_rule = alicloud.wafv3.DefenseRule("default",
|
|
457
|
+
defense_origin="custom",
|
|
458
|
+
config={
|
|
459
|
+
"account_identifiers": [{
|
|
460
|
+
"priority": 2,
|
|
461
|
+
"decode_type": "jwt",
|
|
462
|
+
"key": "Query-Arg",
|
|
463
|
+
"sub_key": "adb",
|
|
464
|
+
"position": "jwt",
|
|
465
|
+
}],
|
|
466
|
+
},
|
|
467
|
+
instance_id=default.ids[0],
|
|
468
|
+
defense_type="resource",
|
|
469
|
+
defense_scene="account_identifier",
|
|
470
|
+
rule_status=1,
|
|
471
|
+
resource=default_domain.domain_id)
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
## Import
|
|
475
|
+
|
|
476
|
+
WAFV3 Defense Rule can be imported using the id, e.g.
|
|
477
|
+
|
|
478
|
+
```sh
|
|
479
|
+
$ pulumi import alicloud:wafv3/defenseRule:DefenseRule example <instance_id>:<defense_type>:<rule_id>
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
:param str resource_name: The name of the resource.
|
|
483
|
+
:param pulumi.ResourceOptions opts: Options for the resource.
|
|
484
|
+
:param pulumi.Input[Union['DefenseRuleConfigArgs', 'DefenseRuleConfigArgsDict']] config: Rule configuration content, in JSON format, constructed with a series of parameters.
|
|
485
|
+
|
|
486
|
+
> **NOTE:** Depending on the specified **protection rule type**(`DefenseScene`), the specific parameters vary. For more information, see **Protection Rule Parameter Description**.
|
|
487
|
+
See `config` below.
|
|
488
|
+
:param pulumi.Input[_builtins.str] defense_origin: Sources of protection. Value:
|
|
489
|
+
:param pulumi.Input[_builtins.str] defense_scene: The WAF protection scenario to be created.
|
|
490
|
+
|
|
491
|
+
When the protection rule type `DefenseType` is set to `template`, the value is as follows:
|
|
492
|
+
:param pulumi.Input[_builtins.str] defense_type: The protection rule type. Value:
|
|
493
|
+
:param pulumi.Input[_builtins.str] instance_id: The ID of the Web Application Firewall (WAF) instance.
|
|
494
|
+
:param pulumi.Input[_builtins.str] resource: The protection object corresponding to the rule to be queried.
|
|
495
|
+
|
|
496
|
+
> **NOTE:** This parameter is required only when `DefenseType` is set to `resource`.
|
|
497
|
+
:param pulumi.Input[_builtins.str] rule_name: The rule name.
|
|
498
|
+
:param pulumi.Input[_builtins.int] rule_status: Protection rule status.
|
|
499
|
+
:param pulumi.Input[_builtins.int] template_id: The protection template ID of the protection rule to be created.
|
|
500
|
+
"""
|
|
501
|
+
...
|
|
502
|
+
@overload
|
|
503
|
+
def __init__(__self__,
|
|
504
|
+
resource_name: str,
|
|
505
|
+
args: DefenseRuleArgs,
|
|
506
|
+
opts: Optional[pulumi.ResourceOptions] = None):
|
|
507
|
+
"""
|
|
508
|
+
Provides a WAFV3 Defense Rule resource.
|
|
509
|
+
|
|
510
|
+
For information about WAFV3 Defense Rule and how to use it, see [What is Defense Rule](https://next.api.alibabacloud.com/document/waf-openapi/2021-10-01/CreateDefenseRule).
|
|
511
|
+
|
|
512
|
+
> **NOTE:** Available since v1.257.0.
|
|
513
|
+
|
|
514
|
+
## Example Usage
|
|
515
|
+
|
|
516
|
+
Basic Usage
|
|
517
|
+
|
|
518
|
+
```python
|
|
519
|
+
import pulumi
|
|
520
|
+
import pulumi_alicloud as alicloud
|
|
521
|
+
|
|
522
|
+
config = pulumi.Config()
|
|
523
|
+
name = config.get("name")
|
|
524
|
+
if name is None:
|
|
525
|
+
name = "tfaccwafv310619"
|
|
526
|
+
region_id = config.get("regionId")
|
|
527
|
+
if region_id is None:
|
|
528
|
+
region_id = "cn-hangzhou"
|
|
529
|
+
default = alicloud.wafv3.get_instances()
|
|
530
|
+
default_domain = alicloud.wafv3.Domain("default",
|
|
531
|
+
instance_id=default.ids[0],
|
|
532
|
+
listen={
|
|
533
|
+
"protection_resource": "share",
|
|
534
|
+
"http_ports": [
|
|
535
|
+
81,
|
|
536
|
+
82,
|
|
537
|
+
83,
|
|
538
|
+
],
|
|
539
|
+
"https_ports": [],
|
|
540
|
+
"xff_header_mode": 2,
|
|
541
|
+
"xff_headers": [
|
|
542
|
+
"examplea",
|
|
543
|
+
"exampleb",
|
|
544
|
+
"examplec",
|
|
545
|
+
],
|
|
546
|
+
"custom_ciphers": [],
|
|
547
|
+
"ipv6_enabled": True,
|
|
548
|
+
},
|
|
549
|
+
redirect={
|
|
550
|
+
"keepalive_timeout": 15,
|
|
551
|
+
"backends": [
|
|
552
|
+
"1.1.1.1",
|
|
553
|
+
"3.3.3.3",
|
|
554
|
+
"2.2.2.2",
|
|
555
|
+
],
|
|
556
|
+
"write_timeout": 5,
|
|
557
|
+
"keepalive_requests": 1000,
|
|
558
|
+
"request_headers": [
|
|
559
|
+
{
|
|
560
|
+
"key": "examplekey1",
|
|
561
|
+
"value": "exampleValue1",
|
|
562
|
+
},
|
|
563
|
+
{
|
|
564
|
+
"key": "key1",
|
|
565
|
+
"value": "value1",
|
|
566
|
+
},
|
|
567
|
+
{
|
|
568
|
+
"key": "key22",
|
|
569
|
+
"value": "value22",
|
|
570
|
+
},
|
|
571
|
+
],
|
|
572
|
+
"loadbalance": "iphash",
|
|
573
|
+
"focus_http_backend": False,
|
|
574
|
+
"sni_enabled": False,
|
|
575
|
+
"connect_timeout": 5,
|
|
576
|
+
"read_timeout": 5,
|
|
577
|
+
"keepalive": True,
|
|
578
|
+
"retry": True,
|
|
579
|
+
},
|
|
580
|
+
domain="zcexample_250746.wafqax.top",
|
|
581
|
+
access_type="share")
|
|
582
|
+
default_defense_rule = alicloud.wafv3.DefenseRule("default",
|
|
583
|
+
defense_origin="custom",
|
|
584
|
+
config={
|
|
585
|
+
"account_identifiers": [{
|
|
586
|
+
"priority": 2,
|
|
587
|
+
"decode_type": "jwt",
|
|
588
|
+
"key": "Query-Arg",
|
|
589
|
+
"sub_key": "adb",
|
|
590
|
+
"position": "jwt",
|
|
591
|
+
}],
|
|
592
|
+
},
|
|
593
|
+
instance_id=default.ids[0],
|
|
594
|
+
defense_type="resource",
|
|
595
|
+
defense_scene="account_identifier",
|
|
596
|
+
rule_status=1,
|
|
597
|
+
resource=default_domain.domain_id)
|
|
598
|
+
```
|
|
599
|
+
|
|
600
|
+
## Import
|
|
601
|
+
|
|
602
|
+
WAFV3 Defense Rule can be imported using the id, e.g.
|
|
603
|
+
|
|
604
|
+
```sh
|
|
605
|
+
$ pulumi import alicloud:wafv3/defenseRule:DefenseRule example <instance_id>:<defense_type>:<rule_id>
|
|
606
|
+
```
|
|
607
|
+
|
|
608
|
+
:param str resource_name: The name of the resource.
|
|
609
|
+
:param DefenseRuleArgs args: The arguments to use to populate this resource's properties.
|
|
610
|
+
:param pulumi.ResourceOptions opts: Options for the resource.
|
|
611
|
+
"""
|
|
612
|
+
...
|
|
613
|
+
def __init__(__self__, resource_name: str, *args, **kwargs):
|
|
614
|
+
resource_args, opts = _utilities.get_resource_args_opts(DefenseRuleArgs, pulumi.ResourceOptions, *args, **kwargs)
|
|
615
|
+
if resource_args is not None:
|
|
616
|
+
__self__._internal_init(resource_name, opts, **resource_args.__dict__)
|
|
617
|
+
else:
|
|
618
|
+
__self__._internal_init(resource_name, *args, **kwargs)
|
|
619
|
+
|
|
620
|
+
def _internal_init(__self__,
|
|
621
|
+
resource_name: str,
|
|
622
|
+
opts: Optional[pulumi.ResourceOptions] = None,
|
|
623
|
+
config: Optional[pulumi.Input[Union['DefenseRuleConfigArgs', 'DefenseRuleConfigArgsDict']]] = None,
|
|
624
|
+
defense_origin: Optional[pulumi.Input[_builtins.str]] = None,
|
|
625
|
+
defense_scene: Optional[pulumi.Input[_builtins.str]] = None,
|
|
626
|
+
defense_type: Optional[pulumi.Input[_builtins.str]] = None,
|
|
627
|
+
instance_id: Optional[pulumi.Input[_builtins.str]] = None,
|
|
628
|
+
resource: Optional[pulumi.Input[_builtins.str]] = None,
|
|
629
|
+
rule_name: Optional[pulumi.Input[_builtins.str]] = None,
|
|
630
|
+
rule_status: Optional[pulumi.Input[_builtins.int]] = None,
|
|
631
|
+
template_id: Optional[pulumi.Input[_builtins.int]] = None,
|
|
632
|
+
__props__=None):
|
|
633
|
+
opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
|
|
634
|
+
if not isinstance(opts, pulumi.ResourceOptions):
|
|
635
|
+
raise TypeError('Expected resource options to be a ResourceOptions instance')
|
|
636
|
+
if opts.id is None:
|
|
637
|
+
if __props__ is not None:
|
|
638
|
+
raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
|
|
639
|
+
__props__ = DefenseRuleArgs.__new__(DefenseRuleArgs)
|
|
640
|
+
|
|
641
|
+
if config is None and not opts.urn:
|
|
642
|
+
raise TypeError("Missing required property 'config'")
|
|
643
|
+
__props__.__dict__["config"] = config
|
|
644
|
+
__props__.__dict__["defense_origin"] = defense_origin
|
|
645
|
+
if defense_scene is None and not opts.urn:
|
|
646
|
+
raise TypeError("Missing required property 'defense_scene'")
|
|
647
|
+
__props__.__dict__["defense_scene"] = defense_scene
|
|
648
|
+
if defense_type is None and not opts.urn:
|
|
649
|
+
raise TypeError("Missing required property 'defense_type'")
|
|
650
|
+
__props__.__dict__["defense_type"] = defense_type
|
|
651
|
+
if instance_id is None and not opts.urn:
|
|
652
|
+
raise TypeError("Missing required property 'instance_id'")
|
|
653
|
+
__props__.__dict__["instance_id"] = instance_id
|
|
654
|
+
__props__.__dict__["resource"] = resource
|
|
655
|
+
__props__.__dict__["rule_name"] = rule_name
|
|
656
|
+
__props__.__dict__["rule_status"] = rule_status
|
|
657
|
+
__props__.__dict__["template_id"] = template_id
|
|
658
|
+
__props__.__dict__["rule_id"] = None
|
|
659
|
+
super(DefenseRule, __self__).__init__(
|
|
660
|
+
'alicloud:wafv3/defenseRule:DefenseRule',
|
|
661
|
+
resource_name,
|
|
662
|
+
__props__,
|
|
663
|
+
opts)
|
|
664
|
+
|
|
665
|
+
@staticmethod
|
|
666
|
+
def get(resource_name: str,
|
|
667
|
+
id: pulumi.Input[str],
|
|
668
|
+
opts: Optional[pulumi.ResourceOptions] = None,
|
|
669
|
+
config: Optional[pulumi.Input[Union['DefenseRuleConfigArgs', 'DefenseRuleConfigArgsDict']]] = None,
|
|
670
|
+
defense_origin: Optional[pulumi.Input[_builtins.str]] = None,
|
|
671
|
+
defense_scene: Optional[pulumi.Input[_builtins.str]] = None,
|
|
672
|
+
defense_type: Optional[pulumi.Input[_builtins.str]] = None,
|
|
673
|
+
instance_id: Optional[pulumi.Input[_builtins.str]] = None,
|
|
674
|
+
resource: Optional[pulumi.Input[_builtins.str]] = None,
|
|
675
|
+
rule_id: Optional[pulumi.Input[_builtins.int]] = None,
|
|
676
|
+
rule_name: Optional[pulumi.Input[_builtins.str]] = None,
|
|
677
|
+
rule_status: Optional[pulumi.Input[_builtins.int]] = None,
|
|
678
|
+
template_id: Optional[pulumi.Input[_builtins.int]] = None) -> 'DefenseRule':
|
|
679
|
+
"""
|
|
680
|
+
Get an existing DefenseRule resource's state with the given name, id, and optional extra
|
|
681
|
+
properties used to qualify the lookup.
|
|
682
|
+
|
|
683
|
+
:param str resource_name: The unique name of the resulting resource.
|
|
684
|
+
:param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
|
|
685
|
+
:param pulumi.ResourceOptions opts: Options for the resource.
|
|
686
|
+
:param pulumi.Input[Union['DefenseRuleConfigArgs', 'DefenseRuleConfigArgsDict']] config: Rule configuration content, in JSON format, constructed with a series of parameters.
|
|
687
|
+
|
|
688
|
+
> **NOTE:** Depending on the specified **protection rule type**(`DefenseScene`), the specific parameters vary. For more information, see **Protection Rule Parameter Description**.
|
|
689
|
+
See `config` below.
|
|
690
|
+
:param pulumi.Input[_builtins.str] defense_origin: Sources of protection. Value:
|
|
691
|
+
:param pulumi.Input[_builtins.str] defense_scene: The WAF protection scenario to be created.
|
|
692
|
+
|
|
693
|
+
When the protection rule type `DefenseType` is set to `template`, the value is as follows:
|
|
694
|
+
:param pulumi.Input[_builtins.str] defense_type: The protection rule type. Value:
|
|
695
|
+
:param pulumi.Input[_builtins.str] instance_id: The ID of the Web Application Firewall (WAF) instance.
|
|
696
|
+
:param pulumi.Input[_builtins.str] resource: The protection object corresponding to the rule to be queried.
|
|
697
|
+
|
|
698
|
+
> **NOTE:** This parameter is required only when `DefenseType` is set to `resource`.
|
|
699
|
+
:param pulumi.Input[_builtins.int] rule_id: The protection rule ID.
|
|
700
|
+
:param pulumi.Input[_builtins.str] rule_name: The rule name.
|
|
701
|
+
:param pulumi.Input[_builtins.int] rule_status: Protection rule status.
|
|
702
|
+
:param pulumi.Input[_builtins.int] template_id: The protection template ID of the protection rule to be created.
|
|
703
|
+
"""
|
|
704
|
+
opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
|
|
705
|
+
|
|
706
|
+
__props__ = _DefenseRuleState.__new__(_DefenseRuleState)
|
|
707
|
+
|
|
708
|
+
__props__.__dict__["config"] = config
|
|
709
|
+
__props__.__dict__["defense_origin"] = defense_origin
|
|
710
|
+
__props__.__dict__["defense_scene"] = defense_scene
|
|
711
|
+
__props__.__dict__["defense_type"] = defense_type
|
|
712
|
+
__props__.__dict__["instance_id"] = instance_id
|
|
713
|
+
__props__.__dict__["resource"] = resource
|
|
714
|
+
__props__.__dict__["rule_id"] = rule_id
|
|
715
|
+
__props__.__dict__["rule_name"] = rule_name
|
|
716
|
+
__props__.__dict__["rule_status"] = rule_status
|
|
717
|
+
__props__.__dict__["template_id"] = template_id
|
|
718
|
+
return DefenseRule(resource_name, opts=opts, __props__=__props__)
|
|
719
|
+
|
|
720
|
+
@_builtins.property
|
|
721
|
+
@pulumi.getter
|
|
722
|
+
def config(self) -> pulumi.Output['outputs.DefenseRuleConfig']:
|
|
723
|
+
"""
|
|
724
|
+
Rule configuration content, in JSON format, constructed with a series of parameters.
|
|
725
|
+
|
|
726
|
+
> **NOTE:** Depending on the specified **protection rule type**(`DefenseScene`), the specific parameters vary. For more information, see **Protection Rule Parameter Description**.
|
|
727
|
+
See `config` below.
|
|
728
|
+
"""
|
|
729
|
+
return pulumi.get(self, "config")
|
|
730
|
+
|
|
731
|
+
@_builtins.property
|
|
732
|
+
@pulumi.getter(name="defenseOrigin")
|
|
733
|
+
def defense_origin(self) -> pulumi.Output[Optional[_builtins.str]]:
|
|
734
|
+
"""
|
|
735
|
+
Sources of protection. Value:
|
|
736
|
+
"""
|
|
737
|
+
return pulumi.get(self, "defense_origin")
|
|
738
|
+
|
|
739
|
+
@_builtins.property
|
|
740
|
+
@pulumi.getter(name="defenseScene")
|
|
741
|
+
def defense_scene(self) -> pulumi.Output[_builtins.str]:
|
|
742
|
+
"""
|
|
743
|
+
The WAF protection scenario to be created.
|
|
744
|
+
|
|
745
|
+
When the protection rule type `DefenseType` is set to `template`, the value is as follows:
|
|
746
|
+
"""
|
|
747
|
+
return pulumi.get(self, "defense_scene")
|
|
748
|
+
|
|
749
|
+
@_builtins.property
|
|
750
|
+
@pulumi.getter(name="defenseType")
|
|
751
|
+
def defense_type(self) -> pulumi.Output[_builtins.str]:
|
|
752
|
+
"""
|
|
753
|
+
The protection rule type. Value:
|
|
754
|
+
"""
|
|
755
|
+
return pulumi.get(self, "defense_type")
|
|
756
|
+
|
|
757
|
+
@_builtins.property
|
|
758
|
+
@pulumi.getter(name="instanceId")
|
|
759
|
+
def instance_id(self) -> pulumi.Output[_builtins.str]:
|
|
760
|
+
"""
|
|
761
|
+
The ID of the Web Application Firewall (WAF) instance.
|
|
762
|
+
"""
|
|
763
|
+
return pulumi.get(self, "instance_id")
|
|
764
|
+
|
|
765
|
+
@_builtins.property
|
|
766
|
+
@pulumi.getter
|
|
767
|
+
def resource(self) -> pulumi.Output[_builtins.str]:
|
|
768
|
+
"""
|
|
769
|
+
The protection object corresponding to the rule to be queried.
|
|
770
|
+
|
|
771
|
+
> **NOTE:** This parameter is required only when `DefenseType` is set to `resource`.
|
|
772
|
+
"""
|
|
773
|
+
return pulumi.get(self, "resource")
|
|
774
|
+
|
|
775
|
+
@_builtins.property
|
|
776
|
+
@pulumi.getter(name="ruleId")
|
|
777
|
+
def rule_id(self) -> pulumi.Output[_builtins.int]:
|
|
778
|
+
"""
|
|
779
|
+
The protection rule ID.
|
|
780
|
+
"""
|
|
781
|
+
return pulumi.get(self, "rule_id")
|
|
782
|
+
|
|
783
|
+
@_builtins.property
|
|
784
|
+
@pulumi.getter(name="ruleName")
|
|
785
|
+
def rule_name(self) -> pulumi.Output[_builtins.str]:
|
|
786
|
+
"""
|
|
787
|
+
The rule name.
|
|
788
|
+
"""
|
|
789
|
+
return pulumi.get(self, "rule_name")
|
|
790
|
+
|
|
791
|
+
@_builtins.property
|
|
792
|
+
@pulumi.getter(name="ruleStatus")
|
|
793
|
+
def rule_status(self) -> pulumi.Output[Optional[_builtins.int]]:
|
|
794
|
+
"""
|
|
795
|
+
Protection rule status.
|
|
796
|
+
"""
|
|
797
|
+
return pulumi.get(self, "rule_status")
|
|
798
|
+
|
|
799
|
+
@_builtins.property
|
|
800
|
+
@pulumi.getter(name="templateId")
|
|
801
|
+
def template_id(self) -> pulumi.Output[Optional[_builtins.int]]:
|
|
802
|
+
"""
|
|
803
|
+
The protection template ID of the protection rule to be created.
|
|
804
|
+
"""
|
|
805
|
+
return pulumi.get(self, "template_id")
|
|
806
|
+
|