Grafana configuration hardening security checks
Vendor-recommended secure defaults, patch levels and housekeeping settings that drift as tenants grow and admins change.
On Grafana, Black Cat runs 12 checks in this area on every scan. Each one below lists its severity, how to fix it, and the compliance controls it satisfies where a control applies. See what access the Grafana connector needs.
Checks (12)
severity: high Direct Access Data Source fix difficulty: easy #
Switch the data source access mode from Direct (browser) to Server (proxy) to prevent credential exposure
- Sign in to Grafana as an Org Admin
- Navigate to Connections > Data sources in the left sidebar
- Click the data source flagged with Direct access mode
- In the HTTP section, change the Access field from "Browser" to "Server"
- Click "Save & test" to verify the data source remains reachable through the Grafana server proxy
- Confirm that existing dashboards continue to display data correctly
Satisfies: ISO 27001:2022 A.8.9 SOC 2 Type II CC6.1 CIS Controls v8 CIS-04.1 NIST CSF 2.0 PR.IP GDPR (SaaS Security) GDPR-25.1 HIPAA (SaaS Security) HIPAA-308.a1 NIS2 Directive NIS2-21.e.4 DORA (SaaS Security) DORA-9.10
severity: medium Data Source Basic Auth fix difficulty: medium #
Replace basic authentication on the data source with a token or certificate-based method
- Sign in to Grafana as an Org Admin
- Navigate to Connections > Data sources in the left sidebar
- Click the data source using basic auth
- Disable the "Basic auth" toggle in the Auth section
- Enable an alternative authentication method supported by the backend (e.g. API key header, TLS client certificate, or bearer token via custom headers)
- Click "Save & test" to confirm the new auth method works
Satisfies: ISO 27001:2022 A.8.9 SOC 2 Type II CC6.1 CIS Controls v8 CIS-04.1 NIST CSF 2.0 PR.IP GDPR (SaaS Security) GDPR-25.1 HIPAA (SaaS Security) HIPAA-308.a1 NIS2 Directive NIS2-21.e.4 DORA (SaaS Security) DORA-9.10
severity: high Data Source TLS Skip Verify fix difficulty: medium #
Enable TLS certificate verification on the data source to prevent man-in-the-middle attacks
- Sign in to Grafana as an Org Admin
- Navigate to Connections > Data sources in the left sidebar
- Click the data source with TLS verification disabled
- Expand the TLS / SSL settings section
- Uncheck or disable the "Skip TLS verify" option
- If the backend uses a self-signed or internal CA certificate, upload the CA certificate in the CA Cert field instead
- Click "Save & test" to confirm the data source connects successfully with verification enabled
Satisfies: ISO 27001:2022 A.8.9 SOC 2 Type II CC6.1 CIS Controls v8 CIS-04.1 NIST CSF 2.0 PR.IP GDPR (SaaS Security) GDPR-5.1f.iii HIPAA (SaaS Security) HIPAA-308.a1 NIS2 Directive NIS2-21.e.4 DORA (SaaS Security) DORA-9.10
severity: medium Data Source With Credentials fix difficulty: easy #
Disable the "With Credentials" option to prevent browser cookies from being forwarded to the data source
- Sign in to Grafana as an Org Admin
- Navigate to Connections > Data sources in the left sidebar
- Click the data source with credentials forwarding enabled
- In the Auth section, locate the "With Credentials" toggle
- Disable the "With Credentials" option
- Click "Save & test" to confirm the data source still operates correctly without credential forwarding
Satisfies: ISO 27001:2022 A.8.9 SOC 2 Type II CC6.1 CIS Controls v8 CIS-04.1 NIST CSF 2.0 PR.IP GDPR (SaaS Security) GDPR-25.1 HIPAA (SaaS Security) HIPAA-308.a1 NIS2 Directive NIS2-21.e.4 DORA (SaaS Security) DORA-9.10
severity: medium No Alert Rules Configured fix difficulty: medium #
Configure Grafana alert rules to monitor critical system and security conditions
- Sign in to Grafana as an Org Admin or Editor
- Navigate to Alerting > Alert rules in the left sidebar
- Click "New alert rule"
- Define query conditions covering key metrics (e.g. error rates, latency, resource saturation)
- Set appropriate thresholds and evaluation intervals
- Assign the rule to a contact point and notification policy, then save and enable it
Satisfies: ISO 27001:2022 A.8.9 SOC 2 Type II CC6.1 CIS Controls v8 CIS-04.1 NIST CSF 2.0 PR.IP GDPR (SaaS Security) GDPR-32.1d HIPAA (SaaS Security) HIPAA-308.a1 NIS2 Directive NIS2-21.e.4 DORA (SaaS Security) DORA-9.10
severity: medium External Contact Point fix difficulty: easy #
Review and validate all external alert contact points to ensure notifications reach authorised destinations
- Sign in to Grafana as an Org Admin
- Navigate to Alerting > Contact points in the left sidebar
- Review each contact point that sends to an external destination (email, Slack, PagerDuty, webhook, etc.)
- Verify that each destination is an approved, organisation-controlled endpoint
- Remove or update any contact points pointing to unknown, personal, or unauthorised addresses
- Test each retained contact point using the "Test" button to confirm delivery
Satisfies: ISO 27001:2022 A.8.9 SOC 2 Type II CC6.1 CIS Controls v8 CIS-04.1 NIST CSF 2.0 PR.IP GDPR (SaaS Security) GDPR-33.2 HIPAA (SaaS Security) HIPAA-308.a1 NIS2 Directive NIS2-21.e.4 DORA (SaaS Security) DORA-9.10
severity: high Broad Mute Timing fix difficulty: easy #
Narrow alert mute timings to specific maintenance windows to prevent alerts being silenced indefinitely
- Sign in to Grafana as an Org Admin
- Navigate to Alerting > Silences or Alerting > Notification policies in the left sidebar
- Identify mute timings or silences that cover excessively broad time ranges (e.g. always-on or multi-week windows)
- Edit each broad mute timing to restrict it to the actual maintenance window (specific days and hours)
- Remove or expire any silences that are no longer required
- Save changes and verify that alerting resumes outside the defined maintenance window
Satisfies: ISO 27001:2022 A.8.9 SOC 2 Type II CC6.1 CIS Controls v8 CIS-04.1 NIST CSF 2.0 PR.IP GDPR (SaaS Security) GDPR-25.1 HIPAA (SaaS Security) HIPAA-308.a1 NIS2 Directive NIS2-21.e.4 DORA (SaaS Security) DORA-9.10
severity: high Unsigned Plugin fix difficulty: medium #
Remove or replace unsigned plugins with signed alternatives to ensure supply-chain integrity
- Sign in to Grafana as a Server Admin
- Navigate to Administration > Plugins and data in the left sidebar
- Filter plugins by signature status to locate unsigned plugins
- Assess whether each unsigned plugin has an official signed version in the Grafana plugin catalogue
- Replace unsigned plugins with their signed equivalents, or remove them if no longer needed
- In grafana.ini, ensure allow_loading_unsigned_plugins is empty or not set, then restart Grafana
Satisfies: ISO 27001:2022 A.8.9 SOC 2 Type II CC6.1 CIS Controls v8 CIS-04.1 NIST CSF 2.0 PR.IP GDPR (SaaS Security) GDPR-25.1 HIPAA (SaaS Security) HIPAA-308.a1 NIS2 Directive NIS2-21.e.4 DORA (SaaS Security) DORA-9.10
severity: low Community Plugin fix difficulty: easy #
Review installed community plugins and prefer Grafana-signed or core alternatives where available
- Sign in to Grafana as a Server Admin
- Navigate to Administration > Plugins and data in the left sidebar
- Identify plugins with a "Community" signature level
- For each community plugin, check the Grafana plugin catalogue for a Grafana-signed or core replacement
- Assess the plugin's maintenance activity, last update date, and open security issues
- Replace with a signed alternative or remove the plugin if it is no longer necessary
Satisfies: ISO 27001:2022 A.8.9 SOC 2 Type II CC6.1 CIS Controls v8 CIS-04.1 NIST CSF 2.0 PR.IP GDPR (SaaS Security) GDPR-25.1 HIPAA (SaaS Security) HIPAA-308.a1 NIS2 Directive NIS2-21.e.4 DORA (SaaS Security) DORA-9.10
severity: medium Outdated Plugin fix difficulty: easy #
Update all installed Grafana plugins to their latest available versions to receive security patches
- Sign in to Grafana as a Server Admin
- Navigate to Administration > Plugins and data in the left sidebar
- Look for plugins that show an available update (indicated by an "Update" badge)
- Click each outdated plugin and select "Update" to install the latest version
- Alternatively, use the Grafana CLI on the server host: grafana-cli plugins update-all
- Restart the Grafana service after CLI updates and verify plugins load correctly
Satisfies: ISO 27001:2022 A.8.9 SOC 2 Type II CC6.1 CIS Controls v8 CIS-04.1 NIST CSF 2.0 PR.IP GDPR (SaaS Security) GDPR-25.1 HIPAA (SaaS Security) HIPAA-308.a1 NIS2 Directive NIS2-21.e.4 DORA (SaaS Security) DORA-9.10
severity: medium Paused Alert Rules fix difficulty: easy #
Review and re-enable paused alert rules to ensure continuous monitoring coverage
- Sign in to Grafana as an Org Admin or Editor
- Navigate to Alerting > Alert rules
- Filter for paused rules
- Review each paused rule to determine if it should be re-enabled or deleted
- Re-enable rules that are still relevant
- Delete rules that are no longer needed
Satisfies: NIS2 Directive NIS2-21.e.4 DORA (SaaS Security) DORA-9.10
severity: high Alert Rules Without Contact Points fix difficulty: easy #
Configure at least one contact point to ensure alert notifications are delivered
- Sign in to Grafana as an Org Admin
- Navigate to Alerting > Contact points
- Click "Add contact point"
- Select a delivery type (email, Slack, PagerDuty, etc.)
- Fill in the required configuration fields
- Test the contact point using the "Test" button
- Assign it to a notification policy
Satisfies: NIS2 Directive NIS2-21.e.4 DORA (SaaS Security) DORA-9.10