import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * This resource provides the Web App Firewall Policy resource in Oracle Cloud Infrastructure Waf service. * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/waf/latest/WebAppFirewallPolicy * * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/web_app_firewall * * Creates a new WebAppFirewallPolicy. * * ## Example Usage * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as oci from "@pulumi/oci"; * * const testWebAppFirewallPolicy = new oci.waf.AppFirewallPolicy("test_web_app_firewall_policy", { * compartmentId: compartmentId, * actions: [{ * name: webAppFirewallPolicyActionsName, * type: webAppFirewallPolicyActionsType, * body: { * text: webAppFirewallPolicyActionsBodyText, * type: webAppFirewallPolicyActionsBodyType, * }, * code: Number(webAppFirewallPolicyActionsCode), * headers: [{ * name: webAppFirewallPolicyActionsHeadersName, * value: webAppFirewallPolicyActionsHeadersValue, * }], * }], * definedTags: { * "foo-namespace.bar-key": "value", * }, * displayName: webAppFirewallPolicyDisplayName, * freeformTags: { * "bar-key": "value", * }, * requestAccessControl: { * defaultActionName: webAppFirewallPolicyRequestAccessControlDefaultActionName, * rules: [{ * actionName: webAppFirewallPolicyRequestAccessControlRulesActionName, * name: webAppFirewallPolicyRequestAccessControlRulesName, * type: webAppFirewallPolicyRequestAccessControlRulesType, * condition: webAppFirewallPolicyRequestAccessControlRulesCondition, * conditionLanguage: webAppFirewallPolicyRequestAccessControlRulesConditionLanguage, * }], * }, * requestProtection: { * bodyInspectionSizeLimitExceededActionName: webAppFirewallPolicyRequestProtectionBodyInspectionSizeLimitExceededActionName, * bodyInspectionSizeLimitInBytes: Number(webAppFirewallPolicyRequestProtectionBodyInspectionSizeLimitInBytes), * rules: [{ * actionName: webAppFirewallPolicyRequestProtectionRulesActionName, * name: webAppFirewallPolicyRequestProtectionRulesName, * protectionCapabilities: [{ * key: webAppFirewallPolicyRequestProtectionRulesProtectionCapabilitiesKey, * version: Number(webAppFirewallPolicyRequestProtectionRulesProtectionCapabilitiesVersion), * actionName: webAppFirewallPolicyRequestProtectionRulesProtectionCapabilitiesActionName, * collaborativeActionThreshold: Number(webAppFirewallPolicyRequestProtectionRulesProtectionCapabilitiesCollaborativeActionThreshold), * collaborativeWeights: [{ * key: webAppFirewallPolicyRequestProtectionRulesProtectionCapabilitiesCollaborativeWeightsKey, * weight: Number(webAppFirewallPolicyRequestProtectionRulesProtectionCapabilitiesCollaborativeWeightsWeight), * }], * exclusions: { * args: webAppFirewallPolicyRequestProtectionRulesProtectionCapabilitiesExclusionsArgs, * requestCookies: webAppFirewallPolicyRequestProtectionRulesProtectionCapabilitiesExclusionsRequestCookies, * }, * }], * type: webAppFirewallPolicyRequestProtectionRulesType, * condition: webAppFirewallPolicyRequestProtectionRulesCondition, * conditionLanguage: webAppFirewallPolicyRequestProtectionRulesConditionLanguage, * isBodyInspectionEnabled: webAppFirewallPolicyRequestProtectionRulesIsBodyInspectionEnabled === "true", * protectionCapabilitySettings: { * allowedHttpMethods: webAppFirewallPolicyRequestProtectionRulesProtectionCapabilitySettingsAllowedHttpMethods, * maxHttpRequestHeaderLength: Number(webAppFirewallPolicyRequestProtectionRulesProtectionCapabilitySettingsMaxHttpRequestHeaderLength), * maxHttpRequestHeaders: Number(webAppFirewallPolicyRequestProtectionRulesProtectionCapabilitySettingsMaxHttpRequestHeaders), * maxNumberOfArguments: Number(webAppFirewallPolicyRequestProtectionRulesProtectionCapabilitySettingsMaxNumberOfArguments), * maxSingleArgumentLength: Number(webAppFirewallPolicyRequestProtectionRulesProtectionCapabilitySettingsMaxSingleArgumentLength), * maxTotalArgumentLength: Number(webAppFirewallPolicyRequestProtectionRulesProtectionCapabilitySettingsMaxTotalArgumentLength), * }, * }], * }, * requestRateLimiting: { * rules: [{ * actionName: webAppFirewallPolicyRequestRateLimitingRulesActionName, * configurations: [{ * periodInSeconds: Number(webAppFirewallPolicyRequestRateLimitingRulesConfigurationsPeriodInSeconds), * requestsLimit: Number(webAppFirewallPolicyRequestRateLimitingRulesConfigurationsRequestsLimit), * actionDurationInSeconds: Number(webAppFirewallPolicyRequestRateLimitingRulesConfigurationsActionDurationInSeconds), * }], * name: webAppFirewallPolicyRequestRateLimitingRulesName, * type: webAppFirewallPolicyRequestRateLimitingRulesType, * condition: webAppFirewallPolicyRequestRateLimitingRulesCondition, * conditionLanguage: webAppFirewallPolicyRequestRateLimitingRulesConditionLanguage, * }], * }, * responseAccessControl: { * rules: [{ * actionName: webAppFirewallPolicyResponseAccessControlRulesActionName, * name: webAppFirewallPolicyResponseAccessControlRulesName, * type: webAppFirewallPolicyResponseAccessControlRulesType, * condition: webAppFirewallPolicyResponseAccessControlRulesCondition, * conditionLanguage: webAppFirewallPolicyResponseAccessControlRulesConditionLanguage, * }], * }, * responseProtection: { * rules: [{ * actionName: webAppFirewallPolicyResponseProtectionRulesActionName, * name: webAppFirewallPolicyResponseProtectionRulesName, * protectionCapabilities: [{ * key: webAppFirewallPolicyResponseProtectionRulesProtectionCapabilitiesKey, * version: Number(webAppFirewallPolicyResponseProtectionRulesProtectionCapabilitiesVersion), * actionName: webAppFirewallPolicyResponseProtectionRulesProtectionCapabilitiesActionName, * collaborativeActionThreshold: Number(webAppFirewallPolicyResponseProtectionRulesProtectionCapabilitiesCollaborativeActionThreshold), * collaborativeWeights: [{ * key: webAppFirewallPolicyResponseProtectionRulesProtectionCapabilitiesCollaborativeWeightsKey, * weight: Number(webAppFirewallPolicyResponseProtectionRulesProtectionCapabilitiesCollaborativeWeightsWeight), * }], * exclusions: { * args: webAppFirewallPolicyResponseProtectionRulesProtectionCapabilitiesExclusionsArgs, * requestCookies: webAppFirewallPolicyResponseProtectionRulesProtectionCapabilitiesExclusionsRequestCookies, * }, * }], * type: webAppFirewallPolicyResponseProtectionRulesType, * condition: webAppFirewallPolicyResponseProtectionRulesCondition, * conditionLanguage: webAppFirewallPolicyResponseProtectionRulesConditionLanguage, * isBodyInspectionEnabled: webAppFirewallPolicyResponseProtectionRulesIsBodyInspectionEnabled === "true", * protectionCapabilitySettings: { * allowedHttpMethods: webAppFirewallPolicyResponseProtectionRulesProtectionCapabilitySettingsAllowedHttpMethods, * maxHttpRequestHeaderLength: Number(webAppFirewallPolicyResponseProtectionRulesProtectionCapabilitySettingsMaxHttpRequestHeaderLength), * maxHttpRequestHeaders: Number(webAppFirewallPolicyResponseProtectionRulesProtectionCapabilitySettingsMaxHttpRequestHeaders), * maxNumberOfArguments: Number(webAppFirewallPolicyResponseProtectionRulesProtectionCapabilitySettingsMaxNumberOfArguments), * maxSingleArgumentLength: Number(webAppFirewallPolicyResponseProtectionRulesProtectionCapabilitySettingsMaxSingleArgumentLength), * maxTotalArgumentLength: Number(webAppFirewallPolicyResponseProtectionRulesProtectionCapabilitySettingsMaxTotalArgumentLength), * }, * }], * }, * systemTags: webAppFirewallPolicySystemTags, * }); * ``` * * ## Import * * WebAppFirewallPolicies can be imported using the `id`, e.g. * * ```sh * $ pulumi import oci:Waf/appFirewallPolicy:AppFirewallPolicy test_web_app_firewall_policy "id" * ``` */ export declare class AppFirewallPolicy extends pulumi.CustomResource { /** * Get an existing AppFirewallPolicy resource's state with the given name, ID, and optional extra * properties used to qualify the lookup. * * @param name The _unique_ name of the resulting resource. * @param id The _unique_ provider ID of the resource to lookup. * @param state Any extra arguments used during the lookup. * @param opts Optional settings to control the behavior of the CustomResource. */ static get(name: string, id: pulumi.Input, state?: AppFirewallPolicyState, opts?: pulumi.CustomResourceOptions): AppFirewallPolicy; /** * Returns true if the given object is an instance of AppFirewallPolicy. This is designed to work even * when multiple copies of the Pulumi SDK have been loaded into the same process. */ static isInstance(obj: any): obj is AppFirewallPolicy; /** * (Updatable) Predefined actions for use in multiple different rules. Not all actions are supported in every module. Some actions terminate further execution of modules and rules in a module and some do not. Actions names must be unique within this array. */ readonly actions: pulumi.Output; /** * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment. */ readonly compartmentId: pulumi.Output; /** * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. Example: `{"foo-namespace.bar-key": "value"}` */ readonly definedTags: pulumi.Output<{ [key: string]: string; }>; /** * (Updatable) WebAppFirewallPolicy display name, can be renamed. */ readonly displayName: pulumi.Output; /** * (Updatable) Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. Example: `{"bar-key": "value"}` */ readonly freeformTags: pulumi.Output<{ [key: string]: string; }>; /** * A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in FAILED state. */ readonly lifecycleDetails: pulumi.Output; /** * (Updatable) Module that allows inspection of HTTP request properties and to return a defined HTTP response. In this module, rules with the name 'Default Action' are not allowed, since this name is reserved for default action logs. */ readonly requestAccessControl: pulumi.Output; /** * (Updatable) Module that allows to enable OCI-managed protection capabilities for incoming HTTP requests. */ readonly requestProtection: pulumi.Output; /** * (Updatable) Module that allows inspection of HTTP connection properties and to limit requests frequency for a given key. */ readonly requestRateLimiting: pulumi.Output; /** * (Updatable) Module that allows inspection of HTTP response properties and to return a defined HTTP response. */ readonly responseAccessControl: pulumi.Output; /** * (Updatable) Module that allows to enable OCI-managed protection capabilities for HTTP responses. */ readonly responseProtection: pulumi.Output; /** * The current state of the WebAppFirewallPolicy. */ readonly state: pulumi.Output; /** * (Updatable) Usage of system tag keys. These predefined keys are scoped to namespaces. Example: `{"orcl-cloud.free-tier-retained": "true"}` * * ** IMPORTANT ** * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values */ readonly systemTags: pulumi.Output<{ [key: string]: string; }>; /** * The time the WebAppFirewallPolicy was created. An RFC3339 formatted datetime string. */ readonly timeCreated: pulumi.Output; /** * The time the WebAppFirewallPolicy was updated. An RFC3339 formatted datetime string. */ readonly timeUpdated: pulumi.Output; /** * Create a AppFirewallPolicy resource with the given unique name, arguments, and options. * * @param name The _unique_ name of the resource. * @param args The arguments to use to populate this resource's properties. * @param opts A bag of options that control this resource's behavior. */ constructor(name: string, args: AppFirewallPolicyArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering AppFirewallPolicy resources. */ export interface AppFirewallPolicyState { /** * (Updatable) Predefined actions for use in multiple different rules. Not all actions are supported in every module. Some actions terminate further execution of modules and rules in a module and some do not. Actions names must be unique within this array. */ actions?: pulumi.Input[] | undefined>; /** * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment. */ compartmentId?: pulumi.Input; /** * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. Example: `{"foo-namespace.bar-key": "value"}` */ definedTags?: pulumi.Input<{ [key: string]: pulumi.Input; } | undefined>; /** * (Updatable) WebAppFirewallPolicy display name, can be renamed. */ displayName?: pulumi.Input; /** * (Updatable) Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. Example: `{"bar-key": "value"}` */ freeformTags?: pulumi.Input<{ [key: string]: pulumi.Input; } | undefined>; /** * A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in FAILED state. */ lifecycleDetails?: pulumi.Input; /** * (Updatable) Module that allows inspection of HTTP request properties and to return a defined HTTP response. In this module, rules with the name 'Default Action' are not allowed, since this name is reserved for default action logs. */ requestAccessControl?: pulumi.Input; /** * (Updatable) Module that allows to enable OCI-managed protection capabilities for incoming HTTP requests. */ requestProtection?: pulumi.Input; /** * (Updatable) Module that allows inspection of HTTP connection properties and to limit requests frequency for a given key. */ requestRateLimiting?: pulumi.Input; /** * (Updatable) Module that allows inspection of HTTP response properties and to return a defined HTTP response. */ responseAccessControl?: pulumi.Input; /** * (Updatable) Module that allows to enable OCI-managed protection capabilities for HTTP responses. */ responseProtection?: pulumi.Input; /** * The current state of the WebAppFirewallPolicy. */ state?: pulumi.Input; /** * (Updatable) Usage of system tag keys. These predefined keys are scoped to namespaces. Example: `{"orcl-cloud.free-tier-retained": "true"}` * * ** IMPORTANT ** * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values */ systemTags?: pulumi.Input<{ [key: string]: pulumi.Input; } | undefined>; /** * The time the WebAppFirewallPolicy was created. An RFC3339 formatted datetime string. */ timeCreated?: pulumi.Input; /** * The time the WebAppFirewallPolicy was updated. An RFC3339 formatted datetime string. */ timeUpdated?: pulumi.Input; } /** * The set of arguments for constructing a AppFirewallPolicy resource. */ export interface AppFirewallPolicyArgs { /** * (Updatable) Predefined actions for use in multiple different rules. Not all actions are supported in every module. Some actions terminate further execution of modules and rules in a module and some do not. Actions names must be unique within this array. */ actions?: pulumi.Input[] | undefined>; /** * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment. */ compartmentId: pulumi.Input; /** * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. Example: `{"foo-namespace.bar-key": "value"}` */ definedTags?: pulumi.Input<{ [key: string]: pulumi.Input; } | undefined>; /** * (Updatable) WebAppFirewallPolicy display name, can be renamed. */ displayName?: pulumi.Input; /** * (Updatable) Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. Example: `{"bar-key": "value"}` */ freeformTags?: pulumi.Input<{ [key: string]: pulumi.Input; } | undefined>; /** * (Updatable) Module that allows inspection of HTTP request properties and to return a defined HTTP response. In this module, rules with the name 'Default Action' are not allowed, since this name is reserved for default action logs. */ requestAccessControl?: pulumi.Input; /** * (Updatable) Module that allows to enable OCI-managed protection capabilities for incoming HTTP requests. */ requestProtection?: pulumi.Input; /** * (Updatable) Module that allows inspection of HTTP connection properties and to limit requests frequency for a given key. */ requestRateLimiting?: pulumi.Input; /** * (Updatable) Module that allows inspection of HTTP response properties and to return a defined HTTP response. */ responseAccessControl?: pulumi.Input; /** * (Updatable) Module that allows to enable OCI-managed protection capabilities for HTTP responses. */ responseProtection?: pulumi.Input; /** * (Updatable) Usage of system tag keys. These predefined keys are scoped to namespaces. Example: `{"orcl-cloud.free-tier-retained": "true"}` * * ** IMPORTANT ** * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values */ systemTags?: pulumi.Input<{ [key: string]: pulumi.Input; } | undefined>; } //# sourceMappingURL=appFirewallPolicy.d.ts.map