<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Grafana Enterprise on Grafana Labs</title><link>https://grafana.com/docs/grafana/v8.2/enterprise/</link><description>Recent content in Grafana Enterprise on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/grafana/v8.2/enterprise/index.xml" rel="self" type="application/rss+xml"/><item><title>Grafana Enterprise license</title><link>https://grafana.com/docs/grafana/v8.2/enterprise/license/</link><pubDate>Fri, 03 Apr 2026 20:44:05 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.2/enterprise/license/</guid><content><![CDATA[&lt;h1 id=&#34;grafana-enterprise-license&#34;&gt;Grafana Enterprise license&lt;/h1&gt;
&lt;p&gt;To run Grafana Enterprise, you need a valid license. &lt;a href=&#34;/contact?about=grafana-enterprise&#34;&gt;Contact a Grafana Labs representative&lt;/a&gt; to obtain the license. For information on how to activate your license, refer to &lt;a href=&#34;activate-license/&#34;&gt;Activate an Enterprise license&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;See also:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;license-expiration/&#34;&gt;License expiration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;license-restrictions/&#34;&gt;License restrictions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="grafana-enterprise-license">Grafana Enterprise license&lt;/h1>
&lt;p>To run Grafana Enterprise, you need a valid license. &lt;a href="/contact?about=grafana-enterprise">Contact a Grafana Labs representative&lt;/a> to obtain the license. For information on how to activate your license, refer to &lt;a href="activate-license/">Activate an Enterprise license&lt;/a>.&lt;/p></description></item><item><title>Fine-grained access control</title><link>https://grafana.com/docs/grafana/v8.2/enterprise/access-control/</link><pubDate>Fri, 03 Apr 2026 20:44:05 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.2/enterprise/access-control/</guid><content><![CDATA[&lt;h1 id=&#34;fine-grained-access-control&#34;&gt;Fine-grained access control&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Fine-grained access control is in beta, and you can expect changes in future releases.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Fine-grained access control provides a standardized way of granting, changing, and revoking access when it comes to viewing and modifying Grafana resources, such as users and reports.
Fine-grained access control works alongside the current &lt;a href=&#34;../../permissions/&#34;&gt;Grafana permissions&lt;/a&gt;, and it allows you granular control of users’ actions.&lt;/p&gt;
&lt;p&gt;To learn more about how fine-grained access control works, refer to &lt;a href=&#34;roles/&#34;&gt;Roles&lt;/a&gt; and &lt;a href=&#34;permissions/&#34;&gt;Permissions&lt;/a&gt;.
To use the fine-grained access control system, refer to &lt;a href=&#34;usage-scenarios/&#34;&gt;Fine-grained access control usage scenarios&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;access-management&#34;&gt;Access management&lt;/h2&gt;
&lt;p&gt;Fine-grained access control considers a) &lt;em&gt;who&lt;/em&gt; has an access (&lt;code&gt;identity&lt;/code&gt;), and b) &lt;em&gt;what they can do&lt;/em&gt; and on which &lt;em&gt;Grafana resource&lt;/em&gt; (&lt;code&gt;role&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;You can grant, change, or revoke access to &lt;em&gt;users&lt;/em&gt; (&lt;code&gt;identity&lt;/code&gt;). When an authenticated user tries to access a Grafana resource, the authorization system checks the required fine-grained permissions for the resource and determines whether or not the action is allowed. Refer to &lt;a href=&#34;permissions/&#34;&gt;Fine-grained permissions&lt;/a&gt; for a complete list of available permissions.&lt;/p&gt;
&lt;p&gt;To grant or revoke access to your users, create or remove built-in role assignments. For more information, refer to &lt;a href=&#34;roles/#built-in-role-assignments&#34;&gt;Built-in role assignments&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;resources-with-fine-grained-permissions&#34;&gt;Resources with fine-grained permissions&lt;/h2&gt;
&lt;p&gt;Fine-grained access control is currently available for &lt;a href=&#34;../reporting/&#34;&gt;Reporting&lt;/a&gt; and &lt;a href=&#34;../../manage-users/&#34;&gt;Managing Users&lt;/a&gt;.
To learn more about specific endpoints where you can use access control, refer to &lt;a href=&#34;permissions/&#34;&gt;Permissions&lt;/a&gt; and to the relevant API guide:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../http_api/access_control/&#34;&gt;Fine-grained access control API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../http_api/admin/&#34;&gt;Admin API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../http_api/org/&#34;&gt;Organization API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../http_api/reporting/&#34;&gt;Reporting API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../http_api/user/&#34;&gt;User API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;enable-fine-grained-access-control&#34;&gt;Enable fine-grained access control&lt;/h2&gt;
&lt;p&gt;Fine-grained access control is available behind the &lt;code&gt;accesscontrol&lt;/code&gt; feature toggle in Grafana Enterprise 8.0&#43;.
You can enable it either in a &lt;a href=&#34;../../administration/configuration/#config-file-locations&#34;&gt;config file&lt;/a&gt; or by &lt;a href=&#34;../../administration/configuration/#configure-with-environment-variables&#34;&gt;configuring an environment variable&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;enable-in-config-file&#34;&gt;Enable in config file&lt;/h3&gt;
&lt;p&gt;In your &lt;a href=&#34;../../administration/configuration/#config-file-locations&#34;&gt;config file&lt;/a&gt;, add &lt;code&gt;accesscontrol&lt;/code&gt; as a &lt;a href=&#34;../../administration/configuration/#feature_toggle&#34;&gt;feature_toggle&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;[feature_toggles]
# enable features, separated by spaces
enable = accesscontrol&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;enable-with-an-environment-variable&#34;&gt;Enable with an environment variable&lt;/h3&gt;
&lt;p&gt;You can use &lt;code&gt;GF_FEATURE_TOGGLES_ENABLE = accesscontrol&lt;/code&gt; environment variable to override the config file configuration and enable fine-grained access control.&lt;/p&gt;
&lt;p&gt;Refer to &lt;a href=&#34;../../administration/configuration/#configure-with-environment-variables&#34;&gt;Configuring with environment variables&lt;/a&gt; for more information.&lt;/p&gt;
&lt;h3 id=&#34;verify-if-enabled&#34;&gt;Verify if enabled&lt;/h3&gt;
&lt;p&gt;You can verify if fine-grained access control is enabled or not by sending an HTTP request to the &lt;a href=&#34;../../http_api/access_control/#check-if-enabled&#34;&gt;Check endpoint&lt;/a&gt;.&lt;/p&gt;
]]></content><description>&lt;h1 id="fine-grained-access-control">Fine-grained access control&lt;/h1>
&lt;blockquote>
&lt;p>&lt;strong>Note:&lt;/strong> Fine-grained access control is in beta, and you can expect changes in future releases.&lt;/p>&lt;/blockquote>
&lt;p>Fine-grained access control provides a standardized way of granting, changing, and revoking access when it comes to viewing and modifying Grafana resources, such as users and reports.
Fine-grained access control works alongside the current &lt;a href="../../permissions/">Grafana permissions&lt;/a>, and it allows you granular control of users’ actions.&lt;/p></description></item><item><title>Usage insights</title><link>https://grafana.com/docs/grafana/v8.2/enterprise/usage-insights/</link><pubDate>Fri, 03 Apr 2026 20:44:05 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.2/enterprise/usage-insights/</guid><content><![CDATA[&lt;h1 id=&#34;usage-insights&#34;&gt;Usage insights&lt;/h1&gt;
&lt;p&gt;Usage insights allow you to have a better understanding of how your Grafana instance is used.&lt;/p&gt;
&lt;p&gt;The usage insights feature collects a number of aggregated data and stores them in the database:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dashboard views (aggregated and per user)&lt;/li&gt;
&lt;li&gt;Data source errors&lt;/li&gt;
&lt;li&gt;Data source queries&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These aggregated data give you access to several features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;dashboard-datasource-insights/&#34;&gt;Dashboard and data source insights&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;presence-indicator/&#34;&gt;Presence indicator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;improved-search/&#34;&gt;Sort dashboards by using insights data&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This feature also generates detailed logs that can be exported to Loki. Refer to &lt;a href=&#34;export-logs/&#34;&gt;Export logs of usage insights&lt;/a&gt;.&lt;/p&gt;
]]></content><description>&lt;h1 id="usage-insights">Usage insights&lt;/h1>
&lt;p>Usage insights allow you to have a better understanding of how your Grafana instance is used.&lt;/p>
&lt;p>The usage insights feature collects a number of aggregated data and stores them in the database:&lt;/p></description></item><item><title>Query caching</title><link>https://grafana.com/docs/grafana/v8.2/enterprise/query-caching/</link><pubDate>Fri, 03 Apr 2026 20:44:05 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.2/enterprise/query-caching/</guid><content><![CDATA[&lt;h1 id=&#34;query-caching&#34;&gt;Query caching&lt;/h1&gt;
&lt;p&gt;When query caching is enabled, Grafana temporarily stores the results of data source queries. When you or another user submit the exact same query again, the results will come back from the cache instead of from the data source (like Splunk or ServiceNow) itself.&lt;/p&gt;
&lt;p&gt;Query caching works for all backend data sources, and queries sent through the data source proxy. You can enable the cache globally and configure the cache duration (also called Time to Live, or TTL).&lt;/p&gt;
&lt;p&gt;The following cache backends are available: in-memory, Redis, and Memcached.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Storing cached queries in-memory can increase Grafana&amp;rsquo;s memory footprint. In production environments, a Redis or Memcached backend is highly recommended.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;When a panel queries a cached data source, the time until this query fetches fresh data is determined by the panel&amp;rsquo;s &lt;strong&gt;interval.&lt;/strong&gt; This means that wider panels and dashboards with shorter time ranges fetch new data more frequently than narrower panels and dashboards with longer time ranges.&lt;/p&gt;
&lt;p&gt;Interval is visible in a panel&amp;rsquo;s &lt;a href=&#34;../../panels/queries/#query-options&#34;&gt;query options&lt;/a&gt;. It is calculated like this: &lt;code&gt;(max data points) / time range&lt;/code&gt;. Max data points are calculated based on the width of the panel. For example, a full-width panel on a dashboard with a time range of &lt;code&gt;last 7 days&lt;/code&gt; will retrieve fresh data every 10 minutes. In this example, cached data for this panel will be served for up to 10 minutes before Grafana queries the data source again and returns new data.&lt;/p&gt;
&lt;p&gt;You can make a panel retrieve fresh data more frequently by increasing the &lt;strong&gt;Max data points&lt;/strong&gt; setting in the panel&amp;rsquo;s &lt;a href=&#34;../../panels/queries/#query-options&#34;&gt;query options&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;query-caching-benefits&#34;&gt;Query caching benefits&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Faster dashboard load times, especially for popular dashboards.&lt;/li&gt;
&lt;li&gt;Reduced API costs.&lt;/li&gt;
&lt;li&gt;Reduced likelihood that APIs will rate-limit or throttle requests.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;data-sources-that-work-with-query-caching&#34;&gt;Data sources that work with query caching&lt;/h2&gt;
&lt;p&gt;Query caching works for all &lt;a href=&#34;/grafana/plugins/?type=datasource&amp;amp;enterprise=1&#34;&gt;Enterprise data sources&lt;/a&gt;, and it works for the following &lt;a href=&#34;../../datasources/&#34;&gt;built-in data sources&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CloudWatch Metrics&lt;/li&gt;
&lt;li&gt;Google Cloud Monitoring&lt;/li&gt;
&lt;li&gt;InfluxDB&lt;/li&gt;
&lt;li&gt;Microsoft SQL Server&lt;/li&gt;
&lt;li&gt;MySQL&lt;/li&gt;
&lt;li&gt;Postgres&lt;/li&gt;
&lt;li&gt;Tempo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some data sources, such as Elasticsearch, Prometheus, and Loki, cache queries themselves, so Grafana query caching does not improve performance.&lt;/p&gt;
&lt;p&gt;Query caching also works for all data sources that include a backend. More specifically, caching works with data sources that extend the &lt;code&gt;DataSourceWithBackend&lt;/code&gt; class in the plugins SDK.&lt;/p&gt;
&lt;p&gt;To tell if a data source works with query caching, follow the instructions below to &lt;strong&gt;Enable and Configure query caching&lt;/strong&gt;. If caching is enabled in Grafana but the Caching tab is not visible for the given data source, then query caching is not available for that data source.&lt;/p&gt;
&lt;h2 id=&#34;enable-and-configure-query-caching&#34;&gt;Enable and configure query caching&lt;/h2&gt;
&lt;p&gt;You must be an Org admin or Grafana admin to enable query caching for a data source. For more information on Grafana roles and permissions, visit the &lt;a href=&#34;../../permissions/&#34;&gt;Permissions page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;By default, data source queries are not cached. To enable query caching for a single data source:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;On the side menu, click Configuration &amp;gt; Data Sources.&lt;/li&gt;
&lt;li&gt;In the data source list, click the data source that you want to turn on caching for.&lt;/li&gt;
&lt;li&gt;In the Cache tab, click Enable.&lt;/li&gt;
&lt;li&gt;Open the Cache tab.&lt;/li&gt;
&lt;li&gt;Press the Enable button.&lt;/li&gt;
&lt;li&gt;(Optional) Choose a custom TTL for that data source. If you skip this step, then Grafana uses the default TTL.&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If query caching is enabled and the Cache tab is not visible in a data source&amp;rsquo;s settings, then query caching is not available for that data source.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;To configure global settings for query caching, refer the the &lt;a href=&#34;../enterprise-configuration/#caching&#34;&gt;Query caching section of Enterprise Configuration&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;disable-query-caching&#34;&gt;Disable query caching&lt;/h2&gt;
&lt;p&gt;To disable query caching for a single data source:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;On the side menu, click Configuration &amp;gt; Data Sources.&lt;/li&gt;
&lt;li&gt;In the data source list, click the data source that you want to turn off caching for.&lt;/li&gt;
&lt;li&gt;In the Cache tab, click Disable.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To disable query caching for an entire Grafana instance, set the &lt;code&gt;enabled&lt;/code&gt; flag to &lt;code&gt;false&lt;/code&gt; in the &lt;a href=&#34;../enterprise-configuration/#caching&#34;&gt;Query caching section of Enterprise Configuration&lt;/a&gt;. You will no longer see the Cache tab on any data sources, and no data source queries will be cached.&lt;/p&gt;
&lt;h2 id=&#34;sending-a-request-without-cache&#34;&gt;Sending a request without cache&lt;/h2&gt;
&lt;p&gt;If a data source query request contains an &lt;code&gt;X-Cache-Skip&lt;/code&gt; header, then Grafana skips the caching middleware, and does not search the cache for a response. This can be particularly useful when debugging data source queries using cURL.&lt;/p&gt;
]]></content><description>&lt;h1 id="query-caching">Query caching&lt;/h1>
&lt;p>When query caching is enabled, Grafana temporarily stores the results of data source queries. When you or another user submit the exact same query again, the results will come back from the cache instead of from the data source (like Splunk or ServiceNow) itself.&lt;/p></description></item><item><title>Request security</title><link>https://grafana.com/docs/grafana/v8.2/enterprise/request-security/</link><pubDate>Fri, 03 Apr 2026 20:44:05 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.2/enterprise/request-security/</guid><content><![CDATA[&lt;h1 id=&#34;request-security&#34;&gt;Request security&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Available in Grafana Enterprise v7.4 and later versions.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Request security makes it possible to limit requests from the Grafana server, and it targets requests that are generated by users.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Data source metric queries&lt;/li&gt;
&lt;li&gt;Alert notifications&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This can be used to limit access to internal systems that the server Grafana runs on can access but that users of Grafana should not be able to access. This feature does not affect traffic from the Grafana users browser.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Although request security works with backend plugins, you can create a backend plugin that bypasses this security.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;ip-and-hostname-blocking&#34;&gt;IP and hostname blocking&lt;/h2&gt;
&lt;p&gt;You can limit requests based on a hostname, an IP address, or both.&lt;/p&gt;
&lt;h3 id=&#34;deny-list&#34;&gt;Deny list&lt;/h3&gt;
&lt;p&gt;Grafana blocks any request to a hostname or IP address on the deny list.&lt;/p&gt;
&lt;h3 id=&#34;allow-list&#34;&gt;Allow list&lt;/h3&gt;
&lt;p&gt;If there is at least one entry on the list, then any request to a hostname or IP address not on the list is denied.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;toml&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-toml&#34;&gt;[security.egress]
# A list of hostnames or IP addresses separated by spaces for which requests are blocked.
host_deny_list = supersecret.internal 192.168.1.10
# a list of hostnames or IP addresses separated by spaces for which requests will be allowed, all other requests will be blocked
host_allow_list = prometheus.internal&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;drop-headers-and-cookies&#34;&gt;Drop headers and cookies&lt;/h2&gt;
&lt;p&gt;You can set a list of cookies or headers that are to be dropped from outgoing requests.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;toml&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-toml&#34;&gt;[security.egress]
# a list of headers that will be stripped from outgoing datasource and alerting requests
header_drop_list = user
# a list of cookies that will be stripped from outgoing datasource requests (case sensitive)
cookie_drop_list = session_id&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="request-security">Request security&lt;/h1>
&lt;blockquote>
&lt;p>&lt;strong>Note:&lt;/strong> Available in Grafana Enterprise v7.4 and later versions.&lt;/p>&lt;/blockquote>
&lt;p>Request security makes it possible to limit requests from the Grafana server, and it targets requests that are generated by users.&lt;/p></description></item><item><title>Data source permissions</title><link>https://grafana.com/docs/grafana/v8.2/enterprise/datasource_permissions/</link><pubDate>Fri, 03 Apr 2026 20:44:05 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.2/enterprise/datasource_permissions/</guid><content><![CDATA[&lt;h1 id=&#34;data-source-permissions&#34;&gt;Data source permissions&lt;/h1&gt;
&lt;p&gt;Data source permissions allow you to restrict access for users to query a data source. For each data source there is a permission page that allows you to enable permissions and restrict query permissions to specific &lt;strong&gt;Users&lt;/strong&gt; and &lt;strong&gt;Teams&lt;/strong&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Only available in Grafana Enterprise.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;enable-data-source-permissions&#34;&gt;Enable data source permissions&lt;/h2&gt;
&lt;div class=&#34;screenshot&#34; style=&#34;max-width:600px&#34;&gt;
  &lt;a href=&#34;/static/img/docs/enterprise/datasource_permissions_enable.gif&#34; title=&#34;&#34;&gt;
    &lt;img alt=&#34;&#34; src=&#34;data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==&#34;
         data-src=&#34;/static/img/docs/enterprise/datasource_permissions_enable_still.png&#34; class=&#34;screenshot__still lazyload&#34;&gt;
    &lt;img alt=&#34;&#34; src=&#34;/static/img/docs/enterprise/datasource_permissions_enable.gif&#34; class=&#34;screenshot__animated-gif&#34;&gt;
    &lt;div class=&#34;screenshot__play&#34;&gt;
      &lt;i class=&#34;fa fa-play&#34;&gt;&lt;/i&gt;
    &lt;/div&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;By default, data sources in an organization can be queried by any user in that organization. For example, a user with the &lt;code&gt;Viewer&lt;/code&gt; role can issue any possible query to a data source, not just
