<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Plan your IAM integration strategy on Grafana Labs</title><link>https://grafana.com/docs/grafana/v12.4/setup-grafana/configure-access/</link><description>Recent content in Plan your IAM integration strategy on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/grafana/v12.4/setup-grafana/configure-access/index.xml" rel="self" type="application/rss+xml"/><item><title>Configure authentication</title><link>https://grafana.com/docs/grafana/v12.4/setup-grafana/configure-access/configure-authentication/</link><pubDate>Fri, 03 Apr 2026 19:43:06 +0000</pubDate><guid>https://grafana.com/docs/grafana/v12.4/setup-grafana/configure-access/configure-authentication/</guid><content><![CDATA[&lt;h1 id=&#34;configure-authentication&#34;&gt;Configure authentication&lt;/h1&gt;
&lt;p&gt;Grafana provides many ways to authenticate users. Some authentication integrations also enable syncing user permissions and org memberships.&lt;/p&gt;
&lt;p&gt;The following table shows all supported authentication methods and the features available for them. &lt;a href=&#34;../configure-team-sync/&#34;&gt;Team sync&lt;/a&gt; and &lt;a href=&#34;enhanced-ldap/#active-ldap-synchronization&#34;&gt;active sync&lt;/a&gt; are only available in Grafana Enterprise.&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 style=&#34;text-align: left&#34;&gt;Authentication method&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Multi Org Mapping&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Enforce Sync&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Role Mapping&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Grafana Admin Mapping&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Team Sync&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Allowed groups&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Active Sync&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Skip OrgRole mapping&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Auto Login&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Single Logout&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;SCIM support&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;anonymous-auth/&#34;&gt;Anonymous access&lt;/a&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;auth-proxy/&#34;&gt;Auth Proxy&lt;/a&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;no&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;no&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;no&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;no&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;azuread/&#34;&gt;Entra ID OAuth&lt;/a&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;grafana/&#34;&gt;Basic auth&lt;/a&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;passwordless/&#34;&gt;Passwordless auth&lt;/a&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;generic-oauth/&#34;&gt;Generic OAuth&lt;/a&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;no&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;github/&#34;&gt;GitHub OAuth&lt;/a&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;gitlab/&#34;&gt;GitLab OAuth&lt;/a&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;google/&#34;&gt;Google OAuth&lt;/a&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;no&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;no&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;no&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;no&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;no&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;grafana-cloud/&#34;&gt;Grafana.com OAuth&lt;/a&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;no&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;no&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;no&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;okta/&#34;&gt;Okta OAuth&lt;/a&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;saml/&#34;&gt;SAML&lt;/a&gt; (Enterprise only)&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;ldap/&#34;&gt;LDAP&lt;/a&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;no&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;jwt/&#34;&gt;JWT Proxy&lt;/a&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;no&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;yes&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;no&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;no&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;no&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;N/A&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;Fields explanation:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Multi Org Mapping:&lt;/strong&gt; Able to add a user and map roles to multiple organizations&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enforce Sync:&lt;/strong&gt; If the information provided by the identity provider is empty, does the integration skip setting that user’s field or does it enforce a default.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Role Mapping:&lt;/strong&gt; Able to map a user’s role in the default org&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Grafana Admin Mapping:&lt;/strong&gt; Able to map a user’s admin role in the default org&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Team Sync:&lt;/strong&gt; Able to sync teams from a predefined group/team in a your IdP&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Allowed Groups:&lt;/strong&gt; Only allow members of certain groups to login&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Active Sync:&lt;/strong&gt; Add users to teams and update their profile without requiring them to log in&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Skip OrgRole Sync:&lt;/strong&gt; Able to modify org role for users and not sync it back to the IdP&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Auto Login:&lt;/strong&gt; Automatically redirects to provider login page if user is not logged in * for OAuth; Only works if it&amp;rsquo;s the only configured provider&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Single Logout:&lt;/strong&gt; Logging out from Grafana also logs you out of provider session&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SCIM support:&lt;/strong&gt; Support for SCIM provisioning. Supported Identity Providers are Entra ID and Okta.&lt;/p&gt;
&lt;h2 id=&#34;configuring-multiple-identity-providers&#34;&gt;Configuring multiple identity providers&lt;/h2&gt;
&lt;p&gt;Grafana allows you to configure more than one authentication provider, however it is not possible to configure the same type of authentication provider twice.
For example, you can have &lt;a href=&#34;saml/&#34;&gt;SAML&lt;/a&gt; (Enterprise only) and &lt;a href=&#34;generic-oauth/&#34;&gt;Generic OAuth&lt;/a&gt; configured, but you can not have two different &lt;a href=&#34;generic-oauth/&#34;&gt;Generic OAuth&lt;/a&gt; configurations.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: Grafana does not support multiple identity providers resolving the same user. Make sure no user account overlaps between the different providers.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;In scenarios where you have multiple identity providers of the same type, there are a couple of options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use different Grafana instances, each configured with a given identity provider.&lt;/li&gt;
&lt;li&gt;Check if the identity provider supports account federation. In such cases, you can configure it once and let your identity provider federate the accounts from different providers.&lt;/li&gt;
&lt;li&gt;If SAML is supported by the identity provider, you can configure one &lt;a href=&#34;generic-oauth/&#34;&gt;Generic OAuth&lt;/a&gt; and one &lt;a href=&#34;saml/&#34;&gt;SAML&lt;/a&gt; (Enterprise only).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;using-the-same-email-address-to-login-with-different-identity-providers&#34;&gt;Using the same email address to login with different identity providers&lt;/h2&gt;
&lt;p&gt;If users want to use the same email address with multiple identity providers (for example, Grafana.Com OAuth and Google OAuth), you can configure Grafana to use the email address as the unique identifier for the user. To do so, enable the &lt;code&gt;oauth_allow_insecure_email_lookup&lt;/code&gt; option, which is disabled by default. Refer to the &lt;a href=&#34;#enable-email-lookup&#34;&gt;Enable email lookup&lt;/a&gt; section for details.&lt;/p&gt;
&lt;p&gt;Note that enabling this option can lower the security of your Grafana instance. If you enable this option, make sure that the &lt;code&gt;Allowed organization&lt;/code&gt;, &lt;code&gt;Allowed groups&lt;/code&gt; and &lt;code&gt;Allowed domains&lt;/code&gt; settings are configured correctly to prevent unauthorized access.&lt;/p&gt;
&lt;h2 id=&#34;multi-factor-authentication-mfa2fa&#34;&gt;Multi-factor authentication (MFA/2FA)&lt;/h2&gt;
&lt;p&gt;Grafana and the Grafana Cloud portal currently do not include built-in support for multi-factor authentication (MFA).&lt;/p&gt;
&lt;p&gt;We strongly recommend integrating an external identity provider (IdP) that supports MFA, such as Okta, Entra ID, or Google Workspace. By configuring your Grafana instances to use an external IdP, you can leverage MFA to protect your accounts and resources effectively.&lt;/p&gt;
&lt;h2 id=&#34;login-and-short-lived-tokens&#34;&gt;Login and short-lived tokens&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;The following applies if you&amp;rsquo;re using Grafana basic authentication, LDAP (without Auth proxy) or OAuth integration.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Grafana uses short-lived tokens to verify authenticated users.&lt;/p&gt;
&lt;p&gt;You can set up the following parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;token_rotation_interval_minutes&lt;/code&gt;: Specifies the rotation interval of the token for active authenticated users.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;login_maximum_lifetime_duration&lt;/code&gt;: Specifies for how long a user remains authenticated before being prompted to authenticate again.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;login_maximum_inactive_lifetime_duration&lt;/code&gt;: Specifies for how long inactive authenticated users will remain logged in.
&lt;ul&gt;
&lt;li&gt;A user can close a Grafana window and return before &lt;code&gt;now &#43; login_maximum_inactive_lifetime_duration&lt;/code&gt; to continue their session.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;force-logout&#34;&gt;Force logout&lt;/h3&gt;
&lt;p&gt;Under certain circumstances you may require your users to re-authenticate before their session naturally expires. While Grafana doesn&amp;rsquo;t offer Admin session revocation as standard functionality, you have the following workarounds if you need to force the logout of a user:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Delete the user&amp;rsquo;s token &lt;code&gt;user_auth_token&lt;/code&gt; from the database. This requires database access as is not available to Grafana Cloud customers.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;login_maximum_lifetime_duration&lt;/code&gt; to 1 minute, wait for the logout to take effect (usually it&amp;rsquo;s executed in under 10 minutes), then reset &lt;code&gt;login_maximum_lifetime_duration&lt;/code&gt; to its usual value.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Use cases include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SSO migrations: Force re-auth to pick up new IdP/permissions&lt;/li&gt;
&lt;li&gt;Security incidents: Immediate response to credential compromise&lt;/li&gt;
&lt;li&gt;Permission changes: Ensure role changes take effect immediately&lt;/li&gt;
&lt;li&gt;Employee offboarding: Revoke access without waiting for session expiry&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;session-handling-with-sso&#34;&gt;Session handling with SSO&lt;/h2&gt;
&lt;p&gt;When using SSO (Single Sign-On) authentication methods, Grafana handles sessions differently based on the configuration:&lt;/p&gt;
&lt;h3 id=&#34;oauthopenid-connect&#34;&gt;OAuth/OpenID Connect&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Without refresh tokens (default):
&lt;ul&gt;
&lt;li&gt;Grafana creates a session valid for up to &lt;code&gt;login_maximum_lifetime_duration&lt;/code&gt; (default: 30 days).&lt;/li&gt;
&lt;li&gt;During this time, the session remains valid even if the user loses access at the IdP.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;With refresh tokens enabled:
&lt;ul&gt;
&lt;li&gt;The user receives a JWT refresh token. When the JWT expires and the refresh token is used to obtain a new token, Grafana will revalidate access with the IdP.&lt;/li&gt;
&lt;li&gt;If the user has been removed from required groups or access has been revoked, the refresh will fail and the session will be invalidated.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;saml&#34;&gt;SAML&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;After successful SAML authentication, Grafana creates a session with the default session lifetime.&lt;/li&gt;
&lt;li&gt;If SAML Single Logout (SLO) is properly configured, the session will be revoked when the user&amp;rsquo;s access is revoked on the IdP side.&lt;/li&gt;
&lt;li&gt;If SAML Single Logout (SLO) is properly configured, the session will be revoked when the user&amp;rsquo;s access is revoked on the IdP side. For more information on configuring SAML and SLO, refer to the &lt;a href=&#34;./saml/#configure-single-logout&#34;&gt;SAML configuration documentation&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;settings&#34;&gt;Settings&lt;/h2&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;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]

