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'ированных команд, он сразу получает разрешения, определённые для этой команды.