Перейти к содержанию

Provisioning IAM


Identity and Access Management. Кто и что может делать в Grafana.

Когда Grafana одна на всю компанию, ручное управление доступом превращается в кошмар: HR-аналитик случайно удалил дашборд с продажами, инженер поддержки видит только production-данные, а нужно и staging. Provisioning IAM — ключ к порядку.


teams.yml — Provisioning команд

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

apiVersion: 1

teams:
  - orgId: 1
    name: "SRE"
    email: sre@company.ru
    members:
      - email: alice@company.ru
      - email: bob@company.ru
  - orgId: 1
    name: "Development"
    members:
      - email: dev.lead@company.ru

Пользователи должны существовать в базе (пришли через OAuth, LDAP). Команды создаются при старте Grafana.

Важно: orgId обычно 1 (Main Org). Если у вас настроена организация (multi-tenancy), номер орги важен.

Если вы хотите удалить команду — уберите её из конфига. Тогда Grafana удалит её при старте.


Роли (Roles) и RBAC

Grafana 13.1.3 поддерживает custom roles и предоставление ролей через provisioning/access-control/:

apiVersion: 1

roles:
  - name: "readonly:datasource:logs"
    description: "Чтение только источников данных логов"
    global: true
    hidden: false
    permissions:
      - action: "datasources:read"
        scope: "datasources:type:loki"
      - action: "datasources:query"
        scope: "datasources:type:loki"

Scope — это детальная настройка: не просто "видеть все источники данных", а только определённого типа.


Сервис-аккаунты (Service Accounts)

Grafana 13.1.3 использует сервис-аккаунты для межмашинного взаимодействия. Они provisioning'ируются так — в том же файле IAM:

serviceAccounts:
  - orgId: 1
    name: ci-service-account
    role: Editor
    teams:
      - ci-automation

Сервис-аккаунт получает токен (генерируется при создании), с которым потом CLI-утилита или CI-скрипт авторизуется в API Grafana для создания дашбордов или источников данных.


Access Policies

Access policies provisioning — сравнительно новый элемент IAM. Политики позволяют определять кто имеет право просматривать/редактировать:

accessPolicies:
  - name: policy-production
    namespace: production
    scopes:
      - "datasources:*"
      - "dashboards:*"
    subjects:
      - type: team
        id: 14  # id команды SRE
      - type: user
        id: 23

Access policies provisioning актуален для Enterprise-версии и Cloud с тонким разграничением прав. В OSS используйте базовые роли (Admin, Editor, Viewer).


RBAC и внешний Auth

Важно понимать: RBAC доступов в Provisioning не отменяет и не подменяет OAuth/LDAP. Аутентификация происходит ВНЕ Grafana (через GitHub OAuth, LDAP, SAML, generic OAuth2). А Provisioning — только авторизация: кому что разрешено.

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



Далее: Grafana Operator для Kubernetes