import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * Manages a Front Door (standard/premium) Security Policy. * * ## Example Usage * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as azure from "@pulumi/azure"; * * const example = new azure.core.ResourceGroup("example", { * name: "example-cdn-frontdoor", * location: "West Europe", * }); * const exampleFrontdoorProfile = new azure.cdn.FrontdoorProfile("example", { * name: "example-profile", * resourceGroupName: example.name, * skuName: "Standard_AzureFrontDoor", * }); * const exampleFrontdoorFirewallPolicy = new azure.cdn.FrontdoorFirewallPolicy("example", { * name: "exampleWAF", * resourceGroupName: example.name, * skuName: exampleFrontdoorProfile.skuName, * enabled: true, * mode: "Prevention", * redirectUrl: "https://www.contoso.com", * customBlockResponseStatusCode: 403, * customBlockResponseBody: "PGh0bWw+CjxoZWFkZXI+PHRpdGxlPkhlbGxvPC90aXRsZT48L2hlYWRlcj4KPGJvZHk+CkhlbGxvIHdvcmxkCjwvYm9keT4KPC9odG1sPg==", * customRules: [{ * name: "Rule1", * enabled: true, * priority: 1, * rateLimitDurationInMinutes: 1, * rateLimitThreshold: 10, * type: "MatchRule", * action: "Block", * matchConditions: [{ * matchVariable: "RemoteAddr", * operator: "IPMatch", * negationCondition: false, * matchValues: [ * "192.168.1.0/24", * "10.0.1.0/24", * ], * }], * }], * }); * const exampleZone = new azure.dns.Zone("example", { * name: "sub-domain.domain.com", * resourceGroupName: example.name, * }); * const exampleFrontdoorCustomDomain = new azure.cdn.FrontdoorCustomDomain("example", { * name: "example-customDomain", * cdnFrontdoorProfileId: exampleFrontdoorProfile.id, * dnsZoneId: exampleZone.id, * hostName: "contoso.fabrikam.com", * tls: { * certificateType: "ManagedCertificate", * minimumTlsVersion: "TLS12", * }, * }); * const exampleFrontdoorSecurityPolicy = new azure.cdn.FrontdoorSecurityPolicy("example", { * name: "Example-Security-Policy", * cdnFrontdoorProfileId: exampleFrontdoorProfile.id, * securityPolicies: { * firewall: { * cdnFrontdoorFirewallPolicyId: exampleFrontdoorFirewallPolicy.id, * association: { * domains: [{ * cdnFrontdoorDomainId: exampleFrontdoorCustomDomain.id, * }], * patternsToMatch: "/*", * }, * }, * }, * }); * ``` * * ## API Providers * * * This resource uses the following Azure API Providers: * * * `Microsoft.Cdn` - 2024-02-01 * * ## Import * * Front Door Security Policies can be imported using the `resource id`, e.g. * * ```sh * $ pulumi import azure:cdn/frontdoorSecurityPolicy:FrontdoorSecurityPolicy example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resourceGroup1/providers/Microsoft.Cdn/profiles/profile1/securityPolicies/policy1 * ``` */ export declare class FrontdoorSecurityPolicy extends pulumi.CustomResource { /** * Get an existing FrontdoorSecurityPolicy 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?: FrontdoorSecurityPolicyState, opts?: pulumi.CustomResourceOptions): FrontdoorSecurityPolicy; /** * Returns true if the given object is an instance of FrontdoorSecurityPolicy. 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 FrontdoorSecurityPolicy; /** * The Front Door Profile Resource Id that is linked to this Front Door Security Policy. Changing this forces a new Front Door Security Policy to be created. */ readonly cdnFrontdoorProfileId: pulumi.Output; /** * The name which should be used for this Front Door Security Policy. Possible values must not be an empty string. Changing this forces a new Front Door Security Policy to be created. */ readonly name: pulumi.Output; /** * An `securityPolicies` block as defined below. */ readonly securityPolicies: pulumi.Output; /** * Create a FrontdoorSecurityPolicy 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: FrontdoorSecurityPolicyArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering FrontdoorSecurityPolicy resources. */ export interface FrontdoorSecurityPolicyState { /** * The Front Door Profile Resource Id that is linked to this Front Door Security Policy. Changing this forces a new Front Door Security Policy to be created. */ cdnFrontdoorProfileId?: pulumi.Input; /** * The name which should be used for this Front Door Security Policy. Possible values must not be an empty string. Changing this forces a new Front Door Security Policy to be created. */ name?: pulumi.Input; /** * An `securityPolicies` block as defined below. */ securityPolicies?: pulumi.Input; } /** * The set of arguments for constructing a FrontdoorSecurityPolicy resource. */ export interface FrontdoorSecurityPolicyArgs { /** * The Front Door Profile Resource Id that is linked to this Front Door Security Policy. Changing this forces a new Front Door Security Policy to be created. */ cdnFrontdoorProfileId: pulumi.Input; /** * The name which should be used for this Front Door Security Policy. Possible values must not be an empty string. Changing this forces a new Front Door Security Policy to be created. */ name?: pulumi.Input; /** * An `securityPolicies` block as defined below. */ securityPolicies: pulumi.Input; }