In the absence of Proxy Clusters, StrongDM recommends deploying two or more Gateways / Relays to avoid a single point of failure between the user and the resource.
Gateways and Relays rely on StrongDM's built-in routing functionality to automatically select the appropriate, available node when a failure occurs. No manual intervention required — the system detects and reroutes dynamically.
- User traffic reaches one of many available Gateways
- The selected Gateway routes onward to an available Relay
- The Relay makes the final connection to the Resource
- If any hop fails, the routing system selects the next available node
- At least 2 proxy workers behind a load balancer
- Load balancer ensures high availability
- Workers handle inbound connections from clients
- At least 2 proxy workers behind a load balancer
- Additionally requires 2 bridge workers
- Bridge workers handle cross-network routing
StrongDM recommends scaling nodes when they experience consistent CPU utilization above 70%. Monitor your nodes proactively to avoid performance degradation before it impacts users.
Increase the node host's CPU and/or memory specifications. Best for quick relief when a single node is overloaded but not yet worth multiplying.
Add additional nodes in parallel, such as in an auto-scaling group. Best for sustained load growth and improved fault tolerance.
Instead of manually creating StrongDM resources one-by-one in the Admin UI, use Terraform to quickly deploy common infrastructure configurations in a repeatable, version-controlled, auditable way.
StrongDM is a registered provider in the Terraform Registry, providing usage examples and full documentation.
registry.terraform.io ↗Provision Gateways, MySQL instances, SSH servers, and VPCs on AWS automatically from a single template.
Equivalent quick-start for Azure environments, with the same simplified onboarding flow.
onboarding.tf file shows all resources the template creates. Two Gateways are created automatically for high-availability deployments — even when not immediately obvious in the template.
source = "./onboarding"
# Prefix added to all resource names
prefix = "terraform-sdm"
# MySQL resources (~15 min)
create_mysql = true
# SSH resources (~5 min)
create_ssh = true
# Gateways (~5 min)
create_strongdm_gateways = true
# VPC (~5 min; false = use default VPC)
create_vpc = true
}
- A StrongDM administrator account
- A StrongDM API key with all permissions granted (generated in Admin UI)
- Terraform v0.14.0+ installed on the host running the scripts
- An AWS account + AWS API key with permissions to provision all intended resources (generated on AWS Dashboard)
- Git installed with paths added to host OS environment variables
Clone Repository
Download the Terraform templates from StrongDM's GitHub repository.
cd terraform-sdm-onboarding
Populate Variables
Edit variables.tf and add your StrongDM API credentials and AWS keys. The template uses variables (not hardcoded values) for security best practices. All values must be enclosed in quotation marks.
Initialize Template
Initialize the working directory and download all required providers.
Execute Template
Apply the configuration. Terraform will display a plan and prompt for confirmation. Type yes to proceed. The apply action takes a few minutes to complete.
Cleanup
To avoid unnecessary cloud expenses, destroy all resources when no longer needed. There is no undo — only yes is accepted to confirm.
A resource is any type of digital infrastructure — datasources, servers, clusters, clouds, and websites — that an organization creates to meet its operational needs.
StrongDM proxies network traffic to these resources and regulates access to them based on StrongDM policies. It sits transparently between users and infrastructure.
- Understand how to connect to Datasources
- Understand how to connect to non-specific resources via TCP
- Understand how to connect to Kubernetes clusters
- Understand what Policy-Based Action Controls (PBAC) are available for resources
StrongDM Client
Details
Resource
Resource
Logging on to the StrongDM client identifies the user to the StrongDM network. User identities are associated with one or more Roles, which determine what resources the client has access to.
Users can log on with a native StrongDM account or via an integrated Identity Provider (IdP) such as Google. See the StrongDM 201 — Authentication module for vendor-specific details.
On first login, the client shows zero resources by default. This is intentional — it aligns with the best practice of "no standing access". Users must explicitly request access to each resource they need.
Users request access via the StrongDM console: Access → Request Access → Catalog. They specify a reason and duration. The request is reviewed, and once approved, the resource appears in their StrongDM client.
After approval, the resource becomes visible in the StrongDM client with a local address (e.g. 127.0.0.1:10006). Users connect using any standard tool — SSH client, DB GUI, browser — pointing to that local address.
StrongDM uses a proprietary routing protocol, hosted in the control plane, to find the best route from the client through the Gateway/Relay combination to the resource. The user never interacts with this routing layer directly.
If StrongDM policies are enabled, an additional security layer evaluates whether the user is permitted to make this connection. Access is denied if it is not permitted by both access grants AND active policies.
The credentials used to log into the StrongDM client are not the credentials used to access the resource. Gateways and Relays use leased credentials mapped to the user's identity by the control plane — the user never sees or handles the underlying resource credentials.
StrongDM's security doesn't end at access control. With PBAC, StrongDM continues to monitor how access is used by inspecting instructions and data sent to the resource (e.g., SQL queries, SSH commands, Kubernetes kubectl calls).
StrongDM generates session logs for all resource connections and uploads them to the control plane. These logs are operationally required — StrongDM will only allow continued traffic to resources if previous session logs are successfully uploaded.
- Activities, Queries, SSH, RDP, Kubernetes, Cloud, Web, Policies
- Accessible via Logs in the Admin UI or via the API/CLI
The TCP connection resource can be used for any resource that accepts TCP connections and isn't already covered by a more specific StrongDM resource type (SSH, RDP, MySQL, Website, etc.).
Unlike specific resource types, TCP connections do not record the content of traffic. Logs only capture:
- Who accessed the resource
- When the access took place
- The number of bytes sent and received
Name that identifies the resource in the StrongDM console. Cannot include special characters.
Set to TCP to select the generic TCP connection type as the target.
Used by the Gateway/Relay to connect to the server. Can be a hostname or IP address.
The port the target server listens on. Default is 3389.
Auto-generated value between 1024–59999 not used by another resource. The StrongDM client listens on this local port for outbound traffic.
Key-value pairs used to identify the resource in automation workflows and policy targeting.