クラウド同期
プレビュー版。クラウド同期はオプション機能で、まだプレビュー版です。
keygrant のそれ以外の機能はすべてクラウド同期なしで動作し、
keygrant push を実行するまでは何もアップロードされません。値をどのように保護するか
- 値は、パスワードと 128 ビットの Secret Key から導出された鍵を使って、お使いのデバイス上で暗号化されます。サーバーが保存するのは暗号文だけで、サーバーはそれを復号できません。
- シークレットの名前は、確認・監査できるよう平文で保存されます。値と説明は平文では保存されません。
- 新しいデバイスは、両方の画面でフィンガープリントを照合した後にのみ参加できます。そのため、サーバーが独自のデバイスを紛れ込ませることはできません。
- パスワードと Secret Key の両方を失うと、データは誰にも復元できなくなります。私たちも例外ではありません。
最初のデバイスをセットアップする
uv tool install 'keygrant[cloud]' # 暗号ライブラリの依存関係(PyNaCl)を追加します
keygrant cloud init # パスワードを決めると、緊急キットが表示されます
cloud init は、緊急キット(Account ID と Secret Key)を表示します。これを書き留め、オフラインで保管してください。同期されるメモアプリではなく、紙に書いて保管します。緊急キットとパスワードがあれば、すべてのデバイスを失っても復旧できます。後から keygrant cloud kit で再表示することもできます。
シークレットをアップロードする
push するまで、何もマシンの外には出ません。
keygrant push STRIPE_KEY OPENAI_KEY # これらをアップロード
日々の使い方
echo "sk-..." | keygrant set STRIPE_KEY && keygrant push STRIPE_KEY # 追加または変更
keygrant push --delete STRIPE_KEY # すべての場所から削除
keygrant sync # 今すぐ pull
keygrant cloud status # アカウント、デバイス、同期状態
keygrant list と keygrant exec は、最大で 1 分に 1 回、自動的に変更を pull します。オフラインのときは何も表示せずにスキップするため、sync が必要になることはほとんどありません。
競合
- 2 台のデバイスが同じシークレットを変更した場合、後から行った
pushは、syncするまで拒否されます。自動的にマージされることはありません。 - まだ push していないローカルの変更が、
syncによって上書きされることは決してありません。 - 同期済みのシークレットと同じ名前のローカル専用シークレットは、警告が表示されたうえで、そのまま残されます。
デバイスを追加する
2 台目のマシンは、既存のデバイスからペアリングすることで追加できます。手元に既存のデバイスがない場合は、緊急キットだけで追加することもできます。
利用をやめる
keygrant cloud delete
これにより、アカウント、すべての暗号文、ペアリング済みのすべてのデバイスが完全に削除されます。シークレットは各マシンにローカル専用のエントリとして残り、引き続き動作します。確認のため、Account ID の入力を求められます。