Skip to main content

Enterprise Server 3.21 は、現在リリース候補として使用できます。

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 アプリを作成するためのベスト プラクティス」をご覧ください。