Настройка прав доступа Grail для распределенных трассировок: различия между версиями

Материал из Документация Ключ-АСТРОМ
(Новая страница: «Ключ-АСТРОМ использует модель разрешений для '''Grail'''. Это относится ко всем телеметричес...»)
 
(Полностью удалено содержимое страницы)
 
(не показана 1 промежуточная версия этого же участника)
Строка 1: Строка 1:
Ключ-АСТРОМ использует модель разрешений для '''Grail'''. Это относится ко всем телеметрическим данным, таким как метрики, события, диапазоны и логи.


Мы рекомендуем настраивать права доступа в соответствии с организационными рамками и областями развертывания. Подходящие концепции включают группы хостов, кластеры '''Kubernetes''' и пространства имен '''Kubernetes'''. Эти атрибуты обычно доступны для всех телеметрических данных, получаемых с помощью методов сбора данных Ключ-АСТРОМ, таких как ЕдиныйАгент, '''OpenTelemetry''' или '''Kubernetes''' '''Operator'''. Следовательно, вы можете использовать эти атрибуты для включения прав доступа на уровне записей .
Для развертываний на основе '''Kubernetes''' убедитесь, что в Ключ-АСТРОМ '''Operator''' включено [[Настройка директории расширений|обогащение метаданных]].
Если вам требуется лишь базовая концепция разрешений, лучшим вариантом будет настройка разрешений на уровне сегмента ('''bucket'''). Затем вы сможете направлять свои данные в нужный сегмент в '''OpenPipeline''', сопоставляя их с одним из упомянутых основных полей '''Grail''', имеющих отношение к развертыванию.
Для более точного управления в Ключ-АСТРОМ можно настроить границы политик с более детальными ограничениями на уровне данных. По умолчанию можно использовать следующие атрибуты:
* <code>dt.host_group.id</code>
* <code>k8s.cluster.name</code>
* <code>k8s.namespace.name</code>
* Любой другой атрибут, указанный в модели разрешений.
Ключ-АСТРОМ предоставляет комплексную модель разрешений для '''Grail''', которая применяется ко всем телеметрическим данным, включая метрики, логи, диапазоны и события.
== Настройте контекст безопасности ==
Если прав доступа к атрибутам уровня развертывания или уровня корзины недостаточно, Ключ-АСТРОМ позволяет настроить более детальные права доступа, добавив атрибут <code>dt.security_context</code> к вашим данным. Этот контекст может представлять вашу архитектуру безопасности и даже быть иерархическим, если закодировать его в строку, например: <code>department-A/department-AB/team-C</code>.
=== Используйте существующие теги в источнике ===
Контекст безопасности можно определить на уровне источника с помощью меток или аннотаций ЕдиногоАгента, '''OpenTelemetry''' или '''Kubernetes'''. Это позволяет использовать существующие метки и теги для управления правами доступа в Ключ-АСТРОМ.
== Настройте контекст безопасности в OpenPipeline ==
В качестве альтернативы вы можете определить контекст безопасности на основе существующих атрибутов ресурсов для ваших данных [[Обработка OpenPipeline|трассировки в OpenPipeline]]:
1. Отфильтруйте записи, которым следует добавить атрибут <code>dt.security_context</code>. Для этого откройте новый блокнот и создайте фильтрующий '''DQL'''-запрос, например:
{| class="wikitable"
|fetch spans
<nowiki>|</nowiki> filter matchesPhrase(deployment.release_stage, "prod-")
|}
Этот запрос позволяет отфильтровать записи с атрибутом '''span''', к которым вы хотите добавить атрибут <code>dt.security_context</code>. После того, как вы будете удовлетворены результатом запроса, скопируйте функцию обработки '''span''' из '''DQL'''-запроса, в данном случае: <code>matchesPhrase(deployment.release_stage, "prod-")</code>.
2. Определите правило контекста безопасности '''spans''', используя полученную функцию, и укажите значение атрибута <code>dt.security_context</code>. Значение атрибута <code>dt.security_context</code> может быть предоставленным вами литеральным значением или именем другого атрибута; это значение будет использоваться в качестве значения <code>dt.security_context</code>.
== Рекомендации по разрешениям для распределенных трассировок ==
Как правило, для распределенной трассировки настраиваются права доступа, позволяющие пользователям видеть полную сквозную трассировку. Трассировки часто охватывают несколько сервисов, хостов или кластеров, и пересечение трассировок с ограничениями по правам доступа может привести к неполным или фрагментированным данным. Хотя аналитика трассировки на уровне сервисов пострадает меньше, и приложение распределенной трассировки будет работать нормально, потенциальная нехватка видимости повлияет на аналитику и устранение неполадок.
При настройке прав доступа для распределенной трассировки учитывайте следующие рекомендации:
# Избегайте «разрыва» трассировок — обеспечьте пользователям доступ ко всем спанам в рамках трассировки, которые релевантны их роли или этапу развёртывания, одновременно ограничив доступ к чувствительным сервисам. Поэтому настраивайте гибкие права доступа и избегайте границ, полностью ограничивающих доступ к спанам внутри трассировки: это может помешать всестороннему анализу.  Например:
#* предоставляйте доступ ко всем спанам на соответствующем этапе развёртывания (например, в среде тестирования или продуктивной среде);
#* либо в пределах организационных единиц (например, отдела или географического региона);
#* при этом ограничивайте доступ только к чувствительным сервисам (например, к системе единого входа — SSO).
# Используйте защиту на уровне полей для конфиденциальных данных — вместо ограничения доступа ко всем участкам трассировки или трассировкам, используйте защиту на уровне полей для защиты конфиденциальной информации.
#* Ключ-АСТРОМ автоматически определяет выбранные атрибуты трассировки, заданные в глобальном справочнике полей, и запрашивает атрибуты, помеченные как конфиденциальные.
#* Доступ к конфиденциальным полям <code>builtin-sensitive-spans</code> и <code>builtin-request-attributes-spans</code> имеют только пользователи, обладающие соответствующими правами доступа .
#* Также можно определить пользовательские наборы полей для указания конфиденциальных атрибутов и области их применения.
# Используйте контекст безопасности для определения разрешений для отдельных записей трассировки — Ключ-АСТРОМ позволяет настраивать поступающие данные трассировки, добавляя атрибут <code>dt.security_context</code> к конкретным записям. Это позволяет устанавливать дополнительные параметры, такие как разрешения для отдельных записей. Для создания контекста безопасности для поступающих данных трассировки необходимо создать правило пайплайна.
== Права доступа пользователей к распределенной трассировке ==
При работе с распределенной трассировкой убедитесь, что вы прочитали и установили все необходимые права доступа:
{| class="wikitable"
!Область действия политики
!Права доступа
|-
|Чтение данных сегментов
|<code>storage:buckets:read</code>
|-
|Чтение данных спанов
|<code>storage:spans:read</code>
|-
|Чтение данных сущностей
|<code>storage:entities:read</code>
|-
|Чтение данных логов
|<code>storage:logs:read</code>
|-
|Чтение данных сегментов фильтра
|<code>storage:filter-segments:read</code>
|-
|Просмотр конфиденциальных полей, данные трассировки <sup>1 2</sup>
|<code>storage:fieldsets:read WHERE storage:fieldset-name="builtin-sensitive-spans</code>
<code>storage:fieldsets:read WHERE storage:fieldset-name="builtin-request-attributes-spans</code>
|-
|Чтение состояний приложения пользователя
|<code>state:user-app-states:read</code>
|-
|Запись состояний пользовательского приложения
|<code>state:user-app-states:write</code>
|-
|Удаление состояний приложения пользователя
|<code>state:user-app-states:delete</code>
|}
<sup>1</sup> Конфиденциальные атрибуты для спанов помечаются в соответствии с глобальной ссылкой на поле <code>sensitive-spans</code>.
<sup>2</sup> Чтобы узнать больше об ограниченном доступе к персональным данным и атрибутам конфиденциальных запросов, см. раздел «[[Настройка параметров конфиденциальности данных для веб-приложения|Маскирование при отображении]]».

Текущая версия на 21:11, 29 апреля 2026