トラブルシューティング
トラブルシューティング
DuoKey AWS XKS Proxy の一般的な問題を診断して解決する
適用対象:
AWS XKS Proxy接続の問題エラーの解決
クイック診断チェックリスト
前提条件
- 外部キーストアの接続ステータスが確認済み
- XKS プロキシのヘルスエンドポイントが応答している
- AWS からプロキシへのネットワーク接続が確認済み
- TLS 証明書が有効で期限切れでない
- SigV4 認証クレデンシャルが正しい
- 外部キーがキーマネージャーに存在する
- 外部キーマネージャーにプロキシからアクセス可能
- 最近の CloudWatch メトリクスにアクティビティが表示されている
- プロキシログに最近のリクエストが表示されている
一般的な問題
1. XksProxyUriUnreachableException
警告
エラー:
XksProxyUriUnreachableException: The XKS proxy URI endpoint is unreachable考えられる原因:
- XKS プロキシがダウンしているか実行されていない
- ネットワーク接続の問題
- ファイアウォールが AWS KMS の IP 範囲をブロックしている
- DNS 解決の失敗
- TLS 証明書の問題
Diagnose ConnectivityBASH
# 1. Check if proxy is running
curl -k https://your-proxy-address.com/health
# 2. Check DNS resolution
nslookup your-proxy-address.com
dig your-proxy-address.com
# 3. Check TLS certificate
echo | openssl s_client -connect your-proxy-address.com:443 -servername your-proxy-address.com
# 4. Check proxy logs
tail -f /var/log/duokey-xks-proxy/proxy.log2. XksProxyInvalidResponseException
警告
エラー:
XksProxyInvalidResponseException: The XKS proxy returned an invalid response考えられる原因:
- プロキシが AWS XKS プロキシ API 仕様に準拠していない
- プロキシ応答の JSON フォーマットの問題
- 不正な HTTP ステータスコード
- 必須の応答フィールドの欠落
3. XksProxyIncorrectAuthenticationCredentialException
警告
エラー:
XksProxyIncorrectAuthenticationCredentialException: Authentication credential is incorrect考えられる原因:
- AWS とプロキシの間で SigV4 クレデンシャルが一致しない
- クレデンシャルが期限切れまたはローテーションされた
- AWS とプロキシの間のクロックスキュー
4. XksKeyNotFoundException
警告
エラー:
XksKeyNotFoundException: External key not found考えられる原因:
- キー ID の不一致(大文字と小文字を区別)
- 外部キーマネージャーからキーが削除された
- 誤ったキーバックエンドが構成されている
- DuoKey Cockpit のルーティングの問題
5. 高レイテンシの問題
症状:操作の完了に 100ms 以上かかる
考えられる原因:
- AWS とプロキシの間のネットワークレイテンシ
- 外部キーマネージャーのパフォーマンスの問題
- プロキシのリソース制約
- 地理的な距離
6. TLS 証明書の問題
症状:TLS ハンドシェイクの失敗または証明書の警告
考えられる原因:
- 期限切れの証明書
- 証明書チェーンが不完全
- ドメインに対して誤った証明書
- AWS によって信頼されていない証明書
7. 外部キーストアの切断
症状:外部キーストアが切断状態として表示される
高度なトラブルシューティング
デバッグモード
Enable Debug LoggingYAML
# config.yml
logging:
level: debug
components:
authentication: debug
encryption: debug
routing: debug
backend: debugReview Debug LogsBASH
systemctl restart duokey-xks-proxy
tail -f /var/log/duokey-xks-proxy/proxy.log | jq .パケットキャプチャ
Capture Network TrafficBASH
# Capture HTTPS traffic to/from proxy
tcpdump -i any -s 0 -w /tmp/xks-traffic.pcap port 443
# Analyze with Wireshark
wireshark /tmp/xks-traffic.pcapヘルスチェックのデバッグ
Detailed Health CheckBASH
# Detailed health check
curl -v https://your-proxy:443/kms/xks/v1/health \
-H "Content-Type: application/json" \
-d '{}' | jq .
# Expected response:
# {
# "status": "OK",
# "version": "1.0",
# "keyManagers": [
# {
# "name": "vault-primary",
# "status": "ACTIVE"
# }
# ]
# }エラーコードリファレンス
| エラーコード | 説明 | 一般的な原因 |
|---|---|---|
| XksProxyUriUnreachableException | プロキシに到達できない | ネットワーク、ファイアウォール、プロキシダウン |
| XksProxyInvalidResponseException | 無効なプロキシ応答 | API 準拠、バグ |
| XksProxyIncorrectAuthenticationCredentialException | 認証エラー | 誤ったクレデンシャル、クロックスキュー |
| XksKeyNotFoundException | 外部キーが見つからない | 誤ったキー ID、キーの削除 |
| XksKeyInvalidConfigurationException | キー構成が無効 | 誤ったキータイプ、キーの無効化 |
| XksProxyInvalidConfigurationException | プロキシ構成が無効 | 誤った URL、無効な設定 |
ヘルプの取得
サポートに連絡する前に
Gather Diagnostic InformationBASH
# 1. System information
uname -a
cat /etc/os-release
# 2. Proxy version and status
/usr/local/bin/duokey-xks-proxy --version
systemctl status duokey-xks-proxy
# 3. Recent logs
tail -100 /var/log/duokey-xks-proxy/proxy.log > proxy-logs.txt
# 4. External key store status
aws kms describe-custom-key-stores \
--custom-key-store-id cks-xxxxx > keystore-status.json
# 5. CloudWatch metrics
aws cloudwatch get-metric-statistics \
--namespace AWS/KMS \
--metric-name XksProxyLatency \
--dimensions Name=CustomKeyStoreId,Value=cks-xxxxx \
--start-time $(date -u -d '1 hour ago' '+%Y-%m-%dT%H:%M:%S') \
--end-time $(date -u '+%Y-%m-%dT%H:%M:%S') \
--period 300 \
--statistics Average,Maximum > cloudwatch-metrics.json
# 6. Network test results
curl -v https://your-proxy:443/health > network-test.txt 2>&1連絡先情報
| リソース | 連絡先 |
|---|---|
| DuoKey サポート | [email protected] |
| AWS サポート | AWS コンソールでケースを開く |
| コミュニティ | GitHub Discussions |
予防措置
定期的なヘルスチェック
Automated Health Check ScriptBASH
#!/bin/bash
# /usr/local/bin/xks-health-check.sh
PROXY_URL="https://your-proxy:443/health"
ALERT_EMAIL="[email protected]"
RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" $PROXY_URL)
if [ "$RESPONSE" != "200" ]; then
echo "XKS Proxy health check failed: HTTP $RESPONSE" | \
mail -s "XKS Proxy Alert" $ALERT_EMAIL
exit 1
fi
exit 0Schedule Health CheckBASH
# Add to cron
*/5 * * * * /usr/local/bin/xks-health-check.sh定期的なメンテナンススケジュール
| 頻度 | タスク |
|---|---|
| 毎週 | ログとメトリクスの確認 |
| 毎月 | ディザスタリカバリ手順のテスト |
| 四半期ごと | クレデンシャルのローテーション |
| 毎年 | TLS 証明書の更新 |