📖 5分で読める

【セキュリティ #3】Deploy Key とは?— リポジトリ限定の安全な鍵


⚠️ 注意 この記事は個人の学習記録です。筆者はセキュリティの専門家ではありません。 本番環境や機密性の高いシステムでは、必ず専門家に相談してください。

本記事の内容を参考にした結果について、筆者は一切の責任を負いません。


背景

このブログ(7sapiens-blog)をVPSからGitHubにpushしたい。

でも、VPSにはAIアシスタント「スピカ」が動いていて、普段使いのSSH鍵を置くのはちょっと不安…。

「万が一、鍵が漏れたら全リポジトリにアクセスされちゃう?」

そこで教えてもらったのが Deploy Key。1つのリポジトリ専用の鍵で、被害を最小限に抑えられるらしい。

実際に設定してみたので、仕組みをまとめます。


この記事で学べること

  • Deploy Key とは何か
  • 通常のSSH鍵との違い
  • なぜ Deploy Key が安全なのか
  • 設定方法

通常のSSH鍵の問題

前回、SSH鍵認証を学びました。でも1つ問題があります。

graph TD
  A[あなたのSSH鍵] --> B[GitHub アカウント]
  B --> C[リポジトリ A]
  B --> D[リポジトリ B]
  B --> E[リポジトリ C]
  B --> F[...全リポジトリ]
  
  style A fill:#ffcccc
  style F fill:#ffcccc

問題点

SSH鍵が漏洩 → 全リポジトリにアクセス可能 💀

Deploy Key とは

1つのリポジトリ専用の鍵

graph TD
  A[Deploy Key A] --> B[リポジトリ A のみ]
  C[Deploy Key B] --> D[リポジトリ B のみ]
  
  style B fill:#d4edda
  style D fill:#d4edda

比較

項目アカウントSSH鍵Deploy Key
範囲全リポジトリ1リポジトリ
漏洩時の影響全滅 💀1つだけ
用途個人開発サーバー、CI/CD
設定場所アカウント設定リポジトリ設定

使いどころ

Deploy Key が適切なケース

✅ VPS からの git pull / push
✅ CI/CD パイプライン
✅ 自動デプロイスクリプト
✅ AIエージェント(スピカ!)

通常のSSH鍵が適切なケース

✅ 個人PC からの開発
✅ 複数リポジトリを頻繁に操作

設定方法

1. 専用の鍵を生成

ssh-keygen -t ed25519 -C "deploy-key-for-myrepo" -f ~/.ssh/myrepo-deploy

2. GitHub に登録

  1. リポジトリ → Settings → Deploy keys
  2. 「Add deploy key」をクリック
  3. 公開鍵(.pub)の中身を貼り付け
  4. 「Allow write access」にチェック(push する場合)

3. 使用時に鍵を指定

GIT_SSH_COMMAND="ssh -i ~/.ssh/myrepo-deploy -o IdentitiesOnly=yes" git push

セキュリティのポイント

graph LR
  subgraph 最小権限の原則
      A[必要な権限だけ] --> B[被害を最小化]
  end

なぜ安全?

1. 1リポジトリしかアクセスできない
2. 漏洩しても他のリポジトリは無事
3. 簡単に無効化・再発行できる

まとめ

ポイント説明
範囲限定1リポジトリ専用
被害最小化漏洩時の影響を限定
サーバー向けVPS、CI/CD に最適

私もブログのpushにDeploy Keyを使っています。安心!


💡 この記事は個人VPS向けです。 業務環境では追加の対策が必要な場合があります。


シリーズ目次

  1. サンドボックスとは?
  2. SSH鍵認証入門
  3. Deploy Key を使う ← 今ここ
  4. AIエージェントのリスク管理
  5. tmux でプロセス永続化
  6. CI/CD セキュリティチェック