# Login cookie name
login_cookie_name = grafana_session

# The maximum lifetime (duration) an authenticated user can be inactive before being required to login at next visit. Default is 7 days (7d). This setting should be expressed as a duration, e.g. 5m (minutes), 6h (hours), 10d (days), 2w (weeks), 1M (month). The lifetime resets at each successful token rotation (token_rotation_interval_minutes).
login_maximum_inactive_lifetime_duration =

# The maximum lifetime (duration) an authenticated user can be logged in since login time before being required to login. Default is 30 days (30d). This setting should be expressed as a duration, e.g. 5m (minutes), 6h (hours), 10d (days), 2w (weeks), 1M (month).
login_maximum_lifetime_duration =

# How often should auth tokens be rotated for authenticated users when being active. The default is every 10 minutes.
token_rotation_interval_minutes = 10

# The maximum lifetime (seconds) an API key can be used. If it is set all the API keys should have limited lifetime that is lower than this value.
api_key_max_seconds_to_live = -1

# Enforce user lookup based on email instead of the unique ID provided by the IdP.
oauth_allow_insecure_email_lookup = false&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;extended-authentication-settings&#34;&gt;Extended authentication settings&lt;/h2&gt;
&lt;h3 id=&#34;enable-email-lookup&#34;&gt;Enable email lookup&lt;/h3&gt;
&lt;p&gt;By default, Grafana identifies users based on the unique ID provided by the identity provider (IdP).
In certain cases, however, enabling user lookups by email can be a feasible option, such as when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The identity provider is a single-tenant setup.&lt;/li&gt;
&lt;li&gt;Unique, validated, and non-editable emails are provided by the IdP.&lt;/li&gt;
&lt;li&gt;The infrastructure allows email-based identification without compromising security.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Important note&lt;/strong&gt;: While it is possible to configure Grafana to allow email-based user lookups, we strongly recommend against this approach in most cases due to potential security risks.
If you still choose to proceed, the following configuration can be applied to enable email lookup.&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]
oauth_allow_insecure_email_lookup = true&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;You can also enable email lookup using the API:&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;Available in &lt;a href=&#34;../../../introduction/grafana-enterprise/&#34;&gt;Grafana Enterprise&lt;/a&gt; and &lt;a href=&#34;../../../introduction/grafana-cloud/&#34;&gt;Grafana Cloud&lt;/a&gt; since Grafana v10.4.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&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;curl --request PUT \
  --url http://{slug}.grafana.com/api/admin/settings \
  --header &amp;#39;Authorization: Bearer glsa_yourserviceaccounttoken&amp;#39; \
  --header &amp;#39;Content-Type: application/json&amp;#39; \
  --data &amp;#39;{ &amp;#34;updates&amp;#34;: { &amp;#34;auth&amp;#34;: { &amp;#34;oauth_allow_insecure_email_lookup&amp;#34;: &amp;#34;true&amp;#34; }}}&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Finally, you can also enable it using the UI by going to &lt;strong&gt;Administration -&amp;gt; Authentication -&amp;gt; Auth settings&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&#34;automatic-oauth-login&#34;&gt;Automatic OAuth login&lt;/h3&gt;
