Gateway on Azure Container App

Azure Container Apps (ACA) provides a serverless, managed platform for the Keeper Gateway, offering native High Availability (HA) and built-in secret encryption.

Overview

This document contains information on how to install, configure, and update your Keeper Gateway on an Azure Container App. 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

  • An active Azure Subscription.

  • Azure CLI with the containerapp extension.

  • A Gateway Configuration string from the Keeper Vault.

  • A keyvault extension if using option B.

  • A subnet (minimum /27) for the ACA environment, delegated to Microsoft.App/environments

Docker Hub Authentication

To avoid anonymous pull rate limits in Azure (which often result in 429 Too Many Requests ), 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


Environment Setup

The Container App Environment is the secure boundary for your Gateways.

Secrets Management Options

Choose one of the following methods to manage your GATEWAY_CONFIG.

Option A: Internal Managed Secrets

Option B: Azure Key Vault

Store Secret: Store your config in Key Vault

Deploy with Identity: Create the app with a system-assigned identity.

Grant Access: Give the app permission to read the secret.

Reference Secret: Link the Key Vault secret to the app.

Assign the secret to the registry


Enable Shared Memory

The Keeper Gateway requires expanded shared memory (/dev/shm) for session recording. This must be applied via a YAML update after the initial creation.

Export Configuration

az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP> -o yaml > keeper-app.yaml

Edit the YAML

Locate the template section and add the volumes and volumeMounts blocks.

Apply the Update

az containerapp update -n <APP_NAME> -g <RESOURCE_GROUP> --yaml keeper-app.yaml

Operational Commands

Action

Command

Verify Storage

az containerapp exec -n <APP_NAME> -g <RESOURCE_GROUP> --command "df -h | grep shm"

View Logs

az containerapp logs show -n <APP_NAME> -g <RESOURCE_GROUP> --follow

Scale to Zero

az containerapp scale update -n <APP_NAME> -g <RESOURCE_GROUP> --min-replicas 0 --max-replicas 0

Scale Up

az containerapp scale update -n <APP_NAME> -g <RESOURCE_GROUP> --min-replicas 2 --max-replicas 5


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?