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
-
Bind to specific interfaces
-
Use firewall rules
-
Deploy behind reverse proxy
- Use nginx, Apache, or cloud load balancers
- Terminate TLS at the proxy
- Add security headers
Domain and Origin Validation
conf/defaults.ini:53-60
Authentication Security
Disable Default Admin
Change default admin credentials immediately:conf/defaults.ini:374-384
Enforce Strong Passwords
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
conf/defaults.ini:402-411
OAuth Security
When using OAuth:LDAP Security
Secure LDAP configuration:pkg/services/ldap/settings.go:35-66
Authorization and Access Control
Principle of Least Privilege
Grant minimum necessary permissions:-
Use built-in roles appropriately
- Viewer: Read-only access
- Editor: Create/edit dashboards
- Admin: Organization management
-
Limit Grafana Admin role
- Only for platform administrators
- Avoid granting via OAuth/SAML
-
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)
pkg/services/accesscontrol/models.go:347-532
Disable Self-Registration
Organization Isolation
Use organizations to separate tenants:Session Security
Session Configuration
conf/defaults.ini:387-417
Token Security
The authentication system manages tokens securely:pkg/services/auth/auth.go:80-95
Session Limits
Limit concurrent sessions per user:conf/defaults.ini:1296
Application Security
Security Headers
Enable all security headers:conf/defaults.ini:435-446
Content Security Policy
Configure strict CSP:conf/defaults.ini:448-451
CSRF Protection
Enable CSRF protection: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: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:conf/defaults.ini:387-393
Encrypted data includes:
- Datasource passwords
- OAuth tokens
- Alert notification credentials
- Plugin secrets
Encryption Key Management
conf/defaults.ini:472-478
Database Security
Secure database connections:Datasource Security
- Use proxy mode for datasources when possible
- Restrict datasource permissions
- Don’t store plaintext credentials in datasource configuration
- Use readonly database users for query datasources
Data Source Proxy Security
conf/defaults.ini:248-293
Plugin Security
Disable Unsigned Plugins
Restrict Plugin Installation
Limit who can install plugins:pkg/middleware/auth.go:127-139
Plugin Sandboxing
conf/defaults.ini:466
Review Plugin Permissions
Before installing plugins:- Check plugin signature
- Review source code (if possible)
- Verify plugin permissions
- Test in non-production environment
External Communication
Datasource Whitelist
conf/defaults.ini:399
External Image Rendering
Secure image renderer:Alerting Security
- Validate notification URLs
- Use secure webhooks (HTTPS only)
- Authenticate alert notifications
- Rate limit alerts
Deployment Security
Run as Non-Root User
File Permissions
Container Security
Kubernetes Security
Monitoring and Auditing
Enable Audit Logging
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
-
Vulnerability scanning
-
Dependency scanning
- Monitor for CVEs in dependencies
- Keep Grafana updated
- Apply security patches promptly
Incident Response
Token Revocation
Revoke compromised tokens:pkg/services/auth/auth.go:90-91
Password Reset
Security Breach Response
- Isolate affected systems
- Revoke all active sessions
- Rotate encryption keys
- Review access logs
- Update credentials
- Apply patches
- 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
- Test updates in non-production environment
- Review changelog for security fixes
- Backup configuration and data
- Apply update during maintenance window
- Verify functionality
- Monitor for issues
Security Resources
Grafana Security
- Security advisories: https://grafana.com/security
- Security policy: https://github.com/grafana/grafana/security/policy
- Report vulnerabilities: security@grafana.com
Security Standards
- OWASP Top 10: https://owasp.org/Top10/
- CIS Benchmarks: https://www.cisecurity.org/
- NIST Guidelines: https://www.nist.gov/cyberframework
Related Topics
- Authentication - Configure authentication methods
- Authorization - Role-based access control
- TLS/SSL Configuration - Secure communication
- High Availability - Resilient deployments