&lt;p&gt;Set to true to attempt login with specific OAuth provider automatically, skipping the login screen.
This setting is ignored if multiple auth providers are configured to use auto login.
Defaults to &lt;code&gt;false&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;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.generic_oauth]
auto_login = true&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;avoid-automatic-login&#34;&gt;Avoid automatic login&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;disableAutoLogin=true&lt;/code&gt; URL parameter allows users to bypass the automatic login feature in scenarios where incorrect configuration changes prevent normal login functionality.
This feature is especially helpful when you need to access the login screen to troubleshoot and fix misconfigurations.&lt;/p&gt;
&lt;h4 id=&#34;how-to-use&#34;&gt;How to use&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Add &lt;code&gt;disableAutoLogin=true&lt;/code&gt; as a query parameter to your Grafana URL.
&lt;ul&gt;
&lt;li&gt;Example: &lt;code&gt;grafana.example.net/login?disableAutoLogin=true&lt;/code&gt; or &lt;code&gt;grafana.example.net/login?disableAutoLogin&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;This will redirect you to the standard login screen, bypassing the automatic login mechanism.&lt;/li&gt;
&lt;li&gt;Fix any configuration issues and test your login setup.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This feature is available for both for OAuth and SAML. Ensure that after fixing the issue, you remove the parameter or revert the configuration to re-enable the automatic login feature, if desired.&lt;/p&gt;
&lt;h3 id=&#34;hide-sign-out-menu&#34;&gt;Hide sign-out menu&lt;/h3&gt;
&lt;p&gt;Set the option detailed below to true to hide sign-out menu link. Useful if you use an auth proxy or JWT authentication.&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]
disable_signout_menu = true&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;url-redirect-after-signing-out&#34;&gt;URL redirect after signing out&lt;/h3&gt;
&lt;p&gt;URL to redirect the user to after signing out from Grafana. This can for example be used to enable signout from an OAuth provider.&lt;/p&gt;
&lt;p&gt;Example for Generic OAuth:&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.generic_oauth]
signout_redirect_url =&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;remote-logout&#34;&gt;Remote logout&lt;/h3&gt;
&lt;p&gt;You can log out from other devices by removing login sessions from the bottom of your profile page. If you are
a Grafana admin user, you can also do the same for any user from the Server Admin / Edit User view.&lt;/p&gt;
&lt;h3 id=&#34;protected-roles&#34;&gt;Protected roles&lt;/h3&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;Available in &lt;a href=&#34;../../../introduction/grafana-enterprise/&#34;&gt;Grafana Enterprise&lt;/a&gt; and &lt;a href=&#34;../../../introduction/grafana-cloud/&#34;&gt;Grafana Cloud&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;By default, after you configure an authorization provider, Grafana will adopt existing users into the new authentication scheme. For example, if you have created a user with basic authentication having the login &lt;code&gt;jsmith@example.com&lt;/code&gt;, then set up SAML authentication where &lt;code&gt;jsmith@example.com&lt;/code&gt; is an account, the user&amp;rsquo;s authentication type will be changed to SAML if they perform a SAML sign-in.&lt;/p&gt;
&lt;p&gt;You can disable this user adoption for certain roles using the &lt;code&gt;protected_roles&lt;/code&gt; property:&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.security]
protected_roles = server_admins org_admins&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The value of &lt;code&gt;protected_roles&lt;/code&gt; should be a list of roles to protect, separated by spaces. Valid roles are &lt;code&gt;viewers&lt;/code&gt;, &lt;code&gt;editors&lt;/code&gt;, &lt;code&gt;org_admins&lt;/code&gt;, &lt;code&gt;server_admins&lt;/code&gt;, and &lt;code&gt;all&lt;/code&gt; (a superset of the other roles).&lt;/p&gt;
]]></content><description>&lt;h1 id="configure-authentication">Configure authentication&lt;/h1>
&lt;p>Grafana provides many ways to authenticate users. Some authentication integrations also enable syncing user permissions and org memberships.&lt;/p>
&lt;p>The following table shows all supported authentication methods and the features available for them. &lt;a href="../configure-team-sync/">Team sync&lt;/a> and &lt;a href="enhanced-ldap/#active-ldap-synchronization">active sync&lt;/a> are only available in Grafana Enterprise.&lt;/p></description></item><item><title>Configure SCIM provisioning</title><link>https://grafana.com/docs/grafana/v12.4/setup-grafana/configure-access/configure-scim-provisioning/</link><pubDate>Fri, 03 Apr 2026 19:43:06 +0000</pubDate><guid>https://grafana.com/docs/grafana/v12.4/setup-grafana/configure-access/configure-scim-provisioning/</guid><content><![CDATA[&lt;h1 id=&#34;configure-scim-provisioning&#34;&gt;Configure SCIM provisioning&lt;/h1&gt;
&lt;p&gt;System for Cross-domain Identity Management (SCIM) is an open standard that allows automated user provisioning and management. With SCIM, you can automate the provisioning of users and groups from your identity provider to Grafana.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;Available in 
    &lt;a href=&#34;/docs/grafana/v12.4/introduction/grafana-enterprise/&#34;&gt;Grafana Enterprise&lt;/a&gt; and &lt;a href=&#34;/docs/grafana-cloud/&#34;&gt;Grafana Cloud&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h2 id=&#34;benefits&#34;&gt;Benefits&lt;/h2&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;SCIM provisioning only works with SAML authentication.
