Skip to content

Идентификация

Материал проходит ревью.

НовичокФундамент ~38 мин

Границы темы

Scope: как система различает субъекты в своём контексте, когда требуется identity proofing, как создаётся account и как identity меняется со временем.

Не рассматриваем: алгоритмы OCR, face matching, конкретный KYC vendor и детали authentication protocols. Установить identity и доказать контроль authenticator при входе — разные процессы.

Что нужно знать заранее

Нужно понимать, что привилегии выдаются identity, а не строке из request body. «Принцип наименьших привилегий» задаёт требования к будущим правам account.

Результаты обучения

После статьи читатель сможет:

  1. отделить identifier от набора attributes и реального человека;
  2. определить, нужен ли identity proofing конкретной операции;
  3. проследить resolution, validation, verification и enrollment;
  4. выбрать стабильный внутренний identifier;
  5. спроектировать изменения и закрытие account без потери referential integrity.

Основная модель

Идентификация отвечает на вопрос: какую identity система считает отдельным субъектом в данном контексте? Это ещё не доказательство, что текущий actor контролирует эту identity.

Диаграмма

NIST SP 800-63-4 разделяет identity proofing, enrollment, authentication и federation. Успешный proofing приводит к subscriber account; authenticator затем привязывается к account и используется в другом процессе — authentication.

Основные термины

ТерминРабочее определениеПример
IdentifierЗначение, однозначно связанное с entity в заданном контекстеusr_01J... внутри сервиса
AttributeХарактеристика identityEmail, возрастная категория, tenant membership
Claimed identityЕщё не проверенное заявление субъекта о себе«Я владелец account X»
Identity evidenceДанные или документ в поддержку claimed identityДокумент, подписанное цифровое evidence
ResolutionВыделение одного субъекта среди обслуживаемой популяцииНайти, что applicant не является duplicate
ValidationПроверка подлинности, точности и допустимости evidence/attributesПодтвердить issuing source и срок действия
VerificationПроверка, что applicant является владельцем evidenceСопоставление с защищённой процедурой
EnrollmentСоздание subscriber account и binding authenticatorЗарегистрировать passkey после proofing

Не каждому сервису нужен proofing реального человека

Степень identification следует из риска операции.

Сервис или операцияДостаточная identityПочему
Читать публичную документациюAnonymous sessionНет персонального права или существенного риска
Сохранить настройки темыPseudonymous accountНужна continuity, но не паспортное имя
Работать в корпоративном tenantWorkforce identity от доверенного IdPВажны employment и membership attributes
Получить регулируемую финансовую услугуIdentity с требуемым assuranceОшибка связывания создаёт финансовый и regulatory impact
Восстановить критичный accountРанее установленные recovery bindingsНовый proofing может потребоваться по risk policy

End-to-end сценарий

Рассмотрим B2B-сервис, где приглашённый сотрудник получает доступ к tenant.

Диаграмма

Здесь есть несколько identifiers:

  • email используется как адрес доставки и заявленный matching attribute;
  • invitation ID однозначно обозначает приглашение;
  • IdP subject ID стабильно обозначает identity у provider;
  • внутренний user ID обозначает account внутри backend;
  • tenant membership — отдельная связь, а не свойство email.

Что происходит под капотом

Внутренний identifier

Хороший primary identifier:

  • стабилен при смене имени, email и login method;
  • уникален в явно заданном namespace;
  • не переиспользуется для другого субъекта;
  • не содержит лишних PII;
  • не даёт внешнему клиенту права только потому, что его можно угадать.

UUID/ULID может решить uniqueness и opacity, но authorization всё равно обязана проверять resource и tenant.

External identity binding

Не связывайте federation account только по email. Практичная связь содержит:

text
issuer + subject -> internal_user_id

subject уникален в namespace конкретного issuer. Одинаковая строка subject от другого issuer не обязана обозначать того же человека.

Account не равен человеку

Один человек может иметь несколько accounts, а service account вообще не является человеком. Модель должна явно отвечать:

  • допускаются ли несколько accounts на субъекта;
  • можно ли связать identities разных providers;
  • кто подтверждает merge и как его откатить;
  • что происходит с history после закрытия account;
  • какие records обязаны сохраняться по бизнес- или legal policy.

Минимальный воспроизводимый пример

Спроектируйте identity record без использования email как primary key:

yaml
user_id: usr_01K0Y6M8N4
status: active
display_name: Анна
contacts:
  - type: email
    value: anna@example.com
    verified_at: 2026-07-31T10:00:00Z
external_identities:
  - issuer: https://idp.example.com
    subject: 00u7abc123
authenticators:
  - id: authn_01K0Y7
    type: passkey
    added_at: 2026-07-31T10:03:00Z
memberships:
  - tenant_id: tenant_42
    status: active
retention:
  contact_delete_after: null

