こんにちは、しののめです。
昨今のサプライチェーン攻撃の流行を受けて、会社のセキュリティ要件として全エンジニアがGitでのコミットに署名と署名時の認証を求められるようになりました。

BitWarden側の設定

BitWardenアプリのインストール

macにはBitWardenアプリをインストールしておきます。
自分はアプリストアから入れました。

https://apps.apple.com/jp/app/bitwarden/id1352778147?mt=12

SSHキーの作成と設定

ここからは基本的に公式ドキュメントに沿って作業しましょう。
https://bitwarden.com/help/ssh-agent/

Create new SSH keyではアプリ上からSSHキーを作成します。
Configure Bitwarden SSH agentでSSHエージェントの設定を行います。
私の場合はストアからアプリをインストールしたので.zshrcに以下を追加しました。

export SSH_AUTH_SOCK="$HOME/Library/Containers/com.bitwarden.desktop/Data/.bitwarden-ssh-agent.sock"

Enable SSH agentでBitWardenのSSHエージェントを有効化します。
アプリを開いてメニューバー BitWarden > 設定 で「SSHエージェントを有効にする」にチェックを入れます。
認証の要求頻度ですが、「常に表示する」がセキュリティ的に良いですが「保管庫がロックされるまで記憶する」でも良いかもしれません。

Testing SSH keysでSSHキーのテストを行います。
ターミナルで下記コマンド実行して、BitWardenに登録したSSHキーが表示されれば成功です。

ssh-add -L

GitとGitHubの設定

Configure Git for SSH signingに沿ってGitの設定を行います。

署名にSSHを利用するように設定。

git config --global gpg.format ssh

署名鍵として使用するSSH鍵を指定します。
BitWardenアプリで作成したSSHキーの公開鍵を指定します。

git config --global user.signingkey "<YOUR_PUBLIC_KEY>"

自動コミット署名を有効にします。

git config --global commit.gpgSign true

これらがうまく設定されていれば.gitconfigにも反映されているはずです。

Sign Git commitsでコミットに署名しましょう。
まずはGitHubのSSH and GPG keysにBitWardenアプリで作成したSSHキーの公開鍵を登録します。
Key typeSigning Keyにするのを忘れずに。

そうしたら次のコマンドでallowedSignersFileを利用するように設定します。

git config --global gpg.ssh.allowedSignersFile "$HOME/.ssh/allowedSigners"

allowedSignersFile に公開鍵を追加します。
私はallowedSignersFileがなかったため~/.sshに新規作成しました。
中身は署名に利用するメールアドレスと公開鍵をスペース区切りで1行にまとめたものを追加します。

your@mail.address.com <BITWARDEN_SSH_PUBLIC_KEY>

VSCodeの設定

settings.jsonに以下を追加します。

  "terminal.integrated.env.osx": {
    "SSH_AUTH_SOCK": "${env:HOME}/Library/Containers/com.bitwarden.desktop/Data/.bitwarden-ssh-agent.sock"
  },
  "git.terminalGitEditor": true

念の為VSCodeを再起動します。
これでVSCodeのサイドバーにあるソース管理からコミットした場合にもBitWardenが起動して署名ができるようになります。

以上、セキュリティ対策しながら開発していきましょう。