Other authentication methods aren&amp;rsquo;t supported.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;SCIM offers several advantages for managing users and teams in Grafana:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Automated user provisioning&lt;/strong&gt;: Automatically create, update, and disable users in Grafana when changes occur in your identity provider&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automated team lifecycle management&lt;/strong&gt;: Automatically create teams when new groups are added, update team memberships, and delete teams when groups are removed from your identity provider&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reduced administrative overhead&lt;/strong&gt;: Eliminate manual user management tasks and reduce the risk of human error&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enhanced security&lt;/strong&gt;: Automatically disable access when users leave your organization&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;authentication-and-access-requirements&#34;&gt;Authentication and access requirements&lt;/h2&gt;
&lt;p&gt;When you enable SCIM in Grafana, the following requirements and restrictions apply:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Use the same identity provider for user provisioning and for authentication flow&lt;/strong&gt;: You must use the same identity provider for both authentication and user provisioning.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Security restriction&lt;/strong&gt;: When using SAML, the login authentication flow requires the SAML assertion exchange between the Identity Provider and Grafana to include the &lt;code&gt;userUID&lt;/code&gt; SAML assertion with the user&amp;rsquo;s unique identifier at the Identity Provider.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configure &lt;code&gt;userUID&lt;/code&gt; SAML assertion in 
    &lt;a href=&#34;/docs/grafana/v12.4/setup-grafana/configure-access/configure-authentication/saml/configure-saml-with-azuread/#configure-saml-assertions-when-using-scim-provisioning&#34;&gt;Entra ID&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Configure &lt;code&gt;userUID&lt;/code&gt; SAML assertion in 
    &lt;a href=&#34;/docs/grafana/v12.4/setup-grafana/configure-access/configure-authentication/saml/configure-saml-with-okta/#configure-saml-assertions-when-using-scim-provisioning&#34;&gt;Okta&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;align-saml-identifier-with-scim-externalid&#34;&gt;Align SAML identifier with SCIM &lt;code&gt;externalId&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;When you use SAML with SCIM provisioning, align the SCIM &lt;code&gt;externalId&lt;/code&gt; with the SAML user identifier. Use a stable IdP attribute (for example, Entra ID &lt;code&gt;user.objectid&lt;/code&gt;) as the SCIM &lt;code&gt;externalId&lt;/code&gt;, and send that same value as a SAML claim. Configure Grafana to read this claim with the &lt;code&gt;assertion_attribute_external_uid&lt;/code&gt; setting so SAML authentication links to the SCIM-provisioned user and its permissions.&lt;/p&gt;
&lt;p&gt;If the SAML identifier and SCIM &lt;code&gt;externalId&lt;/code&gt; differ, Grafana may not link the authenticated user to the intended SCIM profile, which can result in incorrect access. Verify your IdP sends a stable, unique identifier and that it matches the SCIM &lt;code&gt;externalId&lt;/code&gt;. Refer to your IdP docs and the Grafana SCIM integration guides for &lt;a href=&#34;configure-scim-with-entraid/&#34;&gt;Entra ID&lt;/a&gt; and &lt;a href=&#34;configure-scim-with-okta/&#34;&gt;Okta&lt;/a&gt; for attribute configuration details.&lt;/p&gt;
&lt;h2 id=&#34;configure-scim-using-the-grafana-user-interface&#34;&gt;Configure SCIM using the Grafana user interface&lt;/h2&gt;
&lt;p&gt;You can configure SCIM in Grafana using the Grafana user interface. To do this, navigate to &lt;strong&gt;Administration &amp;gt; Authentication &amp;gt; SCIM&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The Grafana SCIM UI provides the following advantages over configuring SCIM in the Grafana configuration file:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It is accessible by Grafana Cloud users&lt;/li&gt;
&lt;li&gt;It doesn&amp;rsquo;t require Grafana to be restarted after a configuration update&lt;/li&gt;
&lt;li&gt;Using the authentication settings permission allows us to restrict Grafana’s access scope rather than relying on an overly permissive role such as Admin.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;Any configuration changes made through the Grafana user interface (UI) will take precedence over settings specified in the Grafana configuration file or through environment variables. This means that if you modify any configuration settings in the UI, they will override any corresponding settings set via environment variables or defined in the configuration file.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h3 id=&#34;configure-scim-settings&#34;&gt;Configure SCIM settings&lt;/h3&gt;
&lt;p&gt;Sign in to Grafana and navigate to &lt;strong&gt;Administration &amp;gt; Authentication &amp;gt; SCIM&lt;/strong&gt;. Here you can configure the following settings:&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;Enable Group Sync&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;Enable SCIM group provisioning. When enabled, Grafana will create, update, and delete teams based on SCIM requests from your identity provider. Cannot be enabled if Team Sync is 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;Reject Non-Provisioned Users&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;When enabled, prevents non-SCIM provisioned users from signing in. Cloud Portal users can always sign in regardless of this setting.&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;Enable User Sync&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Yes&lt;/td&gt;
              &lt;td&gt;Enable SCIM user provisioning. When enabled, Grafana will create, update, and deactivate users based on SCIM requests from your identity provider.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;The SCIM UI also displays information that may help you configure SCIM in your identity provider, including stack domain, stack ID, and tenant URL.&lt;/p&gt;
&lt;h3 id=&#34;next-steps&#34;&gt;Next steps&lt;/h3&gt;
&lt;p&gt;After configuring SCIM in Grafana, configure your identity provider:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;configure-scim-with-okta/&#34;&gt;Configure SCIM with Okta&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;configure-scim-with-entraid/&#34;&gt;Configure SCIM with Entra ID&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configure-scim-using-the-configuration-file&#34;&gt;Configure SCIM using the configuration file&lt;/h2&gt;
&lt;p&gt;The table below describes all SCIM configuration options. Like any other Grafana configuration, you can apply these options as 
    &lt;a href=&#34;/docs/grafana/v12.4/setup-grafana/configure-grafana/#override-configuration-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;user_sync_enabled&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Yes&lt;/td&gt;
              &lt;td&gt;Enable SCIM user provisioning. When enabled, Grafana will create, update, and deactivate users based on SCIM requests from your identity provider.&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;group_sync_enabled&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;Enable SCIM group provisioning. When enabled, Grafana will create, update, and delete teams based on SCIM requests from your identity provider. Cannot be enabled if Team Sync is 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;reject_non_provisioned_users&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;When enabled, prevents non-SCIM provisioned users from signing in. Cloud Portal users can always sign in regardless of this setting.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;div class=&#34;admonition admonition-warning&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Warning&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Team Sync Compatibility&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SCIM group sync (&lt;code&gt;group_sync_enabled = true&lt;/code&gt;) and Team Sync cannot be enabled simultaneously&lt;/li&gt;
