Gateway on Azure Container Instance

Instructions for installing Keeper Gateway on an Azure Container Instance

Overview

This document contains information on how to install, configure, and update your Keeper Gateway on an Azure Container Instance. The Keeper Gateway container is built upon the base image of Rocky Linux 9 and it is hosted in DockerHubarrow-up-right.

Prerequisites

Azure Environment Requirements

  • Resource Group: A dedicated resource group.

  • Virtual Network (VNet): A VNet with a dedicated subnet for the gateway.

  • Subnet Delegation: The designated subnet must be delegated to Microsoft.ContainerInstance/containerGroups .

  • Subscription Permissions: Contributor access to create Container Instances and Network resources.

Docker Hub Authentication

To avoid anonymous pull rate limits in Azure (which often result in 429 Too Many Requests or Manifest Unknown errors), you must have:

  • Docker Hub Account: A registered account at hub.docker.comarrow-up-right.

  • Personal Access Token: A Token generated via Account Settings > Security with Read Only permissions


Create a Gateway

A new Gateway deployment can be created by clicking on Create New > Gateway from the Web Vault or Desktop App.

You can also create a Gateway and configuration file from the Commander CLI:

The Application names and UIDs can be found with secrets-manager app list

Deployment Manifest

A Docker Compose file is provided through the Vault UI. This file can be used to build a Deployment Manifest file. Save this file as keeper-gateway.yml . An example of a Deployment Manifest is below:

Required Parameters

Parameter

Description

<AZURE_REGION>

The Azure region where your VNet and Target VMs reside.

<GATEWAY_INSTANCE_NAME>

A unique name for this container group in Azure.

<DOCKER_HUB_USERNAME>

Your Docker Hub ID (required for production pull limits).

<DOCKER_HUB_PAT_TOKEN>

The Personal Access Token generated in Docker Hub.

<YOUR_BASE64_CONFIG_STRING>

The configuration string generated from the Keeper Vault when generating a Gateway

<SUBSCRIPTION_ID>

Your 36-character Azure Subscription ID.

<SUBNET_NAME>

The name of the subnet delegated to Microsoft.ContainerInstance.

<VNET_NAME>

The name of the Virtual Network where the subnet resides

We use emptyDir for /dev/shm to meet shared memory requirements without managing external storage. This storage is ephemeral. If you delete or update the ACI deployment, this data is wiped. This is acceptable for the Gateway because it syncs its state and recordings to the Keeper Cloud.

In Azure Container Instances (ACI), seccomp and AppArmor are not used because ACI uses Hyper-V isolation by default.


Deployment

Once the YAML file is prepared, upload the file and execute the following commands via the Azure CLI to start the service.

Create the Container Group

Verify the Service

Logging


Gateway Service Management

In an Azure Container Instance (ACI) environment, management is performed via the Azure CLI or the Azure Portal.

Service Control

Starting the Service Deploying the manifest automatically starts the service. If the container is stopped:

Stopping the Service To temporarily halt the Gateway:

Restarting the Service Required after making configuration changes to the YAML manifest:

Connecting to the Gateway Container

For debugging network connectivity or verifying internal environment variables, you can establish an interactive bash session:

Updating the Gateway

To update your production instance to the latest version:

Pull and Restart: ACI will automatically pull the :latest image tag upon restart if the image policy allows, but the most reliable method is to re-run the creation command:

Debugging & Health Checks

Verbose Logging

If you need to enable debug logs for troubleshooting rotation failures or tunnel issues, add the following to the environmentVariables section of your YAML:

Health Checks

To monitor the operational status of the Gateway for load balancing or automated failover, you can configure Liveness Probes. This ensures Azure automatically restarts the container if the Gateway service becomes unresponsive.


Scaling and High Availability

Before deploying additional containers, you must configure the Gateway for scaling and high availability.

After logging into Keeper Commander, get a list of gateways from this command:

Run the following command for the gateway being configured for scaling:

  • <GATEWAY_UID> is the UID of the Gateway you are scaling.

  • <MAX_INSTANCES> is the maximum number of Gateway instances you want to allow.

Example: The following example allows up to 5 Gateway instances to run concurrently:

For further information on gateway scaling and high availability

In Azure ACI, scaling is horizontal. You deploy multiple independent container groups using the exact same GATEWAY_CONFIG

To add a second instance, duplicate your YAML file and rename the container group and the YAML file.

Upload your new YAML file and run the deployment command

Each instance will automatically join the existing pool.


Network Configuration

The Keeper Gateway establishes outbound-only connections and does not require any inbound firewall rules. The following outbound connections must be allowed:

Destination Endpoint
Ports Needed
More Info

Keeper Cloud keepersecurity.[x]

Endpoints:

US: .com

EU: .eu

AU: .com.au

JP: .jp

CA: .ca

US_GOV: .us

TLS Port 443

Communicates with Keeper Cloud to access target infrastructure via native protocols (e.g., SSH, RDP)

Keeper Router connect.keepersecurity.[x]

Endpoints:

US: .com

EU: .eu

AU: .com.au

JP: .jp

CA: .ca

US_GOV: .us

TLS Port 443

Communicates with Keeper Router to establish secure, real-time WebSocket connections

Keeper Stun/Turn Service

krelay.keepersecurity.[x]

Endpoints:

US: .com

EU: .eu

AU: .com.au

JP: .jp

CA: .ca

US_GOV: .us

TCP and UDP opened on Port 3478 Outbound access to TCP and UDP ports 49152 through 65535

Facilitates secure and encrypted WebRTC connections between end-user's vault and target systems via the Gateway

The Gateway preserves zero knowledge by performing all encryption and decryption of data locally. Keeper Secrets Manager APIs are used to communicate with the Keeper cloud.

Last updated

Was this helpful?