Настройка защиты репозитория Git

Чтобы Git Sync работал корректно, необходимо настроить права доступа на двух уровнях:

  • На уровне вашего Git-провайдера — для защиты репозитория, как описано в этом документе.
  • На уровне Grafana — для управления репозиториями и доступа к ресурсам. Дополнительную информацию см. в разделе Права доступа и контроль доступа Git Sync.

Когда вы используете Git Sync, конфигурации дашбордов хранятся в виде кода в репозитории Git. Вы можете настроить защиту репозитория Git, чтобы контролировать, кто имеет доступ к этому исходному коду и кто может его изменять. Защита репозитория работает как дополнительный уровень безопасности после внутренних прав доступа Grafana.

Требуемые права на уровне Git-провайдера

Учётные данные для аутентификации Git Sync должны иметь определённые права у вашего Git-провайдера:

Требуется для всех конфигураций:

  • Доступ на чтение содержимого репозитория
  • Доступ на чтение информации о ветках

Требуется для записи изменений:

  • Доступ на запись для создания коммитов
  • Право на создание pull request (когда включена защита веток)
  • Право на отправку в feature-ветки (для создания pull request)

Необязательно для мгновенной синхронизации:

  • Право на создание вебхуков и управление ими

Инструкции по настройке аутентификации для вашего Git-провайдера см. в документации по настройке Git Sync.

Контроль доступа к исходному коду дашбордов

Доступ к исходному коду дашбордов возможен по двум путям, каждый из которых имеет собственный механизм защиты:

  • Конечная точка files в Grafana: пользователи могут просматривать и редактировать исходный код дашбордов через конечную точку files API Grafana. Используйте права доступа к папкам и дашбордам Grafana, чтобы контролировать этот доступ. Дополнительную информацию см. в разделе Управление доступом к исходному коду дашбордов через API.

  • Репозиторий Git: пользователи с доступом к репозиторию могут просматривать и изменять файлы дашбордов напрямую в Git. Права доступа к репозиторию можно контролировать у вашего Git-провайдера. Дополнительную информацию см. в разделе Контроль доступа к вашему репозиторию Git.

Защитите обе точки доступа, чтобы обезопасить конфигурации ваших дашбордов.

Управление доступом к исходному коду дашбордов через API

Просмотр исходного кода дашборда

Вы можете просматривать исходный код дашборда через конечную точку files, если у вас есть право Viewer или выше на дашборд или его родительскую папку. Это позволяет вам:

  • Просматривать список файлов в выделенных папках и ветках
  • Читать содержимое JSON дашборда
  • Просматривать структуру и организацию папок

Редактирование исходного кода дашборда

Вы можете изменять исходный код дашборда через конечную точку files, если у вас есть право Editor или Admin на дашборд или его родительскую папку. Это позволяет вам:

  • Создавать новые файлы дашбордов
  • Обновлять содержимое существующих дашбордов
  • Удалять дашборды
  • Изменять структуру папок

Когда вы сохраняете изменения через эту конечную точку, Git Sync фиксирует эти изменения в репозитории Git (или создаёт pull request, если включена защита веток), в зависимости от прав доступа к репозиторию Git.

Подробную информацию о настройке прав доступа к папкам и дашбордам в Grafana см. в разделе Права доступа и контроль доступа Git Sync.

Контроль доступа к вашему репозиторию Git

Контроль доступа на уровне Git-провайдера определяет, кто может просматривать и изменять исходный код ваших дашбордов. Настройте доступ к репозиторию исходя из ваших требований к безопасности и соответствию нормативным требованиям.

Доступ на чтение (видимость репозитория)

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

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

Приватные репозитории: только авторизованные пользователи могут просматривать содержимое репозитория. Это защищает конфигурации дашбордов, запросы и любые встроенные учётные данные или конфиденциальные данные от публичного доступа.

Чтобы Git Sync работал, учётные данные для аутентификации, настроенные в Grafana, должны иметь доступ на чтение, чтобы забирать изменения дашбордов из Git в Grafana.

Доступ на запись (права на push)

Доступ на запись определяет, кто может отправлять изменения в ваш репозиторий. Это определяет, кто может изменять исходный код дашбордов — напрямую или через pull request.

Прямой доступ на запись: пользователи с правом на запись могут отправлять коммиты напрямую в ветки. Чтобы Git Sync мог отправлять изменения дашбордов из Grafana в Git, учётные данные для аутентификации должны иметь доступ на запись в репозиторий.

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

Инструкции по настройке аутентификации для вашего Git-провайдера см. в документации по настройке Git Sync.

Контроль способа записи изменений в Git Sync

Git Sync поддерживает разные режимы записи изменений дашбордов в ваш репозиторий: от разрешения прямых коммитов до требования формальных процессов проверки.

Режим только для чтения

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

Когда использовать: когда Git является единственным источником истины и все изменения должны вноситься через прямые коммиты в Git или процессы CI/CD.

Режим прямых коммитов

Когда репозиторий допускает запись и защита веток не включена, Git Sync фиксирует изменения дашбордов напрямую в настроенную ветку без проверки.

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

Режим pull request

Когда у вашего Git-провайдера включена защита веток, Git Sync предлагает вам создать pull request в вашем репозитории Git вместо прямого коммита. Изменения требуют проверки и одобрения перед слиянием в основную ветку.

Когда использовать: когда изменения требуют проверки и одобрения, например в продуктивных средах или когда несколько команд совместно работают над дашбордами.

Защита вашей ветки

Правила защиты веток у вашего Git-провайдера определяют, как вносятся изменения в конкретные ветки. Когда они включены для ветки, на которую нацелен Git Sync, эти правила требуют, чтобы Git Sync создавал pull request вместо прямой отправки коммитов.

Типичные сценарии использования защиты веток:

  • Продуктивные среды, требующие одобрения изменений
  • Требования соответствия для аудита и проверки
  • Среды с несколькими командами, где изменения должны быть видимы

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

Конкретные инструкции по настройке правил защиты веток см. в документации вашего Git-провайдера.

Назначение проверяющих на код

Многие Git-провайдеры поддерживают файлы CODEOWNERS, которые автоматически назначают проверяющих на pull request в зависимости от того, какие файлы изменены. Когда Git Sync создаёт pull request, Git-провайдер может использовать файл CODEOWNERS, чтобы назначить подходящую команду или пользователей для проверки.

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

Инструкции по настройке файлов CODEOWNERS см. в документации вашего Git-провайдера.

Устранение неполадок

По вопросам устранения неполадок с правами доступа см. раздел Устранение неполадок с правами доступа в документации по правам доступа Git Sync.