&lt;li&gt;You can use SCIM user sync (&lt;code&gt;user_sync_enabled = true&lt;/code&gt;) alongside Team Sync&lt;/li&gt;
&lt;li&gt;For more details about migration and compatibility, see 
    &lt;a href=&#34;/docs/grafana/v12.4/setup-grafana/configure-access/configure-scim-provisioning/manage-users-teams/#scim-vs-team-sync&#34;&gt;SCIM vs Team Sync&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h3 id=&#34;example-scim-configuration&#34;&gt;Example SCIM configuration&lt;/h3&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;[auth.scim]
user_sync_enabled = true
group_sync_enabled = false
reject_non_provisioned_users = false&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;configure-scim-using-terraform&#34;&gt;Configure SCIM using Terraform&lt;/h2&gt;
&lt;p&gt;You can also configure SCIM provisioning in Grafana using the &lt;a href=&#34;https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/scim_config&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Grafana Terraform provider&lt;/a&gt;. This approach is particularly useful for infrastructure-as-code deployments and automated provisioning.&lt;/p&gt;
&lt;h3 id=&#34;terraform-scim-configuration-example&#34;&gt;Terraform SCIM configuration example&lt;/h3&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;hcl&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-hcl&#34;&gt;resource &amp;#34;grafana_scim_config&amp;#34; &amp;#34;scim_config&amp;#34; {
  user_sync_enabled            = true
  group_sync_enabled           = false
  reject_non_provisioned_users = false
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;terraform-scim-configuration-options&#34;&gt;Terraform SCIM configuration options&lt;/h3&gt;
&lt;p&gt;The Terraform &lt;code&gt;grafana_scim_config&lt;/code&gt; resource supports the same configuration options as the manual configuration:&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;user_sync_enabled&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Yes&lt;/td&gt;
              &lt;td&gt;Enable SCIM user provisioning. When enabled, Grafana will create, update, and deactivate users based on SCIM requests from your identity provider.&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;group_sync_enabled&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;Enable SCIM group provisioning. When enabled, Grafana will create, update, and delete teams based on SCIM requests from your identity provider. Cannot be enabled if Team Sync is 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;reject_non_provisioned_users&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;When enabled, prevents non-SCIM provisioned users from signing in. Cloud Portal users can always sign in regardless of this setting.&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;supported-identity-providers&#34;&gt;Supported identity providers&lt;/h2&gt;
&lt;p&gt;The following identity providers are supported:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../configure-authentication/azuread/&#34;&gt;Entra ID&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../configure-authentication/saml/&#34;&gt;Okta&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;how-it-works&#34;&gt;How it works&lt;/h2&gt;
&lt;p&gt;The synchronization process works as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Configure SCIM in both your identity provider and Grafana&lt;/li&gt;
&lt;li&gt;Your identity provider sends SCIM requests to the Grafana SCIM API endpoint&lt;/li&gt;
&lt;li&gt;Grafana processes these requests to create, update, or deactivate users and teams, and synchronize team memberships&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;comparison-with-other-sync-methods&#34;&gt;Comparison with other sync methods&lt;/h2&gt;
&lt;p&gt;Grafana offers several methods for synchronizing users, teams, and roles.
The following table compares SCIM with other synchronization methods to help you understand the advantages:&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;Sync Method&lt;/th&gt;
              &lt;th&gt;Users&lt;/th&gt;
              &lt;th&gt;Teams&lt;/th&gt;
              &lt;th&gt;Roles&lt;/th&gt;
              &lt;th&gt;Automation&lt;/th&gt;
              &lt;th&gt;Key Benefits&lt;/th&gt;
              &lt;th&gt;Limitations&lt;/th&gt;
              &lt;th&gt;On-Prem&lt;/th&gt;
              &lt;th&gt;Cloud&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;SCIM&lt;/td&gt;
              &lt;td&gt;✅&lt;/td&gt;
              &lt;td&gt;✅&lt;/td&gt;
              &lt;td&gt;⚠️&lt;/td&gt;
              &lt;td&gt;Full&lt;/td&gt;
              &lt;td&gt;Complete user and team lifecycle management with automatic team creation&lt;/td&gt;
              &lt;td&gt;Requires SAML authentication; uses Role Sync for basic roles&lt;/td&gt;
              &lt;td&gt;✅&lt;/td&gt;
              &lt;td&gt;✅&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;../configure-team-sync/&#34;&gt;Team Sync&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;❌&lt;/td&gt;
              &lt;td&gt;⚠️&lt;/td&gt;
              &lt;td&gt;❌&lt;/td&gt;
              &lt;td&gt;Partial&lt;/td&gt;
              &lt;td&gt;Syncs team memberships to existing teams&lt;/td&gt;
              &lt;td&gt;Requires manual team creation; no team lifecycle management&lt;/td&gt;
              &lt;td&gt;✅&lt;/td&gt;
              &lt;td&gt;✅&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;../configure-authentication/enhanced-ldap/&#34;&gt;Active LDAP Sync&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;✅&lt;/td&gt;
              &lt;td&gt;❌&lt;/td&gt;
              &lt;td&gt;❌&lt;/td&gt;
              &lt;td&gt;Full&lt;/td&gt;
              &lt;td&gt;Background synchronization of LDAP users&lt;/td&gt;
              &lt;td&gt;Limited to LDAP environments&lt;/td&gt;
              &lt;td&gt;✅&lt;/td&gt;
              &lt;td&gt;❌&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;../configure-authentication/saml#configure-role-sync&#34;&gt;Role Sync&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;❌&lt;/td&gt;
              &lt;td&gt;❌&lt;/td&gt;
              &lt;td&gt;✅&lt;/td&gt;
              &lt;td&gt;Full&lt;/td&gt;
              &lt;td&gt;Full automation of basic role assignment&lt;/td&gt;
              &lt;td&gt;Limited to basic roles only&lt;/td&gt;
              &lt;td&gt;✅&lt;/td&gt;
              &lt;td&gt;✅&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;../configure-authentication/saml#configure-organization-mapping&#34;&gt;Org Mapping&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;❌&lt;/td&gt;
              &lt;td&gt;❌&lt;/td&gt;
              &lt;td&gt;⚠️&lt;/td&gt;
              &lt;td&gt;Full&lt;/td&gt;
              &lt;td&gt;Full automation of basic role assignment per organization&lt;/td&gt;
              &lt;td&gt;Limited to basic roles only; on-premises only&lt;/td&gt;
              &lt;td&gt;⚠️&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;key-advantages&#34;&gt;Key advantages&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Comprehensive user and team automation&lt;/strong&gt;: SCIM provides full automation for user and team provisioning, while role management is handled separately through Role Sync&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dynamic team creation&lt;/strong&gt;: Teams are created automatically based on identity provider groups&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Near real-time synchronization&lt;/strong&gt;: Changes in the identity provider are reflected based on the provider synchronization schedule&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise-ready&lt;/strong&gt;: Designed for large organizations with complex user management needs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;next-steps-1&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;manage-users-teams/&#34;&gt;Manage users and teams with SCIM provisioning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;troubleshooting/&#34;&gt;Troubleshoot SCIM provisioning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v12.4/setup-grafana/configure-access/configure-authentication/configure-scim-with-entraid/&#34;&gt;Configure SCIM with Entra ID&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v12.4/setup-grafana/configure-access/configure-authentication/configure-scim-with-okta/&#34;&gt;Configure SCIM with Okta&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="configure-scim-provisioning">Configure SCIM provisioning&lt;/h1>
