Знакомство с Grafana и Keycloak
Grafana — популярная платформа для аналитики и мониторинга с открытым исходным кодом, которая позволяет создавать потрясающие визуализации и информационные панели для анализа данных в реальном времени. С другой стороны, Keycloak — это решение для управления идентификацией и доступом с открытым исходным кодом, которое обеспечивает надежные службы аутентификации и авторизации.
Метод 1: интеграция системы единого входа (SSO)
Одним из наиболее значительных преимуществ объединения Grafana и Keycloak является возможность реализации функции единого входа (SSO). Благодаря SSO пользователи могут один раз пройти аутентификацию и беспрепятственно получить доступ к нескольким приложениям. Вот пример того, как настроить Grafana для использования Keycloak для единого входа:
[auth.generic_oauth]
name = "Keycloak"
enabled = true
allow_sign_up = true
client_id = "<your-client-id>"
client_secret = "<your-client-secret>"
scopes = "openid email profile"
auth_url = "https://keycloak.example.com/auth/realms/<your-realm>/protocol/openid-connect/auth"
token_url = "https://keycloak.example.com/auth/realms/<your-realm>/protocol/openid-connect/token"
api_url = "https://keycloak.example.com/auth/realms/<your-realm>/protocol/openid-connect/userinfo"
Метод 2: управление доступом на основе ролей (RBAC)
Keycloak предоставляет мощные возможности управления доступом на основе ролей (RBAC), которые можно интегрировать с Grafana. RBAC гарантирует, что только авторизованные пользователи смогут получить доступ к определенным панелям мониторинга или выполнить определенные действия. Давайте посмотрим, как мы можем этого добиться:
// Define a custom role in Keycloak
const customRole = {
name: "dashboard_viewer",
description: "Can view dashboards",
composite: false,
clientRole: false,
containerId: "<your-realm-id>",
};
// Assign the custom role to a user
keycloakAdminClient.users.addRealmRoleMappings({
id: "<user-id>",
roles: [customRole],
});
// Configure Grafana to enforce RBAC
[auth.generic_oauth]
...
allowed_organizations = ["<your-organization>"]
allowed_organizations_role = "Viewer"
Метод 3: сопоставление атрибутов пользователя
Keycloak позволяет вам определять пользовательские атрибуты пользователя и сопоставлять их с пользовательскими полями Grafana. Это позволяет персонализировать информационные панели на основе атрибутов пользователя. Вот пример:
[auth.generic_oauth]
...
[saml]
...
attribute_mappings = { role = "role", department = "department" }
Теперь вы можете использовать эти пользовательские атрибуты в Grafana для фильтрации данных или динамической настройки панелей мониторинга.
Заключение
Объединение Grafana и Keycloak открывает мир возможностей для улучшения визуализации данных. В этой статье мы рассмотрели три метода: интеграцию единого входа, управление доступом на основе ролей и сопоставление пользовательских атрибутов. Используя возможности этих двух инструментов, вы можете создавать безопасные и персонализированные информационные панели, соответствующие потребностям вашей организации.
Итак, чего вы ждете? Начните исследовать безграничный потенциал Grafana и Keycloak уже сегодня!