Skip to content

Feature Uuid v2 dce

github-actions[bot] edited this page Jul 15, 2026 · 1 revision

🛡️ UUID v2 — DCE Security

← Возможности · Главная · Сравнение

Редкая, но входящая в RFC 9562 версия: поверх временно́й раскладки v1 в идентификатор встраиваются домен DCE (Person / Group / Organization) и 32-битный локальный идентификатор (UID, GID или иной).

Принцип работы

use CloudCastle\Uuid\UuidDceDomain;
use CloudCastle\Uuid\UuidFactory;

$factory = new UuidFactory();

$uuid = $factory->uuid2(UuidDceDomain::Person, 1000);   // UID пользователя
$uuid->version();                                        // 2

// домен занимает девятый байт, локальный ID — первые четыре

Локальный идентификатор передаётся явно (0..2³²−1) — пакет не читает UID/GID процесса сам: генерация остаётся детерминированной и не зависит от окружения.

Плюсы

  • Полный охват RFC 9562 — v2 умеют немногие (symfony/uid не умеет).
  • Идентификатор субъекта читается прямо из UUID.

Минусы

  • Точность времени снижена (time_low заменён локальным ID) — уникальность в пределах ~7 минут обеспечивают последовательность и узел.

✅ Рекомендуется

  • Интеграция с POSIX/DCE-системами и аудит доступов.

❌ Антипаттерны

  • Использование v2 «как обычного v1» без нужды в домене — берите v1/v6.

Схема фичи

flowchart LR
    LID["Локальный ID (32 бита)"] --> F[UuidFactory]
    D["UuidDceDomain (байт)"] --> F
    T["Время v1 (усечённое)"] --> F
    F --> U[Uuid v2]
Loading

Жизненный цикл

sequenceDiagram
    participant A as Приложение
    participant F as UuidFactory

    A->>F: uuid2(Person, 1000)
    F->>F: тики Григория (монотоника общая с v1/v6)
    F->>F: time_low := 1000, clock_seq_low := домен
    F-->>A: Uuid v2
Loading

Сравнение с аналогами

Возможность Uuid ramsey/uuid symfony/uid 🏆 Победитель
UUID v2 Uuid + ramsey/uuid
Явный локальный идентификатор Uuid + ramsey/uuid
Работа без ext-posix ⚠️ Uuid

Clone this wiki locally