published on Monday, Jun 29, 2026 by Zscaler
published on Monday, Jun 29, 2026 by Zscaler
Use the zpa_provisioning_key data source to get information about a provisioning key in the Zscaler Private Access portal or via API. This data source can be referenced in the following ZPA resources:
- App Connector Groups
- Service Edge Groups
NOTE The
associationTypeparameter is required in order to distinguish betweenCONNECTOR_GRPandSERVICE_EDGE_GRP
NOTE: To ensure consistent search results across data sources, please avoid using multiple spaces or special characters in your search queries.
Zenith Community - ZPA Provisioning Keys
Example Usage
Basic Usage
import * as pulumi from "@pulumi/pulumi";
import * as zpa from "@bdzscaler/pulumi-zpa";
// ZPA Provisioning Key for "CONNECTOR_GRP"
const connectorKey = zpa.getProvisioningKey({
name: "Connector_Provisioning_Key",
associationType: "CONNECTOR_GRP",
});
import pulumi
import pulumi_zpa as zpa
# ZPA Provisioning Key for "CONNECTOR_GRP"
connector_key = zpa.get_provisioning_key(name="Connector_Provisioning_Key",
association_type="CONNECTOR_GRP")
package main
import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/zscaler/pulumi-zpa/sdk/go/zpa"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// ZPA Provisioning Key for "CONNECTOR_GRP"
_, err := zpa.GetProvisioningKey(ctx, &zpa.LookupProvisioningKeyArgs{
Name: pulumi.StringRef("Connector_Provisioning_Key"),
AssociationType: "CONNECTOR_GRP",
}, nil)
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Zpa = zscaler.PulumiPackage.Zpa;
return await Deployment.RunAsync(() =>
{
// ZPA Provisioning Key for "CONNECTOR_GRP"
var connectorKey = Zpa.GetProvisioningKey.Invoke(new()
{
Name = "Connector_Provisioning_Key",
AssociationType = "CONNECTOR_GRP",
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.zpa.ZpaFunctions;
import com.pulumi.zpa.inputs.GetProvisioningKeyArgs;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// ZPA Provisioning Key for "CONNECTOR_GRP"
final var connectorKey = ZpaFunctions.getProvisioningKey(GetProvisioningKeyArgs.builder()
.name("Connector_Provisioning_Key")
.associationType("CONNECTOR_GRP")
.build());
}
}
variables:
# ZPA Provisioning Key for "CONNECTOR_GRP"
connectorKey:
fn::invoke:
function: zpa:getProvisioningKey
arguments:
name: Connector_Provisioning_Key
associationType: CONNECTOR_GRP
pulumi {
required_providers {
zpa = {
source = "pulumi/zpa"
}
}
}
data "zpa_getprovisioningkey" "connectorKey" {
name = "Connector_Provisioning_Key"
association_type = "CONNECTOR_GRP"
}
# ZPA Provisioning Key for "CONNECTOR_GRP"
import * as pulumi from "@pulumi/pulumi";
import * as zpa from "@bdzscaler/pulumi-zpa";
// ZPA Provisioning Key for "SERVICE_EDGE_GRP"
const serviceEdgeKey = zpa.getProvisioningKey({
name: "ServiceEdge_Provisioning_Key",
associationType: "SERVICE_EDGE_GRP",
});
import pulumi
import pulumi_zpa as zpa
# ZPA Provisioning Key for "SERVICE_EDGE_GRP"
service_edge_key = zpa.get_provisioning_key(name="ServiceEdge_Provisioning_Key",
association_type="SERVICE_EDGE_GRP")
package main
import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/zscaler/pulumi-zpa/sdk/go/zpa"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// ZPA Provisioning Key for "SERVICE_EDGE_GRP"
_, err := zpa.GetProvisioningKey(ctx, &zpa.LookupProvisioningKeyArgs{
Name: pulumi.StringRef("ServiceEdge_Provisioning_Key"),
AssociationType: "SERVICE_EDGE_GRP",
}, nil)
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Zpa = zscaler.PulumiPackage.Zpa;
return await Deployment.RunAsync(() =>
{
// ZPA Provisioning Key for "SERVICE_EDGE_GRP"
var serviceEdgeKey = Zpa.GetProvisioningKey.Invoke(new()
{
Name = "ServiceEdge_Provisioning_Key",
AssociationType = "SERVICE_EDGE_GRP",
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.zpa.ZpaFunctions;
import com.pulumi.zpa.inputs.GetProvisioningKeyArgs;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// ZPA Provisioning Key for "SERVICE_EDGE_GRP"
final var serviceEdgeKey = ZpaFunctions.getProvisioningKey(GetProvisioningKeyArgs.builder()
.name("ServiceEdge_Provisioning_Key")
.associationType("SERVICE_EDGE_GRP")
.build());
}
}
variables:
# ZPA Provisioning Key for "SERVICE_EDGE_GRP"
serviceEdgeKey:
fn::invoke:
function: zpa:getProvisioningKey
arguments:
name: ServiceEdge_Provisioning_Key
associationType: SERVICE_EDGE_GRP
pulumi {
required_providers {
zpa = {
source = "pulumi/zpa"
}
}
}
data "zpa_getprovisioningkey" "serviceEdgeKey" {
name = "ServiceEdge_Provisioning_Key"
association_type = "SERVICE_EDGE_GRP"
}
# ZPA Provisioning Key for "SERVICE_EDGE_GRP"
Accessing the Provisioning Key Value
The provisioning key value is marked as sensitive and can be accessed using outputs or resource references:
import * as pulumi from "@pulumi/pulumi";
import * as _null from "@pulumi/null";
import * as command from "@pulumi/command";
import * as zpa from "@bdzscaler/pulumi-zpa";
// Retrieve existing provisioning key
const existing = zpa.getProvisioningKey({
name: "Production_Connector_Key",
associationType: "CONNECTOR_GRP",
});
export const provisioningKeyValue = existing.then(existing => existing.provisioningKey);
// Use in automation
const deployConnector = new _null.Resource("deploy_connector", {});
const deployConnectorProvisioner0 = new command.local.Command("deployConnectorProvisioner0", {create: existing.then(existing => `deploy-connector.sh ${existing.provisioningKey}`)}, {
dependsOn: [deployConnector],
});
import pulumi
import pulumi_command as command
import pulumi_null as null
import pulumi_zpa as zpa
# Retrieve existing provisioning key
existing = zpa.get_provisioning_key(name="Production_Connector_Key",
association_type="CONNECTOR_GRP")
pulumi.export("provisioningKeyValue", existing.provisioning_key)
# Use in automation
deploy_connector = null.Resource("deploy_connector")
deploy_connector_provisioner0 = command.local.Command("deployConnectorProvisioner0", create=f"deploy-connector.sh {existing.provisioning_key}",
opts = pulumi.ResourceOptions(depends_on=[deploy_connector]))
package main
import (
"github.com/pulumi/pulumi-command/sdk/go/command/local"
"github.com/pulumi/pulumi-null/sdk/go/null"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/zscaler/pulumi-zpa/sdk/go/zpa"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Retrieve existing provisioning key
existing, err := zpa.GetProvisioningKey(ctx, &zpa.LookupProvisioningKeyArgs{
Name: pulumi.StringRef("Production_Connector_Key"),
AssociationType: "CONNECTOR_GRP",
}, nil)
if err != nil {
return err
}
ctx.Export("provisioningKeyValue", existing.ProvisioningKey)
// Use in automation
deployConnector, err := null.NewResource(ctx, "deploy_connector", nil)
if err != nil {
return err
}
_, err = local.NewCommand(ctx, "deployConnectorProvisioner0", &local.CommandArgs{
Create: pulumi.Sprintf("deploy-connector.sh %v", existing.ProvisioningKey),
}, pulumi.DependsOn([]pulumi.Resource{
deployConnector,
}))
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Command = Pulumi.Command;
using Null = Pulumi.Null;
using Zpa = zscaler.PulumiPackage.Zpa;
return await Deployment.RunAsync(() =>
{
// Retrieve existing provisioning key
var existing = Zpa.GetProvisioningKey.Invoke(new()
{
Name = "Production_Connector_Key",
AssociationType = "CONNECTOR_GRP",
});
// Use in automation
var deployConnector = new Null.Resource("deploy_connector");
var deployConnectorProvisioner0 = new Command.Local.Command("deployConnectorProvisioner0", new()
{
Create = $"deploy-connector.sh {existing.Apply(getProvisioningKeyResult => getProvisioningKeyResult.ProvisioningKey)}",
}, new CustomResourceOptions
{
DependsOn =
{
deployConnector,
},
});
return new Dictionary<string, object?>
{
["provisioningKeyValue"] = existing.Apply(getProvisioningKeyResult => getProvisioningKeyResult.ProvisioningKey),
};
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.zpa.ZpaFunctions;
import com.pulumi.zpa.inputs.GetProvisioningKeyArgs;
import com.pulumi.null.Resource;
import com.pulumi.command.local.Command;
import com.pulumi.command.local.CommandArgs;
import com.pulumi.resources.CustomResourceOptions;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// Retrieve existing provisioning key
final var existing = ZpaFunctions.getProvisioningKey(GetProvisioningKeyArgs.builder()
.name("Production_Connector_Key")
.associationType("CONNECTOR_GRP")
.build());
ctx.export("provisioningKeyValue", existing.provisioningKey());
// Use in automation
var deployConnector = new Resource("deployConnector");
var deployConnectorProvisioner0 = new Command("deployConnectorProvisioner0", CommandArgs.builder()
.create(String.format("deploy-connector.sh %s", existing.provisioningKey()))
.build(), CustomResourceOptions.builder()
.dependsOn(deployConnector)
.build());
}
}
resources:
# Use in automation
deployConnector:
type: null:Resource
name: deploy_connector
deployConnectorProvisioner0:
type: command:local:Command
properties:
create: deploy-connector.sh ${existing.provisioningKey}
options:
dependsOn:
- ${deployConnector}
variables:
# Retrieve existing provisioning key
existing:
fn::invoke:
function: zpa:getProvisioningKey
arguments:
name: Production_Connector_Key
associationType: CONNECTOR_GRP
outputs:
# Output the provisioning key (marked as sensitive)
provisioningKeyValue: ${existing.provisioningKey}
pulumi {
required_providers {
command = {
source = "pulumi/command"
}
null = {
source = "pulumi/null"
}
zpa = {
source = "pulumi/zpa"
}
}
}
data "zpa_getprovisioningkey" "existing" {
name = "Production_Connector_Key"
association_type = "CONNECTOR_GRP"
}
# Use in automation
resource "null_resource" "deploy_connector" {
}
resource "command_local_command" "deployConnectorProvisioner0" {
replace_on_changes = ["triggers[*]"]
depends_on = [null_resource.deploy_connector]
create ="deploy-connector.sh ${data.zpa_getprovisioningkey.existing.provisioning_key}"
}
# Retrieve existing provisioning key
# Output the provisioning key (marked as sensitive)
output "provisioningKeyValue" {
value = data.zpa_getprovisioningkey.existing.provisioning_key
}
To retrieve the key value:
# View the provisioning key
terraform output provisioning_key_value
# Or get it programmatically
terraform output -json provisioning_key_value | jq -r .
Using getProvisioningKey
Two invocation forms are available. The direct form accepts plain arguments and either blocks until the result value is available, or returns a Promise-wrapped result. The output form accepts Input-wrapped arguments and returns an Output-wrapped result.
function getProvisioningKey(args: GetProvisioningKeyArgs, opts?: InvokeOptions): Promise<GetProvisioningKeyResult>
function getProvisioningKeyOutput(args: GetProvisioningKeyOutputArgs, opts?: InvokeOptions): Output<GetProvisioningKeyResult>def get_provisioning_key(association_type: Optional[str] = None,
id: Optional[str] = None,
microtenant_id: Optional[str] = None,
microtenant_name: Optional[str] = None,
name: Optional[str] = None,
opts: Optional[InvokeOptions] = None) -> GetProvisioningKeyResult
def get_provisioning_key_output(association_type: pulumi.Input[Optional[str]] = None,
id: pulumi.Input[Optional[str]] = None,
microtenant_id: pulumi.Input[Optional[str]] = None,
microtenant_name: pulumi.Input[Optional[str]] = None,
name: pulumi.Input[Optional[str]] = None,
opts: Optional[InvokeOptions] = None) -> Output[GetProvisioningKeyResult]func LookupProvisioningKey(ctx *Context, args *LookupProvisioningKeyArgs, opts ...InvokeOption) (*LookupProvisioningKeyResult, error)
func LookupProvisioningKeyOutput(ctx *Context, args *LookupProvisioningKeyOutputArgs, opts ...InvokeOption) LookupProvisioningKeyResultOutput> Note: This function is named LookupProvisioningKey in the Go SDK.
public static class GetProvisioningKey
{
public static Task<GetProvisioningKeyResult> InvokeAsync(GetProvisioningKeyArgs args, InvokeOptions? opts = null)
public static Output<GetProvisioningKeyResult> Invoke(GetProvisioningKeyInvokeArgs args, InvokeOptions? opts = null)
}public static CompletableFuture<GetProvisioningKeyResult> getProvisioningKey(GetProvisioningKeyArgs args, InvokeOptions options)
public static Output<GetProvisioningKeyResult> getProvisioningKey(GetProvisioningKeyArgs args, InvokeOptions options)
fn::invoke:
function: zpa:index/getProvisioningKey:getProvisioningKey
arguments:
# arguments dictionarydata "zpa_getprovisioningkey" "name" {
# arguments
}The following arguments are supported:
- Association
Type string - Id string
- Microtenant
Id string - Microtenant
Name string - Name string
- Association
Type string - Id string
- Microtenant
Id string - Microtenant
Name string - Name string
- association_
type string - id string
- microtenant_
id string - microtenant_
name string - name string
- association
Type String - id String
- microtenant
Id String - microtenant
Name String - name String
- association
Type string - id string
- microtenant
Id string - microtenant
Name string - name string
- association_
type str - id str
- microtenant_
id str - microtenant_
name str - name str
- association
Type String - id String
- microtenant
Id String - microtenant
Name String - name String
getProvisioningKey Result
The following output properties are available:
- App
Connector stringGroup Id - App
Connector stringGroup Name - Association
Type string - Creation
Time string - Enabled bool
- Enrollment
Cert stringId - Enrollment
Cert stringName - Expiration
In stringEpoch Sec - Ip
Acls List<string> - Max
Usage string - Modified
Time string - Modifiedby string
- Provisioning
Key string - Ui
Config string - Usage
Count string - Zcomponent
Id string - Zcomponent
Name string - Id string
- Microtenant
Id string - Microtenant
Name string - Name string
- App
Connector stringGroup Id - App
Connector stringGroup Name - Association
Type string - Creation
Time string - Enabled bool
- Enrollment
Cert stringId - Enrollment
Cert stringName - Expiration
In stringEpoch Sec - Ip
Acls []string - Max
Usage string - Modified
Time string - Modifiedby string
- Provisioning
Key string - Ui
Config string - Usage
Count string - Zcomponent
Id string - Zcomponent
Name string - Id string
- Microtenant
Id string - Microtenant
Name string - Name string
- app_
connector_ stringgroup_ id - app_
connector_ stringgroup_ name - association_
type string - creation_
time string - enabled bool
- enrollment_
cert_ stringid - enrollment_
cert_ stringname - expiration_
in_ stringepoch_ sec - ip_
acls list(string) - max_
usage string - modified_
time string - modifiedby string
- provisioning_
key string - ui_
config string - usage_
count string - zcomponent_
id string - zcomponent_
name string - id string
- microtenant_
id string - microtenant_
name string - name string
- app
Connector StringGroup Id - app
Connector StringGroup Name - association
Type String - creation
Time String - enabled Boolean
- enrollment
Cert StringId - enrollment
Cert StringName - expiration
In StringEpoch Sec - ip
Acls List<String> - max
Usage String - modified
Time String - modifiedby String
- provisioning
Key String - ui
Config String - usage
Count String - zcomponent
Id String - zcomponent
Name String - id String
- microtenant
Id String - microtenant
Name String - name String
- app
Connector stringGroup Id - app
Connector stringGroup Name - association
Type string - creation
Time string - enabled boolean
- enrollment
Cert stringId - enrollment
Cert stringName - expiration
In stringEpoch Sec - ip
Acls string[] - max
Usage string - modified
Time string - modifiedby string
- provisioning
Key string - ui
Config string - usage
Count string - zcomponent
Id string - zcomponent
Name string - id string
- microtenant
Id string - microtenant
Name string - name string
- app_
connector_ strgroup_ id - app_
connector_ strgroup_ name - association_
type str - creation_
time str - enabled bool
- enrollment_
cert_ strid - enrollment_
cert_ strname - expiration_
in_ strepoch_ sec - ip_
acls Sequence[str] - max_
usage str - modified_
time str - modifiedby str
- provisioning_
key str - ui_
config str - usage_
count str - zcomponent_
id str - zcomponent_
name str - id str
- microtenant_
id str - microtenant_
name str - name str
- app
Connector StringGroup Id - app
Connector StringGroup Name - association
Type String - creation
Time String - enabled Boolean
- enrollment
Cert StringId - enrollment
Cert StringName - expiration
In StringEpoch Sec - ip
Acls List<String> - max
Usage String - modified
Time String - modifiedby String
- provisioning
Key String - ui
Config String - usage
Count String - zcomponent
Id String - zcomponent
Name String - id String
- microtenant
Id String - microtenant
Name String - name String
Package Details
- Repository
- zpa zscaler/pulumi-zpa
- License
- MIT
- Notes
- This Pulumi package is based on the
zpaTerraform Provider.
published on Monday, Jun 29, 2026 by Zscaler