queries that exist on dashboards they have access to.&lt;/p&gt;
&lt;p&gt;When permissions are enabled for a data source in an organization, you restrict admin and query access for that data source to &lt;a href=&#34;../../permissions/organization_roles/#admin-role&#34;&gt;admin users&lt;/a&gt; in that organization.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enable permissions for a data source:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Configuration &amp;gt; Data Sources&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select the data source you want to enable permissions for.&lt;/li&gt;
&lt;li&gt;On the Permissions tab, click &lt;strong&gt;Enable&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;clearfix&#34;&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Caution:&lt;/strong&gt; Enabling permissions for the default data source makes users not listed in the permissions unable to invoke queries. Panels using default data source will return &lt;code&gt;Access denied to data source&lt;/code&gt; error for those users.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;allow-users-and-teams-to-query-a-data-source&#34;&gt;Allow users and teams to query a data source&lt;/h2&gt;
&lt;div class=&#34;screenshot&#34; style=&#34;max-width:600px&#34;&gt;
  &lt;a href=&#34;/static/img/docs/enterprise/datasource_permissions_add.gif&#34; title=&#34;&#34;&gt;
    &lt;img alt=&#34;&#34; src=&#34;data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==&#34;
         data-src=&#34;/static/img/docs/enterprise/datasource_permissions_add_still.png&#34; class=&#34;screenshot__still lazyload&#34;&gt;
    &lt;img alt=&#34;&#34; src=&#34;/static/img/docs/enterprise/datasource_permissions_add.gif&#34; class=&#34;screenshot__animated-gif&#34;&gt;
    &lt;div class=&#34;screenshot__play&#34;&gt;
      &lt;i class=&#34;fa fa-play&#34;&gt;&lt;/i&gt;
    &lt;/div&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;After you have enabled permissions for a data source you can assign query permissions to users and teams which will allow access to query the data source.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Assign query permission to users and teams:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Configuration &amp;gt; Data Sources&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select the data source you want to assign query permissions for.&lt;/li&gt;
&lt;li&gt;On the Permissions tab, click &lt;strong&gt;Add Permission&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Team&lt;/strong&gt; or &lt;strong&gt;User&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select the entity you want to allow query access and then click &lt;strong&gt;Save&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;clearfix&#34;&gt;&lt;/div&gt;
&lt;h2 id=&#34;disable-data-source-permissions&#34;&gt;Disable data source permissions&lt;/h2&gt;
&lt;div class=&#34;screenshot&#34; style=&#34;max-width:600px&#34;&gt;
  &lt;a href=&#34;/static/img/docs/enterprise/datasource_permissions_disable.gif&#34; title=&#34;&#34;&gt;
    &lt;img alt=&#34;&#34; src=&#34;data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==&#34;
         data-src=&#34;/static/img/docs/enterprise/datasource_permissions_disable_still.png&#34; class=&#34;screenshot__still lazyload&#34;&gt;
    &lt;img alt=&#34;&#34; src=&#34;/static/img/docs/enterprise/datasource_permissions_disable.gif&#34; class=&#34;screenshot__animated-gif&#34;&gt;
    &lt;div class=&#34;screenshot__play&#34;&gt;
      &lt;i class=&#34;fa fa-play&#34;&gt;&lt;/i&gt;
    &lt;/div&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;If you have enabled permissions for a data source and want to return data source permissions to the default, then you can disable permissions with a click of a button.&lt;/p&gt;
&lt;p&gt;Note that &lt;em&gt;all&lt;/em&gt; existing permissions created for the data source will be deleted.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disable permissions for a data source:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Configuration &amp;gt; Data Sources&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select the data source you want to disable permissions for.&lt;/li&gt;
&lt;li&gt;On the Permissions tab, click &lt;strong&gt;Disable Permissions&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;clearfix&#34;&gt;&lt;/div&gt;
]]></content><description>&lt;h1 id="data-source-permissions">Data source permissions&lt;/h1>
&lt;p>Data source permissions allow you to restrict access for users to query a data source. For each data source there is a permission page that allows you to enable permissions and restrict query permissions to specific &lt;strong>Users&lt;/strong> and &lt;strong>Teams&lt;/strong>.&lt;/p></description></item><item><title>Settings updates at runtime</title><link>https://grafana.com/docs/grafana/v8.2/enterprise/settings-updates/</link><pubDate>Fri, 03 Apr 2026 20:44:05 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.2/enterprise/settings-updates/</guid><content><![CDATA[&lt;h1 id=&#34;settings-updates-at-runtime&#34;&gt;Settings updates at runtime&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Available in Grafana Enterprise v8.0&#43;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Settings updates at runtime allows you to update Grafana settings with no need to restart the Grafana server.&lt;/p&gt;
&lt;p&gt;Updates that happen at runtime are stored in the database and override
&lt;a href=&#34;/docs/grafana/v8.2/administration/configuration/&#34;&gt;settings from the other sources&lt;/a&gt;
(arguments, environment variables, settings file, etc). Therefore, every time a specific setting key is removed at runtime,
the value used for that key is the inherited one from the other sources in the reverse order of precedence
(&lt;code&gt;arguments &amp;gt; environment variables &amp;gt; settings file&lt;/code&gt;), being the application default the value used when no one provided
through one of these, at least.&lt;/p&gt;
&lt;p&gt;Currently, &lt;strong&gt;it only supports updates on the &lt;code&gt;auth.saml&lt;/code&gt; section.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;update-settings-via-the-api&#34;&gt;Update settings via the API&lt;/h2&gt;
&lt;p&gt;You can update settings through the &lt;a href=&#34;../../http_api/admin/#update-settings&#34;&gt;Admin API&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When you submit a settings update via API, Grafana verifies if the given settings updates are allowed and valid. If they are, then Grafana stores the settings in the database and reloads
Grafana services with no need to restart the instance.&lt;/p&gt;
&lt;p&gt;So, the payload of a &lt;code&gt;PUT&lt;/code&gt; request to the update settings endpoint (&lt;code&gt;/api/admin/settings&lt;/code&gt;)
should contain (either one or both):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An &lt;code&gt;updates&lt;/code&gt; map with a key, and a value per section you want to set.&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;removals&lt;/code&gt; list with keys per section you want to unset.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, if you provide the following &lt;code&gt;updates&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;updates&amp;#34;: {
    &amp;#34;auth.saml&amp;#34;: {
      &amp;#34;enabled&amp;#34;: &amp;#34;true&amp;#34;,
      &amp;#34;single_logout&amp;#34;: &amp;#34;false&amp;#34;
    }
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;it would enable SAML and disable single logouts. And, if you provide the following &lt;code&gt;removals&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;auth.saml&amp;#34;: [&amp;#34;allow_idp_initiated&amp;#34;]
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;it would remove the key/value setting identified by &lt;code&gt;allow_idp_initiated&lt;/code&gt; within the &lt;code&gt;auth.saml&lt;/code&gt;.
So, the SAML service would be reloaded and that value would be inherited for either (settings &lt;code&gt;.ini&lt;/code&gt; file,
environment variable, command line arguments or any other accepted mechanism to provide configuration).&lt;/p&gt;
&lt;p&gt;Therefore, the complete HTTP payload would looks like:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;updates&amp;#34;: {
    &amp;#34;auth.saml&amp;#34;: {
      &amp;#34;enabled&amp;#34;: &amp;#34;true&amp;#34;,
      &amp;#34;single_logout&amp;#34;: &amp;#34;false&amp;#34;
    }
  },
  &amp;#34;removals&amp;#34;: {
    &amp;#34;auth.saml&amp;#34;: [&amp;#34;allow_idp_initiated&amp;#34;]
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;In case any of these settings cannot be overridden nor valid, it would return an error and these settings
won&amp;rsquo;t be persisted into the database.&lt;/p&gt;
&lt;h2 id=&#34;background-job-high-availability-set-ups&#34;&gt;Background job (high availability set-ups)&lt;/h2&gt;
&lt;p&gt;Grafana Enterprise has a built-in scheduled background job that looks into the database every minute for
settings updates. If there are updates, it reloads the Grafana services affected by the detected changes.&lt;/p&gt;
&lt;p&gt;The background job synchronizes settings between instances in high availability set-ups. So, after you perform some changes through the
HTTP API, then the other instances are synchronized through the database and the background job.&lt;/p&gt;
&lt;h2 id=&#34;control-access-with-fine-grained-access-control&#34;&gt;Control access with fine-grained access control&lt;/h2&gt;
&lt;p&gt;If you have &lt;a href=&#34;../access-control/&#34;&gt;Fine-grained access Control&lt;/a&gt; enabled, you can control who can read or update settings.
Refer to the &lt;a href=&#34;../../http_api/admin/#update-settings&#34;&gt;Admin API&lt;/a&gt; for more information.&lt;/p&gt;
]]></content><description>&lt;h1 id="settings-updates-at-runtime">Settings updates at runtime&lt;/h1>
&lt;blockquote>
&lt;p>&lt;strong>Note:&lt;/strong> Available in Grafana Enterprise v8.0+.&lt;/p>&lt;/blockquote>
&lt;p>Settings updates at runtime allows you to update Grafana settings with no need to restart the Grafana server.&lt;/p></description></item><item><title>Enhanced LDAP Integration</title><link>https://grafana.com/docs/grafana/v8.2/enterprise/enhanced_ldap/</link><pubDate>Fri, 03 Apr 2026 20:44:05 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.2/enterprise/enhanced_ldap/</guid><content><![CDATA[&lt;h1 id=&#34;enhanced-ldap-integration&#34;&gt;Enhanced LDAP integration&lt;/h1&gt;
&lt;p&gt;The enhanced LDAP integration adds additional functionality on top of the &lt;a href=&#34;../../auth/ldap/&#34;&gt;LDAP integration&lt;/a&gt; available in the open source edition of Grafana.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Enhanced LDAP integration is only available in &lt;a href=&#34;/docs/grafana-cloud/&#34;&gt;Grafana Cloud Advanced&lt;/a&gt; and in &lt;a href=&#34;../&#34;&gt;Grafana Enterprise&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Refer to &lt;a href=&#34;../access-control/&#34;&gt;Fine-grained access control&lt;/a&gt; in Grafana Enterprise to understand how you can control access with fine-grained permissions.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;ldap-group-synchronization-for-teams&#34;&gt;LDAP group synchronization for teams&lt;/h2&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow docs-image--right&#34;
    style=&#34;max-width: 600px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/enterprise/team_members_ldap.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/enterprise/team_members_ldap.png&#34;data-srcset=&#34;/static/img/docs/enterprise/team_members_ldap.png?w=320 320w, /static/img/docs/enterprise/team_members_ldap.png?w=550 550w, /static/img/docs/enterprise/team_members_ldap.png?w=750 750w, /static/img/docs/enterprise/team_members_ldap.png?w=900 900w, /static/img/docs/enterprise/team_members_ldap.png?w=1040 1040w, /static/img/docs/enterprise/team_members_ldap.png?w=1240 1240w, /static/img/docs/enterprise/team_members_ldap.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;979&#34;height=&#34;382&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/enterprise/team_members_ldap.png&#34;
            alt=&#34;&#34;width=&#34;979&#34;height=&#34;382&#34;class=&#34;docs-image--no-shadow docs-image--right&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;With enhanced LDAP integration, you can set up synchronization between LDAP groups and teams. This enables LDAP users that are members
of certain LDAP groups to automatically be added or removed as members to certain teams in Grafana.&lt;/p&gt;
&lt;p&gt;Grafana keeps track of all synchronized users in teams, and you can see which users have been synchronized from LDAP in the team members list, see &lt;code&gt;LDAP&lt;/code&gt; label in screenshot.
This mechanism allows Grafana to remove an existing synchronized user from a team when its LDAP group membership changes. This mechanism also allows you to manually add
a user as member of a team, and it will not be removed when the user signs in. This gives you flexibility to combine LDAP group memberships and Grafana team memberships.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;../team-sync/&#34;&gt;Learn more about team sync.&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;clearfix&#34;&gt;&lt;/div&gt;
&lt;h2 id=&#34;active-ldap-synchronization&#34;&gt;Active LDAP synchronization&lt;/h2&gt;
&lt;p&gt;In the open source version of Grafana, user data from LDAP is synchronized only during the login process when authenticating using LDAP.&lt;/p&gt;
&lt;p&gt;With active LDAP synchronization, available in Grafana Enterprise v6.3&#43;, you can configure Grafana to actively sync users with LDAP servers in the background. Only users that have logged into Grafana at least once are synchronized.&lt;/p&gt;
&lt;p&gt;Users with updated role and team membership will need to refresh the page to get access to the new features.&lt;/p&gt;
&lt;p&gt;Removed users are automatically logged out and their account disabled. These accounts are displayed in the Server Admin &amp;gt; Users page with a &lt;code&gt;disabled&lt;/code&gt; label. Disabled users keep their custom permissions on dashboards, folders, and data sources, so if you add them back in your LDAP database, they have access to the application with the same custom permissions as before.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;[auth.ldap]
...

# You can use the Cron syntax or several predefined schedulers -
# @yearly (or @annually) | Run once a year, midnight, Jan. 1st        | 0 0 0 1 1 *
# @monthly               | Run once a month, midnight, first of month | 0 0 0 1 * *
# @weekly                | Run once a week, midnight between Sat/Sun  | 0 0 0 * * 0
# @daily (or @midnight)  | Run once a day, midnight                   | 0 0 0 * * *
# @hourly                | Run once an hour, beginning of hour        | 0 0 * * * *
sync_cron = &amp;#34;0 0 1 * * *&amp;#34; # This is default value (At 1 am every day)
# This cron expression format uses 6 space-separated fields (including seconds), for example
# sync_cron = &amp;#34;* */10 * * * *&amp;#34;
# This will run the LDAP Synchronization every 10th minute, which is also the minimal interval between the Grafana sync times i.e. you cannot set it for every 9th minute