&lt;p>System for Cross-domain Identity Management (SCIM) is an open standard that allows automated user provisioning and management. With SCIM, you can automate the provisioning of users and groups from your identity provider to Grafana.&lt;/p></description></item><item><title>Manage multi-team access in a single Grafana instance</title><link>https://grafana.com/docs/grafana/v12.4/setup-grafana/configure-access/multi-team-access/</link><pubDate>Fri, 03 Apr 2026 19:43:06 +0000</pubDate><guid>https://grafana.com/docs/grafana/v12.4/setup-grafana/configure-access/multi-team-access/</guid><content><![CDATA[&lt;h1 id=&#34;manage-multi-team-access-in-a-single-grafana-instance&#34;&gt;Manage multi-team access in a single Grafana instance&lt;/h1&gt;
&lt;p&gt;If your organization has multiple teams using Grafana, you can use a single Grafana Enterprise deployment or a single Grafana Cloud stack to manage access across teams using roles and folders. This approach reduces complexity, simplifies identity and access management, and facilitates cross-team collaboration.&lt;/p&gt;
&lt;h2 id=&#34;benefits&#34;&gt;Benefits&lt;/h2&gt;
&lt;p&gt;By using a single Grafana instance to manage access, you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Implement a unified SSO, establishing clear permissions.&lt;/li&gt;
&lt;li&gt;Reduce setup and maintenance work, avoiding multi-stack complexity.&lt;/li&gt;
&lt;li&gt;Centralize plugin configuration and management.&lt;/li&gt;
&lt;li&gt;Ensure teams can access the right dashboards and data, avoiding stepping on or overwriting each other’s work.&lt;/li&gt;
&lt;li&gt;Enable collaboration across teams. Teams are not isolated in silos and can discover and collaborate with each other’s work.&lt;/li&gt;
&lt;li&gt;Optimize resource management. With shared spaces, like an “Everyone” folder, you can publish executive dashboards or cross-team metrics that all groups can benefit from, without duplicating it across stacks.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;example-three-teams-one-stack&#34;&gt;Example: Three teams, one stack&lt;/h2&gt;
&lt;p&gt;Consider the following setup of three teams:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Team A builds product features and needs autonomy with their own dashboards and data sources.&lt;/li&gt;
&lt;li&gt;Team B handles data engineering and needs autonomy with their own dashboards.&lt;/li&gt;
&lt;li&gt;Team C is the observability team and the admins of the Grafana stack.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Follow these suggested steps to structure, configure, and set permissions to access data in your Grafana instance:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;#before-you-begin&#34;&gt;Before you begin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#create-teams-and-configure-user-access&#34;&gt;Create teams and configure user access&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#design-a-folder-structure-to-match-your-access-needs&#34;&gt;Design a folder structure to match your access needs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#configure-data-access-based-on-team-requirements&#34;&gt;Configure data access based on each team’s requirements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#scale-access-management-with-terraform-and-sso&#34;&gt;Scale access management with Terraform and SSO&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h3&gt;
&lt;p&gt;For more information on how to install a Grafana instance:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you’re using self-managed Grafana Enterprise, refer to &lt;a href=&#34;../../configure-grafana/&#34;&gt;Configure Grafana&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;If you’re using Grafana Cloud, refer to &lt;a href=&#34;/docs/grafana-cloud/security-and-account-management/cloud-stacks/&#34;&gt;Your Grafana Cloud stack&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;For guidance on when to use one stack versus multiple, refer to &lt;a href=&#34;/docs/grafana-cloud/security-and-account-management/cloud-stacks/stack-architecture-guidance/&#34;&gt;Stack architecture guidance&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h3 id=&#34;create-teams-and-configure-user-access&#34;&gt;Create teams and configure user access&lt;/h3&gt;
&lt;p&gt;After you’ve deployed your Grafana instance:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To follow the example in this doc, create three &lt;a href=&#34;../../../administration/team-management/configure-grafana-teams/#create-a-grafana-team&#34;&gt;Grafana Teams&lt;/a&gt; and add them to the Grafana instance.&lt;/li&gt;
&lt;li&gt;Determine the 
    &lt;a href=&#34;/docs/grafana/v12.4/administration/roles-and-permissions/access-control/&#34;&gt;RBAC&lt;/a&gt; strategy for your organization. RBAC extends default Grafana roles, provides more granular access rights, and simplifies how to grant, modify, or revoke user access to Grafana resources, such as users and reports.&lt;/li&gt;
&lt;li&gt;Assign each user to the &lt;a href=&#34;../../../administration/user-management/manage-org-users/&#34;&gt;relevant team&lt;/a&gt;. By default &lt;a href=&#34;../../configure-grafana/#auto_assign_org&#34;&gt;new users&lt;/a&gt; are granted the &lt;strong&gt;Viewer&lt;/strong&gt; role.&lt;/li&gt;
&lt;li&gt;Assign the 
    &lt;a href=&#34;/docs/grafana/v12.4/administration/roles-and-permissions/access-control/assign-rbac-roles/&#34;&gt;&lt;strong&gt;Admin&lt;/strong&gt; role&lt;/a&gt; to Team C so that they can manage all resources in the instance.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;design-a-folder-structure-to-match-your-access-needs&#34;&gt;Design a folder structure to match your access needs&lt;/h3&gt;
&lt;p&gt;To design a 
    &lt;a href=&#34;/docs/grafana/v12.4/dashboards/manage-dashboards/#create-a-dashboard-folder&#34;&gt;folder&lt;/a&gt; setup that helps users quickly understand where to go, what they can access, and what they can manage:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create an “Everyone” folder for shared items that all teams can manage, and grant teams Admin access to that folder.&lt;/li&gt;
