docs: define secret store and auth profile plan
This commit is contained in:
+54
-8
@@ -40,6 +40,8 @@
|
||||
|
||||
Минимальный набор workspace-scoped сущностей:
|
||||
|
||||
- `Secret`
|
||||
- `SecretVersion`
|
||||
- `Operation`
|
||||
- `OperationVersion`
|
||||
- `AuthProfile`
|
||||
@@ -143,7 +145,40 @@
|
||||
- `tool_description_override`
|
||||
- `enabled`
|
||||
|
||||
### 3.6. `AuthProfile`
|
||||
### 3.6. `Secret`
|
||||
|
||||
Секрет для доступа к внешней системе.
|
||||
|
||||
Поля:
|
||||
|
||||
- `id`
|
||||
- `workspace_id`
|
||||
- `name`
|
||||
- `kind`
|
||||
- `status`
|
||||
- `current_version`
|
||||
- `created_at`
|
||||
- `updated_at`
|
||||
|
||||
Значение:
|
||||
|
||||
- plaintext не возвращается в list/get endpoints;
|
||||
- текущее значение хранится в зашифрованном виде через `SecretVersion`;
|
||||
- rotate создает новую версию секрета без потери ссылочной целостности.
|
||||
|
||||
### 3.7. `SecretVersion`
|
||||
|
||||
Зашифрованное значение секрета.
|
||||
|
||||
Поля:
|
||||
|
||||
- `secret_id`
|
||||
- `version`
|
||||
- `ciphertext`
|
||||
- `key_version`
|
||||
- `created_at`
|
||||
|
||||
### 3.8. `AuthProfile`
|
||||
|
||||
Используется только для доступа к внешним системам.
|
||||
|
||||
@@ -155,7 +190,13 @@
|
||||
- `kind`
|
||||
- `config`
|
||||
|
||||
### 3.7. `PlatformApiKey`
|
||||
Принцип:
|
||||
|
||||
- `AuthProfile` не хранит plaintext;
|
||||
- config ссылается на `secret_id` или пару `secret_id`, если auth-схема составная;
|
||||
- runtime применяет profile к запросу только в момент вызова upstream.
|
||||
|
||||
### 3.9. `PlatformApiKey`
|
||||
|
||||
Отдельная сущность для доступа к самой платформе.
|
||||
|
||||
@@ -175,7 +216,7 @@
|
||||
- полный secret показывается только один раз при создании;
|
||||
- в persistent storage сохраняется только `secret_hash`.
|
||||
|
||||
### 3.8. `User`
|
||||
### 3.10. `User`
|
||||
|
||||
Поля:
|
||||
|
||||
@@ -192,7 +233,7 @@
|
||||
- plaintext пароль не сохраняется;
|
||||
- верификация использует `password_pepper` из env.
|
||||
|
||||
### 3.9. `UserSession`
|
||||
### 3.11. `UserSession`
|
||||
|
||||
Поля:
|
||||
|
||||
@@ -210,7 +251,7 @@
|
||||
- в persistent storage сохраняется только `secret_hash`;
|
||||
- подпись и верификация используют `session_secret` из env.
|
||||
|
||||
### 3.10. `Membership`
|
||||
### 3.12. `Membership`
|
||||
|
||||
Поля:
|
||||
|
||||
@@ -219,7 +260,7 @@
|
||||
- `role`
|
||||
- `created_at`
|
||||
|
||||
### 3.11. `InvitationToken`
|
||||
### 3.13. `InvitationToken`
|
||||
|
||||
Поля:
|
||||
|
||||
@@ -236,7 +277,7 @@
|
||||
- полный invite token показывается только один раз при создании;
|
||||
- в persistent storage сохраняется только `token_hash`.
|
||||
|
||||
### 3.12. `InvocationLog`
|
||||
### 3.14. `InvocationLog`
|
||||
|
||||
Продуктовая запись о вызове tool.
|
||||
|
||||
@@ -255,7 +296,7 @@
|
||||
- `response_preview`
|
||||
- `created_at`
|
||||
|
||||
### 3.13. `UsageRollup`
|
||||
### 3.15. `UsageRollup`
|
||||
|
||||
Агрегированная статистика по периоду.
|
||||
|
||||
@@ -321,6 +362,11 @@
|
||||
|
||||
Если UI требует сущность, которой нет в текущем backend, эта сущность должна быть сначала явно добавлена в эту модель данных, а уже потом в код и БД.
|
||||
|
||||
Для upstream credentials это означает:
|
||||
|
||||
- placeholder-строки вида `${secrets.API_KEY}` не считаются реальной моделью данных;
|
||||
- рабочая продуктовая модель строится только через `Secret` + `AuthProfile`.
|
||||
|
||||
Для `Operations` и `Wizard` дополнительный уровень контрактной детализации закреплен в:
|
||||
|
||||
- `docs/operations-workspace-contracts.md`
|
||||
|
||||
Reference in New Issue
Block a user