helm --set-file ではなく UI から SSH 秘密鍵 + known_hosts / HTTPS トークンを登録可能に。
- git.guiIdentities.enabled(既定 true)。UI に「認証情報」カード(一覧/追加/削除)
- GET/POST/DELETE /api/identities。登録分はセッション NS の Secret
(ラベル identity-source=gui / identity-type)として保存。Helm 管理分と同一覧に統合
- manager.py: resolve_identity / list_identities / create_gui_identity / delete_gui_identity。
build_pod と create_session は Helm 管理 + GUI 登録の両方を解決。
/api/config の identities を {name,type,source} 配列に変更
- rbac.yaml: guiIdentities.enabled 時のみ manager Role に同 NS secrets の CRUD を付与
- 秘密鍵はリクエストボディで manager へ届くため README に経路 TLS 必須を明記
- helm lint / template 検証済み
37 lines
1.9 KiB
Markdown
37 lines
1.9 KiB
Markdown
# CHANGELOG 2.1.263-f — 手動リリース
|
||
|
||
## 追加: GUI からの git identity 登録
|
||
|
||
Web UI の **「認証情報(identity)」カード** から、`helm` を触らずに SSH 秘密鍵 +
|
||
`known_hosts` / HTTPS トークンを登録・削除できるようにした。
|
||
|
||
- `git.guiIdentities.enabled`(既定 `true`)
|
||
- API:
|
||
- `GET /api/identities` … Helm 管理 + GUI 登録の identity 一覧(`{name, type, source}`)
|
||
- `POST /api/identities` … 登録(`{name, type, privateKey, knownHosts}` または
|
||
`{name, type, username, token}`)。`ssh` は `known_hosts` 必須、秘密鍵の簡易検証あり。
|
||
Helm 管理と同名は拒否。既存 GUI 分は置き換え。
|
||
- `DELETE /api/identities/<name>` … 削除(`identity-source=gui` のみ。Helm 管理は不可)
|
||
- 保存先: セッション NS の Secret。ラベル
|
||
`claude-code.cafepieters.com/identity-source: gui|helm` /
|
||
`claude-code.cafepieters.com/identity-type: ssh|https-token` で区別。
|
||
- `build_pod` / セッション作成のバリデーションは Helm 管理と GUI 登録の両方を解決する
|
||
(`resolve_identity` / `list_identities`)。
|
||
- `/api/config` の `identities` は文字列配列 → `{name,type,source}` 配列に変更。UI も追従。
|
||
|
||
## RBAC
|
||
|
||
`git.guiIdentities.enabled: true` のとき、manager Role にセッション NS の
|
||
`secrets` `["get","list","create","update","patch","delete"]` を追加(`false` なら付かない)。
|
||
同 NS には Claude 認証情報 Secret も存在するため、不要なら無効化を推奨。
|
||
|
||
## セキュリティ注意
|
||
|
||
秘密鍵はブラウザ → gateway → manager をリクエストボディで通る。経路の TLS
|
||
(Ingress の `tls` / LB の TLS 終端)を有効にすること。README「git — 接続先と認証
|
||
アイデンティティ」に明記。
|
||
|
||
## バージョン
|
||
|
||
`version` = `2.1.263-f` / `appVersion` = `"2.1.263"`。
|