&lt;li&gt;For each team, create a folder that they can manage and grant them the &lt;code&gt;fixed:teams:read&lt;/code&gt; 
    &lt;a href=&#34;/docs/grafana/v12.4/administration/roles-and-permissions/access-control/assign-rbac-roles/&#34;&gt;fixed role&lt;/a&gt;. This means they can share items in their team folder with other teams, to encourage collaboration and learning from each other.&lt;/li&gt;
&lt;li&gt;For Team C, create an “Admins” folder for sensitive content only Admins can access.&lt;/li&gt;
&lt;li&gt;Optionally, create a personal folder for each team member so that they can work on draft content before moving it into their team folder when ready.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p &#34;
    style=&#34;max-width: 750px;&#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;/media/docs/grafana/oac/AccessTeams01.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;/media/docs/grafana/oac/AccessTeams01.png&#34;data-srcset=&#34;/media/docs/grafana/oac/AccessTeams01.png?w=320 320w, /media/docs/grafana/oac/AccessTeams01.png?w=550 550w, /media/docs/grafana/oac/AccessTeams01.png?w=750 750w, /media/docs/grafana/oac/AccessTeams01.png?w=900 900w, /media/docs/grafana/oac/AccessTeams01.png?w=1040 1040w, /media/docs/grafana/oac/AccessTeams01.png?w=1240 1240w, /media/docs/grafana/oac/AccessTeams01.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;Teams and folders in the stack, and the related admin permissions Team A and Team B have been granted&#34;width=&#34;1600&#34;height=&#34;585&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/media/docs/grafana/oac/AccessTeams01.png&#34;
            alt=&#34;Teams and folders in the stack, and the related admin permissions Team A and Team B have been granted&#34;width=&#34;1600&#34;height=&#34;585&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;h3 id=&#34;configure-data-access-based-on-team-requirements&#34;&gt;Configure data access based on team requirements&lt;/h3&gt;
&lt;p&gt;Next, focus on how teams interact with data to decide further access needs.&lt;/p&gt;
&lt;h4 id=&#34;shared-baseline-data-access&#34;&gt;Shared baseline data access&lt;/h4&gt;
&lt;p&gt;Grant the &lt;code&gt;datasources:explorer&lt;/code&gt; fixed role to all teams so they can use the 
    &lt;a href=&#34;/docs/grafana/v12.4/explore/simplified-exploration/&#34;&gt;Drilldown apps&lt;/a&gt; for easily exploring data sources.&lt;/p&gt;
&lt;p&gt;However, you may need to protect data in shared resources. For example, all teams can be forwarding metrics to a shared 
    &lt;a href=&#34;/docs/grafana/v12.4/datasources/#add-a-data-source&#34;&gt;data source&lt;/a&gt;, but not everyone needs to see all of the data. In this case, grant each team query access to the data relevant for them, based on 
    &lt;a href=&#34;/docs/grafana/v12.4/administration/data-source-management/teamlbac/&#34;&gt;label based access controls (LBAC) per team&lt;/a&gt;. This way, you’ll maintain a central observability pipeline but still preserve data separation.&lt;/p&gt;
&lt;h4 id=&#34;autonomous-team-data-management&#34;&gt;Autonomous team data management&lt;/h4&gt;
&lt;p&gt;If any of your teams, Team A for example, need to build and manage their own data sources for product-specific use cases, grant the &lt;code&gt;datasources:creator&lt;/code&gt; fixed role so they can create and manage their own data sources independently.&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p &#34;
    style=&#34;max-width: 750px;&#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;/media/docs/grafana/oac/AccessTeams02.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;/media/docs/grafana/oac/AccessTeams02.png&#34;data-srcset=&#34;/media/docs/grafana/oac/AccessTeams02.png?w=320 320w, /media/docs/grafana/oac/AccessTeams02.png?w=550 550w, /media/docs/grafana/oac/AccessTeams02.png?w=750 750w, /media/docs/grafana/oac/AccessTeams02.png?w=900 900w, /media/docs/grafana/oac/AccessTeams02.png?w=1040 1040w, /media/docs/grafana/oac/AccessTeams02.png?w=1240 1240w, /media/docs/grafana/oac/AccessTeams02.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;Teams and data sources in the stack, and the related permissions Team A and Team B have been granted&#34;width=&#34;1600&#34;height=&#34;599&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/media/docs/grafana/oac/AccessTeams02.png&#34;
            alt=&#34;Teams and data sources in the stack, and the related permissions Team A and Team B have been granted&#34;width=&#34;1600&#34;height=&#34;599&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;h4 id=&#34;resources-at-an-instance-level&#34;&gt;Resources at an instance level&lt;/h4&gt;
&lt;p&gt;Some Grafana resources, such as service accounts, alert contact points, &lt;a href=&#34;/docs/grafana-cloud/send-data/fleet-management/&#34;&gt;Fleet Management collectors&lt;/a&gt;, and other feature resources, are not linked to teams but are managed at the stack level. For these type of resources, assign fixed roles to teams carefully.&lt;/p&gt;
&lt;p&gt;For example, users working in &lt;a href=&#34;/docs/grafana-cloud/monitor-applications/frontend-observability/&#34;&gt;Frontend Observability&lt;/a&gt; need a writer fixed role so that they can create and manage services.&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p &#34;
    style=&#34;max-width: 750px;&#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;/media/docs/grafana/oac/AccessTeams03.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;/media/docs/grafana/oac/AccessTeams03.png&#34;data-srcset=&#34;/media/docs/grafana/oac/AccessTeams03.png?w=320 320w, /media/docs/grafana/oac/AccessTeams03.png?w=550 550w, /media/docs/grafana/oac/AccessTeams03.png?w=750 750w, /media/docs/grafana/oac/AccessTeams03.png?w=900 900w, /media/docs/grafana/oac/AccessTeams03.png?w=1040 1040w, /media/docs/grafana/oac/AccessTeams03.png?w=1240 1240w, /media/docs/grafana/oac/AccessTeams03.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;Grafana Cloud Frontend Observability resources in the stack, and the related permissions Team A have been granted&#34;width=&#34;1600&#34;height=&#34;1076&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/media/docs/grafana/oac/AccessTeams03.png&#34;
            alt=&#34;Grafana Cloud Frontend Observability resources in the stack, and the related permissions Team A have been granted&#34;width=&#34;1600&#34;height=&#34;1076&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;h3 id=&#34;scale-access-management-with-terraform-and-sso&#34;&gt;Scale access management with Terraform and SSO&lt;/h3&gt;
