Amulet からの移行ガイド
このページでは、シークレットを安全にエクスポートし、プロジェクトやマシンから Amulet を削除する手順を解説します。
Locked モードに関する注意: Locked モードの vault は、それを seal したマシン上でのみ復号できます。エクスポートする前にマシンを初期化したり OS を変更したりすると、シークレットは永久に復旧できなくなります。必ず先にエクスポートを行い、その後にクリーンアップを行ってください。
ステップ 1 — シークレットのエクスポート
vault に保存されている全キー名をリストアップし、一つずつ unseal します。
amulet list --file secrets.vault個別に unseal して値を表示する:
amulet unseal --tty MY_KEY --file secrets.vault一括エクスポート(シェルスクリプト)
以下のスクリプトは、全キーを KEY=value 形式で平文ファイルに書き出します。このファイルは「生の秘密情報」そのものですので、権限を制限し、作業が終わったら必ず削除してください。
VAULT=secrets.vault
OUTPUT=exported-secrets.env
# シークレットを書き込む前に、権限を制限した空ファイルを作成する
install -m 0600 /dev/null "$OUTPUT"
printf "Enter vault passphrase: "
read -rs PASSPHRASE
echo
while IFS= read -r KEY; do
VALUE=$(printf '%s\n' "$PASSPHRASE" | amulet unseal "$KEY" --file "$VAULT")
printf '%s=%s\n' "$KEY" "$VALUE" >> "$OUTPUT"
done < <(amulet list --file "$VAULT")
echo "Exported to $OUTPUT"Windows (PowerShell) では、上記のスクリプトは動作しません。各キーを個別に unseal して必要な場所に貼り付けてください。
ステップ 2 — 新しい移行先への登録
エクスポートしたシークレットを、Amulet の代わりとなる場所に登録します。
| 移行先 | 手順 |
|---|---|
.env ファイル |
exported-secrets.env の KEY=value 行を直接コピー。.env を .gitignore に追加するのを忘れずに。 |
| パスワードマネージャー (1Password, Bitwarden 等) | シークレットごとに新しいアイテムを作成し、値を貼り付ける。 |
| CI シークレット (GitHub Actions, GitLab CI 等) | プラットフォームの設定画面または CLI から各キーを追加する。 |
| クラウドのシークレットマネージャー (AWS, GCP, HashiCorp Vault 等) | プロバイダーの CLI や SDK を使い、エクスポートした値からエントリを作成する。 |
| 別のマシンの Amulet | 新しいマシンで再度 seal する (`echo -n " |
コードの更新
コードベースから amulet unseal を呼び出している箇所を検索し、新しい移行先の仕組み(.env からの読み込み、SDK の呼び出し等)に書き換えます。
grep -r "amulet" .ステップ 3 — クリーンアップ
vault ファイルを削除する:
rm secrets.vaultvault ファイルを git にコミットしていた場合は、履歴からも削除してください。暗号化されてはいますが、残しておく理由はありません。
git rm secrets.vault
git commit -m "remove amulet vault"バイナリを削除する:
# Linux / macOS (/usr/local/bin にインストールした場合)
sudo rm /usr/local/bin/amulet
# 他の場所にインストールした場合は確認:
which amuletWindows では、amulet.exe を配置した場所から削除してください。Amulet のためだけに PATH に追加したディレクトリがあれば、それも削除します。
エクスポートした平文ファイルを削除する(ステップ 1 で作成した場合):
rm exported-secrets.envチェックリスト
- すべてのシークレットがエクスポートされ、
amulet listの出力と一致している - エクスポートした値が新しい移行先に登録された
- コードが更新され、
amulet unsealの呼び出しが残っていない -
secrets.vaultが削除された(git にあれば履歴からも削除済み) -
amuletバイナリが削除された - エクスポートに使った平文ファイルが削除された