コンテンツにスキップ
Dotweave Dotweave v0.39.7

シークレットファイルの同期

age暗号化で機密ファイルを安全に同期する方法。

設定ファイルの中には機密データを含むものがあります — SSHキー、APIトークン、クレデンシャルなど、Gitリポジトリに平文で置くわけにはいかないものです。Dotweaveはsecretモードでこれに対応し、syncディレクトリに保存する前に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として登録されます。


別のマシンのageキーをすでにお持ちの場合は、init時に指定できます:

# キーを直接渡す
dotweave init --key AGE-SECRET-KEY-1ABCDEF...
# dotweaveにプロンプトで入力する
dotweave init --promptKey

こうすることで、すべてのマシンが同じidentityを共有し、お互いのシークレットを復号できます。


ファイルをシークレットとしてトラッキングする

Section titled “ファイルをシークレットとしてトラッキングする”

機密ファイルのトラッキングには--mode secretを使います:

dotweave track ~/.ssh/config --mode secret
dotweave track ~/.aws/credentials --mode secret
dotweave track ~/.config/gh/hosts.yml --mode secret

pushすると暗号化されて保存されます:

dotweave push

syncディレクトリ内では、暗号化されたファイルに.ageサフィックスが付きます:

sync-directory/
├── default/
│ ├── .ssh/
│ │ └── config.age
│ └── .aws/
│ └── credentials.age

別のマシンでシークレットをpullする

Section titled “別のマシンでシークレットをpullする”
  1. 新しいマシンで、既存のリポジトリとプライベートキーを使ってdotweaveを初期化します:

    dotweave init https://github.com/you/dotfiles.git --key AGE-SECRET-KEY-1ABCDEF...
  2. ファイルをpullします:

    dotweave pull

    Dotweaveがシークレットファイルを自動的に復号し、元のパスに書き込みます。これで完了です!


複数マシン向けにrecipientを追加する

Section titled “複数マシン向けにrecipientを追加する”

マシンごとに独自のageキーペアを持つ場合は、recipientを追加してシークレットファイルをすべてのマシン向けに暗号化できます。

# 元のマシンで、新しいデバイスの公開鍵をrecipientとして追加
dotweave recipient add age1newdevicepublickey...

recipientを追加したら、すべてのrecipient向けに再暗号化するために再度pushします:

dotweave push

  • ファイルの内容は暗号化されますが、ファイル名とパスはsyncディレクトリ内でそのまま見えます。.age拡張子も暗号化ファイルであることを示します。
  • ageのidentity(プライベートキー)はdotweaveでは同期されません。パスワードマネージャー、セキュアコピーなど、信頼できる手段で手動で転送する必要があります。
  • プライベートキーを紛失し、他にrecipientが設定されていない場合、暗号化されたファイルは復元できません。必ずバックアップしてください。