From 731846d7c53221fd5704ab02852896fdc0e74405 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=9F=E6=9C=88?= Date: Wed, 1 Apr 2026 12:48:34 +0800 Subject: [PATCH] docs: add secret management guide (Infisical + secret CLI) --- docs/shared/secret-management.md | 194 +++++++++++++++++++++++++++++++ mkdocs.yml | 1 + 2 files changed, 195 insertions(+) create mode 100644 docs/shared/secret-management.md diff --git a/docs/shared/secret-management.md b/docs/shared/secret-management.md new file mode 100644 index 0000000..a2a9152 --- /dev/null +++ b/docs/shared/secret-management.md @@ -0,0 +1,194 @@ +# ๐Ÿ” Secret ็ฎก็† + +> Infisical + secret CLI โ€” ๅ›ข้˜Ÿ็บง secrets ็ปŸไธ€็ฎก็†ๆ–นๆกˆ + +--- + +## ๆฆ‚่ฟฐ + +ๆˆ‘ไปฌไฝฟ็”จ [Infisical](https://app.infisical.com) ้›†ไธญ็ฎก็†ๅ›ข้˜Ÿ็š„ secrets๏ผˆAPI keysใ€tokensใ€ๅฏ†็ ็ญ‰๏ผ‰๏ผŒ้€š่ฟ‡่‡ช็ ”็š„ `secret` CLI ๅทฅๅ…ทๅœจๆœฌๅœฐไฝฟ็”จ๏ผŒๆ”ฏๆŒ็ผ“ๅญ˜ๅ’ŒๆŒ‰้œ€ๅˆทๆ–ฐใ€‚ + +**ๅŽŸๅˆ™๏ผšๆ‰€ๆœ‰ secrets ็ปŸไธ€็”จ `secret get` ่Žทๅ–๏ผŒไธ็กฌ็ผ–็ ใ€ไธๅœจ่Šๅคฉไธญๆ˜Žๆ–‡ไผ ้€’ใ€‚** + +## ๆžถๆž„ + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ Infisical Cloud โ”‚ +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ mitsein project โ”‚ โ”‚ โ† Mitsein ้กน็›ฎ็š„ .env secrets (83ไธช) +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ openclaw-fleet โ”‚ โ”‚ โ† ๅฐ้˜Ÿ็บง secrets (A2A tokens, ้‚ฎ็ฎฑ็ญ‰) +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ Universal Auth (Machine Identity) + โ–ผ +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ secret CLI (ๆœฌๅœฐ) โ”‚ +โ”‚ ~/.config/openclaw-fleet/ +โ”‚ โ”œโ”€โ”€ config.json โ”‚ โ† Infisical ๅ‡ญ่ฏ +โ”‚ โ””โ”€โ”€ cache.json โ”‚ โ† ๆœฌๅœฐ็ผ“ๅญ˜ (24h TTL, 600ๆƒ้™) +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## ๅฎ‰่ฃ… + +### 1. ๅฎ‰่ฃ… Bun๏ผˆๅฆ‚ๆžœ่ฟ˜ๆฒกๆœ‰๏ผ‰ + +```bash +curl -fsSL https://bun.sh/install | bash +``` + +### 2. Clone ๅทฅๅ…ท + +```bash +cd ~/Code +git clone openclaw-fleet +``` + +### 3. ๅˆ›ๅปบๅ…จๅฑ€ๅ‘ฝไปค + +```bash +mkdir -p ~/.local/bin +cat > ~/.local/bin/secret << 'EOF' +#!/bin/bash +bun run ~/Code/openclaw-fleet/secret.ts "$@" +EOF +chmod +x ~/.local/bin/secret +``` + +็กฎไฟ `~/.local/bin` ๅœจ PATH ไธญใ€‚ + +### 4. ้…็ฝฎๅ‡ญ่ฏ + +ๆ‰พไธปไบบ่ฆไฝ ็š„ Machine Identity ๅ‡ญ่ฏ๏ผŒ็„ถๅŽ๏ผš + +```bash +mkdir -p ~/.config/openclaw-fleet +cat > ~/.config/openclaw-fleet/config.json << EOF +{ + "clientId": "ไฝ ็š„-client-id", + "clientSecret": "ไฝ ็š„-client-secret", + "projectId": "216773ac-d2c9-41ba-9efa-125081ca2d0a", + "env": "dev", + "ttlMs": 86400000 +} +EOF +chmod 600 ~/.config/openclaw-fleet/config.json +``` + +### 5. ้ชŒ่ฏ + +```bash +secret list # ๅบ”่ฏฅๅˆ—ๅ‡บๆ‰€ๆœ‰ keys +secret sync # ๅ…จ้‡ๅŒๆญฅ็ผ“ๅญ˜ +``` + +## ไฝฟ็”จ + +### ๅŸบๆœฌๆ“ไฝœ + +```bash +# ่Žทๅ–๏ผˆๆœ‰็ผ“ๅญ˜่ตฐ็ผ“ๅญ˜๏ผŒ24ๅฐๆ—ถ่ฟ‡ๆœŸ่‡ชๅŠจๅˆทๆ–ฐ๏ผ‰ +secret get AWS_ACCESS_KEY_ID + +# ๅผบๅˆถไปŽ Infisical ๆ‹‰ๆœ€ๆ–ฐ +secret get AWS_ACCESS_KEY_ID --fresh + +# ๅ†™ๅ…ฅ๏ผˆๅŒๆ—ถๆ›ดๆ–ฐ่ฟœ็ซฏๅ’Œๆœฌๅœฐ็ผ“ๅญ˜๏ผ‰ +secret set NEW_KEY "new-value" + +# ๅˆ—ๅ‡บๆ‰€ๆœ‰ keys +secret list + +# ๅˆ—ๅ‡บๅนถๆ˜พ็คบๅ€ผ +secret list --show + +# ๅ…จ้‡ๅˆทๆ–ฐ็ผ“ๅญ˜ +secret sync +``` + +### ๅœจ่„šๆœฌไธญไฝฟ็”จ + +```bash +# ๆ–นๅผไธ€๏ผšๅ‘ฝไปคๆ›ฟๆข +curl -H "Authorization: Bearer $(secret get KUMA_A2A_INBOUND_TOKEN)" https://... + +# ๆ–นๅผไบŒ๏ผšๆณจๅ…ฅ็Žฏๅขƒๅ˜้‡่ฟ่กŒๅ‘ฝไปค +secret exec -- node my-script.js +# my-script.js ๅฏไปฅ็›ดๆŽฅ process.env.AWS_ACCESS_KEY_ID +``` + +### Agent ไฝฟ็”จ็คบไพ‹ + +```bash +# ่Žทๅ– A2A token ๅ‘ๆถˆๆฏ +KUMA_TOKEN=$(secret get KUMA_A2A_INBOUND_TOKEN) +node a2a-send.mjs --token "$KUMA_TOKEN" --message "hello" + +# ่Žทๅ– AWS ๅ‡ญ่ฏ +AWS_KEY=$(secret get AWS_ACCESS_KEY_ID) +AWS_SECRET=$(secret get AWS_SECRET_ACCESS_KEY) + +# ๆ‹‰ Mitsein ้กน็›ฎ็š„ .env +MITSEIN_ID=$(secret get INFISICAL_MITSEIN_CLIENT_ID) +MITSEIN_SECRET=$(secret get INFISICAL_MITSEIN_CLIENT_SECRET) +infisical login --method=universal-auth --client-id="$MITSEIN_ID" --client-secret="$MITSEIN_SECRET" +``` + +## ็ผ“ๅญ˜ๆœบๅˆถ + +- **ไฝ็ฝฎ**๏ผš`~/.config/openclaw-fleet/cache.json` +- **ๆƒ้™**๏ผš600๏ผˆไป…ๆœฌไบบๅฏ่ฏปๅ†™๏ผ‰ +- **TTL**๏ผš้ป˜่ฎค 24 ๅฐๆ—ถ +- **get ๆต็จ‹**๏ผš็ผ“ๅญ˜ๆœ‰ๆ•ˆ โ†’ ็›ดๆŽฅ่ฟ”ๅ›ž๏ผ›็ผ“ๅญ˜่ฟ‡ๆœŸ โ†’ ่‡ชๅŠจไปŽ Infisical ๅˆทๆ–ฐ +- **set ๆต็จ‹**๏ผšๅ…ˆๆ›ดๆ–ฐ Infisical โ†’ ๅ†ๆ›ดๆ–ฐๆœฌๅœฐ็ผ“ๅญ˜ +- **sync**๏ผšๅ…จ้‡ๆ‹‰ๅ–ๆ‰€ๆœ‰ secrets ๅˆฐ็ผ“ๅญ˜ + +## ๅฝ“ๅ‰ Secrets ๆธ…ๅ• + +### openclaw-fleet project + +| Key | ็”จ้€” | +|:----|:-----| +| `SORA_A2A_INBOUND_TOKEN` | SORA ็š„ A2A ๅ…ฅ็ซ™่ฎค่ฏ token | +| `KUMA_A2A_INBOUND_TOKEN` | KUMA ็š„ A2A ๅ…ฅ็ซ™่ฎค่ฏ token | +| `NEKO_A2A_INBOUND_TOKEN` | NEKO ็š„ A2A ๅ…ฅ็ซ™่ฎค่ฏ token | +| `RAKU_A2A_INBOUND_TOKEN` | RAKU ็š„ A2A ๅ…ฅ็ซ™่ฎค่ฏ token | +| `SORA_EMAIL` | ๆ˜Ÿๆœˆ็š„้‚ฎ็ฎฑๅœฐๅ€ | +| `SORA_EMAIL_PASSWORD` | ๆ˜Ÿๆœˆ็š„้‚ฎ็ฎฑๅฏ†็  | +| `EMAIL_IMAP_HOST` | IMAP ๆœๅŠกๅ™จ | +| `EMAIL_SMTP_HOST` | SMTP ๆœๅŠกๅ™จ | +| `AWS_ACCESS_KEY_ID` | AWS IAM | +| `AWS_SECRET_ACCESS_KEY` | AWS IAM | +| `GITEE_TOKEN` | Gitee API token | +| `INFISICAL_MITSEIN_CLIENT_ID` | Mitsein ้กน็›ฎ็š„ Infisical ๅ‡ญ่ฏ | +| `INFISICAL_MITSEIN_CLIENT_SECRET` | Mitsein ้กน็›ฎ็š„ Infisical ๅ‡ญ่ฏ | + +## ๆ–ฐๆˆๅ‘˜ไธŠ็บฟๆต็จ‹ + +1. ไธปไบบๅœจ Infisical ๅˆ›ๅปบ Machine Identity โ†’ ๅ‘ Client ID + Secret +2. ๆ–ฐๆˆๅ‘˜้…็ฝฎ `~/.config/openclaw-fleet/config.json` +3. `secret sync` โ†’ ๆ‰€ๆœ‰ secrets ๅˆฐๆ‰‹ +4. ไธ้œ€่ฆไบ’็›ธ copy .env ๆˆ–ๅœจ่Šๅคฉ้‡Œไผ ๅฏ†็  + +## FAQ + +**Q: ็ผ“ๅญ˜ๆŸๅไบ†ๆ€ŽไนˆๅŠž๏ผŸ** +```bash +rm ~/.config/openclaw-fleet/cache.json +secret sync +``` + +**Q: ๅฆ‚ไฝ•ๅˆ‡ๆข Infisical ็Žฏๅขƒ๏ผŸ** +ไฟฎๆ”น `config.json` ็š„ `env` ๅญ—ๆฎต๏ผˆdev / staging / prod๏ผ‰ใ€‚ + +**Q: Mitsein ้กน็›ฎ็š„ secrets ไนŸ็”จ่ฟ™ไธชๅ‘ฝไปคๅ—๏ผŸ** +Mitsein ็š„ secrets ่ตฐ `dev.ts secrets`๏ผˆไธ“้—จ็š„ไธ€้”ฎๅฏๅŠจ่„šๆœฌ๏ผ‰๏ผŒ็”จ็š„ๆ˜ฏไธๅŒ็š„ Infisical projectใ€‚`secret` CLI ็ฎก็š„ๆ˜ฏๅฐ้˜Ÿ็บง็š„้€š็”จ secretsใ€‚ + +--- + +
+:material-shield-lock:{ .middle } Secret ไธ่ฝๅœฐ๏ผŒๅฎ‰ๅ…จๆœ‰ไฟ้šœ +
diff --git a/mkdocs.yml b/mkdocs.yml index c23deb1..237f141 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -110,6 +110,7 @@ nav: - TTS ่ฏญ้ŸณๅŠŸ่ƒฝ: shared/tts-guide.md - Memex ็Ÿฅ่ฏ†็ฎก็†: shared/memex-knowledge-base.md - Alaya ่ฎฐๅฟ†็ณป็ปŸ่ฎพ่ฎก: shared/alaya-design.md + - Secret ็ฎก็†: shared/secret-management.md - Skill ๆŽจ่: - ้œ€ๆฑ‚ๅˆ†ๆž Skill: shared/skill-requirements-analysis.md - SORA Setup ๆŒ‡ๅ—: shared/sora-setup-guide.md