|
1 | | -# SOPS セットアップ |
| 1 | +# SOPS ガイド |
2 | 2 |
|
3 | | -環境変数を暗号化して Git に安全にコミットする。 |
| 3 | +環境変数を [age](https://github.com/FiloSottile/age) で暗号化し、Git に安全にコミットする仕組み。 |
4 | 4 |
|
5 | | -## 初回セットアップ |
| 5 | +## 初回セットアップ (自分の鍵を作る) |
| 6 | + |
| 7 | +### age 鍵を生成 |
6 | 8 |
|
7 | 9 | ```bash |
8 | | -# 1. 鍵を作成(公開鍵が表示される → コピー) |
9 | 10 | age-keygen -o .age-key |
| 11 | +# Public key: age1xxxx... ← この公開鍵をコピー |
| 12 | +``` |
| 13 | + |
| 14 | +`.age-key` は `.gitignore` 済み。ローカル復号に使う。 |
| 15 | + |
| 16 | +### SSH 鍵を使う場合 |
10 | 17 |
|
11 | | -# 2. .sops.yaml に公開鍵を追加してコミット |
| 18 | +age 鍵の代わりに既存の SSH 鍵 (Ed25519/RSA) も使える。 |
| 19 | + |
| 20 | +```bash |
| 21 | +# SSH 公開鍵から age 公開鍵を導出 |
| 22 | +age-keygen -y /path/to/ssh/id_ed25519 |
| 23 | +# age1xxxx... |
12 | 24 | ``` |
13 | 25 |
|
14 | | -## 環境変数ファイルを作成 |
| 26 | +復号時は `SOPS_AGE_KEY_FILE` の代わりに ssh-agent が使われる。 |
| 27 | +`.sops.yaml` には導出した age 公開鍵を登録する (手順は同じ)。 |
| 28 | + |
| 29 | +## 公開鍵を `.sops.yaml` に追加 |
| 30 | + |
| 31 | +```yaml |
| 32 | +_: |
| 33 | + age-public-keys: |
| 34 | + - &deploy age15uc7fh... # サーバー |
| 35 | + - &your-name age1xxxx... # ← 追加 |
| 36 | + |
| 37 | +creation_rules: |
| 38 | + - path_regex: bots/my-bot/* |
| 39 | + age: |
| 40 | + - *deploy |
| 41 | + - *your-name # ← 復号できる人を列挙 |
| 42 | +``` |
| 43 | + |
| 44 | +変更をコミット・プッシュしたら、既存の暗号化ファイルにリキーが必要 (後述)。 |
| 45 | + |
| 46 | +## 暗号化ファイルを作成 |
15 | 47 |
|
16 | 48 | ```bash |
17 | 49 | sops bots/my-bot/sops.env |
18 | 50 | ``` |
19 | 51 |
|
20 | | -エディタで環境変数を書いて保存。 |
| 52 | +エディタが開くので `KEY=VALUE` 形式で書いて保存。自動で暗号化される。 |
| 53 | + |
| 54 | +## 暗号化ファイルを編集 |
| 55 | + |
| 56 | +```bash |
| 57 | +sops bots/my-bot/sops.env |
| 58 | +``` |
| 59 | + |
| 60 | +作成と同じコマンド。既存ファイルならエディタで復号された状態が開き、保存時に再暗号化される。 |
21 | 61 |
|
22 | 62 | ## Bot で使う |
23 | 63 |
|
24 | | -`run.sh`: |
| 64 | +`run.sh` で `sops exec-env` を使う: |
25 | 65 |
|
26 | 66 | ```bash |
27 | 67 | #!/bin/bash |
28 | 68 | sops exec-env sops.env 'bun run index.ts' |
29 | 69 | ``` |
30 | 70 |
|
31 | | -## その他のコマンド |
| 71 | +環境変数として復号された値がプロセスに渡される。ファイルに平文は残らない。 |
| 72 | + |
| 73 | +## リキー (鍵の追加・削除を既存ファイルに反映) |
| 74 | + |
| 75 | +`.sops.yaml` を変更しただけでは既存ファイルには反映されない。`updatekeys` で反映する: |
| 76 | + |
| 77 | +```bash |
| 78 | +sops updatekeys bots/my-bot/sops.env |
| 79 | +``` |
| 80 | + |
| 81 | +変更された `sops.env` をコミットする。 |
| 82 | + |
| 83 | +## よく使うコマンド |
32 | 84 |
|
33 | 85 | ```bash |
34 | | -sops -d sops.env # 復号して表示 |
35 | | -sops updatekeys sops.env # .sops.yaml の変更を反映 |
36 | | -age-keygen -y .age-key # 公開鍵を表示 |
| 86 | +sops bots/my-bot/sops.env # 作成 or 編集 |
| 87 | +sops -d bots/my-bot/sops.env # 復号して stdout に表示 |
| 88 | +sops updatekeys bots/my-bot/sops.env # .sops.yaml の変更を反映 |
| 89 | +age-keygen -y .age-key # 自分の公開鍵を表示 |
37 | 90 | ``` |
0 commit comments