---
doc_id: DLV-CK8S-WAVE-007
type: delivery-plan
title: kodex — волна 7, доступ и аккаунты
status: completed
owner_role: EM
created_at: 2026-04-25
updated_at: 2026-05-05
related_issues: [599, 600, 601, 602, 619]
related_prs: []
related_docsets:
  - docs/domains/access-and-accounts/product/requirements.md
  - docs/domains/access-and-accounts/architecture/design.md
  - docs/domains/access-and-accounts/architecture/data_model.md
  - docs/domains/access-and-accounts/architecture/api_contract.md
  - docs/domains/access-and-accounts/delivery/wave7_access_and_accounts.md
approvals:
  required: ["Owner"]
  status: approved
  request_id: "owner-2026-04-26-wave6-4-access-domain"
  approved_by: "ai-da-stas"
  approved_at: 2026-04-26
---

# Волна 7 — доступ, организации, группы и внешние аккаунты

## TL;DR

Волна 7 реализует первый новый сервис-владелец `access-manager`: организации, пользователи, группы, членство, allowlist, внешние аккаунты, вычисление доступа и аудит решений.

Закрывающий checkpoint фиксирует, что согласованный кодовый объём по #599, #600, #601 и #602 выполнен и готов к закрытию в GitHub. По #599 дополнительно закрыт операторский путь чтения `ListMembershipGraph`.

## Входные документы

| Документ | Путь |
|---|---|
| Требования домена | `docs/domains/access-and-accounts/product/requirements.md` |
| Дизайн домена | `docs/domains/access-and-accounts/architecture/design.md` |
| Модель данных | `docs/domains/access-and-accounts/architecture/data_model.md` |
| API-контракт | `docs/domains/access-and-accounts/architecture/api_contract.md` |
| Детальный план реализации | `docs/domains/access-and-accounts/delivery/wave7_access_and_accounts.md` |

## Структура работ

| Направление | Issue | Результат |
|---|---|---|
| Организации и членство | #599 | Модель организаций, групп, пользователей и членства с версиями агрегатов готова; операторское чтение графа членства реализовано через `ListMembershipGraph`. |
| Вход и allowlist | #600, #619 | Создание или связывание пользователя через SSO/OIDC, allowlist, статусы пользователя, организационная область операторских действий и операторский путь чтения готовы. |
| Внешние аккаунты | #601 | Реестр поставщиков и внешних аккаунтов, ссылки на секреты, область применения и разрешённые операции готовы. |
| Вычисление доступа | #602 | Каталог действий, правила доступа, явный запрет, объяснение решения и след аудита готовы. |

## Разбиение на PR-срезы

Волна 7 ведётся не одним крупным PR, а серией малых PR-срезов. Каждый срез должен иметь узкую область изменения, собственные проверки и минимальную документационную синхронизацию.

| Срез | Область | Результат |
|---|---|---|
| 7.1 | PostgreSQL-репозиторий | Полный слой repository для уже согласованных доменных операций без подключения транспорта и новых пользовательских сценариев. |
| 7.2 | gRPC-транспорт | Регистрация `AccessManagerService`, обработчики для реализованных доменных сценариев, преобразование `proto <-> domain`, граница проверки вызывающей стороны, конфигурируемые лимиты, базовые метрики и единая граница ошибок. |
| 7.2.1 | Общий gRPC-контур | Общий `libs/go/grpcserver` для сборки gRPC-сервера, восстановления после panic, лимитов, таймаута выполнения RPC, keepalive-политики, ограничения размера сообщений, базовых метрик и расширяемой проверки вызывающей стороны. |
| 7.3 | Проверка доступа | Полные `CheckAccess`, `ExplainAccess`, аудит решения доступа и тесты пограничных случаев. |
| 7.4 | Вход и операторский жизненный цикл | `BootstrapUserFromIdentity`, путь allowlist, `SetUserStatus`, `DisableAllowlistEntry`, `ListPendingAccess` и тесты сценариев входа. |
| 7.5 | Внешние аккаунты | Жизненный цикл поставщиков и внешних аккаунтов, проверка ссылок на секреты, `ResolveExternalAccountUsage`. |
| 7.6 | Outbox-события | Доставка outbox-событий, идемпотентный каркас для будущих потребителей и сверка AsyncAPI. |
| 7.6.1 | PostgreSQL-журнал событий | Отдельный контур `platform-event-log`, миграции общего журнала, штатный канал публикации из сервисного outbox, веерная доставка для нескольких потребителей, checkpoint API, базовые PostgreSQL-манифесты, секреты времени выполнения и промышленное задание миграций. |
| 7.7.1 | Эксплуатационный контур сервиса | Корреляционные gRPC-метаданные для логов, Dockerfile-стадия миграций, Kubernetes-манифесты, рендер шаблонов выкладки и проверочный путь `access-manager`. |
| 7.8 | Закрытие поставки | Обновление delivery-карт, статусов #599-#602 и явное закрытие или перенос оставшегося бэклога. |

