Contents
Kong Gateway プラグイン 認証 JWT 設定手順をステップバイステップで解説
Kong Gateway 3.x以降でのJWT認証の設定には、環境構築からエラーハンドリングまでの一連のプロセスが求められます。本記事では、API開発者・DevOpsエンジニア向けに、最新バージョンに対応した実践的な手順をステップバイステップで解説します。Kong Gateway プラグイン 認証 JWT 設定手順を理解することで、効率的なAPIセキュリティ設計が可能になります。
Kong Gateway環境構築の前提条件
Kong Gateway 3.0以降では、OS要件や依存ライブラリのバージョンが厳格に管理されています。クラウド環境(AWS/Azure/GCP)とオンプレミスでの設定にも差異があります。
このセクションでは、Kong Gatewayを正しく動作させるための前提条件を整理します。詳細な手順や注意点を確認し、事前準備を進めてください。
環境構築に必要な条件
-
OS:
Ubuntu 20.04 LTS / CentOS Stream 8以降OSバージョンは公式ドキュメントで明記されているため、Kong Gatewayのリリースノートを参照してください。
-
依存ライブラリ:
- OpenSSL 1.1.1以上
-
LuaRocks 3.x
ライブラリのバージョン管理は、Kong Gatewayの安定稼働に不可欠です。
-
クラウド環境の特異性:
AWSではVPC内のセキュリティグループ設定が必須。オンプレミスはネットワークファイアウォールの透過を確認する必要があります。
プラグイン利用前の環境チェックは、Kong Gatewayの正常動作を保証するために不可欠です。公式ドキュメントで具体的な要件を確認してください。
JWT認証プラグインの有効化手順
デフォルトでは無効なJWTプラグインを有効にするには、管理コンソールとYAML設定ファイルの両方で操作が必要です。このセクションでは具体的な有効化方法をステップバイステップで説明します。
管理コンソールでの登録
http://<Kong Gateway IP>:8001にアクセスし、「Plugins」タブを開く。- サーチバーに「jwt」を入力し、プラグインを選択。
- 「Enable Plugin」ボタンを押下。
管理コンソールでの変更後は
kong stop && kong startで設定を反映させます。
YAML設定ファイルによる有効化
|
1 2 3 4 5 |
plugins: - name: jwt config: enforce: true |
認証トークンの署名アルゴリズム設定
JWTトークンのセキュリティには、RSAとHMACの選択が重要です。鍵管理も見逃せません。
RSA vs HMAC の比較
| 項目 | RSA | HMAC |
|---|---|---|
| セキュリティレベル | 高(非対称暗号) | 中(対称暗号) |
| 鍵管理の複雑さ | 公開鍵・秘密鍵ペアが必要 | 1つの共有鍵で十分 |
| 対応アルゴリズム | RS256, RS384, RS512 | HS256, HS384, HS512 |
RSAは第三者との連携時、HMACは内部サービス間通信で推奨されます。公式ドキュメントでアルゴリズムの選択基準を確認してください。
ルートとサービスへのプラグイン適用方法
JWT認証をどのレベルに設定するかによって、セキュリティの精度が変わります。サービス・ルート別に制御可能です。このセクションでは具体的な手順を解説します。
サービスレベルでの設定例
|
1 2 3 4 |
curl -X POST http://localhost:8001/services/{service_id}/plugins \ --data name=jwt \ --data config.enforce=true |
service_idはサービスのUUIDを指定してください。この手順で設定後、kong resyncコマンドで反映させます。
ルートベースの細粒度制御
-
特定のルートにのみ有効化
bash
curl -X POST http://localhost:8001/routes/{route_id}/plugins \
--data name=jwt \
--data config.enforce=true -
クライアントIPごとに異なる認証ポリシーを設定可能
ルートレベルでは
config.identitiesでIPベースの認証を指定できます。
テスト用JWTトークン生成手順
OpenAPI仕様に基づき、Postmanやcurlでテストケースを作成します。有効期限とスコープの設定が重要です。
Postmanでの作成例
- Authタブ → 「JWT」を選択。
algにHS256を入力。iss(発行者)にAPI Gateway URLを指定。
|
1 2 3 4 5 6 |
{ "exp": 1700000000, "sub": "test_user", "scope": ["read", "write"] } |
有効期限(exp)は、Kong Gatewayの
clock_skew設定と一致させる必要があります。公式ドキュメントで詳細を確認してください。
エラーハンドリング設定
認証失敗時の適切なエラー応答を設定することで、開発者側のデバッグが簡略化されます。このセクションでは具体的な設定方法と対処法を解説します。
認証失敗時のステータスコード
-
401 Unauthorized: トークン無効/欠落時
トークンが存在しない、または形式が不正な場合に返却されます。
-
403 Forbidden: スコープ不足・権限なし
scopeパラメータの不一致や認証エラー時に発生します。
カスタムエラーメッセージの例
|
1 2 3 4 |
config: failure_response: message: "認証トークンが無効です。再発行してください" |
デバッグ用に
kong logsコマンドで詳細ログを出力する設定も推奨されます。
設定後の動作確認とセキュリティ対策
設定完了後は、必須の動作確認プロセスを実施してください。以下にチェックリストを示します。
動作確認手順
-
生成したテストトークンでAPIアクセスを試行
正常に認証されるか確認し、
200 OKが返却されることを検証。 -
不正なトークン(期限切れ/不正署名)でのアクセスをシミュレーション
401または403のエラー応答が出力されているか確認。 -
ログ出力に「401」「403」エラーが正しく表示されているか確認
「設定後の動作確認を忘れずに実施し、セキュリティ漏洩リスクを防ぎましょう。」
この確認は、サービスの安定稼働とセキュリティ強化のために欠かせません。
まとめ
- Kong Gateway環境構築にはOS・依存ライブラリのバージョン管理が重要
- JWTプラグイン有効化は管理コンソールとYAML設定ファイルで行う
- RSA/HMACの選択は用途に応じて行い、鍵管理を厳格に行うこと
- サービス・ルートレベルでの認証ポリシー設定が必須
- テストトークン生成とエラーハンドリングの明確化でデバッグ効率向上
- 設定後は必ず動作確認を実施し、セキュリティリスクを防ぐ
本記事で解説した手順に従い、Kong GatewayでのJWT認証設定を正確かつ安全に構築してください。詳しくはKong Gateway公式ドキュメントをご参照ください。