Перейти к основному содержимому

Группы и схема атрибутов

Актуально для: SimpleTwo 0.9.x, identity 0.2 · Проверено: 24.09.2026

Группы, адресные книги, почтовые алиасы и схема атрибутов живут в отдельной серверной роли identity — своя база в Postgres, свой хост. Консоль платформы показывает одну карточку Identity (Настройки → Identity): состояние роли и две таблицы — группы и атрибуты. Всё, что вы там сохраняете, идёт через координатор: право на изменение решается там же, где роли администраторов, а отказ identity показывается дословно, как identity его сформулировала.

Когда карточка пустая

«no identity host yet» — хост роли не зачислен. Зачисление как у календаря: Servers → роль identity, обязателен приватный адрес (нога к Postgres), публичное имя необязательно. База simpletwo_id создаётся ролью postgres автоматически; после появления хоста один раз передеплойте postgres, чтобы правило доступа pg_hba сузилось до адреса нового хоста.

Виды групп

kindкто владеет членствомзачем
syncedпоставщик идентификации (ADFS/AD) — пишется при каждом входе, только чтениероли, шлюзы, область каталога
unitправило по атрибутам: компания, отдел, площадка@dept, календарь отдела, аудитория правил
managedсписок из консоли или правилодежурные, ревьюеры, участники проекта
resourceправило entity: resourceпереговорки в пикере бронирования
publishedсписок; видимость federated заложена, включается фазой федерации«наши контакты в X»
personalсам человек; видит только онизбранное, «моя команда»
systemплатформа; не удаляетсяролевые группы

Kind нельзя сменить после создания: группа другого вида — это другая группа.

Правило динамической группы

rule — словарь «ключ: значение», все пары должны совпасть. Ключи — то, что учётная запись действительно несёт: атрибуты из схемы плюс user, display_name, is_guest, entity. entity принимает person, service, resource, список через запятую, !resource («все, кроме переговорок») или any.

Ключ, которого никто не несёт, отклоняется при сохранении с именем ключа и списком существующих. Это не придирка: 08.09.2026 правило приветствия сузили на is_room: false — такой переменной не было, правило перестало совпадать с кем бы то ни было и десять дней молча никого не приветствовало, оставаясь включённым в консоли.

Кто может обращаться к группе

writers — кто вправе упомянуть группу, написать на её адрес, позвонить в неё: user:<имя>, role:<имя>, group:<id>. Пусто — все, кто группу видит. Потолка на охват нет: @sales на четыре тысячи человек — это четыре тысячи уведомлений, и контроль здесь — кто может, а не сколько задело. owners могут править состав, writers и join без прав администратора. address делает группу списком рассылки — любого вида, включая динамические.

Схема атрибутов

Каждый атрибут — одно определение: kind (text, number, date, birthday, phone, address, url, choice, multichoice, user, bool), source — ровно один писатель (self, admin, claim, ldap, hrms, scim), visibility (everyone, unit, managers, admins, self), поиск, обязательность, список значений для choice, pattern. Имена для LDAP и SCIM подставляются сами с нашим префиксом (x-simpletwo-…, …:extension:simpletwo:2.0:User:…), если вы не указали стандартные.

Что схема отказывает, чтобы остаться схемой:

  • смену kind — расширение text до choice молча обесценило бы все сохранённые значения; отзовите определение и заведите новый ключ;
  • удаление choice, которое может быть в значениях;
  • удаление определения — только Retire: значения остаются читаемыми администраторам, ключ зарезервирован, Restore возвращает;
  • вычисляемые атрибуты («ФИО из двух полей») — хранимая производная протухает без предупреждения.

Определение, добавленное здесь, тут же годится ключом в правилах групп и автоматизаций.

Адресные книги

Личные книги хранятся на сервере ради синхронизации между устройствами, но в консоли не показываются и через координатор не читаются — маршрута к чужой личной книге нет ни у кого. Книга организации (owner = org) — общая: внешние партнёры, поставщики, горячие линии; её правит администратор.

Что показывает состояние

v0.2.0 · http://10.40.0.7:8086 · https://id.example.com — версия роли, приватный адрес, по которому её набирает координатор, и публичное имя, если оно есть. unreachable — хост зачислен, но не отвечает: смотрите журнал роли на хосте (journalctl -u simpletwo-identity) — обычно это ID_DB_DSN, до которого не пускает pg_hba.