今回は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」を必須に出来ます。
- リポジトリのBranch protection ruleを開きます。
- 対象ブランチのパターンを設定しつつ、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発行や設定など)が必要です。
最後までご覧頂き、ありがとうございました。
コメント