&lt;p&gt;After you&amp;rsquo;ve made sure the model is working, you can codify it.&lt;/p&gt;
&lt;p&gt;You can add any new users to your Grafana instance with an Identity Provider through &lt;a href=&#34;../../configure-access/configure-authentication/&#34;&gt;SCIM&lt;/a&gt;. Use &lt;a href=&#34;../../../configure-access/configure-authentication/saml/configure-saml-team-role-mapping/#configure-role-sync-for-saml&#34;&gt;role sync&lt;/a&gt; to automatically assign users the correct basic role (Viewer, Editor, or Admin) based on their mapped attributes in the IdP..&lt;/p&gt;
&lt;p&gt;You can also use Terraform to provision teams their folders, fixed roles, and shared data source LBAC rules. For example, if you need to add a new team (Team D), you only need to add the new team to Grafana and run the Terraform script, which will automatically set them up to start using Grafana.&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p &#34;
    style=&#34;max-width: 750px;&#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;/media/docs/grafana/oac/AccessTeams04.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;/media/docs/grafana/oac/AccessTeams04.png&#34;data-srcset=&#34;/media/docs/grafana/oac/AccessTeams04.png?w=320 320w, /media/docs/grafana/oac/AccessTeams04.png?w=550 550w, /media/docs/grafana/oac/AccessTeams04.png?w=750 750w, /media/docs/grafana/oac/AccessTeams04.png?w=900 900w, /media/docs/grafana/oac/AccessTeams04.png?w=1040 1040w, /media/docs/grafana/oac/AccessTeams04.png?w=1240 1240w, /media/docs/grafana/oac/AccessTeams04.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;Add new Team D from Okta and automate the rest of their IAM setup using Terraform&#34;width=&#34;1600&#34;height=&#34;608&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/media/docs/grafana/oac/AccessTeams04.png&#34;
            alt=&#34;Add new Team D from Okta and automate the rest of their IAM setup using Terraform&#34;width=&#34;1600&#34;height=&#34;608&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;h2 id=&#34;other-resources&#34;&gt;Other resources&lt;/h2&gt;
&lt;p&gt;Read on to learn more about access management:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a href=&#34;/blog/2024/09/10/grafana-access-management-how-to-use-teams-for-seamless-user-and-permission-management/&#34;&gt;Least privilege custom role explainer&lt;/a&gt; blog walks through how to design roles that keep things simple and safe, so your users have just the access they need.&lt;/li&gt;
&lt;li&gt;See the &lt;a href=&#34;https://www.youtube.com/watch?v=gj27qKPSVsM&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;LBAC for metrics data sources&lt;/a&gt; demo to learn how you can give every team a clear view of their own data while still benefiting from a shared pipeline.&lt;/li&gt;
&lt;li&gt;The &lt;a href=&#34;/blog/2025/05/14/introducing-scim-provisioning-in-grafana-enterprise-grade-user-management-made-simple/&#34;&gt;Introducing SCIM&lt;/a&gt; post covers how to connect Grafana to your identity provider, making it easy to bring new users on board and keep permissions in sync as your organization grows.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="manage-multi-team-access-in-a-single-grafana-instance">Manage multi-team access in a single Grafana instance&lt;/h1>
&lt;p>If your organization has multiple teams using Grafana, you can use a single Grafana Enterprise deployment or a single Grafana Cloud stack to manage access across teams using roles and folders. This approach reduces complexity, simplifies identity and access management, and facilitates cross-team collaboration.&lt;/p></description></item><item><title>Configure Team Sync</title><link>https://grafana.com/docs/grafana/v12.4/setup-grafana/configure-access/configure-team-sync/</link><pubDate>Fri, 03 Apr 2026 19:43:06 +0000</pubDate><guid>https://grafana.com/docs/grafana/v12.4/setup-grafana/configure-access/configure-team-sync/</guid><content><![CDATA[&lt;h1 id=&#34;configure-team-sync&#34;&gt;Configure Team Sync&lt;/h1&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;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;Available in 
    &lt;a href=&#34;/docs/grafana/v12.4/introduction/grafana-enterprise/&#34;&gt;Grafana Enterprise&lt;/a&gt; and &lt;a href=&#34;/docs/grafana-cloud/&#34;&gt;Grafana Cloud&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&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.&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;/docs/grafana/v12.4/setup-grafana/configure-access/configure-authentication/auth-proxy/#team-sync&#34;&gt;Auth Proxy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v12.4/setup-grafana/configure-access/configure-authentication/azuread/#team-sync&#34;&gt;Entra ID&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v12.4/setup-grafana/configure-access/configure-authentication/generic-oauth/#configure-team-synchronization&#34;&gt;Generic OAuth integration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v12.4/setup-grafana/configure-access/configure-authentication/github/#configure-team-synchronization&#34;&gt;GitHub OAuth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v12.4/setup-grafana/configure-access/configure-authentication/gitlab/#configure-team-synchronization&#34;&gt;GitLab OAuth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v12.4/setup-grafana/configure-access/configure-authentication/google/#configure-team-synchronization&#34;&gt;Google OAuth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v12.4/setup-grafana/configure-access/configure-authentication/enhanced-ldap/&#34;&gt;LDAP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v12.4/setup-grafana/configure-access/configure-authentication/okta/#configure-team-synchronization&#34;&gt;Okta&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v12.4/setup-grafana/configure-access/configure-authentication/saml/&#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;ol&gt;
&lt;li&gt;
&lt;p&gt;In Grafana, navigate to &lt;strong&gt;Administration &amp;gt; Users and access &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;Go to the External group sync tab, and click &lt;strong&gt;Add group&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;/static/img/docs/enterprise/team_add_external_group.png&#34;
  alt=&#34;External group sync&#34; width=&#34;966&#34;
     height=&#34;347&#34;/&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;strong&gt;Add group&lt;/strong&gt; to save.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;Group matching is case insensitive.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;ldap-specific-wildcard-matching&#34;&gt;LDAP specific: wildcard matching&lt;/h2&gt;
&lt;p&gt;When using LDAP, you can use a wildcard (*) in the common name attribute (CN)
to match any group in the corresponding Organizational Unit (OU).&lt;/p&gt;
&lt;p&gt;Ex: &lt;code&gt;cn=*,ou=groups,dc=grafana,dc=org&lt;/code&gt; can be matched by &lt;code&gt;cn=users,ou=groups,dc=grafana,dc=org&lt;/code&gt;&lt;/p&gt;
]]></content><description>&lt;h1 id="configure-team-sync">Configure Team Sync&lt;/h1>
&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></channel></rss>