APIキーとシークレットトークンの生成

Webサービス用の高エントロピーAPIキーとシークレットトークンを生成します。推奨フォーマット、キー長、base62/base64エンコーディング、プレフィックス規則、安全な保存方法を解説します。

Platform-Specific

詳細な説明

APIキーとシークレットトークンの生成

APIキーとシークレットトークンはマシン間認証の資格情報として機能します。記憶する必要がないため最大エントロピーが求められ、長く完全にランダムな文字列の理想的な候補です。

APIキーのフォーマット

異なるサービスは異なるフォーマットを使用します:

16進文字列(Base16)

a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6
  • 32文字の16進数で16バイトのエントロピー
  • HMACシークレットやハッシュベースのトークンで一般的

Base62(英数字)

kR9mT2pX7nQw4bYsHt5vL8jB3eY6cN1x
  • エンコーディングなしでURL安全
  • 1文字あたり約5.95ビット
  • APIキーで広く使用

Base64 / Base64URL

a1B2c3D4+e5F6/a7B8==
a1B2c3D4-e5F6_a7B8
  • 1文字あたり約6ビット(最も効率的)
  • Base64URLバリアントは+/=を避けてURL安全

推奨キー長

用途 最小ビット フォーマット 長さ
APIキー 128ビット Base62 22文字
HMACシークレット 256ビット Hex 64文字
JWTシークレット 256ビット Base64 44文字
OAuthクライアントシークレット 256ビット Base62 43文字
Webhook署名キー 256ビット Hex 64文字

プレフィックス規則

多くのサービスはキータイプを識別するためにプレフィックスを追加します:

sk_live_kR9mT2pX7nQw4bYs    (Stripeシークレットキー)
pk_test_Ht5vL8jB3eY6cN1x    (Stripe公開キー)
ghp_xxxxxxxxxxxxxxxxxxxx     (GitHub個人アクセストークン)

プレフィックスは以下に役立ちます:

  • 識別 — キータイプの素早い判別
  • シークレットスキャン — コード内の漏洩キーの自動検出
  • 失効 — 特定のキーパターンのログ検索

安全な保存

APIキーには厳格な取り扱いが必要です:

  1. 環境変数 — バージョン管理にコミットしない
  2. シークレットマネージャー — AWS Secrets Manager、GCP Secret Manager、HashiCorp Vault
  3. 保存時の暗号化 — データベースに保存されたキーは暗号化すべき
  4. スコープされた権限 — キーごとに最小限必要な権限を割り当て
  5. ローテーションスケジュール — 90日ごとまたは人員変更後にキーをローテーション

コードでのキー生成

Web Crypto API(ブラウザ対応)を使用:

const array = new Uint8Array(32);
crypto.getRandomValues(array);
const key = Array.from(array, b =>
  b.toString(16).padStart(2, '0')
).join('');

ユースケース

APIキーとシークレットトークンは、サードパーティサービスを統合する開発者、REST APIの構築、Webhookの設定、OAuthアプリケーションのセットアップに使用されます。すべてのSaaS製品、モバイルアプリバックエンド、マイクロサービスには、サービス間通信のための安全に生成された認証トークンが必要です。

試してみる — Password Generator

フルツールを開く