Настройка командного управления доступом на основе меток для Tempo или Cloud Traces
Note
Label-based access control for traces is currently in public preview. Grafana Labs offers limited support, and breaking changes might occur prior to the feature being made generally available.
Командное управление доступом на основе меток (LBAC) для Cloud Traces или Tempo позволяет ограничивать, к каким спанам команды могут получить доступ, определяя правила с использованием атрибутов трассировок. LBAC обеспечивает детальный контроль доступа на основе команд в рамках одного тенанта и повторяет опыт, используемый для LBAC логов и метрик в Grafana Cloud.
Note
В отличие от логов и метрик, которые также поддерживают LBAC на уровне источника данных через политики доступа облака, LBAC для трассировок в настоящее время доступен только на уровне команды.
Grafana использует термин LBAC как общий термин для управления доступом на основе меток для всех источников данных. Трассировки используют атрибуты, а не метки, для контроля доступа, но пользовательский интерфейс Grafana отображает эту функциональность как LBAC для единообразия.
Эта функция применяется только к Grafana Cloud Traces, а именно к источнику данных трассировок, провижининг которого выполнен в Cloud.
Как работает LBAC
Когда пользователь запрашивает источник данных трассировок, Grafana оценивает членство пользователя в командах и правила LBAC, назначенные этим командам. Эти правила добавляются к запросу, чтобы источник данных Cloud Traces возвращал только разрешённые спаны или атрибуты.
Правила LBAC используют селекторы атрибутов, например:
{ resource.service.name="checkout", resource.env="prod" }
Несколько условий в одном правиле используют AND (,), тогда как несколько правил для разных команд используют OR.
Прежде чем начать
- Убедитесь, что у вас настроены разрешения на создание тенанта Tempo или Cloud Traces в Grafana Cloud.
- Убедитесь, что у вас есть права администратора в Grafana.
- Убедитесь, что у вас настроена команда в Grafana.
Известные ограничения
- LBAC для трассировок доступен только на уровне команды. Правила LBAC уровня источника данных (настраиваемые через политики доступа облака) в настоящее время для трассировок не поддерживаются. Это отличается от LBAC логов и метрик, который поддерживает правила как уровня команды, так и уровня источника данных.
- Автодополнение в поиске всё ещё находится в разработке.
- LBAC ограничен использованием только атрибутов области ресурса.
- Для пользователей с несколькими правилами наблюдается небольшое снижение производительности.
Настройка LBAC для команд для трассировок
Следуйте этому порядку действий при добавлении нового источника данных. Источник данных должен размещаться в Grafana, а не управляться самостоятельно.
-
Запустите ваш экземпляр Grafana Cloud.
-
Получите доступ к сведениям об источниках данных Tempo или Cloud Traces для вашего стека.
-
Скопируйте сведения о Tempo или Cloud Traces и создайте Cloud Access Policy.
-
В Grafana Cloud перейдите в раздел Administration > Users and access > Cloud Access Policies.
- Создайте политику доступа для источника данных Tempo или Cloud Traces.
- Убедитесь, что политика доступа включает разрешения
traces:read. - Убедитесь, что политика доступа не включает правила
labels. LBAC уровня источника данных для трассировок не поддерживается, поэтому любые правилаlabelsв политике доступа игнорируются.
-
В Grafana выберите Tempo или Cloud Traces либо создайте новый источник данных.
-
Вернитесь к источнику данных Tempo или Cloud Traces.
- Настройте источник данных Tempo или Cloud Traces с использованием базовой аутентификации. Используйте userID/tenantID в качестве имени пользователя. Используйте токен из вашей политики доступа в качестве пароля.
- Выберите Save and connect.
-
Перейдите на вкладку Permissions только что созданного источника данных Tempo или Cloud Traces. Здесь вы найдёте раздел правил LBAC для источников данных.
-
Выберите команду из выпадающего списка Team.
-
Введите селекторы атрибутов, например:
{ resource.service.name="checkout", resource.env="prod" }Дополнительные примеры см. в разделе «Примеры» ниже.
-
Выберите Save.
Примеры правил LBAC
Правило LBAC — это запрос logql, который фильтрует логи или метрики на основе меток.
Правила LBAC для трассировок также используют некоторый синтаксис TraceQL для выбора атрибутов.
Каждое правило действует независимо как собственный фильтр, отдельно от других правил внутри команды.
Рекомендации по правилам LBAC:
- Используйте только атрибуты области ресурса, например
{ resource.env="prod" }. - Поддерживаются только строковые значения.
- Используйте двойные кавычки для строковых значений, например:
{ resource.env="prod" }. - Вы можете использовать сопоставление по регулярному выражению с оператором
=~, например:{ resource.team =~ "team-a|team-b" }. - Вы можете использовать до двух условий в одном правиле, разделяя их запятой (
,) как операторомAND, например:{ resource.env="prod", resource.team="frontend" }.
Дополнительную информацию см. в разделе Создание правил LBAC для источников данных для поддерживаемого источника данных.
Одно правило
Ограничьте пользователей так, чтобы они видели только спаны из API payments.
{ resource.service.name="payments-api" }
Этот пример соответствует спанам команды A или команды B. Этот единственный пример работает быстрее, чем использование нескольких правил с одной и той же меткой.
{ resource.team =~ "team-a|team-b" }
Несколько правил
Два правила объединены, чтобы дать пользователю доступ к спанам из окружения prod или команды billing.
{ resource.env="prod" }
{ resource.team="billing" }
Этот пример даёт пользователям доступ к спанам команды frontend в окружении prod или команды checkout, но не накладывает дополнительных условий. Запятая (,) действует как оператор AND внутри одного правила.
{ resource.env="prod", resource.team="frontend" }
{ resource.team="checkout" }
Пользователь в нескольких командах
Пользователи, входящие в несколько команд, получают доступ на основе всех объединённых правил LBAC, назначенных каждой команде.
Team A → { resource.cluster="us-east-1" }
Team B → { resource.service.name="frontend" }
Как LBAC влияет на возвращаемые данные
Cloud Traces поддерживает три режима редактирования, которые управляют обработкой неавторизованных спанов в ответах поиска трассировки по ID. Активный режим настраивается для каждого тенанта. Чтобы изменить режим для вашей организации, обратитесь в службу поддержки Grafana.
Режим атрибутов (по умолчанию)
Несоответствующие спаны включаются в ответ, но их атрибуты и внутренние поля редактируются. На отредактированных спанах остаются видимыми только следующие минимальные поля:
traceId,spanId,parentIdname,kindtimestampsstatus
Вы можете расширить набор всегда видимых полей, настроив allowed_attributes, который задаёт список атрибутов области и внутренних полей, которые никогда не редактируются. Например, вы можете задать span:name, resource.service.name, event:name или scope.version, чтобы они никогда не редактировались, даже для несоответствующих спанов. Обратитесь в службу поддержки Grafana, чтобы настроить allowed_attributes для вашей организации.
Режим спанов
Несоответствующие спаны полностью удаляются из ответа. Это может привести к повреждённым трассировкам, когда возвращённый спан не имеет соответствующего родителя, что создаёт разрывы в дереве спанов.
Режим ошибок
Если какой-либо спан в запрошенной трассировке не соответствует политике LBAC, весь запрос возвращает ошибку 404. Это самый строгий режим, и он подходит для сред, где частичная видимость трассировок неприемлема.
Для конечных точек поиска, метрик и автодополнения отображаются только спаны, соответствующие правилам LBAC, независимо от настроенного режима редактирования.
Управление правилами LBAC
Чтобы изменить существующее правило LBAC, выполните следующие шаги:
- Откройте ваш стек и выберите источник данных Tempo или Cloud Traces.
- Выберите Permissions.
- Прокрутите до раздела Data access.
- Выберите правило, которое хотите изменить, и нажмите значок карандаша (Edit).
- Измените Attribute filters.
- Выберите Save.
Чтобы удалить существующее правило LBAC, выполните следующие шаги:
Откройте ваш стек и выберите источник данных Tempo или Cloud Traces.
- Выберите Permissions.
- Прокрутите до раздела Data access.
- Выберите правило, которое хотите изменить.
- Выберите значок X (Delete).
- Подтвердите удаление.