Skip to main content

GitHub アプリの秘密キーの管理

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

GitHub Apps の秘密キーについて

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

1 つのアプリに対して最大 25 個の秘密キーを作成できます。 キーが侵害された場合にダウンタイムなしでキーをローテーションするには、複数のキーを使う必要があります。 アプリケーションに 25 個以上のキーがある場合は、作成する前に一部を削除する必要があります。

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

GitHub Appsセキュリティで保護するには、秘密キーを保持する必要があります。 詳細については、「秘密キーの格納」を参照してください。

秘密キーが公開キーと一致することを確認するには、「秘密キーを検証する」を参照してください。

秘密キーの生成

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

  1. GitHub の任意のページの右上隅にある、自分のプロフィール写真をクリックします。

  2. アカウント設定にアクセスしてください。

    • 個人用アカウントが所有するアプリの場合は、[設定] をクリックします。
    • 組織が所有するアプリの場合:
      1. [自分の組織] をクリックします。
      2. 組織の右側にある [設定] をクリックします。
    • Enterprise が所有するアプリの場合:
      1. [Enterprise 設定] をクリックします。
  3. GitHub App 設定にアクセスしてください。

    • 個人用アカウントまたは組織が所有するアプリの場合:
      1. 左側のサイドバーで、[ Developer settings] をクリックしてから、[GitHub Apps] をクリックします。
    • Enterprise が所有するアプリの場合:
      1. 左側のサイドバーで、 [設定] をクリックし、 GitHub Apps をクリックします。
  4. 秘密キーを生成する GitHub App の横にある [ 編集] をクリックします。

  5. [秘密キー] で、 [秘密キーの生成] をクリックします。

  6. お手元のコンピュータにダウンロードされた PEM フォーマットの秘密鍵が表示されます。 GitHubはキーの公開部分のみを格納するため、このファイルを必ず格納してください。 キーを安全に格納する方法の詳細については、「秘密キーの格納」を参照してください。

メモ

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

秘密鍵を検証する

GitHub では、SHA-256 ハッシュ関数を使用して、秘密キーと公開キーのペアごとに指紋が生成されます。 秘密キーのフィンガープリントを生成し、GitHubに表示されている指紋と比較することで、秘密キーがGitHubに格納されている公開キーと一致することを確認できます。

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

  1. GitHub Appの設定ページの [秘密キー] セクションで、確認する秘密キーと公開キーのペアの指紋を見つけます。 詳細については、「秘密キーの生成」を参照してください。

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

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

    openssl rsa -in PATH_TO_PEM_FILE -pubout -outform DER | openssl sha256 -binary | openssl base64
    
  3. ローカルで生成された指紋の結果を、 GitHubに表示される指紋と比較します。

秘密鍵を削除する

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

  1. GitHub の任意のページの右上隅にある、自分のプロフィール写真をクリックします。

  2. アカウント設定にアクセスしてください。

    • 個人用アカウントが所有するアプリの場合は、[設定] をクリックします。
    • 組織が所有するアプリの場合:
      1. [自分の組織] をクリックします。
      2. 組織の右側にある [設定] をクリックします。
    • Enterprise が所有するアプリの場合:
      1. [Enterprise 設定] をクリックします。
  3. 左側のサイドバーの [Developer settings] をクリックします。

  4. 左側のサイドバーで、 [GitHub Apps] をクリックします。

  5. 秘密キーを削除する GitHub App の横にある [ 編集] をクリックします。

  6. [秘密キー] の下にある、削除する秘密キーの右側にある [削除] をクリックします。

  7. ダイアログが表示されたら、 [削除] をクリックして秘密キーを削除することを確認します。 GitHub Appにキーが 1 つしかない場合は、古いキーを削除する前に新しいキーを生成する必要があります。 詳細については、「秘密キーの生成」を参照してください。

秘密キーの格納

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

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

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

詳しくは、「GitHub アプリを作成するためのベスト プラクティス」をご覧ください。