# You can also disable active LDAP synchronization
active_sync_enabled = true # enabled by default&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Single bind configuration (as in the &lt;a href=&#34;../../auth/ldap/#single-bind-example&#34;&gt;Single bind example&lt;/a&gt;) is not supported with active LDAP synchronization because Grafana needs user information to perform LDAP searches.&lt;/p&gt;
]]></content><description>&lt;h1 id="enhanced-ldap-integration">Enhanced LDAP integration&lt;/h1>
&lt;p>The enhanced LDAP integration adds additional functionality on top of the &lt;a href="../../auth/ldap/">LDAP integration&lt;/a> available in the open source edition of Grafana.&lt;/p>
&lt;blockquote>
&lt;p>Enhanced LDAP integration is only available in &lt;a href="/docs/grafana-cloud/">Grafana Cloud Advanced&lt;/a> and in &lt;a href="../">Grafana Enterprise&lt;/a>.&lt;/p></description></item><item><title>Enterprise configuration</title><link>https://grafana.com/docs/grafana/v8.2/enterprise/enterprise-configuration/</link><pubDate>Fri, 03 Apr 2026 20:44:05 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.2/enterprise/enterprise-configuration/</guid><content><![CDATA[&lt;h1 id=&#34;grafana-enterprise-configuration&#34;&gt;Grafana Enterprise configuration&lt;/h1&gt;
&lt;p&gt;This page describes Grafana Enterprise-specific configuration options that you can specify in a &lt;code&gt;.ini&lt;/code&gt; configuration file or using environment variables. Refer to &lt;a href=&#34;../../administration/configuration/&#34;&gt;Configuration&lt;/a&gt; for more information about available configuration options.&lt;/p&gt;
&lt;h2 id=&#34;enterprise&#34;&gt;[enterprise]&lt;/h2&gt;
&lt;h3 id=&#34;license_path&#34;&gt;license_path&lt;/h3&gt;
&lt;p&gt;Local filesystem path to Grafana Enterprise&amp;rsquo;s license file.
Defaults to &lt;code&gt;&amp;lt;paths.data&amp;gt;/license.jwt&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;license_text&#34;&gt;license_text&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Available in Grafana Enterprise v7.4&#43;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;When set to the text representation (i.e. content of the license file)
of the license, Grafana will evaluate and apply the given license to
the instance.&lt;/p&gt;
&lt;h3 id=&#34;auto_refresh_license&#34;&gt;auto_refresh_license&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Available in Grafana Enterprise v7.4&#43;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;When enabled, Grafana will send the license and usage statistics to
the license issuer. If the license has been updated on the issuer&amp;rsquo;s
side to be valid for a different number of users or a new duration,
your Grafana instance will be updated with the new terms
automatically. Defaults to &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;white_labeling&#34;&gt;[white_labeling]&lt;/h2&gt;
&lt;h3 id=&#34;app_title&#34;&gt;app_title&lt;/h3&gt;
&lt;p&gt;Set to your company name to override application title.&lt;/p&gt;
&lt;h3 id=&#34;login_logo&#34;&gt;login_logo&lt;/h3&gt;
&lt;p&gt;Set to complete URL to override login logo.&lt;/p&gt;
&lt;h3 id=&#34;login_background&#34;&gt;login_background&lt;/h3&gt;
&lt;p&gt;Set to complete CSS background expression to override login background. Example:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;[white_labeling]
login_background = url(http://www.bhmpics.com/wallpapers/starfield-1920x1080.jpg)&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;menu_logo&#34;&gt;menu_logo&lt;/h3&gt;
&lt;p&gt;Set to complete URL to override menu logo.&lt;/p&gt;
&lt;h3 id=&#34;fav_icon&#34;&gt;fav_icon&lt;/h3&gt;
&lt;p&gt;Set to complete URL to override fav icon (icon shown in browser tab).&lt;/p&gt;
&lt;h3 id=&#34;apple_touch_icon&#34;&gt;apple_touch_icon&lt;/h3&gt;
&lt;p&gt;Set to complete URL to override Apple/iOS icon.&lt;/p&gt;
&lt;h3 id=&#34;footer_links&#34;&gt;footer_links&lt;/h3&gt;
&lt;p&gt;List the link IDs to use here. Grafana will look for matching link configurations, the link IDs should be space-separated and contain no whitespace.&lt;/p&gt;
&lt;h2 id=&#34;usage_insightsexport&#34;&gt;[usage_insights.export]&lt;/h2&gt;
&lt;p&gt;By &lt;a href=&#34;../usage-insights/export-logs/&#34;&gt;exporting usage logs&lt;/a&gt;, you can directly query them and create dashboards of the information that matters to you most, such as dashboard errors, most active organizations, or your top-10 most-used queries.&lt;/p&gt;
&lt;h3 id=&#34;enabled&#34;&gt;enabled&lt;/h3&gt;
&lt;p&gt;Enable the usage insights export feature.&lt;/p&gt;
&lt;h3 id=&#34;storage&#34;&gt;storage&lt;/h3&gt;
&lt;p&gt;Specify a storage type. Defaults to &lt;code&gt;loki&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;usage_insightsexportstorageloki&#34;&gt;[usage_insights.export.storage.loki]&lt;/h2&gt;
&lt;h3 id=&#34;type&#34;&gt;type&lt;/h3&gt;
&lt;p&gt;Set the communication protocol to use with Loki, which is either &lt;code&gt;grpc&lt;/code&gt; or &lt;code&gt;http&lt;/code&gt;. Defaults to &lt;code&gt;grpc&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;url&#34;&gt;url&lt;/h3&gt;
&lt;p&gt;Set the address for writing logs to Loki (format must be host:port).&lt;/p&gt;
&lt;h3 id=&#34;tls&#34;&gt;tls&lt;/h3&gt;
&lt;p&gt;Decide whether or not to enable the TLS (Transport Layer Security) protocol when establishing the connection to Loki. Defaults to true.&lt;/p&gt;
&lt;h2 id=&#34;analyticssummaries&#34;&gt;[analytics.summaries]&lt;/h2&gt;
&lt;h3 id=&#34;buffer_write_interval&#34;&gt;buffer_write_interval&lt;/h3&gt;
&lt;p&gt;Interval for writing dashboard usage stats buffer to database.&lt;/p&gt;
&lt;h3 id=&#34;buffer_write_timeout&#34;&gt;buffer_write_timeout&lt;/h3&gt;
&lt;p&gt;Timeout for writing dashboard usage stats buffer to database.&lt;/p&gt;
&lt;h3 id=&#34;rollup_interval&#34;&gt;rollup_interval&lt;/h3&gt;
&lt;p&gt;Interval for trying to roll up per dashboard usage summary. Only rolled up at most once per day.&lt;/p&gt;
&lt;h3 id=&#34;rollup_timeout&#34;&gt;rollup_timeout&lt;/h3&gt;
&lt;p&gt;Timeout for trying to rollup per dashboard usage summary.&lt;/p&gt;
&lt;h2 id=&#34;analyticsviews&#34;&gt;[analytics.views]&lt;/h2&gt;
&lt;h3 id=&#34;recent_users_age&#34;&gt;recent_users_age&lt;/h3&gt;
&lt;p&gt;Age for recent active users.&lt;/p&gt;
&lt;h2 id=&#34;reporting&#34;&gt;[reporting]&lt;/h2&gt;
&lt;h3 id=&#34;rendering_timeout&#34;&gt;rendering_timeout&lt;/h3&gt;
&lt;p&gt;Timeout for each panel rendering request.&lt;/p&gt;
&lt;h3 id=&#34;concurrent_render_limit&#34;&gt;concurrent_render_limit&lt;/h3&gt;
&lt;p&gt;Maximum number of concurrent calls to the rendering service.&lt;/p&gt;
&lt;h3 id=&#34;image_scale_factor&#34;&gt;image_scale_factor&lt;/h3&gt;
&lt;p&gt;Scale factor for rendering images. Value &lt;code&gt;2&lt;/code&gt; is enough for monitor resolutions, &lt;code&gt;4&lt;/code&gt; would be better for printed material. Setting a higher value affects performance and memory.&lt;/p&gt;
&lt;h3 id=&#34;max_attachment_size_mb&#34;&gt;max_attachment_size_mb&lt;/h3&gt;
&lt;p&gt;Set the maximum file size in megabytes for the CSV attachments.&lt;/p&gt;
&lt;h3 id=&#34;fonts_path&#34;&gt;fonts_path&lt;/h3&gt;
&lt;p&gt;Path to the directory containing font files.&lt;/p&gt;
&lt;h3 id=&#34;font_regular&#34;&gt;font_regular&lt;/h3&gt;
&lt;p&gt;Name of the TrueType font file with regular style.&lt;/p&gt;
&lt;h3 id=&#34;font_bold&#34;&gt;font_bold&lt;/h3&gt;
&lt;p&gt;Name of the TrueType font file with bold style.&lt;/p&gt;
&lt;h3 id=&#34;font_italic&#34;&gt;font_italic&lt;/h3&gt;
&lt;p&gt;Name of the TrueType font file with italic style.&lt;/p&gt;
&lt;h2 id=&#34;auditing&#34;&gt;[auditing]&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;../auditing/&#34;&gt;Auditing&lt;/a&gt; allows you to track important changes to your Grafana instance. By default, audit logs are logged to file but the auditing feature also supports sending logs directly to Loki.&lt;/p&gt;
&lt;h3 id=&#34;enabled-1&#34;&gt;enabled&lt;/h3&gt;
&lt;p&gt;Enable the auditing feature. Defaults to false.&lt;/p&gt;
&lt;h3 id=&#34;loggers&#34;&gt;loggers&lt;/h3&gt;
&lt;p&gt;List of enabled loggers.&lt;/p&gt;
&lt;h3 id=&#34;log_dashboard_content&#34;&gt;log_dashboard_content&lt;/h3&gt;
&lt;p&gt;Keep dashboard content in the logs (request or response fields). This can significantly increase the size of your logs.&lt;/p&gt;
&lt;h2 id=&#34;auditinglogsfile&#34;&gt;[auditing.logs.file]&lt;/h2&gt;
&lt;h3 id=&#34;path&#34;&gt;path&lt;/h3&gt;
&lt;p&gt;Path to logs folder.&lt;/p&gt;
&lt;h3 id=&#34;max_files&#34;&gt;max_files&lt;/h3&gt;
&lt;p&gt;Maximum log files to keep.&lt;/p&gt;
&lt;h3 id=&#34;max_file_size_mb&#34;&gt;max_file_size_mb&lt;/h3&gt;
&lt;p&gt;Max size in megabytes per log file.&lt;/p&gt;
&lt;h2 id=&#34;auditinglogsloki&#34;&gt;[auditing.logs.loki]&lt;/h2&gt;
&lt;h3 id=&#34;url-1&#34;&gt;url&lt;/h3&gt;
&lt;p&gt;Set the URL for writing logs to Loki.&lt;/p&gt;
&lt;h3 id=&#34;tls-1&#34;&gt;tls&lt;/h3&gt;
&lt;p&gt;If true, it establishes a secure connection to Loki. Defaults to true.&lt;/p&gt;
&lt;h2 id=&#34;authsaml&#34;&gt;[auth.saml]&lt;/h2&gt;
&lt;h3 id=&#34;enabled-2&#34;&gt;enabled&lt;/h3&gt;
&lt;p&gt;If true, the feature is enabled. Defaults to false.&lt;/p&gt;
&lt;h3 id=&#34;certificate&#34;&gt;certificate&lt;/h3&gt;
&lt;p&gt;Base64-encoded public X.509 certificate. Used to sign requests to the IdP.&lt;/p&gt;
&lt;h3 id=&#34;certificate_path&#34;&gt;certificate_path&lt;/h3&gt;
&lt;p&gt;Path to the public X.509 certificate. Used to sign requests to the IdP.&lt;/p&gt;
&lt;h3 id=&#34;private_key&#34;&gt;private_key&lt;/h3&gt;
&lt;p&gt;Base64-encoded private key. Used to decrypt assertions from the IdP.&lt;/p&gt;
&lt;h3 id=&#34;private_key_path&#34;&gt;private_key_path&lt;/h3&gt;
&lt;p&gt;Path to the private key. Used to decrypt assertions from the IdP.&lt;/p&gt;
&lt;h3 id=&#34;idp_metadata&#34;&gt;idp_metadata&lt;/h3&gt;
&lt;p&gt;Base64-encoded IdP SAML metadata XML. Used to verify and obtain binding locations from the IdP.&lt;/p&gt;
&lt;h3 id=&#34;idp_metadata_path&#34;&gt;idp_metadata_path&lt;/h3&gt;
&lt;p&gt;Path to the SAML metadata XML. Used to verify and obtain binding locations from the IdP.&lt;/p&gt;
&lt;h3 id=&#34;idp_metadata_url&#34;&gt;idp_metadata_url&lt;/h3&gt;
&lt;p&gt;URL to fetch SAML IdP metadata. Used to verify and obtain binding locations from the IdP.&lt;/p&gt;
&lt;h3 id=&#34;max_issue_delay&#34;&gt;max_issue_delay&lt;/h3&gt;
&lt;p&gt;Time since the IdP issued a response and the SP is allowed to process it. Defaults to 90 seconds.&lt;/p&gt;
&lt;h3 id=&#34;metadata_valid_duration&#34;&gt;metadata_valid_duration&lt;/h3&gt;
&lt;p&gt;How long the SPs metadata is valid. Defaults to 48 hours.&lt;/p&gt;
&lt;h3 id=&#34;assertion_attribute_name&#34;&gt;assertion_attribute_name&lt;/h3&gt;
&lt;p&gt;Friendly name or name of the attribute within the SAML assertion to use as the user name.&lt;/p&gt;
&lt;h3 id=&#34;assertion_attribute_login&#34;&gt;assertion_attribute_login&lt;/h3&gt;
&lt;p&gt;Friendly name or name of the attribute within the SAML assertion to use as the user login handle.&lt;/p&gt;
&lt;h3 id=&#34;assertion_attribute_email&#34;&gt;assertion_attribute_email&lt;/h3&gt;
&lt;p&gt;Friendly name or name of the attribute within the SAML assertion to use as the user email.&lt;/p&gt;
&lt;h3 id=&#34;assertion_attribute_groups&#34;&gt;assertion_attribute_groups&lt;/h3&gt;
&lt;p&gt;Friendly name or name of the attribute within the SAML assertion to use as the user groups.&lt;/p&gt;
&lt;h3 id=&#34;assertion_attribute_role&#34;&gt;assertion_attribute_role&lt;/h3&gt;
&lt;p&gt;Friendly name or name of the attribute within the SAML assertion to use as the user roles.&lt;/p&gt;
&lt;h3 id=&#34;assertion_attribute_org&#34;&gt;assertion_attribute_org&lt;/h3&gt;
&lt;p&gt;Friendly name or name of the attribute within the SAML assertion to use as the user organization.&lt;/p&gt;
&lt;h3 id=&#34;allowed_organizations&#34;&gt;allowed_organizations&lt;/h3&gt;
&lt;p&gt;List of comma- or space-separated organizations. Each user must be a member of at least one organization to log in.&lt;/p&gt;
&lt;h3 id=&#34;org_mapping&#34;&gt;org_mapping&lt;/h3&gt;
&lt;p&gt;List of comma- or space-separated Organization:OrgId mappings.&lt;/p&gt;
&lt;h3 id=&#34;role_values_editor&#34;&gt;role_values_editor&lt;/h3&gt;
&lt;p&gt;List of comma- or space-separated roles that will be mapped to the Editor role.&lt;/p&gt;
&lt;h3 id=&#34;role_values_admin&#34;&gt;role_values_admin&lt;/h3&gt;
&lt;p&gt;List of comma- or space-separated roles that will be mapped to the Admin role.&lt;/p&gt;
&lt;h3 id=&#34;role_values_grafana_admin&#34;&gt;role_values_grafana_admin&lt;/h3&gt;
&lt;p&gt;List of comma- or space-separated roles that will be mapped to the Grafana Admin (Super Admin) role.&lt;/p&gt;
&lt;h2 id=&#34;keystorevault&#34;&gt;[keystore.vault]&lt;/h2&gt;
&lt;h3 id=&#34;url-2&#34;&gt;url&lt;/h3&gt;
&lt;p&gt;Location of the Vault server.&lt;/p&gt;
&lt;h3 id=&#34;namespace&#34;&gt;namespace&lt;/h3&gt;
&lt;p&gt;Vault namespace if using Vault with multi-tenancy.&lt;/p&gt;
&lt;h3 id=&#34;auth_method&#34;&gt;auth_method&lt;/h3&gt;
&lt;p&gt;Method for authenticating towards Vault. Vault is inactive if this option is not set. Current possible values: &lt;code&gt;token&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;token&#34;&gt;token&lt;/h3&gt;
&lt;p&gt;Secret token to connect to Vault when auth_method is &lt;code&gt;token&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;lease_renewal_interval&#34;&gt;lease_renewal_interval&lt;/h3&gt;
&lt;p&gt;Time between checking if there are any secrets which needs to be renewed.&lt;/p&gt;
&lt;h3 id=&#34;lease_renewal_expires_within&#34;&gt;lease_renewal_expires_within&lt;/h3&gt;
&lt;p&gt;Time until expiration for tokens which are renewed. Should have a value higher than lease_renewal_interval.&lt;/p&gt;
&lt;h3 id=&#34;lease_renewal_increment&#34;&gt;lease_renewal_increment&lt;/h3&gt;
&lt;p&gt;New duration for renewed tokens. Vault may be configured to ignore this value and impose a stricter limit.&lt;/p&gt;
&lt;h2 id=&#34;securityegress&#34;&gt;[security.egress]&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Available in Grafana Enterprise v7.4 and later versions.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Security egress makes it possible to control outgoing traffic from the Grafana server.&lt;/p&gt;
&lt;h3 id=&#34;host_deny_list&#34;&gt;host_deny_list&lt;/h3&gt;
&lt;p&gt;A list of hostnames or IP addresses separated by spaces for which requests are blocked.&lt;/p&gt;
&lt;h3 id=&#34;host_allow_list&#34;&gt;host_allow_list&lt;/h3&gt;
&lt;p&gt;A list of hostnames or IP addresses separated by spaces for which requests are allowed. All other requests are blocked.&lt;/p&gt;
&lt;h3 id=&#34;header_drop_list&#34;&gt;header_drop_list&lt;/h3&gt;
&lt;p&gt;A list of headers that are stripped from the outgoing data source and alerting requests.&lt;/p&gt;
&lt;h3 id=&#34;cookie_drop_list&#34;&gt;cookie_drop_list&lt;/h3&gt;
&lt;p&gt;A list of cookies that are stripped from the outgoing data source and alerting requests.&lt;/p&gt;
&lt;h2 id=&#34;caching&#34;&gt;[caching]&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Available in Grafana Enterprise v7.5 and later versions.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;When query caching is enabled, Grafana can temporarily store the results of data source queries and serve cached responses to similar requests.&lt;/p&gt;
&lt;h3 id=&#34;backend&#34;&gt;backend&lt;/h3&gt;
&lt;p&gt;The caching backend to use when storing cached queries. Options: &lt;code&gt;memory&lt;/code&gt;, &lt;code&gt;redis&lt;/code&gt;, and &lt;code&gt;memcached&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The default is &lt;code&gt;memory&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;enabled-3&#34;&gt;enabled&lt;/h3&gt;
&lt;p&gt;Setting &amp;rsquo;enabled&amp;rsquo; to &lt;code&gt;true&lt;/code&gt; allows users to configure query caching for data sources.&lt;/p&gt;
&lt;p&gt;This value is &lt;code&gt;true&lt;/code&gt; by default.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This setting enables the caching feature, but it does not turn on query caching for any data source. To turn on query caching for a data source, update the setting on the data source configuration page. For more information, refer to the &lt;a href=&#34;../query-caching/#enable-and-configure-query-caching&#34;&gt;query caching docs&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;ttl&#34;&gt;ttl&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Time to live&lt;/em&gt; (TTL) is the time that a query result is stored in the caching system before it is deleted or refreshed. This setting defines the time to live for query caching, when TTL is not configured in data source settings. The default value is &lt;code&gt;1m&lt;/code&gt; (1 minute).&lt;/p&gt;
&lt;h3 id=&#34;max_ttl&#34;&gt;max_ttl&lt;/h3&gt;
&lt;p&gt;The max duration that a query result is stored in the caching system before it is deleted or refreshed. This value will override &lt;code&gt;ttl&lt;/code&gt; config option or data source setting if the &lt;code&gt;ttl&lt;/code&gt; value is greater than &lt;code&gt;max_ttl&lt;/code&gt;. To disable this constraint, set this value to &lt;code&gt;0s&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The default is &lt;code&gt;0s&lt;/code&gt; (disabled).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Disabling this constraint is not recommended in production environments.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;max_value_mb&#34;&gt;max_value_mb&lt;/h3&gt;
&lt;p&gt;This value limits the size of a single cache value. If a cache value (or query result) exceeds this size, then it is not cached. To disable this limit, set this value to &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The default is &lt;code&gt;1&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;connection_timeout&#34;&gt;connection_timeout&lt;/h3&gt;
&lt;p&gt;This setting defines the duration to wait for a connection to the caching backend.&lt;/p&gt;
&lt;p&gt;The default is &lt;code&gt;5s&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;read_timeout&#34;&gt;read_timeout&lt;/h3&gt;
&lt;p&gt;This setting defines the duration to wait for the caching backend to return a cached result. To disable this timeout, set this value to &lt;code&gt;0s&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The default is &lt;code&gt;0s&lt;/code&gt; (disabled).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Disabling this timeout is not recommended in production environments.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;write_timeout&#34;&gt;write_timeout&lt;/h3&gt;
&lt;p&gt;This setting defines the number of seconds to wait for the caching backend to store a result. To disable this timeout, set this value to &lt;code&gt;0s&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The default is &lt;code&gt;0s&lt;/code&gt; (disabled).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Disabling this timeout is not recommended in production environments.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;cachingencryption&#34;&gt;[caching.encryption]&lt;/h2&gt;
&lt;h3 id=&#34;enabled-4&#34;&gt;enabled&lt;/h3&gt;
&lt;p&gt;When &amp;rsquo;enabled&amp;rsquo; is &lt;code&gt;true&lt;/code&gt;, query values in the cache are encrypted.&lt;/p&gt;
&lt;p&gt;The default is &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;encryption_key&#34;&gt;encryption_key&lt;/h3&gt;
&lt;p&gt;A string used to generate a key for encrypting the cache. For the encrypted cache data to persist between Grafana restarts, you must specify this key. If it is empty when encryption is enabled, then the key is automatically generated on startup, and the cache clears upon restarts.&lt;/p&gt;
&lt;p&gt;The default is &lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;cachingmemory&#34;&gt;[caching.memory]&lt;/h2&gt;
&lt;h3 id=&#34;gc_interval&#34;&gt;gc_interval&lt;/h3&gt;
&lt;p&gt;When storing cache data in-memory, this setting defines how often a background process cleans up stale data from the in-memory cache. More frequent &amp;ldquo;garbage collection&amp;rdquo; can keep memory usage from climbing but will increase CPU usage.&lt;/p&gt;
&lt;p&gt;The default is &lt;code&gt;1m&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;max_size_mb&#34;&gt;max_size_mb&lt;/h3&gt;
&lt;p&gt;The maximum size of the in-memory cache in megabytes. Once this size is reached, new cache items are rejected. For more flexible control over cache eviction policies and size, use the Redis or Memcached backend.&lt;/p&gt;
&lt;p&gt;To disable the maximum, set this value to &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The default is &lt;code&gt;25&lt;/code&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Disabling the maximum is not recommended in production environments.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;cachingredis&#34;&gt;[caching.redis]&lt;/h2&gt;
&lt;h3 id=&#34;url-3&#34;&gt;url&lt;/h3&gt;
&lt;p&gt;The full Redis URL of your Redis server. Example: &lt;code&gt;redis://localhost:6739/0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The default is &lt;code&gt;&amp;quot;redis://localhost:6379&amp;quot;&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;cluster&#34;&gt;cluster&lt;/h3&gt;
&lt;p&gt;A comma-separated list of Redis cluster members in &lt;code&gt;host:port&lt;/code&gt; format. For example, &lt;code&gt;localhost:7000, localhost: 7001, localhost:7002&lt;/code&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If you have specify &lt;code&gt;cluster&lt;/code&gt;, the value for &lt;code&gt;url&lt;/code&gt; is ignored.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;prefix&#34;&gt;prefix&lt;/h3&gt;
&lt;p&gt;A string that prefixes all Redis keys. This value must be set if using a shared database in Redis. If &lt;code&gt;prefix&lt;/code&gt; is empty, then one will not be used.&lt;/p&gt;
&lt;p&gt;The default is &lt;code&gt;&amp;quot;grafana&amp;quot;&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;cachingmemcached&#34;&gt;[caching.memcached]&lt;/h2&gt;
&lt;h3 id=&#34;memcached_servers&#34;&gt;memcached_servers&lt;/h3&gt;
&lt;p&gt;A space-separated list of memcached servers. Example: &lt;code&gt;memcached-server-1:11211 memcached-server-2:11212 memcached-server-3:11211&lt;/code&gt;. Or if there&amp;rsquo;s only one server: &lt;code&gt;memcached-server:11211&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The default is &lt;code&gt;&amp;quot;localhost:11211&amp;quot;&lt;/code&gt;.&lt;/p&gt;
]]></content><description>&lt;h1 id="grafana-enterprise-configuration">Grafana Enterprise configuration&lt;/h1>
&lt;p>This page describes Grafana Enterprise-specific configuration options that you can specify in a &lt;code>.ini&lt;/code> configuration file or using environment variables. Refer to &lt;a href="../../administration/configuration/">Configuration&lt;/a> for more information about available configuration options.&lt;/p></description></item><item><title>Reporting</title><link>https://grafana.com/docs/grafana/v8.2/enterprise/reporting/</link><pubDate>Fri, 03 Apr 2026 20:44:05 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.2/enterprise/reporting/</guid><content><![CDATA[&lt;h1 id=&#34;reporting&#34;&gt;Reporting&lt;/h1&gt;
&lt;p&gt;Reporting allows you to automatically generate PDFs from any of your dashboards and have Grafana email them to interested parties on a schedule. This is available in Grafana Cloud Pro and Advanced and in Grafana Enterprise.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you have &lt;a href=&#34;../access-control/&#34;&gt;Fine-grained access Control&lt;/a&gt; enabled, for some actions you would need to have relevant permissions.
Refer to specific guides to understand what permissions are required.&lt;/p&gt;&lt;/blockquote&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 500px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/enterprise/reports_list_8.1.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/enterprise/reports_list_8.1.png&#34;alt=&#34;&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/enterprise/reports_list_8.1.png&#34;
            alt=&#34;&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;Any changes you make to a dashboard used in a report are reflected the next time the report is sent. For example, if you change the time range in the dashboard, then the time range in the report changes as well.&lt;/p&gt;
