Azure Container Instance上のゲートウェイ

Azure Container Instance上へのKeeperゲートウェイのインストール手順

概要

本文書では、Azure Container Instance上にKeeperゲートウェイをインストール、構成、更新する手順を説明します。Keeperゲートウェイのコンテナは、Rocky Linux 9のベースイメージを基にビルドされ、DockerHubで配布されています。

要件

Azure環境の要件

  • リソースグループ: ゲートウェイ専用のリソースグループ

  • 仮想ネットワーク (VNet): ゲートウェイ用の専用サブネットを備えたVNet

  • サブネットの委任: 指定したサブネットは Microsoft.ContainerInstance/containerGroups に委任されている必要があります

  • サブスクリプションの権限: Container Instanceとネットワークリソースを作成できる共同作成者 (Contributor) ロールの権限

Docker Hubの認証

Azureで匿名プルに起因するレート制限を避けるため (多くの場合 429 Too Many RequestsManifest Unknown といったエラーになります)、次のものが必要です。

  • Docker Hubアカウント: hub.docker.comに登録したアカウント

  • パーソナルアクセストークン: [アカウント設定] > [セキュリティ] で生成し、Read Only 権限を付与したトークン


ゲートウェイの作成

新しいゲートウェイのデプロイは、ウェブボルトまたはデスクトップアプリで [新規作成] > [ゲートウェイ] と進むと作成できます。

Keeperコマンダー CLIからゲートウェイと構成ファイルを作成することもできます。

アプリケーション名とUIDは secrets-manager app list で確認できます。

デプロイマニフェスト

Docker ComposeファイルはボルトのUIから取得できます。このファイルを基にデプロイマニフェストを作成し、keeper-gateway.yml として保存してください。デプロイマニフェストの例を以下に示します。

必須パラメータ

パラメータ

説明

<AZURE_REGION>

VNetと対象VMのあるAzureリージョン

<GATEWAY_INSTANCE_NAME>

Azure上のこのコンテナグループの一意の名前

<DOCKER_HUB_USERNAME>

Docker HubのユーザーID (本番のプル回数制限対策に必要)

<DOCKER_HUB_PAT_TOKEN>

Docker Hubで生成したパーソナルアクセストークン

<YOUR_BASE64_CONFIG_STRING>

ゲートウェイを生成した際にKeeperボルトから得られる構成文字列

<SUBSCRIPTION_ID>

36文字のAzureサブスクリプションID

<SUBNET_NAME>

Microsoft.ContainerInstance に委任されたサブネットの名前

<VNET_NAME>

サブネットが属する仮想ネットワークの名前

外部ストレージを用意せず共有メモリ要件を満たすため、 /dev/shm には emptyDir を使用します。このストレージは永続化されません。ACIのデプロイを削除または更新するとデータは消去されますが、ゲートウェイは状態と録画をKeeperクラウドへ同期するため、この挙動で問題ありません。

Azure Container Instances (ACI) では既定でHyper-V分離が用いられるため、seccompやAppArmorは使われません。


デプロイ

YAMLファイルの準備ができたら、ファイルをアップロードし、Azure CLIで次のコマンドを実行してサービスを起動してください。

コンテナグループの作成

サービスの確認

ログの取得


ゲートウェイサービスの管理

Azure Container Instance (ACI) 環境では、Azure CLIまたはAzureポータルから管理します。

サービスの制御

サービスの起動

マニフェストをデプロイするとサービスは自動的に起動します。コンテナが停止している場合は、次のコマンドを実行します。

サービスの停止

ゲートウェイを一時的に止める場合は、次のコマンドを実行します。

サービスの再起動

YAMLマニフェストの構成を変更したあとに必要な場合は、次のコマンドを実行します。

ゲートウェイコンテナへの接続

ネットワーク接続のデバッグやコンテナ内の環境変数の確認には、対話型のシェルセッションを開始できます。

ゲートウェイの更新

本番インスタンスを最新バージョンに更新する場合の手順です。

プルして再起動

イメージのプルポリシーが許可する場合は、再起動時にACIが :latest タグのイメージを自動プルします。確実に更新するには、コンテナグループの作成コマンドを再実行する方法がおすすめです。

デバッグとヘルスチェック

詳細ログ

ローテーション失敗やトラブルシューティング用にデバッグログを有効にする場合は、YAMLの environmentVariables セクションに次の変数を追加します。

ヘルスチェック

ロードバランシングや自動フェイルオーバー向けにゲートウェイの稼働状態を監視する場合は、ライブネスプローブを構成すると、ゲートウェイが応答しなくなった際にコンテナを自動的に再起動できます。


スケーリングと高可用性

追加のコンテナをデプロイする前に、スケーリングと高可用性のためのゲートウェイ設定が必要です。

Keeperコマンダーにログインしたうえで、次のコマンドでゲートウェイの一覧を取得します。

スケーリング対象のゲートウェイに対して、次のコマンドを実行します。

  • <GATEWAY_UID> はスケーリングするゲートウェイのUIDです。

  • <MAX_INSTANCES> は許可するゲートウェイインスタンス数の上限です。

最大5つのゲートウェイインスタンスを同時に実行できるようにする場合のコマンド例です。

ゲートウェイのスケーリングと高可用性の詳細は、次をご参照ください。

ACIではスケーリングは水平方向です。同一の GATEWAY_CONFIG を使い、互いに独立したコンテナグループを複数デプロイします。

2つ目のインスタンスを追加するには、YAMLファイルを複製し、コンテナグループ名とYAMLファイル名を変更します。

新しいYAMLファイルをアップロードし、デプロイコマンドを実行します。

各インスタンスは既存のプールに自動的に参加します。


ネットワーク構成

Keeperゲートウェイはアウトバウンド専用の接続を確立するため、インバウンドのファイアウォールルールは必要ありません。ただし、以下のアウトバウンド接続は許可されている必要があります。

宛先エンドポイント
必要なポート
備考

Keeperクラウド keepersecurity.[x]

エンドポイント:

US: .com

EU: .eu

AU: .com.au

JP: .jp

CA: .ca

US_GOV: .us

TLSポート443

Keeperクラウドと通信し、ネイティブプロトコル (例: SSH、RDP) を介して対象インフラストラクチャにアクセスします。

Keeperルーター connect.keepersecurity.[x]

エンドポイント:

US: .com

EU: .eu

AU: .com.au

JP: .jp

CA: .ca

US_GOV: .us

TLSポート443

Keeperルーターと通信し、安全なリアルタイムWebSocket接続を確立します。

Keeper Stun/Turnサービス

krelay.keepersecurity.[x]

エンドポイント:

US: .com

EU: .eu

AU: .com.au

JP: .jp

CA: .ca

US_GOV: .us

TCPおよびUDPのポート3478を開放。 さらに、TCPおよびUDPのポート49152~65535のアウトバウンドアクセスを許可。

ゲートウェイを介して、エンドユーザーのボルトと対象システム間の安全で暗号化されたWebRTC接続を確立します。

ゲートウェイでは、すべての暗号化および復号化処理をローカルで実行することでゼロ知識を保持します。Keeperクラウドとの通信にはKeeperシークレットマネージャーのAPIを使用します。

最終更新