GitHub signed commitsの概要と必須化について

Git
この記事は約2分で読めます。
記事内に広告が含まれています。

今回はGitHubのsigned commitsについて少し触れます。

  • 本人署名のコミットということです。
  • 本人署名がないコミットは受け付けない、という設定がGitHubで可能です。

以下、目次となります。

signed commits?

コミット履歴に「Verified」が付与されている場合は、署名付コミットということです(本人によってコミットされたもの)。

  • ブラウザ上で操作した場合はVerifiedになります。
  • クライアントツールから操作した場合は何も設定してないとVerifiedがつきません。

詳しい内容やクライアントツール操作における署名設定(GPGキー作成)などは公式サイトに詳しく載っています。

コミット署名の検証を管理する - GitHub Docs
コミットが信頼できるソースからのものであることを他のユーザーがわかるよう、GitHub によって GPG、SSH、S/MIME のいずれかの署名が検証されます。ユーザーが GitHub Web インターフェイスを使って行ったコミットは、Gi...

signed commitsを必須

Gitの仕組み上、コミッターは簡単に偽装できてしまいます。

偽装させずに常に本人署名にしたい場合は、リポジトリ設定で「signed commits」を必須に出来ます。

  1. リポジトリのBranch protection ruleを開きます。
  2. 対象ブランチのパターンを設定しつつ、Require signed commitsにチェックします。
    ※必要に応じて「Do not allow bypassing the above settings」(管理者のバイパスも許さない)もチェックします。
設定画面の抜粋です。

この状態で署名設定していないクライアントからPushするとエラーが発生しました。

remote: error: GH006: Protected branch update failed for refs/heads/main.        
remote: error: Commits must have valid signatures.

正しく動作したようです。

まとめ

本記事ではコミット署名(signed commits)の「概要」と「必須化」についてご紹介しました。必須化はリポジトリのブランチルールから設定できます。

クライアントツールでコミット署名を行うためには、各利用者で署名設定(GPG発行や設定など)が必要です。

最後までご覧頂き、ありがとうございました。

コメント

Top
タイトルとURLをコピーしました