Skip to main content

GitHub Apps の秘密キーの管理

秘密キーを管理して、GitHub App で認証できます。

GitHub Apps の秘密キーについて

GitHub App を作成した後、アプリケーション自体として GitHub Enterprise Server API に要求を行うために、秘密キーを生成する必要があります。 たとえば、インストール アクセス トークンを要求するには、JSON Web Token (JWT) に署名するための秘密キーが必要です。 詳細については、「GitHub アプリの JSON Web トークン (JWT) の生成」を参照してください

鍵が危殆化したり、鍵を紛失した場合にダウンタイムを回避するため、複数の秘密鍵を作成してローテーションすることができます。 秘密キーが公開キーと一致することを確認するには、「秘密キーを検証する」を参照してください。

秘密キーは期限切れとならないため、手動で取り消す必要があります。 秘密キーを取り消す方法の詳細については、「秘密キーの削除」を参照してください。

GitHub Apps の秘密キーは、安全に保管する必要があります。 詳細については「秘密キーの格納」を参照してください。

秘密キーの生成

秘密鍵を生成するには、以下の手順に従います。

  1. GitHub の任意のページの右上隅にある、自分のプロファイル写真をクリックします。
  2. アカウント設定にアクセスしてください。
    • 個人用アカウントが所有するアプリの場合は、[設定] をクリックします。
    • 組織が所有するアプリの場合:
      1. [自分の組織] をクリックします。
      2. 組織の右側にある [設定] をクリックします。
  3. 左側のサイドバーで [ 開発者設定] をクリックします。
  4. 左側のサイドバーで、 [GitHub Apps] をクリックします。
  5. 秘密キーを生成する GitHub App の横にある [編集] をクリックします。
  6. [秘密キー] で、 [秘密キーの生成] をクリックします。
  7. お手元のコンピュータにダウンロードされた PEM フォーマットの秘密鍵が表示されます。 このファイルは必ず保存してください。GitHub では公開鍵の部分しか保存しません。 キーを安全に格納する方法の詳細については、「秘密キーの格納」を参照してください。

注: 特定のファイル形式を必要とするライブラリを使用している場合、ダウンロードする PEM ファイルは PKCS#1 RSAPrivateKey 形式になります。

秘密鍵を検証する

GitHub Enterprise Server は、SHA-256 ハッシュ関数を使用して、秘密キーと公開キーのペアごとにフィンガープリントを生成します。 秘密鍵のフィンガープリントを生成し、GitHub Enterprise Server で表示されているフィンガープリントと比較することにより、秘密鍵が GitHub Enterprise Server に保存宇されている公開鍵と適合することを検証できます。

秘密鍵を検証するには、以下の手順に従います。

  1. GitHub App の [設定] ページにある [秘密キー] セクションで、検証したい秘密キーと公開キーの組を見つけてください。 詳細については、「秘密キーの生成」を参照してください。

    GitHub App 設定ページの秘密キーのスクリーンショット。 コロンの後の秘密キーの部分である指紋が濃いオレンジ色で囲まれています。

  2. 次のコマンドを使用して、秘密鍵 (PEM) のフィンガープリントをローカルで生成します。

    openssl rsa -in PATH_TO_PEM_FILE -pubout -outform DER | openssl sha256 -binary | openssl base64
    
  3. ローカルで生成されたフィンガープリントの結果と、GitHub Enterprise Server に表示されているフィンガープリントを比較します。

秘密鍵を削除する

紛失または侵害されたした秘密キーは、削除によって排除することができますが、既存のキーを削除する前に新しいキーを再生成する必要があります。

  1. GitHub の任意のページの右上隅にある、自分のプロファイル写真をクリックします。
  2. アカウント設定にアクセスしてください。
    • 個人用アカウントが所有するアプリの場合は、[設定] をクリックします。
    • 組織が所有するアプリの場合:
      1. [自分の組織] をクリックします。
      2. 組織の右側にある [設定] をクリックします。
  3. 左側のサイドバーで [ 開発者設定] をクリックします。
  4. 左側のサイドバーで、 [GitHub Apps] をクリックします。
  5. 秘密キーを削除する GitHub App の横にある [編集] をクリックします。
  6. [秘密キー] の下にある、削除する秘密キーの右側にある [削除] をクリックします。
  7. ダイアログが表示されたら、 [削除] をクリックして秘密キーを削除することを確認します。 お使いの GitHub App にキーが 1 つしかない場合は、以前のキーを消去する前に新しいキーを生成する必要があります。 詳細については、「秘密キーの生成」を参照してください。

秘密キーの格納

秘密キーは、GitHub App にとって最も重要な唯一のシークレットです。 Azure Key Vault のようなキー コンテナーにキーを格納し、署名専用にすることを検討します。 これにより、秘密キーを紛失することがないようにします。 秘密キーはキー コンテナーにアップロードされると、そこから読み取ることはできなくなります。 秘密キーは署名にのみ使用でき、秘密キーへのアクセスはインフラストラクチャのルールによって決定されます。

または、キーを環境変数として格納することもできます。 これは、キー コンテナーにキーを格納するほど強力ではありません。 攻撃者が環境へのアクセス権を獲得した場合、秘密キーを読み取り GitHub App として永続的な認証を受けることができます。

コードがプライベート リポジトリに格納されている場合でも、アプリに秘密キーをハードコーディングしないでください。

詳しくは、「GitHub App を作成するためのベスト プラクティス」を参照してください。