Skip to main content
This guide provides comprehensive security recommendations for deploying and operating Grafana in production environments.

Overview

Security in Grafana involves multiple layers:
  • Network security and TLS/SSL
  • Authentication and authorization
  • Session management
  • Application security
  • Data protection
  • Monitoring and auditing

Network Security

Use HTTPS Everywhere

Always use HTTPS in production:

Restrict Network Access

  1. Bind to specific interfaces
  2. Use firewall rules
  3. Deploy behind reverse proxy
    • Use nginx, Apache, or cloud load balancers
    • Terminate TLS at the proxy
    • Add security headers

Domain and Origin Validation

Reference: conf/defaults.ini:53-60

Authentication Security

Disable Default Admin

Change default admin credentials immediately:
Reference: conf/defaults.ini:374-384

Enforce Strong Passwords

Reference: conf/defaults.ini:950-959

Disable Anonymous Access

Use External Authentication

Prefer external authentication over basic auth:
  • OAuth 2.0 with your identity provider
  • LDAP/Active Directory integration
  • SAML single sign-on
  • JWT authentication

Enable Login Protection

Reference: conf/defaults.ini:402-411

OAuth Security

When using OAuth:

LDAP Security

Secure LDAP configuration:
Reference: pkg/services/ldap/settings.go:35-66

Authorization and Access Control

Principle of Least Privilege

Grant minimum necessary permissions:
  1. Use built-in roles appropriately
    • Viewer: Read-only access
    • Editor: Create/edit dashboards
    • Admin: Organization management
  2. Limit Grafana Admin role
    • Only for platform administrators
    • Avoid granting via OAuth/SAML
  3. Use teams for group permissions

Restrict Sensitive Permissions

Limit access to:
  • User management (users:write, users:delete)
  • Organization settings (orgs:write)
  • Datasource configuration (datasources:write)
  • Plugin installation (plugins:write)
  • LDAP configuration (ldap.config:reload)
Reference: pkg/services/accesscontrol/models.go:347-532

Disable Self-Registration

Organization Isolation

Use organizations to separate tenants:

Session Security

Session Configuration

Reference: conf/defaults.ini:387-417

Token Security

The authentication system manages tokens securely:
Reference: pkg/services/auth/auth.go:80-95

Session Limits

Limit concurrent sessions per user:
Reference: conf/defaults.ini:1296

Application Security

Security Headers

Enable all security headers:
Reference: conf/defaults.ini:435-446

Content Security Policy

Configure strict CSP:
Reference: conf/defaults.ini:448-451

CSRF Protection

Enable CSRF protection:
The CSRF middleware validates requests:
Reference: pkg/middleware/csrf/csrf.go:71-141

Input Validation

Grafana validates inputs to prevent:
  • SQL injection
  • Cross-site scripting (XSS)
  • Command injection
  • Path traversal

Action URL Validation

Restrict POST URLs in panel actions:
Reference: conf/defaults.ini:469 Implementation: pkg/middleware/validate_action_url.go

Data Protection

Secret Management

Use environment variables for secrets:

Encryption at Rest

Grafana encrypts sensitive data:
Reference: conf/defaults.ini:387-393 Encrypted data includes:
  • Datasource passwords
  • OAuth tokens
  • Alert notification credentials
  • Plugin secrets

Encryption Key Management

Reference: conf/defaults.ini:472-478

Database Security

Secure database connections:

Datasource Security

  1. Use proxy mode for datasources when possible
  2. Restrict datasource permissions
  3. Don’t store plaintext credentials in datasource configuration
  4. Use readonly database users for query datasources

Data Source Proxy Security

Reference: conf/defaults.ini:248-293

Plugin Security

Disable Unsigned Plugins

Restrict Plugin Installation

Limit who can install plugins:
Reference: pkg/middleware/auth.go:127-139

Plugin Sandboxing

Reference: conf/defaults.ini:466

Review Plugin Permissions

Before installing plugins:
  1. Check plugin signature
  2. Review source code (if possible)
  3. Verify plugin permissions
  4. Test in non-production environment

External Communication

Datasource Whitelist

Reference: conf/defaults.ini:399

External Image Rendering

Secure image renderer:

Alerting Security

  1. Validate notification URLs
  2. Use secure webhooks (HTTPS only)
  3. Authenticate alert notifications
  4. Rate limit alerts

Deployment Security

Run as Non-Root User

File Permissions

Container Security

Kubernetes Security

Monitoring and Auditing

Enable Audit Logging

Reference: conf/defaults.ini:1161-1203

Monitor Authentication

Track authentication events:
  • Failed login attempts
  • Password changes
  • Role changes
  • Permission modifications

Enable Metrics

Monitor security metrics:

Security Scanning

  1. Vulnerability scanning
  2. Dependency scanning
    • Monitor for CVEs in dependencies
    • Keep Grafana updated
    • Apply security patches promptly

Incident Response

Token Revocation

Revoke compromised tokens:
Implementation: pkg/services/auth/auth.go:90-91

Password Reset

Security Breach Response

  1. Isolate affected systems
  2. Revoke all active sessions
  3. Rotate encryption keys
  4. Review access logs
  5. Update credentials
  6. Apply patches
  7. Notify stakeholders

Compliance

GDPR Compliance

  • Implement data retention policies
  • Enable user data export
  • Provide data deletion capabilities
  • Log data access

SOC 2 Compliance

  • Enable audit logging
  • Implement access controls
  • Use encryption in transit and at rest
  • Regular security reviews

HIPAA Compliance

  • Encrypt all data
  • Implement access controls
  • Enable comprehensive audit logging
  • Regular risk assessments

Regular Maintenance

Security Checklist

  • Keep Grafana updated
  • Review and rotate credentials quarterly
  • Audit user permissions monthly
  • Review access logs weekly
  • Test backup restoration monthly
  • Update TLS certificates before expiration
  • Review and update security policies annually
  • Conduct security training for users
  • Test incident response procedures
  • Scan for vulnerabilities regularly

Update Process

  1. Test updates in non-production environment
  2. Review changelog for security fixes
  3. Backup configuration and data
  4. Apply update during maintenance window
  5. Verify functionality
  6. Monitor for issues

Security Resources

Grafana Security

Security Standards