&lt;h2 id=&#34;requirements&#34;&gt;Requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;SMTP must be configured for reports to be sent. Refer to &lt;a href=&#34;../../administration/configuration/#smtp&#34;&gt;SMTP&lt;/a&gt; in &lt;a href=&#34;../../administration/configuration/&#34;&gt;Configuration&lt;/a&gt; for more information.&lt;/li&gt;
&lt;li&gt;The Image Renderer plugin must be installed or the remote rendering service must be set up. Refer to &lt;a href=&#34;../../image-rendering/&#34;&gt;Image rendering&lt;/a&gt; for more information.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;access-control&#34;&gt;Access control&lt;/h2&gt;
&lt;p&gt;When &lt;a href=&#34;../access-control/&#34;&gt;Fine-grained access control&lt;/a&gt; is enabled, you need to have the relevant &lt;a href=&#34;../access-control/permissions/&#34;&gt;Permissions&lt;/a&gt; to create and manage reports.&lt;/p&gt;
&lt;h2 id=&#34;create-or-update-a-report&#34;&gt;Create or update a report&lt;/h2&gt;
&lt;p&gt;Only organization admins can create reports by default. You can customize who can create reports with &lt;a href=&#34;../access-control/&#34;&gt;fine-grained access control&lt;/a&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click on the reports icon in the side menu. The Reports tab allows you to view, create, and update your reports.&lt;/li&gt;
&lt;li&gt;Enter report information. All fields are required unless otherwise indicated.
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Report name -&lt;/strong&gt; Name of the report as you want it to appear in the Reports list. It&amp;rsquo;s also used as the email subject.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recipients -&lt;/strong&gt; Enter the emails of the people or teams that you want to receive the report, separated by commas or semicolons.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reply to -&lt;/strong&gt; (optional) The address that will appear in the &lt;strong&gt;Reply to&lt;/strong&gt; field of the email.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Message -&lt;/strong&gt; (optional) Message body in the email with the report.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Include a dashboard link -&lt;/strong&gt; Include a link to the dashboard from within the report email.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source dashboard -&lt;/strong&gt; Select the dashboard to generate the report from.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time range -&lt;/strong&gt; (optional) Use custom time range for the report. For more information check &lt;a href=&#34;#report-time-range&#34;&gt;Report time range&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Select an orientation for the report: &lt;strong&gt;Portrait&lt;/strong&gt; or &lt;strong&gt;Landscape&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select a layout for the generated report: &lt;strong&gt;Simple&lt;/strong&gt; or &lt;strong&gt;Grid&lt;/strong&gt;. The simple layout renders each panel as full-width across the PDF. The grid layout renders the PDF with the same panel arrangement and width as the source dashboard.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add a CSV file of table panel data&lt;/strong&gt;: check this box to attach a CSV file to the report email for each table panel on the dashboard.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Preview PDF&lt;/strong&gt; View a rendered PDF with the options you have selected.&lt;/li&gt;
&lt;li&gt;Enter scheduling information. Options vary depending on the frequency you select.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Save&lt;/strong&gt; the report.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Send test email&lt;/strong&gt; to verify that the whole configuration is working as expected. You can choose to send this email to the recipients configured for the report, or to a different set of email addresses only used for testing.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 500px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/enterprise/reports_create_new_8.1.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/enterprise/reports_create_new_8.1.png&#34;data-srcset=&#34;/static/img/docs/enterprise/reports_create_new_8.1.png?w=320 320w, /static/img/docs/enterprise/reports_create_new_8.1.png?w=550 550w, /static/img/docs/enterprise/reports_create_new_8.1.png?w=750 750w, /static/img/docs/enterprise/reports_create_new_8.1.png?w=900 900w, /static/img/docs/enterprise/reports_create_new_8.1.png?w=1040 1040w, /static/img/docs/enterprise/reports_create_new_8.1.png?w=1240 1240w, /static/img/docs/enterprise/reports_create_new_8.1.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;856&#34;height=&#34;1628&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/enterprise/reports_create_new_8.1.png&#34;
            alt=&#34;&#34;width=&#34;856&#34;height=&#34;1628&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;h3 id=&#34;choose-template-variables&#34;&gt;Choose template variables&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Available in Grafana Enterprise version 7.5&#43; (behind &lt;code&gt;reportVariables&lt;/code&gt; feature flag) and Grafana Enterprise version 8&#43; without a feature flag.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You can configure report-specific template variables for the dashboard on the report page. The variables that you select will override the variables from the dashboard, and they are used when rendering a PDF file of the report. For detailed information about using template variables, refer to the &lt;a href=&#34;../../variables/&#34;&gt;Templates and variables&lt;/a&gt; section.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The query variables saved with a report might go out of date if the results of that query change. For example, if your template variable queries for a list of hostnames and a new hostname is added, then it will not be included in the report. If that happens, the selected variables will need to be manually updated in the report. If you select the &lt;code&gt;All&lt;/code&gt; value for the template variable or if you keep the dashboard&amp;rsquo;s original variable selection, then the report will stay up-to-date as new values are added.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;render-a-report-with-panels-or-rows-set-to-repeat-by-a-variable&#34;&gt;Render a report with panels or rows set to repeat by a variable&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Available in Grafana Enterprise v8&#43;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You can include dynamic dashboards with panels or rows, set to repeat by a variable, into reports. For detailed information about setting up repeating panels or rows in dashboards, refer to the &lt;a href=&#34;../../panels/repeat-panels-or-rows/&#34;&gt;Repeat panels or rows&lt;/a&gt; section.&lt;/p&gt;
&lt;h4 id=&#34;caveats&#34;&gt;Caveats:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Rendering repeating panels for dynamic variable types (e.g. &lt;code&gt;query&lt;/code&gt; variables) with selected &lt;code&gt;All&lt;/code&gt; value is currently not supported. As a workaround, it is possible to individually select all the values instead.&lt;/li&gt;
&lt;li&gt;If you select different template variables in a report for a dashboard with repeating rows, you might see empty space or missing values at the bottom of the report. This is because the dimensions of the panels from the dashboard are used to generate the report. To avoid this issue, use the dashboard&amp;rsquo;s original template variables for the report, or make a copy of the dashboard, select the new set of template variables, and generate a report based on the copied dashboard.&lt;/li&gt;
&lt;li&gt;Rendering of the repeating panels inside collapsed rows in reports is not supported.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;report-time-range&#34;&gt;Report time range&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Setting custom report time range is available in Grafana Enterprise v7.2&#43;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;By default, reports use the saved time range of the dashboard. Changing the time range of the report can be done by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Saving a modified time range to the dashboard.&lt;/li&gt;
&lt;li&gt;Setting a time range via &lt;strong&gt;Time range&lt;/strong&gt; field in the report form. If specified, then this custom time range overrides the one from the report&amp;rsquo;s dashboard.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The page header of the report displays the time range for the dashboard&amp;rsquo;s data queries. Dashboards set to use the browser&amp;rsquo;s time zone will use the time zone on the Grafana server.&lt;/p&gt;
&lt;p&gt;If the time zone is set differently between your Grafana server and its remote image renderer, then the time ranges in the report might be different between the page header and the time axes in the panels. To avoid this, set the time zone to UTC for dashboards when using a remote renderer. Each dashboard&amp;rsquo;s time zone setting is visible in the &lt;a href=&#34;../../dashboards/time-range-controls/#dashboard-time-settings&#34;&gt;time range controls&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;layout-and-orientation&#34;&gt;Layout and orientation&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;We&amp;rsquo;re actively working on developing new report layout options. &lt;a href=&#34;/contact?about=grafana-enterprise&amp;amp;topic=design-process&amp;amp;value=reporting&#34;&gt;Contact us&lt;/a&gt; if you would like to get involved in the design process.&lt;/p&gt;&lt;/blockquote&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Layout&lt;/th&gt;
              &lt;th&gt;Orientation&lt;/th&gt;
              &lt;th&gt;Support&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
              &lt;th&gt;Preview&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;Simple&lt;/td&gt;
              &lt;td&gt;Portrait&lt;/td&gt;
              &lt;td&gt;v6.4&#43;&lt;/td&gt;
              &lt;td&gt;Generates an A4 page in portrait mode with three panels per page.&lt;/td&gt;
              &lt;td&gt;&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 500px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/enterprise/reports_portrait_preview.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/enterprise/reports_portrait_preview.png&#34;data-srcset=&#34;/static/img/docs/enterprise/reports_portrait_preview.png?w=320 320w, /static/img/docs/enterprise/reports_portrait_preview.png?w=550 550w, /static/img/docs/enterprise/reports_portrait_preview.png?w=750 750w, /static/img/docs/enterprise/reports_portrait_preview.png?w=900 900w, /static/img/docs/enterprise/reports_portrait_preview.png?w=1040 1040w, /static/img/docs/enterprise/reports_portrait_preview.png?w=1240 1240w, /static/img/docs/enterprise/reports_portrait_preview.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;595&#34;height=&#34;841&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/enterprise/reports_portrait_preview.png&#34;
            alt=&#34;&#34;width=&#34;595&#34;height=&#34;841&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Simple&lt;/td&gt;
              &lt;td&gt;Landscape&lt;/td&gt;
              &lt;td&gt;v6.7&#43;&lt;/td&gt;
              &lt;td&gt;Generates an A4 page in landscape mode with a single panel per page.&lt;/td&gt;
              &lt;td&gt;&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 500px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/enterprise/reports_landscape_preview.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/enterprise/reports_landscape_preview.png&#34;data-srcset=&#34;/static/img/docs/enterprise/reports_landscape_preview.png?w=320 320w, /static/img/docs/enterprise/reports_landscape_preview.png?w=550 550w, /static/img/docs/enterprise/reports_landscape_preview.png?w=750 750w, /static/img/docs/enterprise/reports_landscape_preview.png?w=900 900w, /static/img/docs/enterprise/reports_landscape_preview.png?w=1040 1040w, /static/img/docs/enterprise/reports_landscape_preview.png?w=1240 1240w, /static/img/docs/enterprise/reports_landscape_preview.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;841&#34;height=&#34;595&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/enterprise/reports_landscape_preview.png&#34;
            alt=&#34;&#34;width=&#34;841&#34;height=&#34;595&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Grid&lt;/td&gt;
              &lt;td&gt;Portrait&lt;/td&gt;
              &lt;td&gt;v7.2&#43;&lt;/td&gt;
              &lt;td&gt;Generates an A4 page in portrait mode with panels arranged in the same way as at the original dashboard.&lt;/td&gt;
              &lt;td&gt;&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 500px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/enterprise/reports_grid_portrait_preview.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/enterprise/reports_grid_portrait_preview.png&#34;data-srcset=&#34;/static/img/docs/enterprise/reports_grid_portrait_preview.png?w=320 320w, /static/img/docs/enterprise/reports_grid_portrait_preview.png?w=550 550w, /static/img/docs/enterprise/reports_grid_portrait_preview.png?w=750 750w, /static/img/docs/enterprise/reports_grid_portrait_preview.png?w=900 900w, /static/img/docs/enterprise/reports_grid_portrait_preview.png?w=1040 1040w, /static/img/docs/enterprise/reports_grid_portrait_preview.png?w=1240 1240w, /static/img/docs/enterprise/reports_grid_portrait_preview.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;943&#34;height=&#34;1335&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/enterprise/reports_grid_portrait_preview.png&#34;
            alt=&#34;&#34;width=&#34;943&#34;height=&#34;1335&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Grid&lt;/td&gt;
              &lt;td&gt;Landscape&lt;/td&gt;
              &lt;td&gt;v7.2&#43;&lt;/td&gt;
              &lt;td&gt;Generates an A4 page in landscape mode with panels arranged in the same way as at the original dashboard.&lt;/td&gt;
              &lt;td&gt;&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 500px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/enterprise/reports_grid_landscape_preview.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/enterprise/reports_grid_landscape_preview.png&#34;data-srcset=&#34;/static/img/docs/enterprise/reports_grid_landscape_preview.png?w=320 320w, /static/img/docs/enterprise/reports_grid_landscape_preview.png?w=550 550w, /static/img/docs/enterprise/reports_grid_landscape_preview.png?w=750 750w, /static/img/docs/enterprise/reports_grid_landscape_preview.png?w=900 900w, /static/img/docs/enterprise/reports_grid_landscape_preview.png?w=1040 1040w, /static/img/docs/enterprise/reports_grid_landscape_preview.png?w=1240 1240w, /static/img/docs/enterprise/reports_grid_landscape_preview.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;1397&#34;height=&#34;987&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/enterprise/reports_grid_landscape_preview.png&#34;
            alt=&#34;&#34;width=&#34;1397&#34;height=&#34;987&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;csv-export&#34;&gt;CSV export&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Only available in Grafana Enterprise v8.0&#43;, with the &lt;a href=&#34;/grafana/plugins/grafana-image-renderer&#34;&gt;Grafana image renderer plugin&lt;/a&gt; v3.0&#43;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You can attach a CSV file to the report email for each table panel on the selected dashboard, along with the PDF report. By default, CSVs larger than 10Mb won&amp;rsquo;t be sent to avoid email servers to reject the email. You can increase or decrease this limit in the &lt;a href=&#34;#rendering-configuration&#34;&gt;reporting configuration&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This feature relies on the same plugin that supports the &lt;a href=&#34;../../image-rendering/&#34;&gt;image rendering&lt;/a&gt; features.&lt;/p&gt;
