@twingate/pulumi-twingate
Version:
A Pulumi package for creating and managing Twingate cloud resources.
854 lines (853 loc) • 26.4 kB
TypeScript
import * as outputs from "../types/output";
export interface GetTwingateConnectorsConnector {
/**
* The hostname of the machine hosting the Connector.
*/
hostname: string;
/**
* The ID of the Connector.
*/
id: string;
/**
* The Name of the Connector.
*/
name: string;
/**
* The Connector's private IP addresses.
*/
privateIps: string[];
/**
* The Connector's public IP address.
*/
publicIp: string;
/**
* The ID of the Remote Network attached to the Connector.
*/
remoteNetworkId: string;
/**
* The Connector's state. One of `ALIVE`, `DEAD_NO_HEARTBEAT`, `DEAD_HEARTBEAT_TOO_OLD` or `DEAD_NO_RELAYS`.
*/
state: string;
/**
* Determines whether status notifications are enabled for the Connector.
*/
statusUpdatesEnabled: boolean;
/**
* The Connector's version.
*/
version: string;
}
export interface GetTwingateDNSFilteringProfileAllowedDomains {
/**
* A set of allowed domains.
*/
domains: string[];
}
export interface GetTwingateDNSFilteringProfileContentCategories {
/**
* Whether to block adult content.
*/
blockAdultContent: boolean;
/**
* Whether to block dating content.
*/
blockDating: boolean;
/**
* Whether to block gambling content.
*/
blockGambling: boolean;
/**
* Whether to block games.
*/
blockGames: boolean;
/**
* Whether to block piracy sites.
*/
blockPiracy: boolean;
/**
* Whether to block social media.
*/
blockSocialMedia: boolean;
/**
* Whether to block streaming content.
*/
blockStreaming: boolean;
/**
* Whether to force safe search.
*/
enableSafesearch: boolean;
/**
* Whether to force YouTube to use restricted mode.
*/
enableYoutubeRestrictedMode: boolean;
}
export interface GetTwingateDNSFilteringProfileDeniedDomains {
/**
* A set of denied domains.
*/
domains: string[];
}
export interface GetTwingateDNSFilteringProfilePrivacyCategories {
/**
* Whether to block ads and trackers.
*/
blockAdsAndTrackers: boolean;
/**
* Whether to block affiliate links.
*/
blockAffiliateLinks: boolean;
/**
* Whether to block disguised third party trackers.
*/
blockDisguisedTrackers: boolean;
}
export interface GetTwingateDNSFilteringProfileSecurityCategories {
/**
* Whether to block cryptojacking sites.
*/
blockCryptojacking: boolean;
/**
* Blocks public DNS entries from returning private IP addresses.
*/
blockDnsRebinding: boolean;
/**
* Blocks DGA domains.
*/
blockDomainGenerationAlgorithms: boolean;
/**
* Whether to block homoglyph attacks.
*/
blockIdnHomoglyph: boolean;
/**
* Blocks newly registered domains.
*/
blockNewlyRegisteredDomains: boolean;
/**
* Block parked domains.
*/
blockParkedDomains: boolean;
/**
* Blocks typosquatted domains.
*/
blockTyposquatting: boolean;
/**
* Whether to use Google Safe browsing lists to block content.
*/
enableGoogleSafeBrowsing: boolean;
/**
* Whether to filter content using threat intelligence feeds.
*/
enableThreatIntelligenceFeeds: boolean;
}
export interface GetTwingateGroupsGroup {
/**
* The ID of the Group
*/
id: string;
/**
* Indicates if the Group is active
*/
isActive: boolean;
/**
* The name of the Group
*/
name: string;
/**
* The type of the Group
*/
type: string;
}
export interface GetTwingateRemoteNetworksRemoteNetwork {
/**
* The ID of the Remote Network.
*/
id: string;
/**
* The location of the Remote Network. Must be one of the following: AWS, AZURE, GOOGLE*CLOUD, ON*PREMISE, OTHER.
*/
location: string;
/**
* The name of the Remote Network.
*/
name?: string;
/**
* The type of the Remote Network. Must be one of the following: REGULAR, EXIT.
*/
type: string;
}
export interface GetTwingateResourceProtocols {
/**
* Whether to allow ICMP (ping) traffic
*/
allowIcmp: boolean;
tcp?: outputs.GetTwingateResourceProtocolsTcp;
udp?: outputs.GetTwingateResourceProtocolsUdp;
}
export interface GetTwingateResourceProtocolsTcp {
/**
* Whether to allow or deny all ports, or restrict protocol access within certain port ranges: Can be `RESTRICTED` (only listed ports are allowed), `ALLOW_ALL`, or `DENY_ALL`
*/
policy: string;
/**
* List of port ranges between 1 and 65535 inclusive, in the format `100-200` for a range, or `8080` for a single port
*/
ports: string[];
}
export interface GetTwingateResourceProtocolsUdp {
/**
* Whether to allow or deny all ports, or restrict protocol access within certain port ranges: Can be `RESTRICTED` (only listed ports are allowed), `ALLOW_ALL`, or `DENY_ALL`
*/
policy: string;
/**
* List of port ranges between 1 and 65535 inclusive, in the format `100-200` for a range, or `8080` for a single port
*/
ports: string[];
}
export interface GetTwingateResourcesResource {
/**
* The Resource's IP/CIDR or FQDN/DNS zone
*/
address: string;
/**
* The id of the Resource
*/
id: string;
/**
* The name of the Resource
*/
name: string;
/**
* Restrict access to certain protocols and ports. By default or when this argument is not defined, there is no restriction, and all protocols and ports are allowed.
*/
protocols: outputs.GetTwingateResourcesResourceProtocols;
/**
* Remote Network ID where the Resource lives
*/
remoteNetworkId: string;
/**
* The `tags` attribute consists of a key-value pairs that correspond with tags to be set on the resource.
*/
tags: {
[key: string]: string;
};
}
export interface GetTwingateResourcesResourceProtocols {
/**
* Whether to allow ICMP (ping) traffic
*/
allowIcmp: boolean;
tcp: outputs.GetTwingateResourcesResourceProtocolsTcp;
udp: outputs.GetTwingateResourcesResourceProtocolsUdp;
}
export interface GetTwingateResourcesResourceProtocolsTcp {
/**
* Whether to allow or deny all ports, or restrict protocol access within certain port ranges: Can be `RESTRICTED` (only listed ports are allowed), `ALLOW_ALL`, or `DENY_ALL`
*/
policy: string;
/**
* List of port ranges between 1 and 65535 inclusive, in the format `100-200` for a range, or `8080` for a single port
*/
ports: string[];
}
export interface GetTwingateResourcesResourceProtocolsUdp {
/**
* Whether to allow or deny all ports, or restrict protocol access within certain port ranges: Can be `RESTRICTED` (only listed ports are allowed), `ALLOW_ALL`, or `DENY_ALL`
*/
policy: string;
/**
* List of port ranges between 1 and 65535 inclusive, in the format `100-200` for a range, or `8080` for a single port
*/
ports: string[];
}
export interface GetTwingateSecurityPoliciesSecurityPolicy {
/**
* Return a matching Security Policy by its ID. The ID for the Security Policy can be obtained from the Admin API or the URL string in the Admin Console.
*/
id: string;
/**
* Return a Security Policy that exactly matches this name.
*/
name: string;
}
export interface GetTwingateServiceAccountsServiceAccount {
/**
* ID of the Service Account resource
*/
id: string;
/**
* List of twingate*service*account_key IDs that are assigned to the Service Account.
*/
keyIds: string[];
/**
* Name of the Service Account
*/
name: string;
/**
* List of twingate.TwingateResource IDs that the Service Account is assigned to.
*/
resourceIds: string[];
}
export interface GetTwingateUsersUser {
/**
* The email address of the User
*/
email: string;
/**
* The first name of the User
*/
firstName: string;
/**
* The ID of the User
*/
id: string;
/**
* The last name of the User
*/
lastName: string;
/**
* Indicates the User's role. Either ADMIN, DEVOPS, SUPPORT, MEMBER or ACCESS_REVIEWER.
*/
role: string;
/**
* Indicates the User's type. Either MANUAL or SYNCED.
*/
type: string;
}
export interface TwingateDNSFilteringProfileAllowedDomains {
/**
* A set of allowed domains. Defaults to an empty set.
*/
domains: string[];
/**
* Whether Terraform should override changes made outside of Terraform. Defaults to true.
*/
isAuthoritative: boolean;
}
export interface TwingateDNSFilteringProfileContentCategories {
/**
* Whether to block adult content. Defaults to false.
*/
blockAdultContent: boolean;
/**
* Whether to block dating content. Defaults to false.
*/
blockDating: boolean;
/**
* Whether to block gambling content. Defaults to false.
*/
blockGambling: boolean;
/**
* Whether to block games. Defaults to false.
*/
blockGames: boolean;
/**
* Whether to block piracy sites. Defaults to false.
*/
blockPiracy: boolean;
/**
* Whether to block social media. Defaults to false.
*/
blockSocialMedia: boolean;
/**
* Whether to block streaming content. Defaults to false.
*/
blockStreaming: boolean;
/**
* Whether to force safe search. Defaults to false.
*/
enableSafesearch: boolean;
/**
* Whether to force YouTube to use restricted mode. Defaults to false.
*/
enableYoutubeRestrictedMode: boolean;
}
export interface TwingateDNSFilteringProfileDeniedDomains {
/**
* A set of denied domains. Defaults to an empty set.
*/
domains: string[];
/**
* Whether Terraform should override changes made outside of Terraform. Defaults to true.
*/
isAuthoritative: boolean;
}
export interface TwingateDNSFilteringProfilePrivacyCategories {
/**
* Whether to block ads and trackers. Defaults to false.
*/
blockAdsAndTrackers: boolean;
/**
* Whether to block affiliate links. Defaults to false.
*/
blockAffiliateLinks: boolean;
/**
* Whether to block disguised third party trackers. Defaults to false.
*/
blockDisguisedTrackers: boolean;
}
export interface TwingateDNSFilteringProfileSecurityCategories {
/**
* Whether to block cryptojacking sites. Defaults to true.
*/
blockCryptojacking: boolean;
/**
* Blocks public DNS entries from returning private IP addresses. Defaults to true.
*/
blockDnsRebinding: boolean;
/**
* Blocks DGA domains. Defaults to true.
*/
blockDomainGenerationAlgorithms: boolean;
/**
* Whether to block homoglyph attacks. Defaults to true.
*/
blockIdnHomoglyph: boolean;
/**
* Blocks newly registered domains. Defaults to true.
*/
blockNewlyRegisteredDomains: boolean;
/**
* Block parked domains. Defaults to true.
*/
blockParkedDomains: boolean;
/**
* Blocks typosquatted domains. Defaults to true.
*/
blockTyposquatting: boolean;
/**
* Whether to use Google Safe browsing lists to block content. Defaults to true.
*/
enableGoogleSafeBrowsing: boolean;
/**
* Whether to filter content using threat intelligence feeds. Defaults to true.
*/
enableThreatIntelligenceFeeds: boolean;
}
export interface TwingateGatewayConfigKubernetes {
/**
* List of Kubernetes resources. Accepts full twingate*kubernetes*resource references.
*/
resources?: outputs.TwingateGatewayConfigKubernetesResource[];
}
export interface TwingateGatewayConfigKubernetesResource {
address: string;
inCluster: boolean;
name: string;
}
export interface TwingateGatewayConfigSsh {
/**
* SSH CA configuration. Specify either vault.address or private*key*file, not both.
*/
ca: outputs.TwingateGatewayConfigSshCa;
/**
* SSH gateway settings. All fields are optional and fall back to built-in defaults.
*/
gateway: outputs.TwingateGatewayConfigSshGateway;
/**
* List of SSH resources. Accepts full twingate*ssh*resource references.
*/
resources?: outputs.TwingateGatewayConfigSshResource[];
}
export interface TwingateGatewayConfigSshCa {
/**
* Path to the SSH CA private key file. Can't be used together with vault.address.
*/
privateKeyFile?: string;
/**
* Vault SSH CA configuration.
*/
vault: outputs.TwingateGatewayConfigSshCaVault;
}
export interface TwingateGatewayConfigSshCaVault {
/**
* Vault server address. Can't be used together with ca.private*key*file.
*/
address?: string;
/**
* Vault authentication configuration.
*/
auth: outputs.TwingateGatewayConfigSshCaVaultAuth;
/**
* Path to the Vault CA bundle file. Default: "/etc/ssl/vault-ca.crt".
*/
caBundleFile: string;
/**
* Vault SSH secrets engine mount path. Default: "ssh".
*/
mount: string;
/**
* Vault role for signing certificates. Default: "gateway".
*/
role: string;
}
export interface TwingateGatewayConfigSshCaVaultAuth {
/**
* GCP authentication for Vault. Can't be used together with token.
*/
gcp: outputs.TwingateGatewayConfigSshCaVaultAuthGcp;
/**
* Vault token used for authentication. Can't be used together with gcp.
*/
token?: string;
}
export interface TwingateGatewayConfigSshCaVaultAuthGcp {
/**
* Vault GCP auth mount path. Default: "gcp".
*/
mount: string;
/**
* GCP IAM role for Vault GCP authentication.
*/
role?: string;
/**
* Service account email. Required when type is "iam".
*/
serviceAccountEmail?: string;
/**
* GCP authentication type for Vault (e.g. "iam" or "gce"). When set to "iam", service*account*email is required.
*/
type?: string;
}
export interface TwingateGatewayConfigSshGateway {
/**
* Host certificate TTL. Default: "24h".
*/
hostCertTtl: string;
/**
* SSH key type. Default: "ed25519".
*/
keyType: string;
/**
* User certificate TTL. Default: "5m".
*/
userCertTtl: string;
/**
* SSH gateway username. Default: "gateway".
*/
username: string;
}
export interface TwingateGatewayConfigSshResource {
address: string;
name: string;
username: string;
}
export interface TwingateGatewayConfigTls {
/**
* Path to the TLS certificate file. Default: "/etc/gateway/tls.crt".
*/
certificateFile: string;
/**
* Path to the TLS private key file. Default: "/etc/gateway/tls.key".
*/
privateKeyFile: string;
}
export interface TwingateKubernetesResourceAccessGroup {
/**
* Restrict access according to JIT access policy
*/
accessPolicies?: outputs.TwingateKubernetesResourceAccessGroupAccessPolicy[];
/**
* Group ID that will have permission to access the Resource.
*/
groupId: string;
/**
* The ID of a `twingate.getTwingateSecurityPolicy` to use as the access policy for the group IDs in the access block. Default is 'Null' which points to `Default Policy` on Admin console.
*/
securityPolicyId: string;
}
export interface TwingateKubernetesResourceAccessGroupAccessPolicy {
/**
* This will set the approval model for the policy. The valid values are `AUTOMATIC` and `MANUAL`.
*/
approvalMode: string;
/**
* This will set the access duration for the policy. Duration must be between 1 hour and 365 days. Examples of valid values include `1h` and `2d`.
*/
duration: string;
/**
* This will set the accessPolicy mode for the policy. The valid values are `MANUAL`, `AUTO_LOCK` and `ACCESS_REQUEST`.
*/
mode: string;
}
export interface TwingateKubernetesResourceAccessPolicy {
/**
* This will set the approval model for the policy. The valid values are `AUTOMATIC` and `MANUAL`.
*/
approvalMode: string;
/**
* This will set the access duration for the policy. Duration must be between 1 hour and 365 days. Examples of valid values include `1h` and `2d`.
*/
duration: string;
/**
* This will set the accessPolicy mode for the policy. The valid values are `MANUAL`, `AUTO_LOCK` and `ACCESS_REQUEST`.
*/
mode: string;
}
export interface TwingateKubernetesResourceProtocols {
/**
* Whether to allow ICMP (ping) traffic
*/
allowIcmp: boolean;
tcp: outputs.TwingateKubernetesResourceProtocolsTcp;
udp: outputs.TwingateKubernetesResourceProtocolsUdp;
}
export interface TwingateKubernetesResourceProtocolsTcp {
/**
* Whether to allow or deny all ports, or restrict protocol access within certain port ranges: Can be `RESTRICTED` (only listed ports are allowed), `ALLOW_ALL`, or `DENY_ALL`
*/
policy: string;
/**
* List of port ranges between 1 and 65535 inclusive, in the format `100-200` for a range, or `8080` for a single port
*/
ports: string[];
}
export interface TwingateKubernetesResourceProtocolsUdp {
/**
* Whether to allow or deny all ports, or restrict protocol access within certain port ranges: Can be `RESTRICTED` (only listed ports are allowed), `ALLOW_ALL`, or `DENY_ALL`
*/
policy: string;
/**
* List of port ranges between 1 and 65535 inclusive, in the format `100-200` for a range, or `8080` for a single port
*/
ports: string[];
}
export interface TwingateResourceAccessGroup {
/**
* Restrict access according to JIT access policy
*/
accessPolicies?: outputs.TwingateResourceAccessGroupAccessPolicy[];
/**
* Group ID that will have permission to access the Resource.
*/
groupId: string;
/**
* The ID of a `twingate.getTwingateSecurityPolicy` to use as the access policy for the group IDs in the access block. Default is 'Null' which points to `Default Policy` on Admin console.
*/
securityPolicyId: string;
}
export interface TwingateResourceAccessGroupAccessPolicy {
/**
* This will set the approval model for the policy. The valid values are `AUTOMATIC` and `MANUAL`.
*/
approvalMode: string;
/**
* This will set the access duration for the policy. Duration must be between 1 hour and 365 days. Examples of valid values include `1h` and `2d`.
*/
duration: string;
/**
* This will set the accessPolicy mode for the policy. The valid values are `MANUAL`, `AUTO_LOCK` and `ACCESS_REQUEST`.
*/
mode: string;
}
export interface TwingateResourceAccessPolicy {
/**
* This will set the approval model for the policy. The valid values are `AUTOMATIC` and `MANUAL`.
*/
approvalMode: string;
/**
* This will set the access duration for the policy. Duration must be between 1 hour and 365 days. Examples of valid values include `1h` and `2d`.
*/
duration: string;
/**
* This will set the accessPolicy mode for the policy. The valid values are `MANUAL`, `AUTO_LOCK` and `ACCESS_REQUEST`.
*/
mode: string;
}
export interface TwingateResourceAccessService {
/**
* The ID of the service account that should have access to this Resource.
*/
serviceAccountId: string;
}
export interface TwingateResourceProtocols {
/**
* Whether to allow ICMP (ping) traffic
*/
allowIcmp: boolean;
tcp: outputs.TwingateResourceProtocolsTcp;
udp: outputs.TwingateResourceProtocolsUdp;
}
export interface TwingateResourceProtocolsTcp {
/**
* Whether to allow or deny all ports, or restrict protocol access within certain port ranges: Can be `RESTRICTED` (only listed ports are allowed), `ALLOW_ALL`, or `DENY_ALL`
*/
policy: string;
/**
* List of port ranges between 1 and 65535 inclusive, in the format `100-200` for a range, or `8080` for a single port
*/
ports: string[];
}
export interface TwingateResourceProtocolsUdp {
/**
* Whether to allow or deny all ports, or restrict protocol access within certain port ranges: Can be `RESTRICTED` (only listed ports are allowed), `ALLOW_ALL`, or `DENY_ALL`
*/
policy: string;
/**
* List of port ranges between 1 and 65535 inclusive, in the format `100-200` for a range, or `8080` for a single port
*/
ports: string[];
}
export interface TwingateSSHResourceAccessGroup {
/**
* Restrict access according to JIT access policy
*/
accessPolicies?: outputs.TwingateSSHResourceAccessGroupAccessPolicy[];
/**
* Group ID that will have permission to access the Resource.
*/
groupId: string;
/**
* The ID of a `twingate.getTwingateSecurityPolicy` to use as the access policy for the group IDs in the access block. Default is 'Null' which points to `Default Policy` on Admin console.
*/
securityPolicyId: string;
}
export interface TwingateSSHResourceAccessGroupAccessPolicy {
/**
* This will set the approval model for the policy. The valid values are `AUTOMATIC` and `MANUAL`.
*/
approvalMode: string;
/**
* This will set the access duration for the policy. Duration must be between 1 hour and 365 days. Examples of valid values include `1h` and `2d`.
*/
duration: string;
/**
* This will set the accessPolicy mode for the policy. The valid values are `MANUAL`, `AUTO_LOCK` and `ACCESS_REQUEST`.
*/
mode: string;
}
export interface TwingateSSHResourceAccessPolicy {
/**
* This will set the approval model for the policy. The valid values are `AUTOMATIC` and `MANUAL`.
*/
approvalMode: string;
/**
* This will set the access duration for the policy. Duration must be between 1 hour and 365 days. Examples of valid values include `1h` and `2d`.
*/
duration: string;
/**
* This will set the accessPolicy mode for the policy. The valid values are `MANUAL`, `AUTO_LOCK` and `ACCESS_REQUEST`.
*/
mode: string;
}
export interface TwingateSSHResourceProtocols {
/**
* Whether to allow ICMP (ping) traffic
*/
allowIcmp: boolean;
tcp: outputs.TwingateSSHResourceProtocolsTcp;
udp: outputs.TwingateSSHResourceProtocolsUdp;
}
export interface TwingateSSHResourceProtocolsTcp {
/**
* Whether to allow or deny all ports, or restrict protocol access within certain port ranges: Can be `RESTRICTED` (only listed ports are allowed), `ALLOW_ALL`, or `DENY_ALL`
*/
policy: string;
/**
* List of port ranges between 1 and 65535 inclusive, in the format `100-200` for a range, or `8080` for a single port
*/
ports: string[];
}
export interface TwingateSSHResourceProtocolsUdp {
/**
* Whether to allow or deny all ports, or restrict protocol access within certain port ranges: Can be `RESTRICTED` (only listed ports are allowed), `ALLOW_ALL`, or `DENY_ALL`
*/
policy: string;
/**
* List of port ranges between 1 and 65535 inclusive, in the format `100-200` for a range, or `8080` for a single port
*/
ports: string[];
}
export declare namespace config {
interface Cache {
/**
* Specifies whether the provider should cache groups. The default value is `true`.
*/
groupsEnabled?: boolean;
/**
* Specifies the filter for the groups to be cached.
*/
groupsFilter?: outputs.config.CacheGroupsFilter;
/**
* Specifies whether the provider should cache resources. The default value is `true`.
*/
resourceEnabled?: boolean;
/**
* Specifies the filter for the resources to be cached.
*/
resourcesFilter?: outputs.config.CacheResourcesFilter;
}
interface CacheGroupsFilter {
/**
* Returns only Groups matching the specified state.
*/
isActive?: boolean;
/**
* Returns only groups that exactly match this name. If no options are passed it will return all resources. Only one option can be used at a time.
*/
name?: string;
/**
* Match when the value exist in the name of the group.
*/
nameContains?: string;
/**
* Match when the exact value does not exist in the name of the group.
*/
nameExclude?: string;
/**
* The name of the group must start with the value.
*/
namePrefix?: string;
/**
* The regular expression match of the name of the group.
*/
nameRegexp?: string;
/**
* The name of the group must end with the value.
*/
nameSuffix?: string;
/**
* Returns groups that match a list of types. valid types: `MANUAL`, `SYNCED`, `SYSTEM`.
*/
types?: string[];
}
interface CacheResourcesFilter {
/**
* Returns only resources that exactly match this name. If no options are passed it will return all resources. Only one option can be used at a time.
*/
name?: string;
/**
* Match when the value exist in the name of the resource.
*/
nameContains?: string;
/**
* Match when the exact value does not exist in the name of the resource.
*/
nameExclude?: string;
/**
* The name of the resource must start with the value.
*/
namePrefix?: string;
/**
* The regular expression match of the name of the resource.
*/
nameRegexp?: string;
/**
* The name of the resource must end with the value.
*/
nameSuffix?: string;
/**
* Returns only resources that exactly match the given tags.
*/
tags?: {
[key: string]: string;
};
}
interface DefaultTags {
/**
* A map of key-value pair tags to be set on all resources by default.
*/
tags?: {
[key: string]: string;
};
}
}