Ожидаемый результат

  • Смена email не меняет user_id и ссылки заказов.
  • Federation binding использует пару issuer/subject.
  • Tenant membership можно отозвать, не удаляя всю identity.
  • Authenticator имеет собственный lifecycle.
  • PII отделены от стабильного ключа и могут иметь retention policy.

Проверки жизненного цикла

СобытиеОжидаемое поведение
Пользователь меняет emailНовый контакт подтверждается; user_id неизменен
IdP повторно выдаёт тот же email другому subjectАвтоматического merge нет
Удалено tenant membershipНет доступа к tenant, но account может существовать
Потерян authenticatorRecovery не меняет identity без отдельного основания
Account закрытLogin запрещён; retention и anonymization выполняются по policy

Enumeration и privacy

Identification endpoints часто раскрывают существование account:

text
"Пользователь найден" vs "Такого email нет"

Для recovery и регистрации выбирайте response по threat model:

  • одинаковая внешняя формулировка и близкий timing снижают enumeration;
  • внутренний audit всё равно различает причины;
  • rate limit ограничивает массовый перебор;
  • support flow не должен раскрывать attributes до достаточной проверки;
  • masking не превращает PII в нечувствительные данные.

Полностью одинаковый timing трудно гарантировать, поэтому защита должна быть эшелонированной, а не опираться на одну строку ответа.

Trade-offs

РешениеВыигрышЦена или риск
Pseudonymous accountМеньше PII и frictionНиже уверенность в real-world identity
Строгий proofingВыше identity assuranceОшибки отказа, стоимость, accessibility и privacy impact
Email как login aliasУдобно пользователюИзменяемость, enumeration, account recovery risk
Несколько external identitiesResilience и удобствоРиск ошибочного linking/merge
Stable opaque IDНезависимость от attributesНужны отдельные индексы поиска и mapping

Failure modes и типичные ошибки

  1. Email как primary key. Смена контакта ломает связи и audit.
  2. Identification равна authentication. Найденный account не доказывает контроль actor над authenticator.
  3. Proofing везде. Сервис собирает sensitive evidence без необходимости.
  4. Автоматический merge по email. Разные issuers и повторное использование адреса связывают чужие accounts.
  5. Identifiers как authorization. Непредсказуемый ID не заменяет permission check.
  6. Нет lifecycle. Rename, duplicate, merge, recovery и deletion решаются вручную и непоследовательно.
  7. Account deletion стирает audit без модели. Referential и regulatory требования конфликтуют с privacy, если не спроектированы заранее.

Практическое задание

Задача: нарисуйте identity lifecycle для одного продукта.

Укажите:

  1. population и namespace identifiers;
  2. нужен ли real-world proofing и почему;
  3. claimed, validated и derived attributes;
  4. внутренний ID и external bindings;
  5. enrollment authenticators;
  6. rename, duplicate, merge, recovery и deletion;
  7. PII retention и enumeration controls.

Критерии готовности: ни один изменяемый attribute не используется как вечный primary key; linking имеет проверяемое основание и rollback; объём proofing соразмерен риску.

Подсказка

Проверьте модель на двух людях с одинаковым именем, смене email, повторном использовании номера телефона и двух IdP с одинаковым subject.

Проверка знаний

ИНТЕРАКТИВНАЯ ПРОВЕРКА

Проверка знаний

0 / 4
01Почему email не следует использовать как вечный primary key пользователя?
02Какие действия относятся к identity proofing?
03Любой пользовательский аккаунт обязан быть связан с паспортной личностью.
04Восстановите упрощённый путь identity proofing и enrollment.
  1. Создать subscriber account и привязать authenticator
  2. Получить заявленную identity и attributes
  3. Проверить принадлежность evidence заявителю
  4. Проверить evidence и attributes
Проверено: 0 из 4

Самопроверка

  1. Чем identifier отличается от attribute?
  2. Почему proofing и authentication разделены?
  3. Когда pseudonymous account лучше verified legal identity?
  4. Почему issuer + subject надёжнее одного email для federation binding?
Ответы и критерии
  1. Identifier однозначно обозначает entity в контексте; attribute описывает её и может меняться или совпадать у нескольких entities.
  2. Proofing устанавливает связь claimed identity с субъектом при enrollment; authentication позже доказывает контроль bound authenticator.
  3. Когда сервису нужна continuity, но real-world identity не требуется для управления риском; это уменьшает сбор PII и friction.
  4. Subject определён в namespace issuer, тогда как email изменяем, может быть переиспользован и не доказывает одну identity между providers.

Краткое резюме

  • Identification определяет, какую identity различает система.
  • Реальный человек, account, identifier, attribute и authenticator — разные сущности.
  • Proofing состоит из resolution, validation и verification и нужен не всегда.
  • Внутренний ID должен быть стабильным и не содержать лишних PII.
  • Identity требует полного lifecycle, а не только формы регистрации.

Следующие шаги

Статья «Аутентификация и авторизация» продолжает путь: как actor доказывает контроль identity и как backend принимает решение о конкретном действии.

Источники