pulumi-gcp 7.26.0a1717690580__py3-none-any.whl → 7.27.0__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.
Files changed (81) hide show
  1. pulumi_gcp/__init__.py +32 -0
  2. pulumi_gcp/appengine/_inputs.py +40 -0
  3. pulumi_gcp/appengine/flexible_app_version.py +47 -0
  4. pulumi_gcp/appengine/outputs.py +51 -0
  5. pulumi_gcp/bigtable/instance.py +47 -0
  6. pulumi_gcp/clouddeploy/_inputs.py +16 -0
  7. pulumi_gcp/clouddeploy/outputs.py +12 -0
  8. pulumi_gcp/compute/__init__.py +2 -0
  9. pulumi_gcp/compute/_inputs.py +84 -0
  10. pulumi_gcp/compute/backend_service.py +54 -0
  11. pulumi_gcp/compute/disk.py +68 -0
  12. pulumi_gcp/compute/get_backend_service.py +11 -1
  13. pulumi_gcp/compute/get_disk.py +11 -1
  14. pulumi_gcp/compute/get_instance.py +11 -1
  15. pulumi_gcp/compute/get_instance_group_manager.py +31 -1
  16. pulumi_gcp/compute/get_instance_template.py +11 -1
  17. pulumi_gcp/compute/get_region_instance_template.py +11 -1
  18. pulumi_gcp/compute/get_security_policy.py +214 -0
  19. pulumi_gcp/compute/instance.py +47 -0
  20. pulumi_gcp/compute/instance_from_machine_image.py +47 -0
  21. pulumi_gcp/compute/instance_from_template.py +47 -0
  22. pulumi_gcp/compute/instance_group_manager.py +185 -0
  23. pulumi_gcp/compute/instance_template.py +47 -0
  24. pulumi_gcp/compute/outputs.py +1039 -0
  25. pulumi_gcp/compute/project_cloud_armor_tier.py +336 -0
  26. pulumi_gcp/compute/region_instance_group_manager.py +185 -0
  27. pulumi_gcp/compute/region_instance_template.py +47 -0
  28. pulumi_gcp/config/__init__.pyi +2 -0
  29. pulumi_gcp/config/vars.py +4 -0
  30. pulumi_gcp/container/_inputs.py +33 -4
  31. pulumi_gcp/container/cluster.py +61 -0
  32. pulumi_gcp/container/get_cluster.py +11 -1
  33. pulumi_gcp/container/outputs.py +48 -4
  34. pulumi_gcp/dataloss/_inputs.py +185 -19
  35. pulumi_gcp/dataloss/outputs.py +206 -17
  36. pulumi_gcp/dataloss/prevention_inspect_template.py +54 -0
  37. pulumi_gcp/gkebackup/_inputs.py +282 -7
  38. pulumi_gcp/gkebackup/backup_plan.py +100 -0
  39. pulumi_gcp/gkebackup/outputs.py +312 -7
  40. pulumi_gcp/gkebackup/restore_plan.py +326 -0
  41. pulumi_gcp/gkebackup/restore_plan_iam_binding.py +326 -0
  42. pulumi_gcp/gkebackup/restore_plan_iam_member.py +326 -0
  43. pulumi_gcp/gkebackup/restore_plan_iam_policy.py +326 -0
  44. pulumi_gcp/healthcare/_inputs.py +17 -1
  45. pulumi_gcp/healthcare/dicom_store.py +2 -0
  46. pulumi_gcp/healthcare/fhir_store.py +44 -60
  47. pulumi_gcp/healthcare/outputs.py +15 -1
  48. pulumi_gcp/integrationconnectors/endpoint_attachment.py +47 -0
  49. pulumi_gcp/kms/crypto_key.py +14 -7
  50. pulumi_gcp/netapp/_inputs.py +58 -0
  51. pulumi_gcp/netapp/outputs.py +67 -0
  52. pulumi_gcp/netapp/volume.py +54 -0
  53. pulumi_gcp/networkservices/__init__.py +1 -0
  54. pulumi_gcp/networkservices/_inputs.py +47 -0
  55. pulumi_gcp/networkservices/outputs.py +56 -0
  56. pulumi_gcp/networkservices/service_lb_policies.py +782 -0
  57. pulumi_gcp/provider.py +20 -0
  58. pulumi_gcp/pulumi-plugin.json +1 -1
  59. pulumi_gcp/redis/_inputs.py +44 -0
  60. pulumi_gcp/redis/cluster.py +128 -3
  61. pulumi_gcp/redis/outputs.py +36 -0
  62. pulumi_gcp/secretmanager/_inputs.py +20 -0
  63. pulumi_gcp/secretmanager/outputs.py +20 -0
  64. pulumi_gcp/secretmanager/secret_iam_binding.py +244 -0
  65. pulumi_gcp/secretmanager/secret_iam_member.py +244 -0
  66. pulumi_gcp/secretmanager/secret_iam_policy.py +224 -0
  67. pulumi_gcp/securitycenter/__init__.py +1 -0
  68. pulumi_gcp/securitycenter/management_organization_event_threat_detection_custom_module.py +568 -0
  69. pulumi_gcp/spanner/__init__.py +1 -0
  70. pulumi_gcp/spanner/_inputs.py +68 -0
  71. pulumi_gcp/spanner/instance_config.py +569 -0
  72. pulumi_gcp/spanner/outputs.py +73 -0
  73. pulumi_gcp/sql/_inputs.py +8 -2
  74. pulumi_gcp/sql/outputs.py +9 -6
  75. pulumi_gcp/workstations/_inputs.py +51 -1
  76. pulumi_gcp/workstations/outputs.py +46 -2
  77. pulumi_gcp/workstations/workstation_config.py +10 -4
  78. {pulumi_gcp-7.26.0a1717690580.dist-info → pulumi_gcp-7.27.0.dist-info}/METADATA +1 -1
  79. {pulumi_gcp-7.26.0a1717690580.dist-info → pulumi_gcp-7.27.0.dist-info}/RECORD +81 -76
  80. {pulumi_gcp-7.26.0a1717690580.dist-info → pulumi_gcp-7.27.0.dist-info}/WHEEL +0 -0
  81. {pulumi_gcp-7.26.0a1717690580.dist-info → pulumi_gcp-7.27.0.dist-info}/top_level.txt +0 -0
