docs: record vault github actions setup
This commit is contained in:
parent
db07f74530
commit
97b03f1232
83
docs/operations/vault-github-actions-2026-06-06.md
Normal file
83
docs/operations/vault-github-actions-2026-06-06.md
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
# Vault + GitHub Actions 配置记录
|
||||||
|
|
||||||
|
记录日期:2026-06-06
|
||||||
|
|
||||||
|
本记录只保留流程、路径和配置原则,不包含任何 token、私钥、证书内容或其他敏感值。
|
||||||
|
|
||||||
|
## 目标
|
||||||
|
|
||||||
|
把 XWorkspace 相关仓库的 GitHub Actions 统一切换到 Vault OIDC 登录,并按仓库隔离读取权限。
|
||||||
|
|
||||||
|
## Vault 侧配置
|
||||||
|
|
||||||
|
- 已启用 `jwt` auth mount
|
||||||
|
- 已信任 GitHub Actions OIDC issuer
|
||||||
|
- `oidc_discovery_url = https://token.actions.githubusercontent.com`
|
||||||
|
- `bound_issuer = https://token.actions.githubusercontent.com`
|
||||||
|
- 已为每个仓库创建独立 policy 和 role
|
||||||
|
- `github-actions-openclaw-multi-session-plugins`
|
||||||
|
- `github-actions-xworkmate-bridge`
|
||||||
|
- `github-actions-xworkmate-app`
|
||||||
|
- `github-actions-xworkspace-core-skills`
|
||||||
|
- 已采用统一 KV 读路径
|
||||||
|
- `kv/data/github-actions/<repo>`
|
||||||
|
|
||||||
|
## 权限模型
|
||||||
|
|
||||||
|
每个 role 仅绑定本仓库对应的 GitHub OIDC 身份:
|
||||||
|
|
||||||
|
- `repository = x-evor/<repo>`
|
||||||
|
- `sub = repo:x-evor/<repo>:*`
|
||||||
|
- `bound_audiences = ["vault"]`
|
||||||
|
|
||||||
|
每个 policy 仅允许读取自己的 KV 路径。
|
||||||
|
|
||||||
|
## GitHub Actions 统一接入方式
|
||||||
|
|
||||||
|
所有接入 Vault 的 workflow 都使用相同模式:
|
||||||
|
|
||||||
|
1. 在 job 中加入 `id-token: write`
|
||||||
|
2. 使用 `hashicorp/vault-action`
|
||||||
|
3. `method = jwt`
|
||||||
|
4. `role = github-actions-<repo>`
|
||||||
|
5. `jwtGithubAudience = vault`
|
||||||
|
6. 从 `kv/data/github-actions/<repo>` 读取对应密钥
|
||||||
|
|
||||||
|
## 已更新的仓库
|
||||||
|
|
||||||
|
### openclaw-multi-session-plugins
|
||||||
|
|
||||||
|
- `publish.yml` 改为通过 Vault 读取 `NPM_TOKEN`
|
||||||
|
- `deploy.yml` 改为通过 Vault 读取 SSH 相关密钥
|
||||||
|
- 仍保留原有发布和安装逻辑
|
||||||
|
|
||||||
|
### xworkmate-bridge
|
||||||
|
|
||||||
|
- `pipeline.yml` 改为通过 Vault 读取:
|
||||||
|
- `INTERNAL_SERVICE_TOKEN`
|
||||||
|
- `GHCR_TOKEN`
|
||||||
|
- `WORKSPACE_REPO_TOKEN`
|
||||||
|
- `SINGLE_NODE_VPS_SSH_PRIVATE_KEY`
|
||||||
|
- `SSH_KNOWN_HOSTS`
|
||||||
|
- 保留原有 `workflow_dispatch` 的手动 token 覆盖路径
|
||||||
|
|
||||||
|
### xworkmate-app
|
||||||
|
|
||||||
|
- `build-and-release.yml` 改为通过 Vault 读取:
|
||||||
|
- `REVIEW_ACCOUNT_LOGIN_PASSWORD`
|
||||||
|
- 各平台签名与打包密钥
|
||||||
|
- 对 `pull_request` 保留仓库归属判断,避免把 Vault 访问扩大到不可信上下文
|
||||||
|
|
||||||
|
### xworkspace-core-skills
|
||||||
|
|
||||||
|
- 当前仓库内未发现 `.github/workflows`,因此没有可改的 GitHub Actions 文件
|
||||||
|
- 相关 Vault role/policy 已预先创建,方便后续新增 workflow 时直接接入
|
||||||
|
|
||||||
|
## 备注
|
||||||
|
|
||||||
|
- 本次未在文档中记录任何敏感值
|
||||||
|
- 若后续新增仓库,只需补:
|
||||||
|
- 一条 policy
|
||||||
|
- 一条 role
|
||||||
|
- 对应的 `kv/data/github-actions/<repo>` 路径
|
||||||
|
- workflow 中的 `vault-action` 接入步骤
|
||||||
Loading…
Reference in New Issue
Block a user