正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

署名済みコミット

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

コミットにデジタル署名を追加すると、なりすましではなく、あなた自身がコミットを作成したことをより確実に保証できます。デジタル署名とは、真正性を検証するために使用される暗号学的出力です。

署名されたコミットと検証済みのコミットの違いを理解することが重要です:

  • 署名されたコミットには、コミットの整合性と真正性を証明する暗号学的署名が付いています。署名は、秘密キーを使用して作成されます。
  • 検証済みのコミットには、GitLabがユーザーのGitLabプロファイルに保存されている既知の公開キーと照合して検証できる署名があります。

GitLabが公開キーでコミッターのIDを検証できる場合、コミットはGitLab UIで検証済みと表示されます。

コミッターフィールドと作成者フィールドはGitでは異なります。作成者はコミットを記述し、コミッターはそれを適用します。コミットの署名により、コミッターのIDのみが検証されます。

GitLabは、次のコミット署名方法をサポートしています:

コミットを検証する

マージリクエストまたはプロジェクト全体のコミットをレビューし、署名されていることを検証するには、次の手順を実行します:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。

  2. コミットをレビューするには:

    • プロジェクトの場合は、コード > コミットを選択します。
    • マージリクエストの場合:
      1. コード > マージリクエストを選択し、マージリクエストを選択します。
      2. コミットを選択します。
  3. レビューするコミットを特定します。署名の検証ステータスに応じて、署名されたコミットには、検証済みまたは未検証のバッジが表示されます。

    検証済みと未検証のバッジが付いたコミットのリスト

    署名なしコミットにはバッジは表示されません。

  4. コミットの署名の詳細を表示するには、検証済みまたは未検証を選択して、フィンガープリントまたはキーIDを表示します:

    コミットの署名詳細が検証されました。

    コミットの署名詳細が検証されていません。

コミットの署名を確認するには、Commits APIを使用することもできます。

Web UIコミットを検証

GitLabはSSHを使用して、Web UIを介して作成されたコミットに署名します。これらのコミットをローカルで検証するには、Web Commits APIを使用して、Webコミットに署名するためのGitLab公開キーを取得します。

gitmailmapを検証済みコミットで使用する

この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。

gitmailmap機能を使用すると、ユーザーは作成者名とメールアドレスをマップできます。GitLabは、これらのメールアドレスを使用して、コミットの作成者へのリンクを提供します。mailmap作成者マッピングを使用すると、検証済みのコミットで、検証されていない作成者のメールを持つことが可能になります。

mailmap作成者マッピングを使用したSSHおよびUI署名の場合、GitLabには、警告サイン付きのオレンジ色の検証済みラベルが表示されます。緑色の検証済みラベルを復元するには、マップされたメールアドレスを検証するか、mailmapエントリを削除します。

プッシュルールを使用して署名されたコミットを適用する

プッシュルールを使用して、プロジェクト全体で署名されたコミットを要求できます。署名されていないコミットを拒否プッシュルールは、署名されていないコミットがリポジトリにプッシュされるのを防ぎ、組織がコードの整合性を維持し、コンプライアンス要件を満たすのに役立ちます。

このルールの仕組みと制限の詳細については、署名されたコミットを要求を参照してください。

トラブルシューティング

署名されたコミットの検証に関する問題を修正する

GPGキーまたはX.509証明書で署名されたコミットの検証プロセスは、複数の理由で失敗する可能性があります:

説明考えられる修正
UNVERIFIEDコミット署名が無効です。有効な署名でコミットに署名します。
SAME_USER_DIFFERENT_EMAILコミットの署名に使用されたGPGキーにコミッターのメールが含まれていませんが、コミッターの別の有効なメールが含まれています。GPGキーに一致するメールアドレスを使用するようにコミットを修正するか、GPGキーを更新してメールアドレスを含めます
OTHER_USER署名とGPGキーは有効ですが、キーはコミッターとは異なるユーザーに属しています。正しいメールアドレスを使用するようにコミットを修正するか、ユーザーに関連付けられているGPGキーを使用するようにコミットを修正します。
UNVERIFIED_KEYGPG署名に関連付けられているキーには、コミッターに関連付けられている検証済みのメールアドレスがありません。メールをGitLabプロファイルに追加して検証するか、メールアドレスを含めるようにGPGキーを更新するか、別のコミッターのメールアドレスを使用するようにコミットを修正します。
UNKNOWN_KEYこのコミットのGPG署名に関連付けられているGPGキーがGitLabに認識されていません。GitLabプロファイルにGPGキーを追加します。
MULTIPLE_SIGNATURES複数のGPGまたはX.509署名がコミットに見つかりました。1つのGPGまたはX.509署名のみを使用するようにコミットを修正します。