【セキュリティ #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 に登録
- リポジトリ → Settings → Deploy keys
- 「Add deploy key」をクリック
- 公開鍵(
.pub)の中身を貼り付け - 「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向けです。 業務環境では追加の対策が必要な場合があります。
シリーズ目次
- サンドボックスとは?
- SSH鍵認証入門
- Deploy Key を使う ← 今ここ
- AIエージェントのリスク管理
- tmux でプロセス永続化
- CI/CD セキュリティチェック