シークレットファイルの同期
age暗号化で機密ファイルを安全に同期する方法。
設定ファイルの中には機密データを含むものがあります — SSHキー、APIトークン、クレデンシャルなど、Gitリポジトリに平文で置くわけにはいかないものです。Dotweaveはsecretモードでこれに対応し、syncディレクトリに保存する前にageで暗号化します。
ageとは?
Section titled “ageとは?”ageはシンプルでモダンなファイル暗号化ツールです。Dotweaveには組み込まれているため、別途インストールする必要はありません。
dotweaveでのageの仕組みは次の通りです:
- Recipientはファイルの暗号化に使う公開鍵(
age1...)です。複数のrecipientを設定でき、異なるマシンで同じファイルを復号できます。 - Identityはプライベートキー(
AGE-SECRET-KEY-...)で、~/.config/dotweave/age-identity.txtに保存されます。pull時のファイル復号に使われます。
重要なポイント:recipient(公開鍵)を持つ人は誰でもデータを暗号化できますが、復号できるのはidentity(プライベートキー)を持つ人だけです。
dotweave initを実行すると、ageのキーペアが自動的に生成されます:
dotweave initプライベートキーは~/.config/dotweave/age-identity.txtに保存され、対応する公開鍵がsyncの設定ファイルにrecipientとして登録されます。
既存のキーを使用する
Section titled “既存のキーを使用する”別のマシンのageキーをすでにお持ちの場合は、init時に指定できます:
# キーを直接渡すdotweave init --key AGE-SECRET-KEY-1ABCDEF...
# dotweaveにプロンプトで入力するdotweave init --promptKeyこうすることで、すべてのマシンが同じidentityを共有し、お互いのシークレットを復号できます。
ファイルをシークレットとしてトラッキングする
Section titled “ファイルをシークレットとしてトラッキングする”機密ファイルのトラッキングには--mode secretを使います:
dotweave track ~/.ssh/config --mode secretdotweave track ~/.aws/credentials --mode secretdotweave track ~/.config/gh/hosts.yml --mode secretpushすると暗号化されて保存されます:
dotweave pushsyncディレクトリ内では、暗号化されたファイルに.ageサフィックスが付きます:
sync-directory/├── default/│ ├── .ssh/│ │ └── config.age│ └── .aws/│ └── credentials.age別のマシンでシークレットをpullする
Section titled “別のマシンでシークレットをpullする”-
新しいマシンで、既存のリポジトリとプライベートキーを使ってdotweaveを初期化します:
dotweave init https://github.com/you/dotfiles.git --key AGE-SECRET-KEY-1ABCDEF... -
ファイルをpullします:
dotweave pullDotweaveがシークレットファイルを自動的に復号し、元のパスに書き込みます。これで完了です!
複数マシン向けにrecipientを追加する
Section titled “複数マシン向けにrecipientを追加する”マシンごとに独自のageキーペアを持つ場合は、recipientを追加してシークレットファイルをすべてのマシン向けに暗号化できます。
# 元のマシンで、新しいデバイスの公開鍵をrecipientとして追加dotweave recipient add age1newdevicepublickey...recipientを追加したら、すべてのrecipient向けに再暗号化するために再度pushします:
dotweave push知っておくべきこと
Section titled “知っておくべきこと”- ファイルの内容は暗号化されますが、ファイル名とパスはsyncディレクトリ内でそのまま見えます。
.age拡張子も暗号化ファイルであることを示します。 - ageのidentity(プライベートキー)はdotweaveでは同期されません。パスワードマネージャー、セキュアコピーなど、信頼できる手段で手動で転送する必要があります。
- プライベートキーを紛失し、他にrecipientが設定されていない場合、暗号化されたファイルは復元できません。必ずバックアップしてください。