@@ -132,6 +132,7 @@ __all__ = [
132
132
  'InstanceGroupManagerInstanceLifecyclePolicy',
133
133
  'InstanceGroupManagerNamedPort',
134
134
  'InstanceGroupManagerParams',
135
+ 'InstanceGroupManagerStandbyPolicy',
135
136
  'InstanceGroupManagerStatefulDisk',
136
137
  'InstanceGroupManagerStatefulExternalIp',
137
138
  'InstanceGroupManagerStatefulInternalIp',
@@ -270,6 +271,7 @@ __all__ = [
270
271
  'RegionInstanceGroupManagerInstanceLifecyclePolicy',
271
272
  'RegionInstanceGroupManagerNamedPort',
272
273
  'RegionInstanceGroupManagerParams',
274
+ 'RegionInstanceGroupManagerStandbyPolicy',
273
275
  'RegionInstanceGroupManagerStatefulDisk',
274
276
  'RegionInstanceGroupManagerStatefulExternalIp',
275
277
  'RegionInstanceGroupManagerStatefulInternalIp',
@@ -601,6 +603,7 @@ __all__ = [
601
603
  'GetInstanceGroupManagerInstanceLifecyclePolicyResult',
602
604
  'GetInstanceGroupManagerNamedPortResult',
603
605
  'GetInstanceGroupManagerParamResult',
606
+ 'GetInstanceGroupManagerStandbyPolicyResult',
604
607
  'GetInstanceGroupManagerStatefulDiskResult',
605
608
  'GetInstanceGroupManagerStatefulExternalIpResult',
606
609
  'GetInstanceGroupManagerStatefulInternalIpResult',
@@ -713,6 +716,30 @@ __all__ = [
713
716
  'GetRouterNatSubnetworkResult',
714
717
  'GetRouterStatusBestRouteResult',
715
718
  'GetRouterStatusBestRoutesForRouterResult',
719
+ 'GetSecurityPolicyAdaptiveProtectionConfigResult',
720
+ 'GetSecurityPolicyAdaptiveProtectionConfigAutoDeployConfigResult',
721
+ 'GetSecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigResult',
722
+ 'GetSecurityPolicyAdvancedOptionsConfigResult',
723
+ 'GetSecurityPolicyAdvancedOptionsConfigJsonCustomConfigResult',
724
+ 'GetSecurityPolicyRecaptchaOptionsConfigResult',
725
+ 'GetSecurityPolicyRuleResult',
726
+ 'GetSecurityPolicyRuleHeaderActionResult',
727
+ 'GetSecurityPolicyRuleHeaderActionRequestHeadersToAddResult',
728
+ 'GetSecurityPolicyRuleMatchResult',
729
+ 'GetSecurityPolicyRuleMatchConfigResult',
730
+ 'GetSecurityPolicyRuleMatchExprResult',
731
+ 'GetSecurityPolicyRulePreconfiguredWafConfigResult',
732
+ 'GetSecurityPolicyRulePreconfiguredWafConfigExclusionResult',
733
+ 'GetSecurityPolicyRulePreconfiguredWafConfigExclusionRequestCookyResult',
734
+ 'GetSecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeaderResult',
735
+ 'GetSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamResult',
736
+ 'GetSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriResult',
737
+ 'GetSecurityPolicyRuleRateLimitOptionResult',
738
+ 'GetSecurityPolicyRuleRateLimitOptionBanThresholdResult',
739
+ 'GetSecurityPolicyRuleRateLimitOptionEnforceOnKeyConfigResult',
740
+ 'GetSecurityPolicyRuleRateLimitOptionExceedRedirectOptionResult',
741
+ 'GetSecurityPolicyRuleRateLimitOptionRateLimitThresholdResult',
742
+ 'GetSecurityPolicyRuleRedirectOptionResult',
716
743
  'GetSnapshotSnapshotEncryptionKeyResult',
717
744
  'GetSnapshotSourceDiskEncryptionKeyResult',
718
745
  'GetSubnetworkSecondaryIpRangeResult',
@@ -9767,6 +9794,56 @@ class InstanceGroupManagerParams(dict):
9767
9794
  return pulumi.get(self, "resource_manager_tags")
9768
9795
 
9769
9796
 
9797
+ @pulumi.output_type
9798
+ class InstanceGroupManagerStandbyPolicy(dict):
9799
+ @staticmethod
9800
+ def __key_warning(key: str):
9801
+ suggest = None
9802
+ if key == "initialDelaySec":
9803
+ suggest = "initial_delay_sec"
9804
+
9805
+ if suggest:
9806
+ pulumi.log.warn(f"Key '{key}' not found in InstanceGroupManagerStandbyPolicy. Access the value via the '{suggest}' property getter instead.")
9807
+
9808
+ def __getitem__(self, key: str) -> Any:
9809
+ InstanceGroupManagerStandbyPolicy.__key_warning(key)
9810
+ return super().__getitem__(key)
9811
+
9812
+ def get(self, key: str, default = None) -> Any:
9813
+ InstanceGroupManagerStandbyPolicy.__key_warning(key)
9814
+ return super().get(key, default)
9815
+
9816
+ def __init__(__self__, *,
9817
+ initial_delay_sec: Optional[int] = None,
9818
+ mode: Optional[str] = None):
9819
+ """
9820
+ :param int initial_delay_sec: Specifies the number of seconds that the MIG should wait to suspend or stop a VM after that VM was created. The initial delay gives the initialization script the time to prepare your VM for a quick scale out. The value of initial delay must be between 0 and 3600 seconds. The default value is 0.
9821
+ :param str mode: Defines how a MIG resumes or starts VMs from a standby pool when the group scales out. Valid options are: `MANUAL`, `SCALE_OUT_POOL`. If `MANUAL`(default), you have full control over which VMs are stopped and suspended in the MIG. If `SCALE_OUT_POOL`, the MIG uses the VMs from the standby pools to accelerate the scale out by resuming or starting them and then automatically replenishes the standby pool with new VMs to maintain the target sizes.
9822
+ - - -
9823
+ """
9824
+ if initial_delay_sec is not None:
9825
+ pulumi.set(__self__, "initial_delay_sec", initial_delay_sec)
9826
+ if mode is not None:
9827
+ pulumi.set(__self__, "mode", mode)
9828
+
9829
+ @property
9830
+ @pulumi.getter(name="initialDelaySec")
9831
+ def initial_delay_sec(self) -> Optional[int]:
9832
+ """
9833
+ Specifies the number of seconds that the MIG should wait to suspend or stop a VM after that VM was created. The initial delay gives the initialization script the time to prepare your VM for a quick scale out. The value of initial delay must be between 0 and 3600 seconds. The default value is 0.
9834
+ """
9835
+ return pulumi.get(self, "initial_delay_sec")
9836
+
9837
+ @property
9838
+ @pulumi.getter
9839
+ def mode(self) -> Optional[str]:
9840
+ """
9841
+ Defines how a MIG resumes or starts VMs from a standby pool when the group scales out. Valid options are: `MANUAL`, `SCALE_OUT_POOL`. If `MANUAL`(default), you have full control over which VMs are stopped and suspended in the MIG. If `SCALE_OUT_POOL`, the MIG uses the VMs from the standby pools to accelerate the scale out by resuming or starting them and then automatically replenishes the standby pool with new VMs to maintain the target sizes.
9842
+ - - -
9843
+ """
9844
+ return pulumi.get(self, "mode")
9845
+
9846
+
9770
9847
  @pulumi.output_type
9771
9848
  class InstanceGroupManagerStatefulDisk(dict):
9772
9849
  @staticmethod
@@ -19555,6 +19632,56 @@ class RegionInstanceGroupManagerParams(dict):
19555
19632
  return pulumi.get(self, "resource_manager_tags")
19556
19633
 
19557
19634
 
19635
+ @pulumi.output_type
19636
+ class RegionInstanceGroupManagerStandbyPolicy(dict):
19637
+ @staticmethod
19638
+ def __key_warning(key: str):
19639
+ suggest = None
19640
+ if key == "initialDelaySec":
19641
+ suggest = "initial_delay_sec"
19642
+
19643
+ if suggest:
19644
+ pulumi.log.warn(f"Key '{key}' not found in RegionInstanceGroupManagerStandbyPolicy. Access the value via the '{suggest}' property getter instead.")
19645
+
19646
+ def __getitem__(self, key: str) -> Any:
19647
+ RegionInstanceGroupManagerStandbyPolicy.__key_warning(key)
19648
+ return super().__getitem__(key)
19649
+
19650
+ def get(self, key: str, default = None) -> Any:
19651
+ RegionInstanceGroupManagerStandbyPolicy.__key_warning(key)
19652
+ return super().get(key, default)
19653
+
19654
+ def __init__(__self__, *,
19655
+ initial_delay_sec: Optional[int] = None,
19656
+ mode: Optional[str] = None):
19657
+ """
19658
+ :param int initial_delay_sec: Specifies the number of seconds that the MIG should wait to suspend or stop a VM after that VM was created. The initial delay gives the initialization script the time to prepare your VM for a quick scale out. The value of initial delay must be between 0 and 3600 seconds. The default value is 0.
19659
+ :param str mode: Defines how a MIG resumes or starts VMs from a standby pool when the group scales out. Valid options are: `MANUAL`, `SCALE_OUT_POOL`. If `MANUAL`(default), you have full control over which VMs are stopped and suspended in the MIG. If `SCALE_OUT_POOL`, the MIG uses the VMs from the standby pools to accelerate the scale out by resuming or starting them and then automatically replenishes the standby pool with new VMs to maintain the target sizes.
19660
+ - - -
19661
+ """
19662
+ if initial_delay_sec is not None:
19663
+ pulumi.set(__self__, "initial_delay_sec", initial_delay_sec)
19664
+ if mode is not None:
19665
+ pulumi.set(__self__, "mode", mode)
19666
+
19667
+ @property
19668
+ @pulumi.getter(name="initialDelaySec")
19669
+ def initial_delay_sec(self) -> Optional[int]:
19670
+ """
19671
+ Specifies the number of seconds that the MIG should wait to suspend or stop a VM after that VM was created. The initial delay gives the initialization script the time to prepare your VM for a quick scale out. The value of initial delay must be between 0 and 3600 seconds. The default value is 0.
19672
+ """
19673
+ return pulumi.get(self, "initial_delay_sec")
19674
+
19675
+ @property
19676
+ @pulumi.getter
19677
+ def mode(self) -> Optional[str]:
19678
+ """
19679
+ Defines how a MIG resumes or starts VMs from a standby pool when the group scales out. Valid options are: `MANUAL`, `SCALE_OUT_POOL`. If `MANUAL`(default), you have full control over which VMs are stopped and suspended in the MIG. If `SCALE_OUT_POOL`, the MIG uses the VMs from the standby pools to accelerate the scale out by resuming or starting them and then automatically replenishes the standby pool with new VMs to maintain the target sizes.
19680
+ - - -
19681
+ """
19682
+ return pulumi.get(self, "mode")
19683
+
19684
+
19558
19685
  @pulumi.output_type
19559
19686
  class RegionInstanceGroupManagerStatefulDisk(dict):
19560
19687
  @staticmethod
@@ -44009,6 +44136,35 @@ class GetInstanceGroupManagerParamResult(dict):
44009
44136
  return pulumi.get(self, "resource_manager_tags")
44010
44137
 
44011
44138
 
44139
+ @pulumi.output_type
44140
+ class GetInstanceGroupManagerStandbyPolicyResult(dict):
44141
+ def __init__(__self__, *,
44142
+ initial_delay_sec: int,
44143
+ mode: str):
44144
+ """
44145
+ :param int initial_delay_sec: Specifies the number of seconds that the MIG should wait to suspend or stop a VM after that VM was created. The initial delay gives the initialization script the time to prepare your VM for a quick scale out. The value of initial delay must be between 0 and 3600 seconds. The default value is 0.
44146
+ :param str mode: Defines how a MIG resumes or starts VMs from a standby pool when the group scales out. The default mode is "MANUAL".
44147
+ """
44148
+ pulumi.set(__self__, "initial_delay_sec", initial_delay_sec)
44149
+ pulumi.set(__self__, "mode", mode)
44150
+
44151
+ @property
44152
+ @pulumi.getter(name="initialDelaySec")
44153
+ def initial_delay_sec(self) -> int:
44154
+ """
44155
+ Specifies the number of seconds that the MIG should wait to suspend or stop a VM after that VM was created. The initial delay gives the initialization script the time to prepare your VM for a quick scale out. The value of initial delay must be between 0 and 3600 seconds. The default value is 0.
44156
+ """
44157
+ return pulumi.get(self, "initial_delay_sec")
44158
+
44159
+ @property
44160
+ @pulumi.getter
44161
+ def mode(self) -> str:
44162
+ """
44163
+ Defines how a MIG resumes or starts VMs from a standby pool when the group scales out. The default mode is "MANUAL".
44164
+ """
44165
+ return pulumi.get(self, "mode")
44166
+
44167
+
44012
44168
  @pulumi.output_type
44013
44169
  class GetInstanceGroupManagerStatefulDiskResult(dict):
44014
44170
  def __init__(__self__, *,
@@ -49948,6 +50104,889 @@ class GetRouterStatusBestRoutesForRouterResult(dict):
49948
50104
  return pulumi.get(self, "tags")
49949
50105
 
49950
50106
 
50107
+ @pulumi.output_type
50108
+ class GetSecurityPolicyAdaptiveProtectionConfigResult(dict):
50109
+ def __init__(__self__, *,
50110
+ auto_deploy_configs: Sequence['outputs.GetSecurityPolicyAdaptiveProtectionConfigAutoDeployConfigResult'],
50111
+ layer7_ddos_defense_configs: Sequence['outputs.GetSecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigResult']):
50112
+ """
50113
+ :param Sequence['GetSecurityPolicyAdaptiveProtectionConfigAutoDeployConfigArgs'] auto_deploy_configs: Auto Deploy Config of this security policy
50114
+ :param Sequence['GetSecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigArgs'] layer7_ddos_defense_configs: Layer 7 DDoS Defense Config of this security policy
50115
+ """
50116
+ pulumi.set(__self__, "auto_deploy_configs", auto_deploy_configs)
50117
+ pulumi.set(__self__, "layer7_ddos_defense_configs", layer7_ddos_defense_configs)
50118
+
50119
+ @property
50120
+ @pulumi.getter(name="autoDeployConfigs")
50121
+ def auto_deploy_configs(self) -> Sequence['outputs.GetSecurityPolicyAdaptiveProtectionConfigAutoDeployConfigResult']:
50122
+ """
50123
+ Auto Deploy Config of this security policy
50124
+ """
50125
+ return pulumi.get(self, "auto_deploy_configs")
50126
+
50127
+ @property
50128
+ @pulumi.getter(name="layer7DdosDefenseConfigs")
50129
+ def layer7_ddos_defense_configs(self) -> Sequence['outputs.GetSecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigResult']:
50130
+ """
50131
+ Layer 7 DDoS Defense Config of this security policy
50132
+ """
50133
+ return pulumi.get(self, "layer7_ddos_defense_configs")
50134
+
50135
+
50136
+ @pulumi.output_type
50137
+ class GetSecurityPolicyAdaptiveProtectionConfigAutoDeployConfigResult(dict):
50138
+ def __init__(__self__, *,
50139
+ confidence_threshold: float,
50140
+ expiration_sec: int,
50141
+ impacted_baseline_threshold: float,
50142
+ load_threshold: float):
50143
+ """
50144
+ :param float confidence_threshold: Rules are only automatically deployed for alerts on potential attacks with confidence scores greater than this threshold.
50145
+ :param int expiration_sec: Google Cloud Armor stops applying the action in the automatically deployed rule to an identified attacker after this duration. The rule continues to operate against new requests.
50146
+ :param float impacted_baseline_threshold: Rules are only automatically deployed when the estimated impact to baseline traffic from the suggested mitigation is below this threshold.
50147
+ :param float load_threshold: Identifies new attackers only when the load to the backend service that is under attack exceeds this threshold.
50148
+ """
50149
+ pulumi.set(__self__, "confidence_threshold", confidence_threshold)
50150
+ pulumi.set(__self__, "expiration_sec", expiration_sec)
50151
+ pulumi.set(__self__, "impacted_baseline_threshold", impacted_baseline_threshold)
50152
+ pulumi.set(__self__, "load_threshold", load_threshold)
50153
+
50154
+ @property
50155
+ @pulumi.getter(name="confidenceThreshold")
50156
+ def confidence_threshold(self) -> float:
50157
+ """
50158
+ Rules are only automatically deployed for alerts on potential attacks with confidence scores greater than this threshold.
50159
+ """
50160
+ return pulumi.get(self, "confidence_threshold")
50161
+
50162
+ @property
50163
+ @pulumi.getter(name="expirationSec")
50164
+ def expiration_sec(self) -> int:
50165
+ """
50166
+ Google Cloud Armor stops applying the action in the automatically deployed rule to an identified attacker after this duration. The rule continues to operate against new requests.
50167
+ """
50168
+ return pulumi.get(self, "expiration_sec")
50169
+
50170
+ @property
50171
+ @pulumi.getter(name="impactedBaselineThreshold")
50172
+ def impacted_baseline_threshold(self) -> float:
50173
+ """
50174
+ Rules are only automatically deployed when the estimated impact to baseline traffic from the suggested mitigation is below this threshold.
50175
+ """
50176
+ return pulumi.get(self, "impacted_baseline_threshold")
50177
+
50178
+ @property
50179
+ @pulumi.getter(name="loadThreshold")
50180
+ def load_threshold(self) -> float:
50181
+ """
50182
+ Identifies new attackers only when the load to the backend service that is under attack exceeds this threshold.
50183
+ """
50184
+ return pulumi.get(self, "load_threshold")
50185
+
50186
+
50187
+ @pulumi.output_type
50188
+ class GetSecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigResult(dict):
50189
+ def __init__(__self__, *,
50190
+ enable: bool,
50191
+ rule_visibility: str):
50192
+ """
50193
+ :param bool enable: If set to true, enables CAAP for L7 DDoS detection.
50194
+ :param str rule_visibility: Rule visibility. Supported values include: "STANDARD", "PREMIUM".
50195
+ """
50196
+ pulumi.set(__self__, "enable", enable)
50197
+ pulumi.set(__self__, "rule_visibility", rule_visibility)
50198
+
50199
+ @property
50200
+ @pulumi.getter
50201
+ def enable(self) -> bool:
50202
+ """
50203
+ If set to true, enables CAAP for L7 DDoS detection.
50204
+ """
50205
+ return pulumi.get(self, "enable")
50206
+
50207
+ @property
50208
+ @pulumi.getter(name="ruleVisibility")
50209
+ def rule_visibility(self) -> str:
50210
+ """
50211
+ Rule visibility. Supported values include: "STANDARD", "PREMIUM".
50212
+ """
50213
+ return pulumi.get(self, "rule_visibility")
50214
+
50215
+
50216
+ @pulumi.output_type
50217
+ class GetSecurityPolicyAdvancedOptionsConfigResult(dict):
50218
+ def __init__(__self__, *,
50219
+ json_custom_configs: Sequence['outputs.GetSecurityPolicyAdvancedOptionsConfigJsonCustomConfigResult'],
50220
+ json_parsing: str,
50221
+ log_level: str,
50222
+ user_ip_request_headers: Sequence[str]):
50223
+ """
50224
+ :param Sequence['GetSecurityPolicyAdvancedOptionsConfigJsonCustomConfigArgs'] json_custom_configs: Custom configuration to apply the JSON parsing. Only applicable when JSON parsing is set to STANDARD.
50225
+ :param str json_parsing: JSON body parsing. Supported values include: "DISABLED", "STANDARD".
50226
+ :param str log_level: Logging level. Supported values include: "NORMAL", "VERBOSE".
50227
+ :param Sequence[str] user_ip_request_headers: An optional list of case-insensitive request header names to use for resolving the callers client IP address.
50228
+ """
50229
+ pulumi.set(__self__, "json_custom_configs", json_custom_configs)
50230
+ pulumi.set(__self__, "json_parsing", json_parsing)
50231
+ pulumi.set(__self__, "log_level", log_level)
50232
+ pulumi.set(__self__, "user_ip_request_headers", user_ip_request_headers)
50233
+
50234
+ @property
50235
+ @pulumi.getter(name="jsonCustomConfigs")
50236
+ def json_custom_configs(self) -> Sequence['outputs.GetSecurityPolicyAdvancedOptionsConfigJsonCustomConfigResult']:
50237
+ """
50238
+ Custom configuration to apply the JSON parsing. Only applicable when JSON parsing is set to STANDARD.
50239
+ """
50240
+ return pulumi.get(self, "json_custom_configs")
50241
+
50242
+ @property
50243
+ @pulumi.getter(name="jsonParsing")
50244
+ def json_parsing(self) -> str:
50245
+ """
50246
+ JSON body parsing. Supported values include: "DISABLED", "STANDARD".
50247
+ """
50248
+ return pulumi.get(self, "json_parsing")
50249
+
50250
+ @property
50251
+ @pulumi.getter(name="logLevel")
50252
+ def log_level(self) -> str:
50253
+ """
50254
+ Logging level. Supported values include: "NORMAL", "VERBOSE".
50255
+ """
50256
+ return pulumi.get(self, "log_level")
50257
+
50258
+ @property
50259
+ @pulumi.getter(name="userIpRequestHeaders")
50260
+ def user_ip_request_headers(self) -> Sequence[str]:
50261
+ """
50262
+ An optional list of case-insensitive request header names to use for resolving the callers client IP address.
50263
+ """
50264
+ return pulumi.get(self, "user_ip_request_headers")
50265
+
50266
+
50267
+ @pulumi.output_type
50268
+ class GetSecurityPolicyAdvancedOptionsConfigJsonCustomConfigResult(dict):
50269
+ def __init__(__self__, *,
50270
+ content_types: Sequence[str]):
50271
+ """
50272
+ :param Sequence[str] content_types: A list of custom Content-Type header values to apply the JSON parsing.
50273
+ """
50274
+ pulumi.set(__self__, "content_types", content_types)
50275
+
50276
+ @property
50277
+ @pulumi.getter(name="contentTypes")
50278
+ def content_types(self) -> Sequence[str]:
50279
+ """
50280
+ A list of custom Content-Type header values to apply the JSON parsing.
50281
+ """
50282
+ return pulumi.get(self, "content_types")
50283
+
50284
+
50285
+ @pulumi.output_type
50286
+ class GetSecurityPolicyRecaptchaOptionsConfigResult(dict):
50287
+ def __init__(__self__, *,
50288
+ redirect_site_key: str):
50289
+ """
50290
+ :param str redirect_site_key: A field to supply a reCAPTCHA site key to be used for all the rules using the redirect action with the type of GOOGLE_RECAPTCHA under the security policy. The specified site key needs to be created from the reCAPTCHA API. The user is responsible for the validity of the specified site key. If not specified, a Google-managed site key is used.
50291
+ """
50292
+ pulumi.set(__self__, "redirect_site_key", redirect_site_key)
50293
+
50294
+ @property
50295
+ @pulumi.getter(name="redirectSiteKey")
50296
+ def redirect_site_key(self) -> str:
50297
+ """
50298
+ A field to supply a reCAPTCHA site key to be used for all the rules using the redirect action with the type of GOOGLE_RECAPTCHA under the security policy. The specified site key needs to be created from the reCAPTCHA API. The user is responsible for the validity of the specified site key. If not specified, a Google-managed site key is used.
50299
+ """
50300
+ return pulumi.get(self, "redirect_site_key")
50301
+
50302
+
50303
+ @pulumi.output_type
50304
+ class GetSecurityPolicyRuleResult(dict):
50305
+ def __init__(__self__, *,
50306
+ action: str,
50307
+ description: str,
50308
+ header_actions: Sequence['outputs.GetSecurityPolicyRuleHeaderActionResult'],
50309
+ matches: Sequence['outputs.GetSecurityPolicyRuleMatchResult'],
50310
+ preconfigured_waf_configs: Sequence['outputs.GetSecurityPolicyRulePreconfiguredWafConfigResult'],
50311
+ preview: bool,
50312
+ priority: int,
50313
+ rate_limit_options: Sequence['outputs.GetSecurityPolicyRuleRateLimitOptionResult'],
50314
+ redirect_options: Sequence['outputs.GetSecurityPolicyRuleRedirectOptionResult']):
50315
+ """
50316
+ :param str action: Action to take when match matches the request.
50317
+ :param str description: An optional description of this rule. Max size is 64.
50318
+ :param Sequence['GetSecurityPolicyRuleHeaderActionArgs'] header_actions: Additional actions that are performed on headers.
50319
+ :param Sequence['GetSecurityPolicyRuleMatchArgs'] matches: A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding action is enforced.
50320
+ :param Sequence['GetSecurityPolicyRulePreconfiguredWafConfigArgs'] preconfigured_waf_configs: Preconfigured WAF configuration to be applied for the rule. If the rule does not evaluate preconfigured WAF rules, i.e., if evaluatePreconfiguredWaf() is not used, this field will have no effect.
50321
+ :param bool preview: When set to true, the action specified above is not enforced. Stackdriver logs for requests that trigger a preview action are annotated as such.
50322
+ :param int priority: An unique positive integer indicating the priority of evaluation for a rule. Rules are evaluated from highest priority (lowest numerically) to lowest priority (highest numerically) in order.
50323
+ :param Sequence['GetSecurityPolicyRuleRateLimitOptionArgs'] rate_limit_options: Rate limit threshold for this security policy. Must be specified if the action is "rate_based_ban" or "throttle". Cannot be specified for any other actions.
50324
+ :param Sequence['GetSecurityPolicyRuleRedirectOptionArgs'] redirect_options: Parameters defining the redirect action. Cannot be specified for any other actions.
50325
+ """
50326
+ pulumi.set(__self__, "action", action)
50327
+ pulumi.set(__self__, "description", description)
50328
+ pulumi.set(__self__, "header_actions", header_actions)
50329
+ pulumi.set(__self__, "matches", matches)
50330
+ pulumi.set(__self__, "preconfigured_waf_configs", preconfigured_waf_configs)
50331
+ pulumi.set(__self__, "preview", preview)
50332
+ pulumi.set(__self__, "priority", priority)
50333
+ pulumi.set(__self__, "rate_limit_options", rate_limit_options)
50334
+ pulumi.set(__self__, "redirect_options", redirect_options)
50335
+
50336
+ @property
50337
+ @pulumi.getter
50338
+ def action(self) -> str:
50339
+ """
50340
+ Action to take when match matches the request.
50341
+ """
50342
+ return pulumi.get(self, "action")
50343
+
50344
+ @property
50345
+ @pulumi.getter
50346
+ def description(self) -> str:
50347
+ """
50348
+ An optional description of this rule. Max size is 64.
50349
+ """
50350
+ return pulumi.get(self, "description")
50351
+
50352
+ @property
50353
+ @pulumi.getter(name="headerActions")
50354
+ def header_actions(self) -> Sequence['outputs.GetSecurityPolicyRuleHeaderActionResult']:
50355
+ """
50356
+ Additional actions that are performed on headers.
50357
+ """
50358
+ return pulumi.get(self, "header_actions")
50359
+
50360
+ @property
50361
+ @pulumi.getter
50362
+ def matches(self) -> Sequence['outputs.GetSecurityPolicyRuleMatchResult']:
50363
+ """
50364
+ A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding action is enforced.
50365
+ """
50366
+ return pulumi.get(self, "matches")
50367
+
50368
+ @property
50369
+ @pulumi.getter(name="preconfiguredWafConfigs")
50370
+ def preconfigured_waf_configs(self) -> Sequence['outputs.GetSecurityPolicyRulePreconfiguredWafConfigResult']:
50371
+ """
50372
+ Preconfigured WAF configuration to be applied for the rule. If the rule does not evaluate preconfigured WAF rules, i.e., if evaluatePreconfiguredWaf() is not used, this field will have no effect.
50373
+ """
50374
+ return pulumi.get(self, "preconfigured_waf_configs")
50375
+
50376
+ @property
50377
+ @pulumi.getter
50378
+ def preview(self) -> bool:
50379
+ """
50380
+ When set to true, the action specified above is not enforced. Stackdriver logs for requests that trigger a preview action are annotated as such.
50381
+ """
50382
+ return pulumi.get(self, "preview")
50383
+
50384
+ @property
50385
+ @pulumi.getter
50386
+ def priority(self) -> int:
50387
+ """
50388
+ An unique positive integer indicating the priority of evaluation for a rule. Rules are evaluated from highest priority (lowest numerically) to lowest priority (highest numerically) in order.
50389
+ """
50390
+ return pulumi.get(self, "priority")
50391
+
50392
+ @property
50393
+ @pulumi.getter(name="rateLimitOptions")
50394
+ def rate_limit_options(self) -> Sequence['outputs.GetSecurityPolicyRuleRateLimitOptionResult']:
50395
+ """
50396
+ Rate limit threshold for this security policy. Must be specified if the action is "rate_based_ban" or "throttle". Cannot be specified for any other actions.
50397
+ """
50398
+ return pulumi.get(self, "rate_limit_options")
50399
+
50400
+ @property
50401
+ @pulumi.getter(name="redirectOptions")
50402
+ def redirect_options(self) -> Sequence['outputs.GetSecurityPolicyRuleRedirectOptionResult']:
50403
+ """
50404
+ Parameters defining the redirect action. Cannot be specified for any other actions.
50405
+ """
50406
+ return pulumi.get(self, "redirect_options")
50407
+
50408
+
50409
+ @pulumi.output_type
50410
+ class GetSecurityPolicyRuleHeaderActionResult(dict):
50411
+ def __init__(__self__, *,
50412
+ request_headers_to_adds: Sequence['outputs.GetSecurityPolicyRuleHeaderActionRequestHeadersToAddResult']):
50413
+ """
50414
+ :param Sequence['GetSecurityPolicyRuleHeaderActionRequestHeadersToAddArgs'] request_headers_to_adds: The list of request headers to add or overwrite if they're already present.
50415
+ """
50416
+ pulumi.set(__self__, "request_headers_to_adds", request_headers_to_adds)
50417
+
50418
+ @property
50419
+ @pulumi.getter(name="requestHeadersToAdds")
50420
+ def request_headers_to_adds(self) -> Sequence['outputs.GetSecurityPolicyRuleHeaderActionRequestHeadersToAddResult']:
50421
+ """
50422
+ The list of request headers to add or overwrite if they're already present.
50423
+ """
50424
+ return pulumi.get(self, "request_headers_to_adds")
50425
+
50426
+
50427
+ @pulumi.output_type
50428
+ class GetSecurityPolicyRuleHeaderActionRequestHeadersToAddResult(dict):
50429
+ def __init__(__self__, *,
50430
+ header_name: str,
50431
+ header_value: str):
50432
+ """
50433
+ :param str header_name: The name of the header to set.
50434
+ :param str header_value: The value to set the named header to.
50435
+ """
50436
+ pulumi.set(__self__, "header_name", header_name)
50437
+ pulumi.set(__self__, "header_value", header_value)
50438
+
50439
+ @property
50440
+ @pulumi.getter(name="headerName")
50441
+ def header_name(self) -> str:
50442
+ """
50443
+ The name of the header to set.
50444
+ """
50445
+ return pulumi.get(self, "header_name")
50446
+
50447
+ @property
50448
+ @pulumi.getter(name="headerValue")
50449
+ def header_value(self) -> str:
50450
+ """
50451
+ The value to set the named header to.
50452
+ """
50453
+ return pulumi.get(self, "header_value")
50454
+
50455
+
50456
+ @pulumi.output_type
50457
+ class GetSecurityPolicyRuleMatchResult(dict):
50458
+ def __init__(__self__, *,
50459
+ configs: Sequence['outputs.GetSecurityPolicyRuleMatchConfigResult'],
50460
+ exprs: Sequence['outputs.GetSecurityPolicyRuleMatchExprResult'],
50461
+ versioned_expr: str):
50462
+ """
50463
+ :param Sequence['GetSecurityPolicyRuleMatchConfigArgs'] configs: The configuration options available when specifying versioned_expr. This field must be specified if versioned_expr is specified and cannot be specified if versioned_expr is not specified.
50464
+ :param Sequence['GetSecurityPolicyRuleMatchExprArgs'] exprs: User defined CEVAL expression. A CEVAL expression is used to specify match criteria such as origin.ip, source.region_code and contents in the request header.
50465
+ :param str versioned_expr: Predefined rule expression. If this field is specified, config must also be specified. Available options: SRC_IPS_V1: Must specify the corresponding src_ip_ranges field in config.
50466
+ """
50467
+ pulumi.set(__self__, "configs", configs)
50468
+ pulumi.set(__self__, "exprs", exprs)
50469
+ pulumi.set(__self__, "versioned_expr", versioned_expr)
50470
+
50471
+ @property
50472
+ @pulumi.getter
50473
+ def configs(self) -> Sequence['outputs.GetSecurityPolicyRuleMatchConfigResult']:
50474
+ """
50475
+ The configuration options available when specifying versioned_expr. This field must be specified if versioned_expr is specified and cannot be specified if versioned_expr is not specified.
50476
+ """
50477
+ return pulumi.get(self, "configs")
50478
+
50479
+ @property
50480
+ @pulumi.getter
50481
+ def exprs(self) -> Sequence['outputs.GetSecurityPolicyRuleMatchExprResult']:
50482
+ """
50483
+ User defined CEVAL expression. A CEVAL expression is used to specify match criteria such as origin.ip, source.region_code and contents in the request header.
50484
+ """
50485
+ return pulumi.get(self, "exprs")
50486
+
50487
+ @property
50488
+ @pulumi.getter(name="versionedExpr")
50489
+ def versioned_expr(self) -> str:
50490
+ """
50491
+ Predefined rule expression. If this field is specified, config must also be specified. Available options: SRC_IPS_V1: Must specify the corresponding src_ip_ranges field in config.
50492
+ """
50493
+ return pulumi.get(self, "versioned_expr")
50494
+
50495
+
50496
+ @pulumi.output_type
50497
+ class GetSecurityPolicyRuleMatchConfigResult(dict):
50498
+ def __init__(__self__, *,
50499
+ src_ip_ranges: Sequence[str]):
50500
+ """
50501
+ :param Sequence[str] src_ip_ranges: Set of IP addresses or ranges (IPV4 or IPV6) in CIDR notation to match against inbound traffic. There is a limit of 10 IP ranges per rule. A value of '*' matches all IPs (can be used to override the default behavior).
50502
+ """
50503
+ pulumi.set(__self__, "src_ip_ranges", src_ip_ranges)
50504
+
50505
+ @property
50506
+ @pulumi.getter(name="srcIpRanges")
50507
+ def src_ip_ranges(self) -> Sequence[str]:
50508
+ """
50509
+ Set of IP addresses or ranges (IPV4 or IPV6) in CIDR notation to match against inbound traffic. There is a limit of 10 IP ranges per rule. A value of '*' matches all IPs (can be used to override the default behavior).
50510
+ """
50511
+ return pulumi.get(self, "src_ip_ranges")
50512
+
50513
+
50514
+ @pulumi.output_type
50515
+ class GetSecurityPolicyRuleMatchExprResult(dict):
50516
+ def __init__(__self__, *,
50517
+ expression: str):
50518
+ """
50519
+ :param str expression: Textual representation of an expression in Common Expression Language syntax. The application context of the containing message determines which well-known feature set of CEL is supported.
50520
+ """
50521
+ pulumi.set(__self__, "expression", expression)
50522
+
50523
+ @property
50524
+ @pulumi.getter
50525
+ def expression(self) -> str:
50526
+ """
50527
+ Textual representation of an expression in Common Expression Language syntax. The application context of the containing message determines which well-known feature set of CEL is supported.
50528
+ """
50529
+ return pulumi.get(self, "expression")
50530
+
50531
+
50532
+ @pulumi.output_type
50533
+ class GetSecurityPolicyRulePreconfiguredWafConfigResult(dict):
50534
+ def __init__(__self__, *,
50535
+ exclusions: Sequence['outputs.GetSecurityPolicyRulePreconfiguredWafConfigExclusionResult']):
50536
+ """
50537
+ :param Sequence['GetSecurityPolicyRulePreconfiguredWafConfigExclusionArgs'] exclusions: An exclusion to apply during preconfigured WAF evaluation.
50538
+ """
50539
+ pulumi.set(__self__, "exclusions", exclusions)
50540
+
50541
+ @property
50542
+ @pulumi.getter
50543
+ def exclusions(self) -> Sequence['outputs.GetSecurityPolicyRulePreconfiguredWafConfigExclusionResult']:
50544
+ """
50545
+ An exclusion to apply during preconfigured WAF evaluation.
50546
+ """
50547
+ return pulumi.get(self, "exclusions")
50548
+
50549
+
50550
+ @pulumi.output_type
50551
+ class GetSecurityPolicyRulePreconfiguredWafConfigExclusionResult(dict):
50552
+ def __init__(__self__, *,
50553
+ request_cookies: Sequence['outputs.GetSecurityPolicyRulePreconfiguredWafConfigExclusionRequestCookyResult'],
50554
+ request_headers: Sequence['outputs.GetSecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeaderResult'],
50555
+ request_query_params: Sequence['outputs.GetSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamResult'],
50556
+ request_uris: Sequence['outputs.GetSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriResult'],
50557
+ target_rule_ids: Sequence[str],
50558
+ target_rule_set: str):
50559
+ """
50560
+ :param Sequence['GetSecurityPolicyRulePreconfiguredWafConfigExclusionRequestCookyArgs'] request_cookies: Request cookie whose value will be excluded from inspection during preconfigured WAF evaluation.
50561
+ :param Sequence['GetSecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeaderArgs'] request_headers: Request header whose value will be excluded from inspection during preconfigured WAF evaluation.
50562
+ :param Sequence['GetSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs'] request_query_params: Request query parameter whose value will be excluded from inspection during preconfigured WAF evaluation. Note that the parameter can be in the query string or in the POST body.
50563
+ :param Sequence['GetSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriArgs'] request_uris: Request URI from the request line to be excluded from inspection during preconfigured WAF evaluation. When specifying this field, the query or fragment part should be excluded.
50564
+ :param Sequence[str] target_rule_ids: A list of target rule IDs under the WAF rule set to apply the preconfigured WAF exclusion. If omitted, it refers to all the rule IDs under the WAF rule set.
50565
+ :param str target_rule_set: Target WAF rule set to apply the preconfigured WAF exclusion.
50566
+ """
50567
+ pulumi.set(__self__, "request_cookies", request_cookies)
50568
+ pulumi.set(__self__, "request_headers", request_headers)
50569
+ pulumi.set(__self__, "request_query_params", request_query_params)
50570
+ pulumi.set(__self__, "request_uris", request_uris)
50571
+ pulumi.set(__self__, "target_rule_ids", target_rule_ids)
50572
+ pulumi.set(__self__, "target_rule_set", target_rule_set)
50573
+
50574
+ @property
50575
+ @pulumi.getter(name="requestCookies")
50576
+ def request_cookies(self) -> Sequence['outputs.GetSecurityPolicyRulePreconfiguredWafConfigExclusionRequestCookyResult']:
50577
+ """
50578
+ Request cookie whose value will be excluded from inspection during preconfigured WAF evaluation.
50579
+ """
50580
+ return pulumi.get(self, "request_cookies")
50581
+
50582
+ @property
50583
+ @pulumi.getter(name="requestHeaders")
50584
+ def request_headers(self) -> Sequence['outputs.GetSecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeaderResult']:
50585
+ """
50586
+ Request header whose value will be excluded from inspection during preconfigured WAF evaluation.
50587
+ """
50588
+ return pulumi.get(self, "request_headers")
50589
+
50590
+ @property
50591
+ @pulumi.getter(name="requestQueryParams")
50592
+ def request_query_params(self) -> Sequence['outputs.GetSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamResult']:
50593
+ """
50594
+ Request query parameter whose value will be excluded from inspection during preconfigured WAF evaluation. Note that the parameter can be in the query string or in the POST body.
50595
+ """
50596
+ return pulumi.get(self, "request_query_params")
50597
+
50598
+ @property
50599
+ @pulumi.getter(name="requestUris")
50600
+ def request_uris(self) -> Sequence['outputs.GetSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriResult']:
50601
+ """
50602
+ Request URI from the request line to be excluded from inspection during preconfigured WAF evaluation. When specifying this field, the query or fragment part should be excluded.
50603
+ """
50604
+ return pulumi.get(self, "request_uris")
50605
+
50606
+ @property
50607
+ @pulumi.getter(name="targetRuleIds")
50608
+ def target_rule_ids(self) -> Sequence[str]:
50609
+ """
50610
+ A list of target rule IDs under the WAF rule set to apply the preconfigured WAF exclusion. If omitted, it refers to all the rule IDs under the WAF rule set.
50611
+ """
50612
+ return pulumi.get(self, "target_rule_ids")
50613
+
50614
+ @property
50615
+ @pulumi.getter(name="targetRuleSet")
50616
+ def target_rule_set(self) -> str:
50617
+ """
50618
+ Target WAF rule set to apply the preconfigured WAF exclusion.
50619
+ """
50620
+ return pulumi.get(self, "target_rule_set")
50621
+
50622
+
50623
+ @pulumi.output_type
50624
+ class GetSecurityPolicyRulePreconfiguredWafConfigExclusionRequestCookyResult(dict):
50625
+ def __init__(__self__, *,
50626
+ operator: str,
50627
+ value: str):
50628
+ """
50629
+ :param str operator: You can specify an exact match or a partial match by using a field operator and a field value. Available options: EQUALS: The operator matches if the field value equals the specified value. STARTS_WITH: The operator matches if the field value starts with the specified value. ENDS_WITH: The operator matches if the field value ends with the specified value. CONTAINS: The operator matches if the field value contains the specified value. EQUALS_ANY: The operator matches if the field value is any value.
50630
+ :param str value: A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation. The field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.
50631
+ """
50632
+ pulumi.set(__self__, "operator", operator)
50633
+ pulumi.set(__self__, "value", value)
50634
+
50635
+ @property
50636
+ @pulumi.getter
50637
+ def operator(self) -> str:
50638
+ """
50639
+ You can specify an exact match or a partial match by using a field operator and a field value. Available options: EQUALS: The operator matches if the field value equals the specified value. STARTS_WITH: The operator matches if the field value starts with the specified value. ENDS_WITH: The operator matches if the field value ends with the specified value. CONTAINS: The operator matches if the field value contains the specified value. EQUALS_ANY: The operator matches if the field value is any value.
50640
+ """
50641
+ return pulumi.get(self, "operator")
50642
+
50643
+ @property
50644
+ @pulumi.getter
50645
+ def value(self) -> str:
50646
+ """
50647
+ A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation. The field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.
50648
+ """
50649
+ return pulumi.get(self, "value")
50650
+
50651
+
50652
+ @pulumi.output_type
50653
+ class GetSecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeaderResult(dict):
50654
+ def __init__(__self__, *,
50655
+ operator: str,
50656
+ value: str):
50657
+ """
50658
+ :param str operator: You can specify an exact match or a partial match by using a field operator and a field value. Available options: EQUALS: The operator matches if the field value equals the specified value. STARTS_WITH: The operator matches if the field value starts with the specified value. ENDS_WITH: The operator matches if the field value ends with the specified value. CONTAINS: The operator matches if the field value contains the specified value. EQUALS_ANY: The operator matches if the field value is any value.
50659
+ :param str value: A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation. The field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.
50660
+ """
50661
+ pulumi.set(__self__, "operator", operator)
50662
+ pulumi.set(__self__, "value", value)
50663
+
50664
+ @property
50665
+ @pulumi.getter
50666
+ def operator(self) -> str:
50667
+ """
50668
+ You can specify an exact match or a partial match by using a field operator and a field value. Available options: EQUALS: The operator matches if the field value equals the specified value. STARTS_WITH: The operator matches if the field value starts with the specified value. ENDS_WITH: The operator matches if the field value ends with the specified value. CONTAINS: The operator matches if the field value contains the specified value. EQUALS_ANY: The operator matches if the field value is any value.
50669
+ """
50670
+ return pulumi.get(self, "operator")
50671
+
50672
+ @property
50673
+ @pulumi.getter
50674
+ def value(self) -> str:
50675
+ """
50676
+ A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation. The field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.
50677
+ """
50678
+ return pulumi.get(self, "value")
50679
+
50680
+
50681
+ @pulumi.output_type
50682
+ class GetSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamResult(dict):
50683
+ def __init__(__self__, *,
50684
+ operator: str,
50685
+ value: str):
50686
+ """
50687
+ :param str operator: You can specify an exact match or a partial match by using a field operator and a field value. Available options: EQUALS: The operator matches if the field value equals the specified value. STARTS_WITH: The operator matches if the field value starts with the specified value. ENDS_WITH: The operator matches if the field value ends with the specified value. CONTAINS: The operator matches if the field value contains the specified value. EQUALS_ANY: The operator matches if the field value is any value.
50688
+ :param str value: A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation. The field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.
50689
+ """
50690
+ pulumi.set(__self__, "operator", operator)
50691
+ pulumi.set(__self__, "value", value)
50692
+
50693
+ @property
50694
+ @pulumi.getter
50695
+ def operator(self) -> str:
50696
+ """
50697
+ You can specify an exact match or a partial match by using a field operator and a field value. Available options: EQUALS: The operator matches if the field value equals the specified value. STARTS_WITH: The operator matches if the field value starts with the specified value. ENDS_WITH: The operator matches if the field value ends with the specified value. CONTAINS: The operator matches if the field value contains the specified value. EQUALS_ANY: The operator matches if the field value is any value.
50698
+ """
50699
+ return pulumi.get(self, "operator")
50700
+
50701
+ @property
50702
+ @pulumi.getter
50703
+ def value(self) -> str:
50704
+ """
50705
+ A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation. The field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.
50706
+ """
50707
+ return pulumi.get(self, "value")
50708
+
50709
+
50710
+ @pulumi.output_type
50711
+ class GetSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriResult(dict):
50712
+ def __init__(__self__, *,
50713
+ operator: str,
50714
+ value: str):
50715
+ """
50716
+ :param str operator: You can specify an exact match or a partial match by using a field operator and a field value. Available options: EQUALS: The operator matches if the field value equals the specified value. STARTS_WITH: The operator matches if the field value starts with the specified value. ENDS_WITH: The operator matches if the field value ends with the specified value. CONTAINS: The operator matches if the field value contains the specified value. EQUALS_ANY: The operator matches if the field value is any value.
50717
+ :param str value: A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation. The field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.
50718
+ """
50719
+ pulumi.set(__self__, "operator", operator)
50720
+ pulumi.set(__self__, "value", value)
50721
+
50722
+ @property
50723
+ @pulumi.getter
50724
+ def operator(self) -> str:
50725
+ """
50726
+ You can specify an exact match or a partial match by using a field operator and a field value. Available options: EQUALS: The operator matches if the field value equals the specified value. STARTS_WITH: The operator matches if the field value starts with the specified value. ENDS_WITH: The operator matches if the field value ends with the specified value. CONTAINS: The operator matches if the field value contains the specified value. EQUALS_ANY: The operator matches if the field value is any value.
50727
+ """
50728
+ return pulumi.get(self, "operator")
50729
+
50730
+ @property
50731
+ @pulumi.getter
50732
+ def value(self) -> str:
50733
+ """
50734
+ A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation. The field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.
50735
+ """
50736
+ return pulumi.get(self, "value")
50737
+
50738
+
50739
+ @pulumi.output_type
50740
+ class GetSecurityPolicyRuleRateLimitOptionResult(dict):
50741
+ def __init__(__self__, *,
50742
+ ban_duration_sec: int,
50743
+ ban_thresholds: Sequence['outputs.GetSecurityPolicyRuleRateLimitOptionBanThresholdResult'],
50744
+ conform_action: str,
50745
+ enforce_on_key: str,
50746
+ enforce_on_key_configs: Sequence['outputs.GetSecurityPolicyRuleRateLimitOptionEnforceOnKeyConfigResult'],
50747
+ enforce_on_key_name: str,
50748
+ exceed_action: str,
50749
+ exceed_redirect_options: Sequence['outputs.GetSecurityPolicyRuleRateLimitOptionExceedRedirectOptionResult'],
50750
+ rate_limit_thresholds: Sequence['outputs.GetSecurityPolicyRuleRateLimitOptionRateLimitThresholdResult']):
50751
+ """
50752
+ :param int ban_duration_sec: Can only be specified if the action for the rule is "rate_based_ban". If specified, determines the time (in seconds) the traffic will continue to be banned by the rate limit after the rate falls below the threshold.
50753
+ :param Sequence['GetSecurityPolicyRuleRateLimitOptionBanThresholdArgs'] ban_thresholds: Can only be specified if the action for the rule is "rate_based_ban". If specified, the key will be banned for the configured 'banDurationSec' when the number of requests that exceed the 'rateLimitThreshold' also exceed this 'banThreshold'.
50754
+ :param str conform_action: Action to take for requests that are under the configured rate limit threshold. Valid option is "allow" only.
50755
+ :param str enforce_on_key: Determines the key to enforce the rateLimitThreshold on
50756
+ :param Sequence['GetSecurityPolicyRuleRateLimitOptionEnforceOnKeyConfigArgs'] enforce_on_key_configs: Enforce On Key Config of this security policy
50757
+ :param str enforce_on_key_name: Rate limit key name applicable only for the following key types: HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value. HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value.
50758
+ :param str exceed_action: Action to take for requests that are above the configured rate limit threshold, to either deny with a specified HTTP response code, or redirect to a different endpoint. Valid options are "deny()" where valid values for status are 403, 404, 429, and 502, and "redirect" where the redirect parameters come from exceedRedirectOptions below.
50759
+ :param Sequence['GetSecurityPolicyRuleRateLimitOptionExceedRedirectOptionArgs'] exceed_redirect_options: Parameters defining the redirect action that is used as the exceed action. Cannot be specified if the exceed action is not redirect.
50760
+ :param Sequence['GetSecurityPolicyRuleRateLimitOptionRateLimitThresholdArgs'] rate_limit_thresholds: Threshold at which to begin ratelimiting.
50761
+ """
50762
+ pulumi.set(__self__, "ban_duration_sec", ban_duration_sec)
50763
+ pulumi.set(__self__, "ban_thresholds", ban_thresholds)
50764
+ pulumi.set(__self__, "conform_action", conform_action)
50765
+ pulumi.set(__self__, "enforce_on_key", enforce_on_key)
50766
+ pulumi.set(__self__, "enforce_on_key_configs", enforce_on_key_configs)
50767
+ pulumi.set(__self__, "enforce_on_key_name", enforce_on_key_name)
50768
+ pulumi.set(__self__, "exceed_action", exceed_action)
50769
+ pulumi.set(__self__, "exceed_redirect_options", exceed_redirect_options)
50770
+ pulumi.set(__self__, "rate_limit_thresholds", rate_limit_thresholds)
50771
+
50772
+ @property
50773
+ @pulumi.getter(name="banDurationSec")
50774
+ def ban_duration_sec(self) -> int:
50775
+ """
50776
+ Can only be specified if the action for the rule is "rate_based_ban". If specified, determines the time (in seconds) the traffic will continue to be banned by the rate limit after the rate falls below the threshold.
50777
+ """
50778
+ return pulumi.get(self, "ban_duration_sec")
50779
+
50780
+ @property
50781
+ @pulumi.getter(name="banThresholds")
50782
+ def ban_thresholds(self) -> Sequence['outputs.GetSecurityPolicyRuleRateLimitOptionBanThresholdResult']:
50783
+ """
50784
+ Can only be specified if the action for the rule is "rate_based_ban". If specified, the key will be banned for the configured 'banDurationSec' when the number of requests that exceed the 'rateLimitThreshold' also exceed this 'banThreshold'.
50785
+ """
50786
+ return pulumi.get(self, "ban_thresholds")
50787
+
50788
+ @property
50789
+ @pulumi.getter(name="conformAction")
50790
+ def conform_action(self) -> str:
50791
+ """
50792
+ Action to take for requests that are under the configured rate limit threshold. Valid option is "allow" only.
50793
+ """
50794
+ return pulumi.get(self, "conform_action")
50795
+
50796
+ @property
50797
+ @pulumi.getter(name="enforceOnKey")
50798
+ def enforce_on_key(self) -> str:
50799
+ """
50800
+ Determines the key to enforce the rateLimitThreshold on
50801
+ """
50802
+ return pulumi.get(self, "enforce_on_key")
50803
+
50804
+ @property
50805
+ @pulumi.getter(name="enforceOnKeyConfigs")
50806
+ def enforce_on_key_configs(self) -> Sequence['outputs.GetSecurityPolicyRuleRateLimitOptionEnforceOnKeyConfigResult']:
50807
+ """
50808
+ Enforce On Key Config of this security policy
50809
+ """
50810
+ return pulumi.get(self, "enforce_on_key_configs")
50811
+
50812
+ @property
50813
+ @pulumi.getter(name="enforceOnKeyName")
50814
+ def enforce_on_key_name(self) -> str:
50815
+ """
50816
+ Rate limit key name applicable only for the following key types: HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value. HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value.
50817
+ """
50818
+ return pulumi.get(self, "enforce_on_key_name")
50819
+
50820
+ @property
50821
+ @pulumi.getter(name="exceedAction")
50822
+ def exceed_action(self) -> str:
50823
+ """
50824
+ Action to take for requests that are above the configured rate limit threshold, to either deny with a specified HTTP response code, or redirect to a different endpoint. Valid options are "deny()" where valid values for status are 403, 404, 429, and 502, and "redirect" where the redirect parameters come from exceedRedirectOptions below.
50825
+ """
50826
+ return pulumi.get(self, "exceed_action")
50827
+
50828
+ @property
50829
+ @pulumi.getter(name="exceedRedirectOptions")
50830
+ def exceed_redirect_options(self) -> Sequence['outputs.GetSecurityPolicyRuleRateLimitOptionExceedRedirectOptionResult']:
50831
+ """
50832
+ Parameters defining the redirect action that is used as the exceed action. Cannot be specified if the exceed action is not redirect.
50833
+ """
50834
+ return pulumi.get(self, "exceed_redirect_options")
50835
+
50836
+ @property
50837
+ @pulumi.getter(name="rateLimitThresholds")
50838
+ def rate_limit_thresholds(self) -> Sequence['outputs.GetSecurityPolicyRuleRateLimitOptionRateLimitThresholdResult']:
50839
+ """
50840
+ Threshold at which to begin ratelimiting.
50841
+ """
50842
+ return pulumi.get(self, "rate_limit_thresholds")
50843
+
50844
+
50845
+ @pulumi.output_type
50846
+ class GetSecurityPolicyRuleRateLimitOptionBanThresholdResult(dict):
50847
+ def __init__(__self__, *,
50848
+ count: int,
50849
+ interval_sec: int):
50850
+ """
50851
+ :param int count: Number of HTTP(S) requests for calculating the threshold.
50852
+ :param int interval_sec: Interval over which the threshold is computed.
50853
+ """
50854
+ pulumi.set(__self__, "count", count)
50855
+ pulumi.set(__self__, "interval_sec", interval_sec)
50856
+
50857
+ @property
50858
+ @pulumi.getter
50859
+ def count(self) -> int:
50860
+ """
50861
+ Number of HTTP(S) requests for calculating the threshold.
50862
+ """
50863
+ return pulumi.get(self, "count")
50864
+
50865
+ @property
50866
+ @pulumi.getter(name="intervalSec")
50867
+ def interval_sec(self) -> int:
50868
+ """
50869
+ Interval over which the threshold is computed.
50870
+ """
50871
+ return pulumi.get(self, "interval_sec")
50872
+
50873
+
50874
+ @pulumi.output_type
50875
+ class GetSecurityPolicyRuleRateLimitOptionEnforceOnKeyConfigResult(dict):
50876
+ def __init__(__self__, *,
50877
+ enforce_on_key_name: str,
50878
+ enforce_on_key_type: str):
50879
+ """
50880
+ :param str enforce_on_key_name: Rate limit key name applicable only for the following key types: HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value. HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value.
50881
+ :param str enforce_on_key_type: Determines the key to enforce the rate_limit_threshold on
50882
+ """
50883
+ pulumi.set(__self__, "enforce_on_key_name", enforce_on_key_name)
50884
+ pulumi.set(__self__, "enforce_on_key_type", enforce_on_key_type)
50885
+
50886
+ @property
50887
+ @pulumi.getter(name="enforceOnKeyName")
50888
+ def enforce_on_key_name(self) -> str:
50889
+ """
50890
+ Rate limit key name applicable only for the following key types: HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value. HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value.
50891
+ """
50892
+ return pulumi.get(self, "enforce_on_key_name")
50893
+
50894
+ @property
50895
+ @pulumi.getter(name="enforceOnKeyType")
50896
+ def enforce_on_key_type(self) -> str:
50897
+ """
50898
+ Determines the key to enforce the rate_limit_threshold on
50899
+ """
50900
+ return pulumi.get(self, "enforce_on_key_type")
50901
+
50902
+
50903
+ @pulumi.output_type
50904
+ class GetSecurityPolicyRuleRateLimitOptionExceedRedirectOptionResult(dict):
50905
+ def __init__(__self__, *,
50906
+ target: str,
50907
+ type: str):
50908
+ """
50909
+ :param str target: Target for the redirect action. This is required if the type is EXTERNAL_302 and cannot be specified for GOOGLE_RECAPTCHA.
50910
+ :param str type: Type of the redirect action.
50911
+ """
50912
+ pulumi.set(__self__, "target", target)
50913
+ pulumi.set(__self__, "type", type)
50914
+
50915
+ @property
50916
+ @pulumi.getter
50917
+ def target(self) -> str:
50918
+ """
50919
+ Target for the redirect action. This is required if the type is EXTERNAL_302 and cannot be specified for GOOGLE_RECAPTCHA.
50920
+ """
50921
+ return pulumi.get(self, "target")
50922
+
50923
+ @property
50924
+ @pulumi.getter
50925
+ def type(self) -> str:
50926
+ """
50927
+ Type of the redirect action.
50928
+ """
50929
+ return pulumi.get(self, "type")
50930
+
50931
+
50932
+ @pulumi.output_type
50933
+ class GetSecurityPolicyRuleRateLimitOptionRateLimitThresholdResult(dict):
50934
+ def __init__(__self__, *,
50935
+ count: int,
50936
+ interval_sec: int):
50937
+ """
50938
+ :param int count: Number of HTTP(S) requests for calculating the threshold.
50939
+ :param int interval_sec: Interval over which the threshold is computed.
50940
+ """
50941
+ pulumi.set(__self__, "count", count)
50942
+ pulumi.set(__self__, "interval_sec", interval_sec)
50943
+
50944
+ @property
50945
+ @pulumi.getter
50946
+ def count(self) -> int:
50947
+ """
50948
+ Number of HTTP(S) requests for calculating the threshold.
50949
+ """
50950
+ return pulumi.get(self, "count")
50951
+
50952
+ @property
50953
+ @pulumi.getter(name="intervalSec")
50954
+ def interval_sec(self) -> int:
50955
+ """
50956
+ Interval over which the threshold is computed.
50957
+ """
50958
+ return pulumi.get(self, "interval_sec")
50959
+
50960
+
50961
+ @pulumi.output_type
50962
+ class GetSecurityPolicyRuleRedirectOptionResult(dict):
50963
+ def __init__(__self__, *,
50964
+ target: str,
50965
+ type: str):
50966
+ """
50967
+ :param str target: Target for the redirect action. This is required if the type is EXTERNAL_302 and cannot be specified for GOOGLE_RECAPTCHA.
50968
+ :param str type: Type of the redirect action. Available options: EXTERNAL_302: Must specify the corresponding target field in config. GOOGLE_RECAPTCHA: Cannot specify target field in config.
50969
+ """
50970
+ pulumi.set(__self__, "target", target)
50971
+ pulumi.set(__self__, "type", type)
50972
+
50973
+ @property
50974
+ @pulumi.getter
50975
+ def target(self) -> str:
50976
+ """
50977
+ Target for the redirect action. This is required if the type is EXTERNAL_302 and cannot be specified for GOOGLE_RECAPTCHA.
50978
+ """
50979
+ return pulumi.get(self, "target")
50980
+
50981
+ @property
50982
+ @pulumi.getter
50983
+ def type(self) -> str:
50984
+ """
50985
+ Type of the redirect action. Available options: EXTERNAL_302: Must specify the corresponding target field in config. GOOGLE_RECAPTCHA: Cannot specify target field in config.
50986
+ """
50987
+ return pulumi.get(self, "type")
50988
+
50989
+
49951
50990
  @pulumi.output_type
49952
50991
  class GetSnapshotSnapshotEncryptionKeyResult(dict):
49953
50992
  def __init__(__self__, *,