Git - SSHでコミットに署名
Keeperボルトに保存されているSSHキーを使用してGitコミットに署名
概要
Gitのコミットに署名することは重要です。署名することで、作成者の確認、コミットされた内容の整合性の確保、なりすましの防止、そして否認防止が可能になります。秘密鍵で暗号化署名を使用すると、貢献内容の信頼性とセキュリティへの取り組みが示され、共同作業者間の信頼が構築され、リポジトリが改ざんや悪意のあるコードから保護されます。
この統合により、開発者は Keeperボルト (Keeperシークレットマネージャー経由) で保護された SSHキーを使用してGitコミットに署名できるようになります。
特徴
Keeperボルトに保存されているSSHキーを使用してGitコミットに署名します。
安全なDevOpsワークフローのためにディスク上のSSHキーが不要になります。
Windows、MacOS、Linux で動作します。
ソースコードはこちらのGithubページでご参照いただけます。
要件
この統合を利用するには、以下が必要となります。
Keeperシークレットマネージャーへのアクセス (詳細についてはクイックスタートガイドのページをご参照ください)
Keeperアカウントでシークレットマネージャーのアドオンが有効である
シークレットマネージャー強制適用ポリシーが有効になっているロールのメンバーシップ
SSHキーが共有されたKeeperシークレットマネージャーアプリケーション
アプリケーションの作成手順については、クイックスタートガイドをご参照ください。
初期化されたKeeperシークレットマネージャー構成
この統合ではJSON形式の設定のみが受け入れられます
Gitのバージョン2.34.0以降がインストールされている
設定
1. シークレットマネージャーの構成
Keeperウェブボルトまたはデスクトップアプリにログインします。
「Git SSH Keys」などの名前で共有フォルダを作成します。
共有フォルダにSSHキー記録を追加します。
生成します。
この統合では、Keeperシークレットマネージャーを使用してボルトからSSHキーを取得します。
すべてのシステムで、ユーザーのホーム ディレクトリの.config/keeper/ssh-sign.json
にシークレットマネージャー構成ファイルを配置しておきます。この構成が見つからない場合は、バックアップとしてssh-sign.json
がチェックされます。シークレットマネージャーアプリケーションは、SSHキーが保存されている共有フォルダにアクセスできる必要があります。
アプリケーションの設定と構成ファイルの取得に関するヘルプについては、こちらで詳細な手順を参照してください。
2. Gitの設定
シークレットマネージャーを正常に構成した後、Gitがコミットに自動的に署名するように構成できます。必要に応じてローカルまたはグローバルで実行できます。
構成には次の4つの情報が必要となります。
すべてのコミットに署名したいこと
デフォルトのGPG署名ではなくSSH署名を使用すること
この統合の実行可能ファイルの場所 (こちらのページからダウンロードしていただけます)
署名に使用するSSHキーのUID
以下のコマンドを使用して、ローカルGitリポジトリに対して上記を実行します (グローバルに設定するには--global
フラグを追加します)。
Git構成には以下の属性が含まれるようになります。
3. GitHub / GitLabにキーを追加
3.1 GitHubのセットアップ
GitHubがコミットの署名に使用された署名を検証するには、SSHキーの公開キーをGitHubアカウントにアップロードする必要があります。その後、GitHubはこの公開キーを使用して署名を検証し、 UIにverified
タグが表示されます。
公開鍵をアカウントに追加する方法の詳細については、GitHubの公式ドキュメントをご参照ください。
キーの種類を必ず「signing key」 (署名キー) に設定してください。
3.2 GitLabのセットアップ
GitLabがコミットの署名に使用された署名を検証するには、SSHキーの公開キーを GitLabアカウントにアップロードする必要があります。その後、GitLab はこの公開キーを使用して署名を検証し、 UI にverified
タグが表示されます。
公開鍵をアカウントに追加する方法の詳細については、Gitlabの公式ドキュメントをご参照ください。
キーの種類を必ず「signing key」 (署名キー) か「Authentication and signing」 (認証と署名) に設定してください。
署名の検証
Gitは、ターミナルまたはIDEインターフェイスのどちらを使用するかにかかわらず、すべてのコミットに自動的に署名するように設定されています。また、コミット署名に-S
フラグを使用する必要もなくなりました。
ターミナル内でgit show --pretty=raw
を実行することでコミットが署名されたことを確認できます。
GitHub と GitLab
コミットに署名してGitHubまたはGitLabにプッシュすると、Git履歴のコミットの横にVerifiedタグが自動的に表示されます。これ以上の作業は必要ありません。
ローカル検証
リポジトリが独自のデータセンターに保存されている場合は、コマンドライン上でコミットをローカルで検証できます。これを行うには、承認された署名キーの記録であるallowed_signers
ファイルを作成する必要があります。
通常、このファイルは.ssh/allowed_signers
にグローバルに保存されるか、.git/allowed_signers
のローカルリポジトリに保存されます。このファイルへのパスを.gitconfig
または.git/config
ファイルに追加する必要があります。
allowed_signers
ファイルの各行は、承認された署名キーのプリンシパルである必要があります。以下のように、公開キーに関連付けられたメールアドレスで始まり、スペースで区切る必要があります。
許可された署名者ファイルの形式については、こちらのウェブサイトで詳しく説明されています。
複数のメールアドレスを 1 つの公開キーに関連付けることは構文としては間違っていないものの、推奨されておらず、現在はサポートされていません。
git
履歴を確認するには、以下を行います。
ソース
この統合のソースコードはオープンソースであり、GitHubで入手できます。問題がある場合は、こちらのGithubページからチケットを作成してください。
最終更新