import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * Manages a Dedicated Hardware Security Module. * * > **Note:** Before using this resource, it's required to submit the request of registering the providers and features with Azure CLI `az provider register --namespace Microsoft.HardwareSecurityModules && az feature register --namespace Microsoft.HardwareSecurityModules --name AzureDedicatedHSM && az provider register --namespace Microsoft.Network && az feature register --namespace Microsoft.Network --name AllowBaremetalServers` and ask service team (hsmrequest@microsoft.com) to approve. See more details from . * * > **Note:** If the quota is not enough in some region, please submit the quota request to service team. * * ## Example Usage * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as azure from "@pulumi/azure"; * * const example = new azure.core.ResourceGroup("example", { * name: "example-resources", * location: "West Europe", * }); * const exampleVirtualNetwork = new azure.network.VirtualNetwork("example", { * name: "example-vnet", * addressSpaces: ["10.2.0.0/16"], * location: example.location, * resourceGroupName: example.name, * }); * const exampleSubnet = new azure.network.Subnet("example", { * name: "example-compute", * resourceGroupName: example.name, * virtualNetworkName: exampleVirtualNetwork.name, * addressPrefixes: ["10.2.0.0/24"], * }); * const example2 = new azure.network.Subnet("example2", { * name: "example-hsmsubnet", * resourceGroupName: example.name, * virtualNetworkName: exampleVirtualNetwork.name, * addressPrefixes: ["10.2.1.0/24"], * delegations: [{ * name: "first", * serviceDelegation: { * name: "Microsoft.HardwareSecurityModules/dedicatedHSMs", * actions: [ * "Microsoft.Network/networkinterfaces/*", * "Microsoft.Network/virtualNetworks/subnets/join/action", * ], * }, * }], * }); * const example3 = new azure.network.Subnet("example3", { * name: "gatewaysubnet", * resourceGroupName: example.name, * virtualNetworkName: exampleVirtualNetwork.name, * addressPrefixes: ["10.2.255.0/26"], * }); * const examplePublicIp = new azure.network.PublicIp("example", { * name: "example-pip", * location: example.location, * resourceGroupName: example.name, * allocationMethod: "Static", * }); * const exampleVirtualNetworkGateway = new azure.network.VirtualNetworkGateway("example", { * name: "example-vnetgateway", * location: example.location, * resourceGroupName: example.name, * type: "ExpressRoute", * vpnType: "PolicyBased", * sku: "Standard", * ipConfigurations: [{ * publicIpAddressId: examplePublicIp.id, * privateIpAddressAllocation: "Dynamic", * subnetId: example3.id, * }], * }); * const exampleModule = new azure.hsm.Module("example", { * name: "example-hsm", * location: example.location, * resourceGroupName: example.name, * skuName: "payShield10K_LMK1_CPS60", * managementNetworkProfile: { * networkInterfacePrivateIpAddresses: ["10.2.1.7"], * subnetId: example2.id, * }, * networkProfile: { * networkInterfacePrivateIpAddresses: ["10.2.1.8"], * subnetId: example2.id, * }, * stampId: "stamp2", * tags: { * env: "Test", * }, * }, { * dependsOn: [exampleVirtualNetworkGateway], * }); * ``` * * ## API Providers * * * This resource uses the following Azure API Providers: * * * `Microsoft.HardwareSecurityModules` - 2021-11-30 * * ## Import * * Dedicated Hardware Security Module can be imported using the `resource id`, e.g. * * ```sh * $ pulumi import azure:hsm/module:Module example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.HardwareSecurityModules/dedicatedHSMs/hsm1 * ``` */ export declare class Module extends pulumi.CustomResource { /** * Get an existing Module 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?: ModuleState, opts?: pulumi.CustomResourceOptions): Module; /** * Returns true if the given object is an instance of Module. 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 Module; /** * The Azure Region where the Dedicated Hardware Security Module should exist. Changing this forces a new Dedicated Hardware Security Module to be created. */ readonly location: pulumi.Output; /** * A `managementNetworkProfile` block as defined below. * * > **Note:** The `managementNetworkProfile` should not be specified when `skuName` is `SafeNet Luna Network HSM A790`. */ readonly managementNetworkProfile: pulumi.Output; /** * The name which should be used for this Dedicated Hardware Security Module. Changing this forces a new Dedicated Hardware Security Module to be created. */ readonly name: pulumi.Output; /** * A `networkProfile` block as defined below. */ readonly networkProfile: pulumi.Output; /** * The name of the Resource Group where the Dedicated Hardware Security Module should exist. Changing this forces a new Dedicated Hardware Security Module to be created. */ readonly resourceGroupName: pulumi.Output; /** * The SKU name of the dedicated hardware security module. Possible values are `payShield10K_LMK1_CPS60`,`payShield10K_LMK1_CPS250`,`payShield10K_LMK1_CPS2500`,`payShield10K_LMK2_CPS60`,`payShield10K_LMK2_CPS250`,`payShield10K_LMK2_CPS2500` and `SafeNet Luna Network HSM A790`. Changing this forces a new Dedicated Hardware Security Module to be created. */ readonly skuName: pulumi.Output; /** * The ID of the stamp. Possible values are `stamp1` or `stamp2`. Changing this forces a new Dedicated Hardware Security Module to be created. */ readonly stampId: pulumi.Output; /** * A mapping of tags which should be assigned to the Dedicated Hardware Security Module. */ readonly tags: pulumi.Output<{ [key: string]: string; } | undefined>; /** * Specifies a list of Availability Zones in which this Dedicated Hardware Security Module should be located. Changing this forces a new Dedicated Hardware Security Module to be created. */ readonly zones: pulumi.Output; /** * Create a Module 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: ModuleArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering Module resources. */ export interface ModuleState { /** * The Azure Region where the Dedicated Hardware Security Module should exist. Changing this forces a new Dedicated Hardware Security Module to be created. */ location?: pulumi.Input; /** * A `managementNetworkProfile` block as defined below. * * > **Note:** The `managementNetworkProfile` should not be specified when `skuName` is `SafeNet Luna Network HSM A790`. */ managementNetworkProfile?: pulumi.Input; /** * The name which should be used for this Dedicated Hardware Security Module. Changing this forces a new Dedicated Hardware Security Module to be created. */ name?: pulumi.Input; /** * A `networkProfile` block as defined below. */ networkProfile?: pulumi.Input; /** * The name of the Resource Group where the Dedicated Hardware Security Module should exist. Changing this forces a new Dedicated Hardware Security Module to be created. */ resourceGroupName?: pulumi.Input; /** * The SKU name of the dedicated hardware security module. Possible values are `payShield10K_LMK1_CPS60`,`payShield10K_LMK1_CPS250`,`payShield10K_LMK1_CPS2500`,`payShield10K_LMK2_CPS60`,`payShield10K_LMK2_CPS250`,`payShield10K_LMK2_CPS2500` and `SafeNet Luna Network HSM A790`. Changing this forces a new Dedicated Hardware Security Module to be created. */ skuName?: pulumi.Input; /** * The ID of the stamp. Possible values are `stamp1` or `stamp2`. Changing this forces a new Dedicated Hardware Security Module to be created. */ stampId?: pulumi.Input; /** * A mapping of tags which should be assigned to the Dedicated Hardware Security Module. */ tags?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * Specifies a list of Availability Zones in which this Dedicated Hardware Security Module should be located. Changing this forces a new Dedicated Hardware Security Module to be created. */ zones?: pulumi.Input[]>; } /** * The set of arguments for constructing a Module resource. */ export interface ModuleArgs { /** * The Azure Region where the Dedicated Hardware Security Module should exist. Changing this forces a new Dedicated Hardware Security Module to be created. */ location?: pulumi.Input; /** * A `managementNetworkProfile` block as defined below. * * > **Note:** The `managementNetworkProfile` should not be specified when `skuName` is `SafeNet Luna Network HSM A790`. */ managementNetworkProfile?: pulumi.Input; /** * The name which should be used for this Dedicated Hardware Security Module. Changing this forces a new Dedicated Hardware Security Module to be created. */ name?: pulumi.Input; /** * A `networkProfile` block as defined below. */ networkProfile: pulumi.Input; /** * The name of the Resource Group where the Dedicated Hardware Security Module should exist. Changing this forces a new Dedicated Hardware Security Module to be created. */ resourceGroupName: pulumi.Input; /** * The SKU name of the dedicated hardware security module. Possible values are `payShield10K_LMK1_CPS60`,`payShield10K_LMK1_CPS250`,`payShield10K_LMK1_CPS2500`,`payShield10K_LMK2_CPS60`,`payShield10K_LMK2_CPS250`,`payShield10K_LMK2_CPS2500` and `SafeNet Luna Network HSM A790`. Changing this forces a new Dedicated Hardware Security Module to be created. */ skuName: pulumi.Input; /** * The ID of the stamp. Possible values are `stamp1` or `stamp2`. Changing this forces a new Dedicated Hardware Security Module to be created. */ stampId?: pulumi.Input; /** * A mapping of tags which should be assigned to the Dedicated Hardware Security Module. */ tags?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * Specifies a list of Availability Zones in which this Dedicated Hardware Security Module should be located. Changing this forces a new Dedicated Hardware Security Module to be created. */ zones?: pulumi.Input[]>; }