## Закрывающий checkpoint

| Область | Статус | Решение |
|---|---|---|
| #600 — вход пользователя, allowlist и жизненный цикл | выполнено | Закрыть Issue как готовую: доменный слой, PostgreSQL repository, gRPC-обработчики, операторский список pending/blocked и тесты реализованы. |
| #601 — внешние аккаунты и политика использования | выполнено | Закрыть Issue как готовую: поставщики, аккаунты, привязки, ссылки на секреты, разрешение использования, команды жизненного цикла и аудитный след реализованы. |
| #602 — вычисление доступа, явный запрет и аудит | выполнено | Закрыть Issue как готовую: каталог действий, правила доступа, приоритет deny, `CheckAccess`, `ExplainAccess`, аудит решений и outbox-события реализованы. |
| #599 — организации, группы и граф членства | выполнено | Фундамент организаций, групп, membership и транзитивного графа для `CheckAccess` готов. Операторский путь чтения `ListMembershipGraph` реализован в домене и gRPC-сервисе, принимает `CommandMeta.actor` и проверяет право через `CheckAccess`. |

## Инфраструктурный бэклог перед следующим сервисом

Общий gRPC-контур вынесен из `access-manager` в `libs/go/grpcserver` до появления следующего доменного сервиса. В общий пакет входят сборка `grpc.Server`, восстановление после panic, лимиты активных RPC, таймаут выполнения RPC, keepalive-политика, ограничения размера сообщений, базовые метрики и расширяемая проверка вызывающей стороны. Доменные преобразования, обработчики и маппинг ошибок остаются в сервисах.

Временные скрипты сборки и проверки готовности допускаются только как переходный контур одного сервиса. Перед регулярной выкладкой нескольких сервисов их нужно заменить штатным Go-рантаймом сборки, рендера, применения манифестов и проверочных запусков, работающим от `services.yaml`.

## Критерии начала

- Принят пакет доменной документации `access-and-accounts`.
- Создаётся новый сервис и новые каталоги реализации, старый код из `deprecated/**` не переносится как база.
- Все команды изменения проектируются с идемпотентностью и ожидаемой версией агрегата.
- Сырые секреты не проектируются как данные PostgreSQL.

## Критерии завершения

- `access-manager` владеет своим контуром данных, миграций, контрактов и событий.
- `access-manager` имеет промышленные манифесты, отдельное задание миграций, readiness/liveness/metrics и проверочный путь выкладки.
- Другие сервисы могут проверять доступ только через контракт `access-manager`.
- Поставщики внешних аккаунтов, внешние аккаунты и действия доступа имеют отдельные модели, версии и события.
- `provider-hub` использует внешний аккаунт по разрешению `access-manager`, но не владеет его политикой.
- Все административные изменения и критичные решения доступа аудируются.

## Карты Issue

- Доменная карта: `docs/delivery/issue-map/domains/access-and-accounts.md`.
- Волновая карта: `docs/delivery/issue-map/waves/wave-007-access-and-accounts.md`.
