本記事は「Kong Advent Calendar 2025」の4日目のエントリとして、KonnectでのAzure Key Vaultの参照方法について解説する。
Kong Gatewayではdeck CLIを使ってKong Gatewayの設定をYAMLで管理することができるが、このファイル内にパスワードなどの機微情報をベタ書きしたくない人は多いと思う。
これを隠蔽するやり方の一つとして、Vault的なものを参照する形で設定する方法がある。
ただ、これの設定方法に関する記述がAzure Key Vaultについては現行のドキュメントには記載がなく、ナレッジベースの記載も分かりにくいので、手順をまとめてみた。
前提
以下を前提とする。
- Azureが利用できること
- Konnectが利用できること
- Data PlaneはAzure Container Appsとしてデプロイ済み
- Service/Routeは設定済み(今回はhttpbin.orgを利用)
Data PlaneがKey Vaultの情報を引っ張る方法として、マネージドIDを利用する方法と、EntraIDアプリケーションを利用する方法があるが、ここではマネージドIDを利用する方法で説明する。
検証
今回はRedisのパスワードをVaultで隠蔽し、Proxy Cache Advanced Pluginで利用するケースで設定する。
Azure Managed Redis インスタンスの作成
最初にAzure Managed RedisのUIからAzure Managed Redis インスタンスを作成する。
作成に躓くところは特にないので詳細は割愛するが、今回は以下の設定で作成している。
- データ層:インメモリ
- キャッシュサイズ:0.5GB
- パフォーマンス:バランス(SKU B0)
作成後、設定->認証のAccess keysからアクセスキー認証を有効化し、Primary keyを控えておく。
また検証用途ということで一旦パブリックアクセスを有効にする。
最後に概要のページからEndpointを控えておく。(Proxy Cache Advanced Plugin設定時に利用する)
キーコンテナー(Azure Key Vault)の作成とロールの割り当て
Azureのキーコンテナーに移動し、オブジェクト->シークレットから新しいシークレットを追加する。
ここでは名前をredis-keyとし、値に先程取得したPrimary Keyを登録する。

作成後、アクセス制御(IAM)から追加->ロールの割り当てを追加をクリックし、以下を選んでレビューと割り当てからKey Vaultを読み取るためのロールをContainer Appsに割り当てる。
- ロール:キーコンテナーシークレットユーザー
- メンバー:
- アクセスの割り当て先:マネージドID
- メンバー:Data PlaneのContainer Apps
また概要ページからコンテナーのURIを控えておく。
KonnectのVault設定
Konnect上でGatewayを選択後、左サイドバーのVaultsをクリックし、New vaultをクリックする。
Vault Configurationの項目でVaultの種類が選択できるので、Azure Vaultを選択する。
その後、以下の項目を記入する。
- Location: Key Vaultのリージョン(ここでは
Japan Eastを指定) - Vault URL: キーコンテナーのURI(先程控えたURI(
https://<コンテナ名>.vault.azure.net)を入力) - Prefix: Pluginから参照する際のプレフィックス(ここでは
redisを指定)
KonnectのVault設定
Routeに対してProxy Cache Advanced Pluginを追加し、以下を設定する。
- Strategy:
redis - Redis Configuration:
Use dedicated configuration - Redis.Host:
Azure Managed RedisのEndpoint(先程控えた<your-redis-name>.japaneast.redis.azure.netを入力) - Redis.Port:
10000(Azure Managed Redisのポート) - Redis.Password:
{vault://redis/redis-key}(Vaultのプレフィックスとキー名を組み合わせて指定) - Redis.Ssl:
true - Redis.Ssl Verify:
true
deckの場合、最終的には以下のような設定になる。
_format_version: "3.0"
_konnect:
control_plane_name: default
services:
- host: httpbin.org
name: httpbin-service
path: /
port: 443
protocol: https
routes:
- name: test
paths:
- /test
plugins:
- name: proxy-cache-advanced
config:
redis:
host: myredis.japaneast.redis.azure.net
password: '{vault://redis/redis-key}'
port: 10000
ssl: true
ssl_verify: true
strategy: redis
vaults:
- name: azure
prefix: redis
config:
base64_decode: false
credentials_prefix: AZURE
location: Japan East
type: secrets
vault_uri: https://himitsu-kv.vault.azure.net/
動作確認
Container Appsのエンドポイントにcurlを実行する。
curl https://<your-endpoint>.japaneast.azurecontainerapps.io/test/anything -i
ヘッダを見るとx-cache-status: Missが表示される。
再度実行するとx-cache-status: Hitが表示され、キャッシュが有効になっていることが確認できる。