&lt;p&gt;When the CSV file is generated, it is temporarily written to the &lt;code&gt;csv&lt;/code&gt; folder in the Grafana &lt;code&gt;data&lt;/code&gt; folder.&lt;/p&gt;
&lt;p&gt;A background job runs every 10 minutes and removes temporary CSV files. You can configure how long a CSV file should be stored before being removed by configuring the &lt;a href=&#34;../../administration/configuration/#temp-data-lifetime&#34;&gt;temp-data-lifetime&lt;/a&gt; setting. This setting also affects how long a renderer PNG file should be stored.&lt;/p&gt;
&lt;h3 id=&#34;scheduling&#34;&gt;Scheduling&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: Scheduler has been significantly changed in Grafana Enterprise v8.1.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Scheduled reports can be sent once or repeatedly on an hourly, daily, weekly, or monthly basis, or at custom intervals. You can also disable scheduling by selecting &lt;strong&gt;Never&lt;/strong&gt;: for example, if you want to send the report via the API.&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 500px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/enterprise/reports_scheduler_8.1.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/enterprise/reports_scheduler_8.1.png&#34;data-srcset=&#34;/static/img/docs/enterprise/reports_scheduler_8.1.png?w=320 320w, /static/img/docs/enterprise/reports_scheduler_8.1.png?w=550 550w, /static/img/docs/enterprise/reports_scheduler_8.1.png?w=750 750w, /static/img/docs/enterprise/reports_scheduler_8.1.png?w=900 900w, /static/img/docs/enterprise/reports_scheduler_8.1.png?w=1040 1040w, /static/img/docs/enterprise/reports_scheduler_8.1.png?w=1240 1240w, /static/img/docs/enterprise/reports_scheduler_8.1.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;1278&#34;height=&#34;816&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/enterprise/reports_scheduler_8.1.png&#34;
            alt=&#34;&#34;width=&#34;1278&#34;height=&#34;816&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;Send now or schedule for later&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Send now&lt;/strong&gt; sends the report immediately after you save it. To stop sending the report at some point in the future, add an end date. If you leave the end date empty, the report is sent out indefinitely.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Send later&lt;/strong&gt; schedules a report for a later date. Thus, the start date and time are required fields. If you leave the end date empty, the report is sent out indefinitely.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Send only from Monday to Friday&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For reports that have an hourly or daily frequency, you can choose to send them only from Monday to Friday.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Send on the last day of the month&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When you schedule a report with a monthly frequency, and set the start date between the 29th and the 31st of the month, the report is only sent during the months that have those dates. If you want the report to be sent every month, select the &lt;strong&gt;Send on the last day of the month&lt;/strong&gt; option instead. This way, the report is sent on the last day of every month regardless of how many days there are in any given month.&lt;/p&gt;
&lt;h3 id=&#34;send-test-email&#34;&gt;Send test email&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Only available in Grafana Enterprise v7.0&#43;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;In the report, click &lt;strong&gt;Send test email&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In the Email field, enter the email address or addresses that you want to test, separated by semicolon.
If you want to use email addresses from the report, then select the &lt;strong&gt;Use emails from report&lt;/strong&gt; check box.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Send&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The last saved version of the report will be sent to selected emails. You can use this to verify emails are working and to make sure the report is generated and displayed as you expect.&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 500px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/enterprise/reports_send_test_mail.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/enterprise/reports_send_test_mail.png&#34;data-srcset=&#34;/static/img/docs/enterprise/reports_send_test_mail.png?w=320 320w, /static/img/docs/enterprise/reports_send_test_mail.png?w=550 550w, /static/img/docs/enterprise/reports_send_test_mail.png?w=750 750w, /static/img/docs/enterprise/reports_send_test_mail.png?w=900 900w, /static/img/docs/enterprise/reports_send_test_mail.png?w=1040 1040w, /static/img/docs/enterprise/reports_send_test_mail.png?w=1240 1240w, /static/img/docs/enterprise/reports_send_test_mail.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;500&#34;height=&#34;243&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/enterprise/reports_send_test_mail.png&#34;
            alt=&#34;&#34;width=&#34;500&#34;height=&#34;243&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;h2 id=&#34;pause-report&#34;&gt;Pause report&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Available in Grafana Enterprise v8&#43;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You can pause sending of reports from the report list view by clicking the pause icon. The report will not be sent according to its schedule until it is resumed by clicking the resume button on the report row.&lt;/p&gt;
&lt;h2 id=&#34;send-report-via-the-api&#34;&gt;Send report via the API&lt;/h2&gt;
&lt;p&gt;You can send reports programmatically with the &lt;a href=&#34;../../http_api/reporting/#send-report&#34;&gt;send report&lt;/a&gt; endpoint in the &lt;a href=&#34;../../http_api/&#34;&gt;HTTP APIs&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;rendering-configuration&#34;&gt;Rendering configuration&lt;/h2&gt;
&lt;p&gt;When generating reports, each panel renders separately before being collected in a PDF. The per panel rendering timeout and number of concurrently rendered panels can be configured.&lt;/p&gt;
&lt;p&gt;To make a panel more legible, you can set a scale factor for the rendered images. However, a higher scale factor increases the file size of the generated PDF.&lt;/p&gt;
&lt;p&gt;You can also specify custom fonts that support different Unicode scripts. The DejaVu font is the default used for PDF rendering.&lt;/p&gt;
&lt;p&gt;These options are available in the &lt;a href=&#34;../../administration/configuration/&#34;&gt;configuration&lt;/a&gt; file.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;ini&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-ini&#34;&gt;[reporting]
# Set timeout for each panel rendering request
rendering_timeout = 10s
# Set maximum number of concurrent calls to the rendering service
concurrent_render_limit = 4
# Set the scale factor for rendering images. 2 is enough for monitor resolutions
# 4 would be better for printed material. Setting a higher value affects performance and memory
image_scale_factor = 2
# Set the maximum file size in megabytes for the CSV attachments
max_attachment_size_mb = 10
# Path to the directory containing font files
fonts_path =
# Name of the TrueType font file with regular style
font_regular = DejaVuSansCondensed.ttf
# Name of the TrueType font file with bold style
font_bold = DejaVuSansCondensed-Bold.ttf
# Name of the TrueType font file with italic style
font_italic = DejaVuSansCondensed-Oblique.ttf&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;reports-settings&#34;&gt;Reports settings&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Available in Grafana Enterprise v7.2&#43;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You can configure organization-wide report settings in the &lt;strong&gt;Settings&lt;/strong&gt; tab on the &lt;strong&gt;Reporting&lt;/strong&gt; page. Settings are applied to all the reports for current organization.&lt;/p&gt;
&lt;p&gt;You can customize the branding options.&lt;/p&gt;
&lt;p&gt;Report branding:
&lt;strong&gt;Company logo URL&lt;/strong&gt; - Company logo displayed in the report PDF. Defaults to the Grafana logo.&lt;/p&gt;
&lt;p&gt;Email branding:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Company logo URL&lt;/strong&gt; - Company logo displayed in the report PDF. Defaults to the Grafana logo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Email footer&lt;/strong&gt; - Toggle to enable report email footer. Select &lt;strong&gt;Sent by&lt;/strong&gt; or &lt;strong&gt;None&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Footer link text&lt;/strong&gt; - Text for the link in the report email footer. Defaults to &amp;ldquo;Grafana&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Footer link URL&lt;/strong&gt; - Link for the report email footer.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 500px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/enterprise/reports_settings.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/enterprise/reports_settings.png&#34;data-srcset=&#34;/static/img/docs/enterprise/reports_settings.png?w=320 320w, /static/img/docs/enterprise/reports_settings.png?w=550 550w, /static/img/docs/enterprise/reports_settings.png?w=750 750w, /static/img/docs/enterprise/reports_settings.png?w=900 900w, /static/img/docs/enterprise/reports_settings.png?w=1040 1040w, /static/img/docs/enterprise/reports_settings.png?w=1240 1240w, /static/img/docs/enterprise/reports_settings.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;1128&#34;height=&#34;1029&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/enterprise/reports_settings.png&#34;
            alt=&#34;&#34;width=&#34;1128&#34;height=&#34;1029&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;h2 id=&#34;troubleshoot-reporting&#34;&gt;Troubleshoot reporting&lt;/h2&gt;
&lt;p&gt;To troubleshoot and get more log information, enable debug logging in the configuration file. Refer to &lt;a href=&#34;../../administration/configuration/#filters&#34;&gt;Configuration&lt;/a&gt; for more information.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;[log]
filters = report:debug&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="reporting">Reporting&lt;/h1>
&lt;p>Reporting allows you to automatically generate PDFs from any of your dashboards and have Grafana email them to interested parties on a schedule. This is available in Grafana Cloud Pro and Advanced and in Grafana Enterprise.&lt;/p></description></item><item><title>SAML Authentication</title><link>https://grafana.com/docs/grafana/v8.2/enterprise/saml/</link><pubDate>Fri, 03 Apr 2026 20:44:05 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.2/enterprise/saml/</guid><content><![CDATA[&lt;h1 id=&#34;saml-authentication&#34;&gt;SAML authentication&lt;/h1&gt;
&lt;p&gt;SAML authentication integration allows your Grafana users to log in by using an external SAML 2.0 Identity Provider (IdP). To enable this, Grafana becomes a Service Provider (SP) in the authentication flow, interacting with the IdP to exchange user information.&lt;/p&gt;
&lt;p&gt;The SAML single sign-on (SSO) standard is varied and flexible. Our implementation contains a subset of features needed to provide a smooth authentication experience into Grafana.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Only available in Grafana Enterprise v6.3&#43;. If you encounter any problems with our implementation, please don&amp;rsquo;t hesitate to contact us.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;supported-saml&#34;&gt;Supported SAML&lt;/h2&gt;
&lt;p&gt;Grafana supports the following SAML 2.0 bindings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;From the Service Provider (SP) to the Identity Provider (IdP):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;HTTP-POST&lt;/code&gt; binding&lt;/li&gt;
&lt;li&gt;&lt;code&gt;HTTP-Redirect&lt;/code&gt; binding&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;From the Identity Provider (IdP) to the Service Provider (SP):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;HTTP-POST&lt;/code&gt; binding&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In terms of security:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Grafana supports signed and encrypted assertions.&lt;/li&gt;
&lt;li&gt;Grafana does not support signed or encrypted requests.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In terms of initiation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Grafana supports SP-initiated requests.&lt;/li&gt;
&lt;li&gt;Grafana does not support IdP-initiated request.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;set-up-saml-authentication&#34;&gt;Set up SAML authentication&lt;/h2&gt;
&lt;p&gt;The table below describes all SAML configuration options. Continue reading below for details on specific options. Like any other Grafana configuration, you can apply these options as &lt;a href=&#34;../../administration/configuration/#configure-with-environment-variables&#34;&gt;environment variables&lt;/a&gt;.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Setting&lt;/th&gt;
              &lt;th&gt;Required&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
              &lt;th&gt;Default&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;enabled&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;Whether SAML authentication is allowed&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;single_logout&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;Whether SAML Single Logout enabled&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;allow_idp_initiated&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;Whether SAML IdP-initiated login is allowed&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;certificate&lt;/code&gt; or &lt;code&gt;certificate_path&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Yes&lt;/td&gt;
              &lt;td&gt;Base64-encoded string or Path for the SP X.509 certificate&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;private_key&lt;/code&gt; or &lt;code&gt;private_key_path&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Yes&lt;/td&gt;
              &lt;td&gt;Base64-encoded string or Path for the SP private key&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;signature_algorithm&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;Signature algorithm used for signing requests to the IdP. Supported values are rsa-sha1, rsa-sha256, rsa-sha512.&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;idp_metadata&lt;/code&gt;, &lt;code&gt;idp_metadata_path&lt;/code&gt;, or &lt;code&gt;idp_metadata_url&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Yes&lt;/td&gt;
              &lt;td&gt;Base64-encoded string, Path or URL for the IdP SAML metadata XML&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;max_issue_delay&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;Duration, since the IdP issued a response and the SP is allowed to process it&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;90s&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;metadata_valid_duration&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;Duration, for how long the SP metadata is valid&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;48h&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;relay_state&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;Relay state for IdP-initiated login. Should match relay state configured in IdP&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;assertion_attribute_name&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;Friendly name or name of the attribute within the SAML assertion to use as the user name&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;displayName&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;assertion_attribute_login&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;Friendly name or name of the attribute within the SAML assertion to use as the user login handle&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;mail&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;assertion_attribute_email&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;Friendly name or name of the attribute within the SAML assertion to use as the user email&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;mail&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;assertion_attribute_groups&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;Friendly name or name of the attribute within the SAML assertion to use as the user groups&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;assertion_attribute_role&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;Friendly name or name of the attribute within the SAML assertion to use as the user roles&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;assertion_attribute_org&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;Friendly name or name of the attribute within the SAML assertion to use as the user organization&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;allowed_organizations&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;List of comma- or space-separated organizations. User should be a member of at least one organization to log in.&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;org_mapping&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;List of comma- or space-separated Organization:OrgId mappings&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;role_values_editor&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;List of comma- or space-separated roles which will be mapped into the Editor role&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;role_values_admin&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;List of comma- or space-separated roles which will be mapped into the Admin role&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;role_values_grafana_admin&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;List of comma- or space-separated roles which will be mapped into the Grafana Admin (Super Admin) role&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;enable-saml-authentication&#34;&gt;Enable SAML authentication&lt;/h3&gt;
