クレデンシャルボールト
YeePilotの組み込み暗号化ボールトでAPIキー、SSHキー、トークンを安全に保管・管理
YeePilotには、すべての機密クレデンシャル -- APIキー、SSHキー、トークン、パスワード -- を保管するための組み込み暗号化ボールトがあります。ボールトはシークレットを暗号化した状態で保持し、明示的にアンロックした場合にのみ復号します。
使い始める
ボールトの初期化
マスターパスワードでボールトをセットアップします:
yeepilot vault init以下のプロンプトが表示されます:
- アンロック方式の選択(パスワード、PIN、YubiKey、またはYubiKey+PIN)
- マスタークレデンシャルの設定
- クレデンシャルの確認
ボールトが作成され、すぐに使用できます。
ボールトのステータス確認
yeepilot vault statusボールトが初期化済みか、ロック中かアンロック中か、保存されているクレデンシャルの数、設定されたアンロック方式が表示されます。
クレデンシャルの保存
クレデンシャルの追加
yeepilot vault add以下の入力を求められます:
- 名前 -- 説明的なラベル(例:「production-db-password」、「aws-api-key」)
- タイプ -- クレデンシャルの種類(APIキー、SSHキー、パスワード、トークン)
- 値 -- シークレット本体(入力は非表示)
例:
$ yeepilot vault add
Name: digitalocean-api-token
Type: API key
Value: ****
Credential stored successfully.保存されたクレデンシャルの一覧
yeepilot vault list保存されたすべてのクレデンシャルの名前とタイプが、値を表示せずに表示されます:
Credentials in vault:
1. digitalocean-api-token (API key)
2. production-db (password)
3. deploy-server (SSH key)
4. github-pat (token)アンロックとロック
ボールトのアンロック
yeepilot vault unlockマスタークレデンシャルの入力を求められます。アンロックされると、YeePilotセッション内でクレデンシャルが利用可能になります。
セッション内でのアンロックとロック
インタラクティブなYeePilotセッション中は、スラッシュコマンドを使用します:
/unlock # マスターパスワードプロンプトでアンロック
/unlock mypassword # パスワードを直接指定してアンロック(慎重に使用)
/lock # ボールトを即座にロック自動ロック
ボールトは非アクティブ期間後に自動的にロックされ、離席した場合にクレデンシャルを保護します:
vault:
auto_lock_duration: 15m # 非アクティブ15分後にロック(デフォルト)時間の調整または自動ロックの無効化:
vault:
auto_lock_duration: 30m # 30分後にロック
auto_lock_duration: 0 # 自動ロックを無効化(非推奨)アンロック方式
YeePilotはセキュリティ要件に応じた複数のアンロック方式をサポートしています:
パスワード
デフォルトの方式です。vault init 時に強力なマスターパスワードを設定します。
yeepilot vault init
# Choose: password
# Enter password: ********PIN
より高速なアンロックのための数字PIN。開発環境に最適です。
yeepilot vault init
# Choose: PIN
# Enter PIN: ******YubiKey
YubiKeyセキュリティキーを使用したハードウェアベースの認証。物理的にキーを持っていないとボールトをアンロックできないため、最も強力な保護を提供します。
yeepilot vault init
# Choose: YubiKey
# Touch your YubiKey when prompted...YubiKey + PIN
ハードウェア認証とPINを組み合わせた二要素認証。ボールトのアンロックには物理的なYubiKeyと正しいPINの両方が必要です。
yeepilot vault init
# Choose: YubiKey+PIN
# Enter PIN: ******
# Touch your YubiKey when prompted...クレデンシャルの使用
SSH接続
ボールトに保存されたSSHキーを使用してサーバーに接続します:
yeepilot vault connect保存されたSSHキーの一覧から選択できます。YeePilotは選択したキーを使用して接続を確立し、キーをディスクに書き出すことはありません。
AIプロバイダーキー
AIプロバイダーのAPIキーをボールトに保存すると、セッション開始時にYeePilotが自動的に取得するため、設定ファイルにAPIキーを記載しておく必要がなくなります。
セッション内でのアクセス
インタラクティブセッション中、ボールトがアンロックされていれば、クレデンシャルが必要なタスクを依頼した際にAIが保存されたクレデンシャルを参照できます。例えば:
> Deploy the latest release to the production server using the deploy-server SSH keyYeePilotはボールトからSSHキーを取得して接続に使用し、ターミナルやコマンド履歴にキーが露出することはありません。
クレデンシャルのローテーション
定期的な更新が必要なクレデンシャルをローテーションします:
yeepilot vault rotateクレデンシャルの選択と新しい値への置き換えを案内します。古い値は安全に上書きされます。
ブルートフォース保護
ボールトにはアンロック試行のブルートフォース攻撃に対する保護が含まれています:
- 失敗するたびに、次の試行までの遅延が増加
- 15回連続で失敗 すると、すべての保存されたクレデンシャルをオプションでワイプ可能
これにより、誰かがターミナルセッションにアクセスした場合でもシークレットを保護します。
ワイプ動作の設定:
vault:
wipe_after_failed_attempts: 15 # 15回失敗後にワイプ(デフォルト)
wipe_after_failed_attempts: 0 # ワイプを無効化(代わりに永久ロック)警告: ワイプが有効な場合、失敗試行の制限を超えると、保存されたすべてのクレデンシャルが永久に破壊されます。重要なシークレットのバックアップを安全な場所に保管してください。
設定リファレンス
~/.yeepilot/config.yaml の完全なボールト設定:
vault:
enabled: true # クレデンシャルボールトを有効化
start_locked: true # セッション開始時にボールトをロック状態にする(デフォルト:true)
auto_lock_duration: 15m # 非アクティブ後の自動ロック(デフォルト:15m)
wipe_after_failed_attempts: 15 # N回失敗後にワイプ(0で無効)ベストプラクティス
- 強力なマスターパスワードを使用する -- ボールトのセキュリティはアンロッククレデンシャルの強度に依存します
- 自動ロックを有効にする -- 特に共有サーバーや本番サーバーでは常に自動ロックを有効にしてください
- 本番環境にはYubiKeyを推奨 -- ハードウェアベースのアンロックはリモート侵害に対する最強の保護を提供します
- クレデンシャルを定期的にローテーションする --
yeepilot vault rotateを使用してスケジュール通りにシークレットを更新します - バックアップを保持する -- ボールトのワイプ保護は最後の手段です。重要なクレデンシャルの安全なバックアップを常に維持してください
- ロック状態で開始する -- クレデンシャルが明示的な認証なしに利用可能にならないよう
start_locked: trueを維持してください