Кратко
- Хранимое поле, видимое поле, поисковое поле и поле стандартного ответа были разными множествами.
Turn,LocalPub,ForcePubиSacredсвязывали результат с выбором владельца, классом сети, полномочиями оператора и путём изменения.- Отсутствие в ответе доказывает лишь то, что конкретный сеанс не получил значение по действовавшим правилам.
Владелец записи мог поставить звёздочку перед домашним телефоном. Номер не удалялся и не шифровался. Он просто исчезал для обычных пользователей, оставаясь видимым самому владельцу и привилегированным операторам.
Эта деталь принадлежит RFC 2378, опубликованному в сентябре 1998 года описанию CCSO Nameserver, или Ph. Сервис хранил небольшие наборы сведений о людях и других объектах в именованных полях и отвечал на короткие команды по сети. За образом электронной телефонной книги скрывалась точная модель поведения полей.
Public определял просмотр. Lookup разрешал использовать поле при выборе записей. Indexed включал его в индекс, причём каждый запрос должен был содержать хотя бы одно индексированное поле. Default задавал стандартный возврат, а Always принудительный. Change позволял владельцу менять значение. Unique запрещал совпадение с тем же полем другой записи. NoMeta отключал шаблонный поиск. Encrypt задавал требование к передаче.
Это не ступени одной шкалы секретности. Поле могло быть видимым, но непригодным как критерий. Оно могло быть поисковым, но не входить в обычный ответ. Владелец мог читать его, не имея права изменять.
Звёздочка хранила политику
Свойство Turn позволяло владельцу скрыть поле от всех, кроме себя и Heros — привилегированных операторов Ph, — добавив * в начало текста. В примере home_phone одновременно имеет свойства Lookup Public Change Turn.
Поэтому удаление звёздочки при «очистке» данных меняет не формат, а решение о раскрытии. И наоборот, отсутствие телефона в публичном ответе не означает его удаления: административное представление по-прежнему содержит значение.
ForcePub задавал исключение в другую сторону. Такое поле оставалось видимым и доступным для поиска независимо от общего suppress-поля записи. Правило поля могло перекрыть состояние всей карточки.
Ответ формировался из значения, дескриптора, состояния записи и роли наблюдателя. Сохранив только текст ответа, невозможно позднее восстановить, почему он выглядел именно так.
Внешнему клиенту не сообщали даже имя поля
LocalPub открывал поле всем внутри домена или адресного пространства, которое сервер считал локальным. Снаружи поле полностью исчезало. Команда fields не показывала дескриптор, а запрос и список возврата не могли ссылаться на скрытое имя.
Внутренний и внешний клиент получали разные схемы ещё до поиска человека. Внешнему наблюдателю недоставало не только значения, но и языка, чтобы задать вопрос.
Опция сеанса external также скрывала локальные поля. Однако RFC не делал «локальность» универсально доказанной характеристикой. Это было эксплуатационное решение сервера. Исходный адрес, имя узла, принадлежность к организации и право доступа — отдельные свидетельства.
Ph считался локальным и в другом смысле: сервер не перенаправлял клиента автоматически к другому серверу. Он мог перечислить другие nameserver, которые клиент опрашивал самостоятельно. Ничего не найти здесь не означало ничего не найти нигде.
Защищённый путь не делал значение вечным
Поле Sacred нельзя было изменить сетевым вызовом, но можно было изменить через терминал, файл или канал непосредственно на сервере. Ограничивалась поверхность управления, а не вся изменяемость.
Полномочия Hero тоже имели масштаб. Полный Hero видел и менял всё. ACL мог дать оператору доступ только к одному полю одной чужой записи. Формулировка «администратор выполнил действие» без границ делегирования была недостаточной.
Раздел безопасности продолжал это разделение. Ph поддерживал слабые и сильные методы входа. Без взаимной аутентификации, например Kerberos или GSS-API, клиент не мог доказать личность сервера. Не было и механизма, доказывающего, что сервер авторитетен для набора сведений. Без отдельной защиты транспорта трафик можно было наблюдать или изменять.
Аутентификация пользователя, аутентификация сервера, защита канала, доступ к полю и авторитетность данных — разные квитанции. Одна не подменяет остальные.
return all означало всё видимое
Команда не выгружала всё хранилище. Она возвращала все поля, доступные данному сеансу. Индексация не давала публичности, а публичность — права записи.
Для проверяемого результата следует сохранять исходную запись, дескрипторы, маркеры подавления, классификацию local/external, идентичность сеанса, метод входа, объём Hero/ACL, условия выбора, список возврата, endpoint, состояние транспорта и время.
RFC 2378 честно описывал и слабости своей эпохи. Его долговечный урок — ограничение вывода. Пользователь видит сформированную правилами проекцию. Фраза «не получил» не должна превращаться в «не существует».
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров

