Skip to content

Чтение хранилища только для чтения и что решает ваша собственная роль

Доступ, который нужен слою управления, узкий, конкретный и стоит того, чтобы назвать его точно. Что читается из каталога, что значит «только для чтения», когда это структурно, а не обещано, почему ваша собственная роль в хранилище остаётся границей и что даёт наследование каталога.

Обновлено · 6 мин чтения

Что читает слой управления

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

  • Таблицы и столбцы, с их типами и комментариями.
  • Теги, где платформа записывает владение, стюардство и классификацию.
  • Ключи, первичные и внешние, как их хранит платформа.
  • Разрешения, записанные, чтобы отчёт мог сказать, кто мог видеть объект.
  • Сами объекты-контракты: семантическая модель, semantic view, metric view.

Каждый пункт этого списка это метаданные. Это ваш каталог, ваш словарь и ваши разрешения, которые вместе составляют материал, из которого делается отчёт об управлении. Данные строк это отдельный запрос с отдельным ответом, и он покрывается управляемым путём запросов, а не синхронизацией.

Хороший вопрос любому инструменту, просящему доступ к хранилищу: спросите, что он хранит. Здесь аудит хранит форму результата, то есть число строк, и ни одной ячейки.

Что значит «только для чтения» здесь

Есть два способа, которыми софт может быть только для чтения, и они далеко не равнозначны.

Слабый способ это обещание. Код полностью способен писать и обязуется этого не делать, что держится на комментарии в ревью, который будущий участник никогда не прочтёт. Сильный способ структурный: классы коннектора предоставляют проверку подключения и интроспекцию, и нет метода записи, который нужно охранять, потому что его никогда не писали. Гарантия переживает рефакторинг, сделанный кем-то, кто о ней не слышал.

Рядом с API каталога работает вторая опора, и стоит знать, зачем она. Часть нужного вам управления живёт в собственной информационной схеме и системных представлениях учётной записи, а не в REST-каталоге. Чтение тегов владения и ограничений ключей означает выполнение инструкций. Эти инструкции суть чтения, они ограничены, и именно из-за них на форме подключения вообще появляется вычислительная точка доступа.

Ваша собственная роль остаётся границей

Доступ наследуется и никогда не расширяется. Вы предоставляете учётные данные, каждое чтение выполняется от имени этого принципала, и горизонт отчёта это горизонт роли. То, до чего учётные данные не дотягиваются, остаётся вне досягаемости.

Три следствия, все практические.

  • Два администратора с разными ролями могут запустить одну и ту же синхронизацию и получить разные инвентари. Оба верны, а разница между ними это факт о ваших разрешениях.
  • Расширение того, что видит слой, это разрешение, которое даёт ваша команда хранилища, в хранилище, под собственной проверкой и видимое в собственном аудите.
  • Учётные данные, ограниченные одной базой, держат синхронизацию в рамках этой базы, без второй настройки где-либо ещё, о которой нужно помнить.

Ценность этого при проверке в том, что меняется сам задаваемый вопрос. Что инструмент делает с вашими данными, трудно ответить и легко не поверить. Что вы ему предоставили, это вопрос, которым ваша команда уже владеет, в системе, которой уже управляет, с аудитом, который уже читает.

Хосты, до которых может дотянуться подключение, и где живёт секрет

Форма подключения, принимающая любой хост, это поверхность для подделки запросов с дружелюбной надписью. Хост хранилища должен совпадать с одним из настоящих суффиксов имён хостов вендоров, прежде чем что-либо покинет процесс, а частные, loopback, link-local адреса и адреса облачных метаданных отсекаются на том же шлюзе.

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

Сами учётные данные зашифрованы при хранении и никогда не возвращаются. То, что консоль показывает для настроенного подключения, фильтруется собственным флагом секретности в спецификации поля, а не списком, который кто-то ведёт вручную. Токен не может попасть на страницу, даже если хранится в одном поле от того, что может. Вы видите хост, роль, хранилище, базу данных и то, какой вид учётных данных прошёл аутентификацию.

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

Наследовать каталог, а не переписывать его

Наследование каталога и его переписывание читаются в списке функций почти одинаково, а ведут себя через полгода совершенно по-разному.

Переписывание просит кого-то заново набрать владельцев, классификации и описания во второй системе. С того дня, как эта работа закончена, есть две записи одного факта, и одна из них стареет. Наследование значит, что первая синхронизация читает то, что ваша платформа уже держит: таблицы, столбцы, комментарии, теги, ключи и разрешения, и ничто из этого никем не набрано заново.

Именно поэтому запрос на разрешения остаётся небольшим. Инструменту, который наследует, нужны чтения. Инструменту, который ожидает, что вы будете курировать внутри него, нужно место для записи, место для хранения и аргумент в пользу того, почему его копии стоит доверять.

Соглашения об именовании считаются обогащением поверх пришедшего, а не требованием. Хранилище, не совпадающее ни с одним из ожидаемых шаблонов, всё равно загружается полностью. Имя слоя читается из собственной квалифицированной метки объекта, а словарь открыт, так что имя слоя, которому никто не научил инструмент, приходит целым, а не схлопывается в «неизвестно».

Частичные чтения, помеченные как частичные

Некоторым чтениям для управления нужно разрешение, которое множество учётных записей никогда не выдавали. Чтение ссылок на теги на одной из платформ требует привилегии на собственной общей базе учётной записи, и эти данные отстают на пару часов даже после выдачи разрешения.

Там, где разрешения нет, чтение выполняется по мере возможности: оно возвращает то, что смогло, и сообщает о том, чего не смогло. Различие и есть вся суть. Инструмент, сообщающий о нуле задокументированных владельцев, когда на самом деле он не смог прочитать теги владения, сказал вам неправду о вашей собственной документации, вы будете действовать на её основе, и работа пропадёт зря.

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

Та же дисциплина проходит через весь остальной продукт. Карта происхождения называет то, что дополнило её гранулярность. Пустой слой получает ноль, а не лестные сто. Первая синхронизация, вернувшаяся скудной, показывает вам либо ваше покрытие, либо ваши разрешения, и от отчёта ожидается, что он скажет, что именно из двух.

Какие разрешения запрашивать

Короткий список для того, кто владеет вашим хранилищем.

  • Чтение каталога или базы данных, которую вы хотите инвентаризировать, и её информационной схемы.
  • Чтение самого объекта-контракта: семантической модели, semantic view или metric view.
  • Та привилегия, которую ваша платформа требует для чтения ссылок на теги; без неё владение и классификация отображаются пустыми.
  • Вычислительная точка доступа, которой роли разрешено пользоваться, потому что часть чтений для управления это запросы.

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