maxuru ~ % cat grafana/disable-external-snapshots
Disable Grafana external snapshot publishing
/etc/grafana/grafana.ini[snapshots]external_enabled = falseWhat is enabled by default
Section titled “What is enabled by default”From defaults.ini:
[snapshots]enabled = trueexternal_enabled = trueexternal_snapshot_url = https://snapshots.raintank.ioexternal_snapshot_name = Publish to snapshots.raintank.ioA Grafana snapshot captures a dashboard together with the data currently in it — the point being that it renders without needing the original data source. It is a genuinely useful feature for sharing a moment in time with someone who cannot query your backends.
external_enabled = true adds a second button that uploads that snapshot to
a public server run by Grafana Labs, and returns a URL. Anyone with the link
can view it.
Unlike most items on this checklist, this is not a default that is fine until someone breaks it. It is a data-egress path that is on out of the box, and the person who uses it is a normal user doing something the interface offered.
Why it is easy to do by accident
Section titled “Why it is easy to do by accident”The publish button sits next to the local share option in the same dialog. The distinction between “snapshot” and “publish snapshot to snapshots.raintank.io” is one line of text, and the second is faster for the thing people usually want — sending a colleague a link that works.
What actually leaves is the panel data: hostnames, service names, error rates, request volumes, query results, whatever was on screen. On an infrastructure dashboard that is an inventory of your estate. It is also, in most organisations, an unreviewed transfer of operational data to a third party, and that is a compliance question as much as a security one.
The snapshot URL is unguessable rather than protected — there is no authentication in front of it. Deleting a published snapshot requires the delete key returned at creation time, which the person who published it usually did not keep.
Keep local snapshots
Section titled “Keep local snapshots”Setting external_enabled = false removes the publish-externally button and
leaves ordinary snapshots working. Users can still snapshot a dashboard and
share it within your Grafana, which covers the legitimate need without the
egress.
Turn snapshots off entirely only if you have a specific reason:
[snapshots]enabled = falseNote that local snapshots are still visible to anyone who can log in and are not scoped by dashboard permissions in the way people assume — so they are a sharing feature, not a secure one.
Self-hosting the external server
Section titled “Self-hosting the external server”If teams genuinely need shareable-outside links, point the feature at infrastructure you control rather than removing it:
[snapshots]external_enabled = trueexternal_snapshot_url = https://snapshots.internal.example.comexternal_snapshot_name = Publish to internal snapshot serverThe name string is what appears on the button, so make it say where the data is going. That single change turns an invisible third-party upload into a visible internal one.
Related
Section titled “Related”- Grafana anonymous access is already off — the other way dashboards reach people without a login.
- Restrict data source permissions — limiting what ends up in a panel in the first place.