&lt;p&gt;To use the SAML integration, in the &lt;code&gt;auth.saml&lt;/code&gt; section of in the Grafana custom configuration file, set &lt;code&gt;enabled&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Refer to &lt;a href=&#34;../../administration/configuration/&#34;&gt;Configuration&lt;/a&gt; for more information about configuring Grafana.&lt;/p&gt;
&lt;h3 id=&#34;certificate-and-private-key&#34;&gt;Certificate and private key&lt;/h3&gt;
&lt;p&gt;The SAML SSO standard uses asymmetric encryption to exchange information between the SP (Grafana) and the IdP. To perform such encryption, you need a public part and a private part. In this case, the X.509 certificate provides the public part, while the private key provides the private part.&lt;/p&gt;
&lt;p&gt;Grafana supports two ways of specifying both the &lt;code&gt;certificate&lt;/code&gt; and &lt;code&gt;private_key&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Without a suffix (&lt;code&gt;certificate&lt;/code&gt; or &lt;code&gt;private_key&lt;/code&gt;), the configuration assumes you&amp;rsquo;ve supplied the base64-encoded file contents.&lt;/li&gt;
&lt;li&gt;With the &lt;code&gt;_path&lt;/code&gt; suffix (&lt;code&gt;certificate_path&lt;/code&gt; or &lt;code&gt;private_key_path&lt;/code&gt;), then Grafana treats the value entered as a file path and attempts to read the file from the file system.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can only use one form of each configuration option. Using multiple forms, such as both &lt;code&gt;certificate&lt;/code&gt; and &lt;code&gt;certificate_path&lt;/code&gt;, results in an error.&lt;/p&gt;
&lt;h3 id=&#34;signature-algorithm&#34;&gt;Signature algorithm&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Only available in Grafana v7.3&#43;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The SAML standard recommends using a digital signature for some types of messages, like authentication or logout requests. If the &lt;code&gt;signature_algorithm&lt;/code&gt; option is configured, Grafana will put a digital signature into SAML requests. Supported signature types are &lt;code&gt;rsa-sha1&lt;/code&gt;, &lt;code&gt;rsa-sha256&lt;/code&gt;, &lt;code&gt;rsa-sha512&lt;/code&gt;. This option should match your IdP configuration, otherwise, signature validation will fail. Grafana uses key and certificate configured with &lt;code&gt;private_key&lt;/code&gt; and &lt;code&gt;certificate&lt;/code&gt; options for signing SAML requests.&lt;/p&gt;
&lt;h3 id=&#34;idp-metadata&#34;&gt;IdP metadata&lt;/h3&gt;
&lt;p&gt;You also need to define the public part of the IdP for message verification. The SAML IdP metadata XML defines where and how Grafana exchanges user information.&lt;/p&gt;
&lt;p&gt;Grafana supports three ways of specifying the IdP metadata.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Without a suffix &lt;code&gt;idp_metadata&lt;/code&gt;, Grafana assumes base64-encoded XML file contents.&lt;/li&gt;
&lt;li&gt;With the &lt;code&gt;_path&lt;/code&gt; suffix, Grafana assumes a file path and attempts to read the file from the file system.&lt;/li&gt;
&lt;li&gt;With the &lt;code&gt;_url&lt;/code&gt; suffix, Grafana assumes a URL and attempts to load the metadata from the given location.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;maximum-issue-delay&#34;&gt;Maximum issue delay&lt;/h3&gt;
&lt;p&gt;Prevents SAML response replay attacks and internal clock skews between the SP (Grafana) and the IdP. You can set a maximum amount of time between the IdP issuing a response and the SP (Grafana) processing it.&lt;/p&gt;
&lt;p&gt;The configuration options is specified as a duration, such as &lt;code&gt;max_issue_delay = 90s&lt;/code&gt; or &lt;code&gt;max_issue_delay = 1h&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;metadata-valid-duration&#34;&gt;Metadata valid duration&lt;/h3&gt;
&lt;p&gt;SP metadata is likely to expire at some point, perhaps due to a certificate rotation or change of location binding. Grafana allows you to specify for how long the metadata should be valid. Leveraging the &lt;code&gt;validUntil&lt;/code&gt; field, you can tell consumers until when your metadata is going to be valid. The duration is computed by adding the duration to the current time.&lt;/p&gt;
&lt;p&gt;The configuration option is specified as a duration, such as &lt;code&gt;metadata_valid_duration = 48h&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;identity-provider-idp-registration&#34;&gt;Identity provider (IdP) registration&lt;/h3&gt;
&lt;p&gt;For the SAML integration to work correctly, you need to make the IdP aware of the SP.&lt;/p&gt;
&lt;p&gt;The integration provides two key endpoints as part of Grafana:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;/saml/metadata&lt;/code&gt; endpoint, which contains the SP metadata. You can either download and upload it manually, or you make the IdP request it directly from the endpoint. Some providers name it Identifier or Entity ID.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;/saml/acs&lt;/code&gt; endpoint, which is intended to receive the ACS (Assertion Customer Service) callback. Some providers name it SSO URL or Reply URL.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;idp-initiated-single-sign-on-sso&#34;&gt;IdP-initiated Single Sign-On (SSO)&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Only available in Grafana v7.3&#43;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;By default, Grafana allows only service provider (SP) initiated logins (when the user logs in with SAML via Grafana’s login page). If you want users to log in into Grafana directly from your identity provider (IdP), set the &lt;code&gt;allow_idp_initiated&lt;/code&gt; configuration option to &lt;code&gt;true&lt;/code&gt; and configure &lt;code&gt;relay_state&lt;/code&gt; with the same value specified in the IdP configuration.&lt;/p&gt;
&lt;p&gt;IdP-initiated SSO has some security risks, so make sure you understand the risks before enabling this feature. When using IdP-initiated SSO, Grafana receives unsolicited SAML requests and can&amp;rsquo;t verify that login flow was started by the user. This makes it hard to detect whether SAML message has been stolen or replaced. Because of this, IdP-initiated SSO is vulnerable to login cross-site request forgery (CSRF) and man in the middle (MITM) attacks. We do not recommend using IdP-initiated SSO and keeping it disabled whenever possible.&lt;/p&gt;
&lt;h3 id=&#34;single-logout&#34;&gt;Single logout&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Only available in Grafana v7.3&#43;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;SAML&amp;rsquo;s single logout feature allows users to log out from all applications associated with the current IdP session established via SAML SSO. If the &lt;code&gt;single_logout&lt;/code&gt; option is set to &lt;code&gt;true&lt;/code&gt; and a user logs out, Grafana requests IdP to end the user session which in turn triggers logout from all other applications the user is logged into using the same IdP session (applications should support single logout). Conversely, if another application connected to the same IdP logs out using single logout, Grafana receives a logout request from IdP and ends the user session.&lt;/p&gt;
&lt;h3 id=&#34;assertion-mapping&#34;&gt;Assertion mapping&lt;/h3&gt;
&lt;p&gt;During the SAML SSO authentication flow, Grafana receives the ACS callback. The callback contains all the relevant information of the user under authentication embedded in the SAML response. Grafana parses the response to create (or update) the user within its internal database.&lt;/p&gt;
&lt;p&gt;For Grafana to map the user information, it looks at the individual attributes within the assertion. You can think of these attributes as Key/Value pairs (although, they contain more information than that).&lt;/p&gt;
&lt;p&gt;Grafana provides configuration options that let you modify which keys to look at for these values. The data we need to create the user in Grafana is Name, Login handle, and email.&lt;/p&gt;
&lt;h3 id=&#34;configure-team-sync&#34;&gt;Configure team sync&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Team sync support for SAML only available in Grafana v7.0&#43;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;To use SAML Team sync, set &lt;a href=&#34;../enterprise-configuration/#assertion-attribute-groups&#34;&gt;&lt;code&gt;assertion_attribute_groups&lt;/code&gt;&lt;/a&gt; to the attribute name where you store user groups. Then Grafana will use attribute values extracted from SAML assertion to add user into the groups with the same name configured on the External group sync tab.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;../team-sync/&#34;&gt;Learn more about Team Sync&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;configure-role-sync&#34;&gt;Configure role sync&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Only available in Grafana v7.0&#43;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Role sync allows you to map user roles from an identity provider to Grafana. To enable role sync, configure role attribute and possible values for the &lt;a href=&#34;../../permissions/organization_roles/#editor-role&#34;&gt;Editor&lt;/a&gt;, &lt;a href=&#34;../../permissions/organization_roles/#admin-role&#34;&gt;Admin&lt;/a&gt; and &lt;a href=&#34;../../permissions/#grafana-admin&#34;&gt;Grafana Admin&lt;/a&gt; roles.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the configuration file, set &lt;a href=&#34;../enterprise-configuration/#assertion-attribute-role&#34;&gt;&lt;code&gt;assertion_attribute_role&lt;/code&gt;&lt;/a&gt; option to the attribute name where the role information will be extracted from.&lt;/li&gt;
&lt;li&gt;Set the &lt;a href=&#34;../enterprise-configuration/#role-values-editor&#34;&gt;&lt;code&gt;role_values_editor&lt;/code&gt;&lt;/a&gt; option to the values mapped to the &lt;code&gt;Editor&lt;/code&gt; role.&lt;/li&gt;
&lt;li&gt;Set the &lt;a href=&#34;../enterprise-configuration/#role-values-admin&#34;&gt;&lt;code&gt;role_values_admin&lt;/code&gt;&lt;/a&gt; option to the values mapped to the organization &lt;code&gt;Admin&lt;/code&gt; role.&lt;/li&gt;
&lt;li&gt;Set the &lt;a href=&#34;../enterprise-configuration/#role-values-grafana-admin&#34;&gt;&lt;code&gt;role_values_grafana_admin&lt;/code&gt;&lt;/a&gt; option to the values mapped to the &lt;code&gt;Grafana Admin&lt;/code&gt; role.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If a user role doesn&amp;rsquo;t match any of configured values, then the &lt;code&gt;Viewer&lt;/code&gt; role will be assigned.&lt;/p&gt;
&lt;p&gt;Refer to &lt;a href=&#34;../../permissions/organization_roles/&#34;&gt;Organization roles&lt;/a&gt; for more information about roles and permissions in Grafana.&lt;/p&gt;
&lt;p&gt;Example configuration:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;[auth.saml]
assertion_attribute_role = role
role_values_editor = editor, developer
role_values_admin = admin, operator
role_values_grafana_admin = superadmin&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt;: When role sync is configured, any changes of user roles and organization membership made manually in Grafana will be overwritten on next user login. Assign user organizations and roles in the IdP instead.&lt;/p&gt;
&lt;h3 id=&#34;configure-organization-mapping&#34;&gt;Configure organization mapping&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Only available in Grafana v7.0&#43;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Organization mapping allows you to assign users to particular organization in Grafana depending on attribute value obtained from identity provider.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In configuration file, set &lt;a href=&#34;../enterprise-configuration/#assertion-attribute-org&#34;&gt;&lt;code&gt;assertion_attribute_org&lt;/code&gt;&lt;/a&gt; to the attribute name you store organization info in.&lt;/li&gt;
&lt;li&gt;Set &lt;a href=&#34;../enterprise-configuration/#org-mapping&#34;&gt;&lt;code&gt;org_mapping&lt;/code&gt;&lt;/a&gt; option to the comma-separated list of &lt;code&gt;Organization:OrgId&lt;/code&gt; pairs to map organization from IdP to Grafana organization specified by id.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For example, use following configuration to assign users from &lt;code&gt;Engineering&lt;/code&gt; organization to the Grafana organization with id &lt;code&gt;2&lt;/code&gt; and users from &lt;code&gt;Sales&lt;/code&gt; - to the org with id &lt;code&gt;3&lt;/code&gt;, based on &lt;code&gt;Org&lt;/code&gt; assertion attribute value:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;[auth.saml]
assertion_attribute_org = Org
org_mapping = Engineering:2, Sales:3&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;You can specify multiple organizations both for the IdP and Grafana:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;org_mapping = Engineering:2, Sales:2&lt;/code&gt; to map users from &lt;code&gt;Engineering&lt;/code&gt; and &lt;code&gt;Sales&lt;/code&gt; to &lt;code&gt;2&lt;/code&gt; in Grafana.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;org_mapping = Engineering:2, Engineering:3&lt;/code&gt; to assign &lt;code&gt;Engineering&lt;/code&gt; to both &lt;code&gt;2&lt;/code&gt; and &lt;code&gt;3&lt;/code&gt; in Grafana.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;configure-allowed-organizations&#34;&gt;Configure allowed organizations&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Only available in Grafana v7.0&#43;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;With the &lt;a href=&#34;../enterprise-configuration/#allowed-organizations&#34;&gt;&lt;code&gt;allowed_organizations&lt;/code&gt;&lt;/a&gt; option you can specify a list of organizations where the user must be a member of at least one of them to be able to log in to Grafana.&lt;/p&gt;
&lt;h2 id=&#34;example-saml-configuration&#34;&gt;Example SAML configuration&lt;/h2&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;[auth.saml]
enabled = true
certificate_path = &amp;#34;/path/to/certificate.cert&amp;#34;
private_key_path = &amp;#34;/path/to/private_key.pem&amp;#34;
idp_metadata_path = &amp;#34;/my/metadata.xml&amp;#34;
max_issue_delay = 90s
metadata_valid_duration = 48h
assertion_attribute_name = displayName
assertion_attribute_login = mail
assertion_attribute_email = mail

assertion_attribute_groups = Group
assertion_attribute_role = Role
assertion_attribute_org = Org
role_values_editor = editor, developer
role_values_admin = admin, operator
role_values_grafana_admin = superadmin
org_mapping = Engineering:2, Sales:3
allowed_organizations = Engineering, Sales&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;set-up-saml-with-okta&#34;&gt;Set up SAML with Okta&lt;/h2&gt;
&lt;p&gt;This guide will follow you through the steps of configuring SAML authentication in Grafana with &lt;a href=&#34;https://okta.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Okta&lt;/a&gt;. You need to be an admin in your Okta organization to access Admin Console and create SAML integration. You also need permissions to edit Grafana config file and restart Grafana server.&lt;/p&gt;
&lt;h3 id=&#34;configure-the-saml-integration-in-okta&#34;&gt;Configure the SAML integration in Okta&lt;/h3&gt;
&lt;p&gt;To configure SAML integration with Okta, create integration inside the Okta organization first.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Log in to the &lt;a href=&#34;https://login.okta.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Okta portal&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Go to the Admin Console in your Okta organization by clicking &lt;strong&gt;Admin&lt;/strong&gt; in the upper-right corner. If you are in the Developer Console, then click &lt;strong&gt;Developer Console&lt;/strong&gt; in the upper-left corner and then click &lt;strong&gt;Classic UI&lt;/strong&gt; to switch over to the Admin Console.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the Admin Console, navigate to &lt;strong&gt;Applications&lt;/strong&gt; &amp;gt; &lt;strong&gt;Applications&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;strong&gt;Add Application&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;strong&gt;Create New App&lt;/strong&gt; to start the Application Integration Wizard.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Choose &lt;strong&gt;Web&lt;/strong&gt; as a platform.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select &lt;strong&gt;SAML 2.0&lt;/strong&gt; in the Sign on method section.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;strong&gt;Create&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On the &lt;strong&gt;General Settings&lt;/strong&gt; tab, enter a name for your Grafana integration. You can also upload a logo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On the &lt;strong&gt;Configure SAML&lt;/strong&gt; tab, enter the SAML information related to your Grafana instance:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;In the &lt;strong&gt;Single sign on URL&lt;/strong&gt; field, use the &lt;code&gt;/saml/acs&lt;/code&gt; endpoint URL of your Grafana instance, for example, &lt;code&gt;https://grafana.example.com/saml/acs&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the &lt;strong&gt;Audience URI (SP Entity ID)&lt;/strong&gt; field, use the &lt;code&gt;/saml/metadata&lt;/code&gt; endpoint URL, for example, &lt;code&gt;https://grafana.example.com/saml/metadata&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Leave the default values for &lt;strong&gt;Name ID format&lt;/strong&gt; and &lt;strong&gt;Application username&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the &lt;strong&gt;ATTRIBUTE STATEMENTS (OPTIONAL)&lt;/strong&gt; section, enter the SAML attributes to be shared with Grafana, for example:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Attribute name (in Grafana)&lt;/th&gt;
              &lt;th&gt;Value (in Okta profile)&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;Login&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;user.login&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Email&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;user.email&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;DisplayName&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;user.firstName &#43; &amp;quot; &amp;quot; &#43; user.lastName&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the &lt;strong&gt;GROUP ATTRIBUTE STATEMENTS (OPTIONAL)&lt;/strong&gt; section, enter a group attribute name (for example, &lt;code&gt;Group&lt;/code&gt;) and set filter to &lt;code&gt;Matches regex .*&lt;/code&gt; to return all user groups.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;strong&gt;Next&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On the final Feedback tab, fill out the form and then click &lt;strong&gt;Finish&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;edit-saml-options-in-the-grafana-config-file&#34;&gt;Edit SAML options in the Grafana config file&lt;/h3&gt;
