Highly Secure Environments
Speedscale's default security settings are sufficient for most situations. However, highly secure environments may require disabling some functionality to achieve compliance. Fortunately, Speedscale was architectured around the principle of separation of concerns so functionality can be turned off selectively.
Disabling Remote Control
Speedscale is able to remotely trigger workloads and data collection from its UI. This capability is extremely useful for engineering or test teams that do not have direct access to the test Kubernetes cluster. However, it may be undesirable to give that level of control in production recording clusters.
Remote control is a Kubernetes-specific feature. It is not currently offered for other environments and does not need to be disabled.
To turn this capability off, the inspector container needs to be disabled and removed from the cluster. This is achieved by setting the WITH_INSPECTOR flag to false in the Speedscale Operator's config map. The following kubectl command will affect this change on a running cluster:
kubectl -n speedscale patch configmap/speedscale-operator --type merge -p '{"data":{"WITH_INSPECTOR":"false"}}'
kubectl -n speedscale rollout restart deployment speedscale-operator
Once the operator is restarted with these commands, the code necessary to run any remote control actions will not be present in the cluster. The inspector is not simply turned off, it is removed entirely.
Customer Managed Encryption Keys (CMEK)
Speedscale allows the use of customer-managed encryption keys (CMEK) on a case-by-case basis. This provides a security middle ground whereby customers have complete control but Speedscale continues to maintain the infrastructure. Please see the guide to get started.
Limiting Secret Access
In highly secure environments, you may want to restrict which Kubernetes secrets Speedscale can access during testing. Speedscale uses secrets as variables for various transforms, such as JWT resigning where secrets are referenced using the syntax ${{secret:secret_name/key_inside_the_secret}}.
The secretAccessList parameter in the Speedscale Operator helm chart controls this access:
- Empty list (default): Grants access to all secrets in the cluster
- Populated list: Limits access to only the specified secrets
Configuration
Set the secretAccessList in your helm values file:
# Allow access to all secrets (default)
secretAccessList: []
# Limit access to specific secrets only
secretAccessList:
- "jwt-signing-secret"
- "api-keys"
- "database-credentials"
Even if Speedscale has access to your secrets, they never leave your cluster. Secrets are only used locally within the cluster for testing operations.
When secretAccessList is populated, Speedscale will only be able to access the secrets listed. Any transforms that reference secrets not in this list will fail.
This feature provides granular control over secret access while maintaining Speedscale's ability to perform necessary testing operations.
Fully Customer Hosted
Some security environments are so restrictive that no external outbound communication is possible. Please contact us if you require this deployment and support model.