Architecture
Each Polaris container contains an instance of the Polaris Secure Proxy and the client workload container. Please refer to the diagram below for a visual representation.
Trusted Execution Environment (TEE)
The Polaris container is designed to run inside a Trusted Execution Environment (TEE) to ensure data is encrypted at all times, including while in use. This is achieved by provisioning Polaris inside a Confidential Virtual Machine (CVM) based on AMD SEV-SNP technology. The exact implementation depends on the cloud service provider being used. For details, please refer to the Cloud Providers documentation.
Confidential Virtual Machines provide full memory encryption with minimal overhead, protecting data in the machine's memory against malicious hypervisors or other VMs running on the same host. The encryption is hardware-based and does not require any changes to the workload running inside the VM.
Client Workload
The client workload runs as a Docker container inside the TEE. You can configure the Docker image you want to use inside the Polaris container, along with environment variables, entrypoint commands, and parameters. Polaris handles creating the Docker container and configuring the network. In most cases, no modifications to your workload are required, as all HTTP communication between the workload and the proxy is not encrypted.
For details on configuring the client workload, please refer to the Client Workload Configuration.
Polaris Secure Proxy
The Polaris Secure Proxy sits in front of the client workload and acts as an HTTP proxy server. It is implemented in TypeScript using the efficient express-http-proxy library. The proxy can be configured to enable transparent decryption of input requests and encryption of responses, supporting encrypted communication.
For details on configuring the Polaris Secure Proxy, please refer to the Polaris Secure Proxy documentation.
Permanent Encryption Key
The proxy also manages access to the private keys used to decrypt data inside the TEE. For Polaris Pro, the proxy connects to an external key management solution that securely stores a 4096-bit RSA private key inside a Hardware Security Module (HSM). The private key is accessed only through an attestation policy, which ensures it is used exclusively inside a TEE. The key management service and attestation policy rely on services provided by the cloud provider. For more information, see the Cloud Providers documentation.
Having a permanent decryption key allows encryption and decryption of data stored permanently in a bucket, on a disk, in a database, or any other storage medium. For implementing encryption and decryption from the workload container, please refer to the Polaris SDK documentation.