&lt;p&gt;Once the application is created, configure Grafana to use it for SAML authentication. Refer to &lt;a href=&#34;../../administration/configuration/&#34;&gt;Configuration&lt;/a&gt; to get more information about how to configure Grafana.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the &lt;code&gt;[auth.saml]&lt;/code&gt; section in the Grafana configuration file, set &lt;a href=&#34;../enterprise-configuration/#enabled&#34;&gt;&lt;code&gt;enabled&lt;/code&gt;&lt;/a&gt; to &lt;code&gt;true&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Configure the &lt;a href=&#34;#certificate-and-private-key&#34;&gt;certificate and private key&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;On the Okta application page where you have been redirected after application created, navigate to the &lt;strong&gt;Sign On&lt;/strong&gt; tab and find &lt;strong&gt;Identity Provider metadata&lt;/strong&gt; link in the &lt;strong&gt;Settings&lt;/strong&gt; section.&lt;/li&gt;
&lt;li&gt;Set the &lt;a href=&#34;../enterprise-configuration/#idp-metadata-url&#34;&gt;&lt;code&gt;idp_metadata_url&lt;/code&gt;&lt;/a&gt; to the URL obtained from the previous step. The URL should look like &lt;code&gt;https://&amp;lt;your-org-id&amp;gt;.okta.com/app/&amp;lt;application-id&amp;gt;/sso/saml/metadata&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Set the following options to the attribute names configured at the &lt;strong&gt;step 10&lt;/strong&gt; of the SAML integration setup. You can find this attributes on the &lt;strong&gt;General&lt;/strong&gt; tab of the application page (&lt;strong&gt;ATTRIBUTE STATEMENTS&lt;/strong&gt; and &lt;strong&gt;GROUP ATTRIBUTE STATEMENTS&lt;/strong&gt; in the &lt;strong&gt;SAML Settings&lt;/strong&gt; section).
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../enterprise-configuration/#assertion-attribute-login&#34;&gt;&lt;code&gt;assertion_attribute_login&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../enterprise-configuration/#assertion-attribute-email&#34;&gt;&lt;code&gt;assertion_attribute_email&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../enterprise-configuration/#assertion-attribute-name&#34;&gt;&lt;code&gt;assertion_attribute_name&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../enterprise-configuration/#assertion-attribute-groups&#34;&gt;&lt;code&gt;assertion_attribute_groups&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Save the configuration file and and then restart the Grafana server.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When you are finished, the Grafana configuration might look like this example:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;[server]
root_url = https://grafana.example.com

[auth.saml]
enabled = true
private_key_path = &amp;#34;/path/to/private_key.pem&amp;#34;
certificate_path = &amp;#34;/path/to/certificate.cert&amp;#34;
idp_metadata_url = &amp;#34;https://my-org.okta.com/app/my-application/sso/saml/metadata&amp;#34;
assertion_attribute_name = DisplayName
assertion_attribute_login = Login
assertion_attribute_email = Email
assertion_attribute_groups = Group&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;troubleshoot-saml-authentication&#34;&gt;Troubleshoot SAML authentication&lt;/h2&gt;
&lt;p&gt;To troubleshoot and get more log information, enable SAML debug logging in the configuration file. Refer to &lt;a href=&#34;../../administration/configuration/#filters&#34;&gt;Configuration&lt;/a&gt; for more information.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;[log]
filters = saml.auth:debug&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="saml-authentication">SAML authentication&lt;/h1>
&lt;p>SAML authentication integration allows your Grafana users to log in by using an external SAML 2.0 Identity Provider (IdP). To enable this, Grafana becomes a Service Provider (SP) in the authentication flow, interacting with the IdP to exchange user information.&lt;/p></description></item><item><title>Team sync</title><link>https://grafana.com/docs/grafana/v8.2/enterprise/team-sync/</link><pubDate>Fri, 03 Apr 2026 20:44:05 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.2/enterprise/team-sync/</guid><content><![CDATA[&lt;h1 id=&#34;team-sync&#34;&gt;Team sync&lt;/h1&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow docs-image--right&#34;
    style=&#34;max-width: 600px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/enterprise/team_members_ldap.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/enterprise/team_members_ldap.png&#34;data-srcset=&#34;/static/img/docs/enterprise/team_members_ldap.png?w=320 320w, /static/img/docs/enterprise/team_members_ldap.png?w=550 550w, /static/img/docs/enterprise/team_members_ldap.png?w=750 750w, /static/img/docs/enterprise/team_members_ldap.png?w=900 900w, /static/img/docs/enterprise/team_members_ldap.png?w=1040 1040w, /static/img/docs/enterprise/team_members_ldap.png?w=1240 1240w, /static/img/docs/enterprise/team_members_ldap.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;979&#34;height=&#34;382&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/enterprise/team_members_ldap.png&#34;
            alt=&#34;&#34;width=&#34;979&#34;height=&#34;382&#34;class=&#34;docs-image--no-shadow docs-image--right&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;Team sync lets you set up synchronization between your auth providers teams and teams in Grafana. This enables LDAP, OAuth, or SAML users who are members of certain teams or groups to automatically be added or removed as members of certain teams in Grafana.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Available in Grafana Cloud Pro and Advanced and in Grafana Enterprise.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Grafana keeps track of all synchronized users in teams, and you can see which users have been synchronized in the team members list, see &lt;code&gt;LDAP&lt;/code&gt; label in screenshot.
This mechanism allows Grafana to remove an existing synchronized user from a team when its group membership changes. This mechanism also enables you to manually add a user as member of a team, and it will not be removed when the user signs in. This gives you flexibility to combine LDAP group memberships and Grafana team memberships.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Currently the synchronization only happens when a user logs in, unless LDAP is used with the active background synchronization that was added in Grafana 6.3.&lt;/p&gt;&lt;/blockquote&gt;
&lt;div class=&#34;clearfix&#34;&gt;&lt;/div&gt;
&lt;h2 id=&#34;supported-providers&#34;&gt;Supported providers&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../auth/auth-proxy/#team-sync-enterprise-only&#34;&gt;Auth Proxy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../auth/azuread/#team-sync-enterprise-only&#34;&gt;Azure AD&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../auth/github/#team-sync-enterprise-only&#34;&gt;GitHub OAuth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../auth/gitlab/#team-sync-enterprise-only&#34;&gt;GitLab OAuth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../enhanced_ldap/#ldap-group-synchronization-for-teams&#34;&gt;LDAP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../auth/okta/#team-sync-enterprise-only&#34;&gt;Okta&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../saml/#configure-team-sync&#34;&gt;SAML&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;synchronize-a-grafana-team-with-an-external-group&#34;&gt;Synchronize a Grafana team with an external group&lt;/h2&gt;
&lt;p&gt;If you have already grouped some users into a team, then you can synchronize that team with an external group.&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow docs-image--right&#34;
    style=&#34;max-width: 600px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/static/img/docs/enterprise/team_add_external_group.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/static/img/docs/enterprise/team_add_external_group.png&#34;data-srcset=&#34;/static/img/docs/enterprise/team_add_external_group.png?w=320 320w, /static/img/docs/enterprise/team_add_external_group.png?w=550 550w, /static/img/docs/enterprise/team_add_external_group.png?w=750 750w, /static/img/docs/enterprise/team_add_external_group.png?w=900 900w, /static/img/docs/enterprise/team_add_external_group.png?w=1040 1040w, /static/img/docs/enterprise/team_add_external_group.png?w=1240 1240w, /static/img/docs/enterprise/team_add_external_group.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;&#34;width=&#34;966&#34;height=&#34;347&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/enterprise/team_add_external_group.png&#34;
            alt=&#34;&#34;width=&#34;966&#34;height=&#34;347&#34;class=&#34;docs-image--no-shadow docs-image--right&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;In Grafana, navigate to &lt;strong&gt;Configuration &amp;gt; Teams&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select a team.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On the External group sync tab, and click &lt;strong&gt;Add group&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Insert the value of the group you want to sync with. This becomes the Grafana &lt;code&gt;GroupID&lt;/code&gt;.
Examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For LDAP, this is the LDAP distinguished name (DN) of LDAP group you want to synchronize with the team.&lt;/li&gt;
&lt;li&gt;For Auth Proxy, this is the value we receive as part of the custom &lt;code&gt;Groups&lt;/code&gt; header.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;code&gt;Add group&lt;/code&gt; to save.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
]]></content><description>&lt;h1 id="team-sync">Team sync&lt;/h1>
&lt;figure
class="figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow docs-image--right"
style="max-width: 600px;"
itemprop="associatedMedia"
itemscope=""
itemtype="http://schema.org/ImageObject"
>&lt;a
class="lightbox-link"
href="/static/img/docs/enterprise/team_members_ldap.png"
itemprop="contentUrl"
>&lt;div class="img-wrapper w-100p h-auto">&lt;img
class="lazyload "
data-src="/static/img/docs/enterprise/team_members_ldap.png"data-srcset="/static/img/docs/enterprise/team_members_ldap.png?w=320 320w, /static/img/docs/enterprise/team_members_ldap.png?w=550 550w, /static/img/docs/enterprise/team_members_ldap.png?w=750 750w, /static/img/docs/enterprise/team_members_ldap.png?w=900 900w, /static/img/docs/enterprise/team_members_ldap.png?w=1040 1040w, /static/img/docs/enterprise/team_members_ldap.png?w=1240 1240w, /static/img/docs/enterprise/team_members_ldap.png?w=1920 1920w"data-sizes="auto"alt=""width="979"height="382"/>
&lt;noscript>
&lt;img
src="/static/img/docs/enterprise/team_members_ldap.png"
alt=""width="979"height="382"class="docs-image--no-shadow docs-image--right"/>
&lt;/noscript>&lt;/div>&lt;/a>&lt;/figure>
&lt;p>Team sync lets you set up synchronization between your auth providers teams and teams in Grafana. This enables LDAP, OAuth, or SAML users who are members of certain teams or groups to automatically be added or removed as members of certain teams in Grafana.&lt;/p></description></item><item><title>Auditing</title><link>https://grafana.com/docs/grafana/v8.2/enterprise/auditing/</link><pubDate>Fri, 03 Apr 2026 20:44:05 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.2/enterprise/auditing/</guid><content><![CDATA[&lt;h1 id=&#34;auditing&#34;&gt;Auditing&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Only available in Grafana Enterprise v7.3&#43;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Auditing allows you to track important changes to your Grafana instance. By default, audit logs are logged to file but the auditing feature also supports sending logs directly to Loki.&lt;/p&gt;
&lt;h2 id=&#34;audit-logs&#34;&gt;Audit logs&lt;/h2&gt;
&lt;p&gt;Audit logs are JSON objects representing user actions like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Modifications to resources such as dashboards and data sources.&lt;/li&gt;
&lt;li&gt;A user failing to log in.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;format&#34;&gt;Format&lt;/h3&gt;
&lt;p&gt;Audit logs contain the following fields. The fields followed by &lt;strong&gt;*&lt;/strong&gt; are always available, the others depend on the type of action logged.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Field name&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;timestamp&lt;/code&gt;*&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;The date and time the request was made, in coordinated universal time (UTC) using the &lt;a href=&#34;https://tools.ietf.org/html/rfc3339#section-5.6&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;RFC3339&lt;/a&gt; format.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;user&lt;/code&gt;*&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;Information about the user that made the request. Either one of the &lt;code&gt;UserID&lt;/code&gt; or &lt;code&gt;ApiKeyID&lt;/code&gt; fields will contain content if &lt;code&gt;isAnonymous=false&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;user.userId&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;ID of the Grafana user that made the request.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;user.orgId&lt;/code&gt;*&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;Current organization of the user that made the request.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;user.orgRole&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Current role of the user that made the request.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;user.name&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Name of the Grafana user that made the request.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;user.tokenId&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;ID of the user authentication token.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;user.apiKeyId&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;ID of the Grafana API key used to make the request.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;user.isAnonymous&lt;/code&gt;*&lt;/td&gt;
              &lt;td&gt;boolean&lt;/td&gt;
              &lt;td&gt;If an anonymous user made the request, &lt;code&gt;true&lt;/code&gt;. Otherwise, &lt;code&gt;false&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;action&lt;/code&gt;*&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;The request action. For example, &lt;code&gt;create&lt;/code&gt;, &lt;code&gt;update&lt;/code&gt;, or &lt;code&gt;manage-permissions&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;request&lt;/code&gt;*&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;Information about the HTTP request.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;request.params&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;Request’s path parameters.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;request.query&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;Request’s query parameters.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;request.body&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Request’s body.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;result&lt;/code&gt;*&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;Information about the HTTP response.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;result.statusType&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;If the request action was successful, &lt;code&gt;success&lt;/code&gt;. Otherwise, &lt;code&gt;failure&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;result.statusCode&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;HTTP status of the request.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;result.failureMessage&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;HTTP error message.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;result.body&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Response body.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;resources&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;array&lt;/td&gt;
              &lt;td&gt;Information about the resources that the request action affected. This field can be null for non-resource actions such as &lt;code&gt;login&lt;/code&gt; or &lt;code&gt;logout&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;resources[x].id&lt;/code&gt;*&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;ID of the resource.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;resources[x].type&lt;/code&gt;*&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;The type of the resource that was logged: &lt;code&gt;alert&lt;/code&gt;, &lt;code&gt;alert-notification&lt;/code&gt;, &lt;code&gt;annotation&lt;/code&gt;, &lt;code&gt;api-key&lt;/code&gt;, &lt;code&gt;auth-token&lt;/code&gt;, &lt;code&gt;dashboard&lt;/code&gt;, &lt;code&gt;datasource&lt;/code&gt;, &lt;code&gt;folder&lt;/code&gt;, &lt;code&gt;org&lt;/code&gt;, &lt;code&gt;panel&lt;/code&gt;, &lt;code&gt;playlist&lt;/code&gt;, &lt;code&gt;report&lt;/code&gt;, &lt;code&gt;team&lt;/code&gt;, &lt;code&gt;user&lt;/code&gt;, or &lt;code&gt;version&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;requestUri&lt;/code&gt;*&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Request URI.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;ipAddress&lt;/code&gt;*&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;IP address that the request was made from.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;userAgent&lt;/code&gt;*&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Agent through which the request was made.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;grafanaVersion&lt;/code&gt;*&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Current version of Grafana when this log is created.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;additionalData&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;Additional information that can be provided about the request.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;The &lt;code&gt;additionalData&lt;/code&gt; field can contain the following information:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Field name&lt;/th&gt;
              &lt;th&gt;Action&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;loginUsername&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;login&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Login used in the Grafana authentication form.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;extUserInfo&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;login&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;User information provided by the external system that was used to log in.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;authTokenCount&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;login&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Number of active authentication tokens for the user that logged in.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;terminationReason&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;logout&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;The reason why the user logged out, such as a manual logout or a token expiring.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;recorded-actions&#34;&gt;Recorded actions&lt;/h3&gt;
&lt;p&gt;The audit logs include records about the following categories of actions:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sessions&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Log in.&lt;/li&gt;
&lt;li&gt;Log out (manual log out, token expired/revoked, &lt;a href=&#34;../saml/#single-logout&#34;&gt;SAML Single Logout&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Revoke a user authentication token.&lt;/li&gt;
&lt;li&gt;Create or delete an API key.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;User management&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create, update, or delete a user.&lt;/li&gt;
&lt;li&gt;Enable or disable a user.&lt;/li&gt;
&lt;li&gt;Manage user role and permissions.&lt;/li&gt;
&lt;li&gt;LDAP sync or information access.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Team and organization management&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create, update, or delete a team or organization.&lt;/li&gt;
&lt;li&gt;Add or remove a member of a team or organization.&lt;/li&gt;
&lt;li&gt;Manage organization members roles.&lt;/li&gt;
&lt;li&gt;Manage team members permissions.&lt;/li&gt;
&lt;li&gt;Invite an external member to an organization.&lt;/li&gt;
&lt;li&gt;Revoke a pending invitation to an organization.&lt;/li&gt;
&lt;li&gt;Add or remove an external group to sync with a team.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Folder and dashboard management&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create, update, or delete a folder.&lt;/li&gt;
&lt;li&gt;Manage folder permissions.&lt;/li&gt;
&lt;li&gt;Create, import, update, or delete a dashboard.&lt;/li&gt;
&lt;li&gt;Restore an old dashboard version.&lt;/li&gt;
&lt;li&gt;Manage dashboard permissions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Data sources management&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create, update, or delete a data source.&lt;/li&gt;
&lt;li&gt;Manage data source permissions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Alerts and notification channels management&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create, update, or delete a notification channel.&lt;/li&gt;
&lt;li&gt;Test an alert or a notification channel.&lt;/li&gt;
&lt;li&gt;Pause an alert.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Reporting&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create, update, or delete a report.&lt;/li&gt;
&lt;li&gt;Update reporting settings.&lt;/li&gt;
&lt;li&gt;Send reporting email.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Annotations, playlists and snapshots management&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create, update, or delete an annotation.&lt;/li&gt;
&lt;li&gt;Create, update, or delete a playlist.&lt;/li&gt;
&lt;li&gt;Create or delete a snapshot.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The auditing feature is disabled by default.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Audit logs can be saved into files, sent to a Loki instance or sent to the Grafana default logger. By default, only the file exporter is enabled.
You can choose which exporter to use in the &lt;a href=&#34;../../administration/configuration/&#34;&gt;configuration file&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Options are &lt;code&gt;file&lt;/code&gt;, &lt;code&gt;loki&lt;/code&gt;, and &lt;code&gt;console&lt;/code&gt;. Use spaces to separate multiple modes, such as &lt;code&gt;file loki&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;By default, when a user creates or updates a dashboard, its content will not appear in the logs as it can significantly increase the size of your logs. If this is important information for you and you can handle the amount of data generated, then you can enable this option in the configuration.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;ini&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-ini&#34;&gt;[auditing]
# Enable the auditing feature
enabled = false
# List of enabled loggers
loggers = file
# Keep dashboard content in the logs (request or response fields); this can significantly increase the size of your logs.
log_dashboard_content = false&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Each exporter has its own configuration fields.&lt;/p&gt;
&lt;h3 id=&#34;file-exporter&#34;&gt;File exporter&lt;/h3&gt;
&lt;p&gt;Audit logs are saved into files. You can configure the folder to use to save these files. Logs are rotated when the file size is exceeded and at the start of a new day.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;ini&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-ini&#34;&gt;[auditing.logs.file]
# Path to logs folder
path = data/log
# Maximum log files to keep
max_files = 5
# Max size in megabytes per log file
max_file_size_mb = 256&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;loki-exporter&#34;&gt;Loki exporter&lt;/h3&gt;
&lt;p&gt;Audit logs are sent to a &lt;a href=&#34;/oss/loki/&#34;&gt;Loki&lt;/a&gt; service, through HTTP or gRPC.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The HTTP option for the Loki exporter is only available in Grafana Enterprise v7.4&#43;.&lt;/p&gt;&lt;/blockquote&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;ini&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-ini&#34;&gt;[auditing.logs.loki]
# Set the communication protocol to use with Loki (can be grpc or http)
type = grpc
# Set the address for writing logs to Loki (format must be host:port)
url = localhost:9095
# Defaults to true. If true, it establishes a secure connection to Loki
tls = true&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;If you have multiple Grafana instances sending logs to the same Loki service or if you are using Loki for non-audit logs, audit logs come with additional labels to help identifying them:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;host&lt;/strong&gt; - OS hostname on which the Grafana instance is running.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;grafana_instance&lt;/strong&gt; - Application URL.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;kind&lt;/strong&gt; - &lt;code&gt;auditing&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;console-exporter&#34;&gt;Console exporter&lt;/h3&gt;
&lt;p&gt;Audit logs are sent to the Grafana default logger. The audit logs use the &lt;code&gt;auditing.console&lt;/code&gt; logger and are logged on &lt;code&gt;debug&lt;/code&gt;-level, learn how to enable debug logging in the &lt;a href=&#34;../../administration/configuration/#log&#34;&gt;log configuration&lt;/a&gt; section of the documentation. Accessing the audit logs in this way is not recommended for production use.&lt;/p&gt;
]]></content><description>&lt;h1 id="auditing">Auditing&lt;/h1>
&lt;blockquote>
&lt;p>&lt;strong>Note:&lt;/strong> Only available in Grafana Enterprise v7.3+.&lt;/p>&lt;/blockquote>
&lt;p>Auditing allows you to track important changes to your Grafana instance. By default, audit logs are logged to file but the auditing feature also supports sending logs directly to Loki.&lt;/p></description></item><item><title>Vault</title><link>https://grafana.com/docs/grafana/v8.2/enterprise/vault/</link><pubDate>Fri, 03 Apr 2026 20:44:05 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.2/enterprise/vault/</guid><content><![CDATA[&lt;h1 id=&#34;vault-integration&#34;&gt;Vault integration&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Only available in Grafana Enterprise v7.1&#43;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;If you manage your secrets with &lt;a href=&#34;https://www.hashicorp.com/products/vault&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Hashicorp Vault&lt;/a&gt;, you can use them for &lt;a href=&#34;../../administration/configuration/&#34;&gt;Configuration&lt;/a&gt;
and &lt;a href=&#34;../../administration/provisioning/&#34;&gt;Provisioning&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If you have Grafana &lt;a href=&#34;../../administration/set-up-for-high-availability/&#34;&gt;set up for high availability&lt;/a&gt;, then we advise not to use dynamic secrets for provisioning files.
Each Grafana instance is responsible for renewing its own leases. Your data source leases might expire when one of your Grafana servers shuts down.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Before using Vault, you need to activate it by providing a URL, authentication method (currently only token),
and a token for your Vault service. Grafana automatically renews the service token if it is renewable and
set up with a limited lifetime.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re using short-lived leases, then you can also configure how often Grafana should renew the lease and for how long. We recommend keeping the defaults unless you run into problems.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;ini&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-ini&#34;&gt;[keystore.vault]
# Location of the Vault server
;url =
# Vault namespace if using Vault with multi-tenancy
;namespace =
# Method for authenticating towards Vault. Vault is inactive if this option is not set
# Possible values: token
;auth_method =
# Secret token to connect to Vault when auth_method is token
;token =
# Time between checking if there are any secrets which needs to be renewed.
;lease_renewal_interval = 5m
# Time until expiration for tokens which are renewed. Should have a value higher than lease_renewal_interval
;lease_renewal_expires_within = 15m
# New duration for renewed tokens. Vault may be configured to ignore this value and impose a stricter limit.
;lease_renewal_increment = 1h&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example for &lt;code&gt;vault server -dev&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;ini&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-ini&#34;&gt;[keystore.vault]
url = http://127.0.0.1:8200 # HTTP should only be used for local testing
auth_method = token
token = s.sAZLyI0r7sFLMPq6MWtoOhAN # replace with your key&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;using-the-vault-expander&#34;&gt;Using the Vault expander&lt;/h2&gt;
&lt;p&gt;After you configure Vault, you must set the configuration or provisioning files you wish to
use Vault. Vault configuration is an extension of configuration&amp;rsquo;s &lt;a href=&#34;../../administration/configuration/#variable-expansion&#34;&gt;variable expansion&lt;/a&gt; and follows the
&lt;code&gt;$__vault{&amp;lt;argument&amp;gt;}&lt;/code&gt; syntax.&lt;/p&gt;
&lt;p&gt;The argument to Vault consists of three parts separated by a colon:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The first part specifies which secrets engine should be used.&lt;/li&gt;
&lt;li&gt;The second part specifies which secret should be accessed.&lt;/li&gt;
&lt;li&gt;The third part specifies which field of that secret should be used.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, if you place a Key/Value secret for the Grafana admin user in &lt;em&gt;secret/grafana/admin_defaults&lt;/em&gt;
the syntax for accessing it&amp;rsquo;s &lt;em&gt;password&lt;/em&gt; field would be &lt;code&gt;$__vault{kv:secret/grafana/admin_defaults:password}&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;secrets-engines&#34;&gt;Secrets engines&lt;/h3&gt;
&lt;p&gt;Vault supports many secrets engines which represents different methods for storing or generating secrets when requested by an
authorized user. Grafana supports a subset of these which are most likely to be relevant for a Grafana installation.&lt;/p&gt;
&lt;h4 id=&#34;keyvalue&#34;&gt;Key/Value&lt;/h4&gt;
&lt;p&gt;Grafana supports Vault&amp;rsquo;s &lt;a href=&#34;https://www.vaultproject.io/docs/secrets/kv/kv-v2&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;K/V version 2&lt;/a&gt; storage engine which
is used to store and retrieve arbitrary secrets as &lt;code&gt;kv&lt;/code&gt;.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;ini&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-ini&#34;&gt;$__vault{kv:secret/grafana/smtp:username}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&#34;databases&#34;&gt;Databases&lt;/h4&gt;
&lt;p&gt;The Vault &lt;a href=&#34;https://www.vaultproject.io/docs/secrets/databases&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;databases secrets engines&lt;/a&gt; is a family of
secret engines which shares a similar syntax and grants the user dynamic access to a database.
You can use this both for setting up Grafana&amp;rsquo;s own database access and for provisioning data sources.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;ini&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-ini&#34;&gt;$__vault{database:database/creds/grafana:username}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;examples&#34;&gt;Examples&lt;/h3&gt;
&lt;p&gt;The following examples show you how to set your &lt;a href=&#34;../../administration/configuration/&#34;&gt;configuration&lt;/a&gt; or &lt;a href=&#34;../../administration/provisioning/&#34;&gt;provisioning&lt;/a&gt; files to use Vault to retrieve configuration values.&lt;/p&gt;
&lt;h4 id=&#34;configuration-1&#34;&gt;Configuration&lt;/h4&gt;
&lt;p&gt;The following is a partial example for using Vault to set up a Grafana configuration file&amp;rsquo;s email and database credentials.
Refer to &lt;a href=&#34;../../administration/configuration/&#34;&gt;Configuration&lt;/a&gt; for more information.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;ini&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-ini&#34;&gt;[smtp]
enabled = true
host = $__vault{kv:secret/grafana/smtp:hostname}:587
user = $__vault{kv:secret/grafana/smtp:username}
password = $__vault{kv:secret/grafana/smtp:password}

[database]
type = mysql
host = mysqlhost:3306
name = grafana
user = $__vault{database:database/creds/grafana:username}
password = $__vault{database:database/creds/grafana:password}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&#34;provisioning&#34;&gt;Provisioning&lt;/h4&gt;
&lt;p&gt;The following is a full examples of a provisioning YAML file setting up a MySQL data source using Vault&amp;rsquo;s
database secrets engine.
Refer to &lt;a href=&#34;../../administration/provisioning/&#34;&gt;Provisioning&lt;/a&gt; for more information.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;provisioning/custom.yaml&lt;/strong&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;ini&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-ini&#34;&gt;apiVersion: 1

datasources:
  - name: statistics
    type: mysql
    url: localhost:3306
    database: stats
    user: $__vault{database:database/creds/ro/stats:username}
    secureJsonData:
      password: $__vault{database:database/creds/ro/stats:password}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="vault-integration">Vault integration&lt;/h1>
&lt;blockquote>
&lt;p>Only available in Grafana Enterprise v7.1+.&lt;/p>&lt;/blockquote>
&lt;p>If you manage your secrets with &lt;a href="https://www.hashicorp.com/products/vault" target="_blank" rel="noopener noreferrer">Hashicorp Vault&lt;/a>, you can use them for &lt;a href="../../administration/configuration/">Configuration&lt;/a>
and &lt;a href="../../administration/provisioning/">Provisioning&lt;/a>.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Note:&lt;/strong> If you have Grafana &lt;a href="../../administration/set-up-for-high-availability/">set up for high availability&lt;/a>, then we advise not to use dynamic secrets for provisioning files.
Each Grafana instance is responsible for renewing its own leases. Your data source leases might expire when one of your Grafana servers shuts down.&lt;/p></description></item><item><title>White labeling</title><link>https://grafana.com/docs/grafana/v8.2/enterprise/white-labeling/</link><pubDate>Fri, 03 Apr 2026 20:44:05 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.2/enterprise/white-labeling/</guid><content><![CDATA[&lt;h1 id=&#34;white-labeling&#34;&gt;White labeling&lt;/h1&gt;
&lt;p&gt;White labeling allows you to replace the Grafana brand and logo with your own corporate brand and logo.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Only available in Grafana Enterprise v6.6&#43;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Grafana Enterprise has white labeling options in the &lt;code&gt;grafana.ini&lt;/code&gt; file. As with all configuration options, you can also set them with environment variables.&lt;/p&gt;
&lt;p&gt;You can change the following elements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Application title&lt;/li&gt;
&lt;li&gt;Login background&lt;/li&gt;
&lt;li&gt;Login logo&lt;/li&gt;
&lt;li&gt;Side menu top logo&lt;/li&gt;
&lt;li&gt;Footer and help menu links&lt;/li&gt;
&lt;li&gt;Fav icon (shown in browser tab)&lt;/li&gt;
&lt;li&gt;Login title (will not appear if a login logo is set, Grafana v7.0&#43;)&lt;/li&gt;
&lt;li&gt;Login subtitle (will not appear if a login logo is set, Grafana v7.0&#43;)&lt;/li&gt;
&lt;li&gt;Login box background (Grafana v7.0&#43;)&lt;/li&gt;
&lt;li&gt;Loading logo&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;You will have to host your logo and other images used by the white labeling feature separately. Make sure Grafana can access the URL where the assets are stored.&lt;/p&gt;&lt;/blockquote&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p &#34;
    style=&#34;max-width: 800px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link captioned&#34;
        href=&#34;/static/img/docs/v66/whitelabeling_1.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload mb-0&#34;
          data-src=&#34;/static/img/docs/v66/whitelabeling_1.png&#34;data-srcset=&#34;/static/img/docs/v66/whitelabeling_1.png?w=320 320w, /static/img/docs/v66/whitelabeling_1.png?w=550 550w, /static/img/docs/v66/whitelabeling_1.png?w=750 750w, /static/img/docs/v66/whitelabeling_1.png?w=900 900w, /static/img/docs/v66/whitelabeling_1.png?w=1040 1040w, /static/img/docs/v66/whitelabeling_1.png?w=1240 1240w, /static/img/docs/v66/whitelabeling_1.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;White labeling example&#34;width=&#34;1626&#34;height=&#34;1011&#34;title=&#34;White labeling example&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/static/img/docs/v66/whitelabeling_1.png&#34;
            alt=&#34;White labeling example&#34;width=&#34;1626&#34;height=&#34;1011&#34;title=&#34;White labeling example&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;figcaption class=&#34;w-100p caption text-gray-13  &#34;&gt;White labeling example&lt;/figcaption&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;The configuration file in Grafana Enterprise contains the following options. Each option is defined in the file. For more information about configuring Grafana, refer to &lt;a href=&#34;../../administration/configuration/&#34;&gt;Configuration&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;ini&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-ini&#34;&gt;# Enterprise only
[white_labeling]
# Set to your company name to override application title
;app_title =

# Set to main title on the login page (Will not appear if a login logo is set)
;login_title =

# Set to login subtitle (Will not appear if a login logo is set)
;login_subtitle =

# Set to complete URL to override login logo
;login_logo =

# Set to complete CSS background expression to override login background
# example: login_background = url(http://www.bhmpics.com/wallpapers/starfield-1920x1080.jpg)
;login_background =

# Set to complete CSS background expression to override login box background
;login_box_background =

# Set to complete URL to override menu logo
;menu_logo =

# Set to complete URL to override fav icon (icon shown in browser tab)
;fav_icon =

# Set to complete URL to override apple/ios icon
;apple_touch_icon =

# Set to complete URL to override loading logo
;loading_logo =&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;You can replace the default footer links (Documentation, Support, Community) and even add your own custom links.
An example follows for replacing the default footer and help links with new custom links.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;ini&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-ini&#34;&gt;footer_links = support guides extracustom
footer_links_support_text = Support
footer_links_support_url = http://your.support.site
footer_links_guides_text = Guides
footer_links_guides_url = http://your.guides.site
footer_links_extracustom_text = Custom text
footer_links_extracustom_url = http://your.custom.site&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Here is the same example using environment variables instead of the custom.ini or grafana.ini file.&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GF_WHITE_LABELING_FOOTER_LINKS=support guides extracustom
GF_WHITE_LABELING_FOOTER_LINKS_SUPPORT_TEXT=Support
GF_WHITE_LABELING_FOOTER_LINKS_SUPPORT_URL=http://your.support.site
GF_WHITE_LABELING_FOOTER_LINKS_GUIDES_TEXT=Guides
GF_WHITE_LABELING_FOOTER_LINKS_GUIDES_URL=http://your.guides.site
GF_WHITE_LABELING_FOOTER_LINKS_EXTRACUSTOM_TEXT=Custom Text
GF_WHITE_LABELING_FOOTER_LINKS_EXTRACUSTOM_URL=http://your.custom.site&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The following two links are always present in the footer:&lt;/p&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Grafana edition&lt;/li&gt;
&lt;li&gt;Grafana version with build number&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you specify &lt;code&gt;footer_links&lt;/code&gt; or &lt;code&gt;GF_WHITE_LABELING_FOOTER_LINKS&lt;/code&gt;, then all other default links are removed from the footer and only what is specified is included.&lt;/p&gt;
]]></content><description>&lt;h1 id="white-labeling">White labeling&lt;/h1>
&lt;p>White labeling allows you to replace the Grafana brand and logo with your own corporate brand and logo.&lt;/p>
&lt;blockquote>
&lt;p>Only available in Grafana Enterprise v6.6+.&lt;/p></description></item><item><title>Export dashboard as PDF</title><link>https://grafana.com/docs/grafana/v8.2/enterprise/export-pdf/</link><pubDate>Fri, 03 Apr 2026 20:44:05 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.2/enterprise/export-pdf/</guid><content><![CDATA[&lt;h1 id=&#34;export-dashboard-as-pdf&#34;&gt;Export dashboard as PDF&lt;/h1&gt;
&lt;p&gt;You can generate PDFs from any of your dashboards and save it to file.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Only available in Grafana Enterprise v6.7&#43;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;In the upper right corner of the dashboard that you want to export as PDF, click the &lt;strong&gt;Share dashboard&lt;/strong&gt; icon.&lt;/li&gt;
&lt;li&gt;On the PDF tab, select the layout option for exported dashboard: &lt;strong&gt;Portrait&lt;/strong&gt; or &lt;strong&gt;Landscape&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Save as PDF&lt;/strong&gt; to render dashboard as a PDF document.
Grafana opens the PDF in a new window or browser tab.&lt;/li&gt;
&lt;/ol&gt;
]]></content><description>&lt;h1 id="export-dashboard-as-pdf">Export dashboard as PDF&lt;/h1>
&lt;p>You can generate PDFs from any of your dashboards and save it to file.&lt;/p>
&lt;blockquote>
&lt;p>Only available in Grafana Enterprise v6.7+.&lt;/p>&lt;/blockquote>
&lt;ol>
&lt;li>In the upper right corner of the dashboard that you want to export as PDF, click the &lt;strong>Share dashboard&lt;/strong> icon.&lt;/li>
&lt;li>On the PDF tab, select the layout option for exported dashboard: &lt;strong>Portrait&lt;/strong> or &lt;strong>Landscape&lt;/strong>.&lt;/li>
&lt;li>Click &lt;strong>Save as PDF&lt;/strong> to render dashboard as a PDF document.
Grafana opens the PDF in a new window or browser tab.&lt;/li>
&lt;/ol></description></item></channel></rss>