菜单

配置GitHub OAuth2认证

要启用GitHub OAuth2,您必须向GitHub注册应用程序。GitHub将生成一个客户端ID和密钥供您使用。

配置GitHub OAuth应用

你需要创建一个GitHub OAuth应用程序(你会在GitHub设置页面下找到它)。创建应用程序时,需要指定回调URL。指定此为callback:

http:// < my_grafana_server_name_or_ip >: < grafana_server_port > /登录/ github

注意:的值应该匹配你的grafana服务器的值root_url,用于访问grafana的URL。

这个回调URL必须与您在浏览器中访问Grafana时使用的完整HTTP地址匹配,但是后缀路径为/登录/ github.当创建GitHub OAuth应用程序时,您将获得客户端ID和客户端秘密。在Grafana配置文件中指定这些参数。例如:

在Grafana中启用GitHub

(auth.github)enabled = true allow_sign_up = true client_id = YOUR_GITHUB_APP_CLIENT_ID client_secret = YOUR_GITHUB_APP_CLIENT_SECRET scopes = user:email,read:org auth_url = https://github.com/login/oauth/authorize token_url = https://github.com/login/oauth/access_token api_url = https://api.github.com/user team_ids = allowed_organizations =

您可能需要设置root_url选择(服务器)回调URL是否正确。例如,如果你在代理的背后服务Grafana。

重新启动Grafana后端。您现在应该在登录页面上看到一个GitHub登录按钮。你现在可以登录或注册你的GitHub账户。

可以允许用户通过GitHub身份验证注册allow_sign_up选项真正的.当此选项设置为真正的,任何通过GitHub身份验证成功的用户都将自动注册。

你也可以使用变量扩展在GitHub认证配置中引用环境变量和本地文件。

GitHub刷新令牌

在Grafana v9.3及更高版本中可用。

注意:这个特性的背后accessTokenExpirationCheck功能切换。

GitHub OAuth应用程序不支持刷新令牌,因为提供的访问令牌不会过期。

team_ids

要求GitHub上至少一个给定团队的活跃团队成员。如果经过身份验证的用户不是至少一个团队的成员,他们将无法注册或向您的Grafana实例进行身份验证。例如:

(auth.github)enabled = true client_id = YOUR_GITHUB_APP_CLIENT_ID client_secret = YOUR_GITHUB_APP_CLIENT_SECRET scopes = user:email,read:org team_ids = 150,300 auth_url = https://github.com/login/oauth/authorize token_url = https://github.com/login/oauth/access_token api_url = https://api.github.com/user allow_sign_up = true

allowed_organizations

要求GitHub上至少一个给定组织的活跃组织成员资格。如果经过身份验证的用户不是至少一个组织的成员,他们将无法向您的Grafana实例注册或进行身份验证。例如

(auth.github)enabled = true client_id = YOUR_GITHUB_APP_CLIENT_ID client_secret = YOUR_GITHUB_APP_CLIENT_SECRET scopes = user:email,read:org auth_url = https://github.com/login/oauth/authorize token_url = https://github.com/login/oauth/access_token api_url = https://api.github.com/user allow_sign_up = true # space-delimited organization names allowed_organizations = github google

地图的角色

您可以使用GitHub OAuth来映射角色。映射期间,Grafana使用JMESPath通过role_attribute_path配置选项。

对于路径查找,Grafana使用从查询GitHub的API获得的JSON/ api /用户端点和a键,其中包含用户的所有团队(从/ api /用户/团队).

评价结果role_attribute_pathJMESPath表达式必须是有效的Grafana角色,例如:查看器编辑器管理.有关Grafana中的角色和权限的更多信息,请参阅角色和权限

警告:目前如果没有找到用户的组织角色映射,Grafana不会更新用户的组织角色。这将在Grafana 10中改变。为避免覆盖手动设置的角色,请启用oauth_skip_org_role_update_sync选择。看到configure-grafana获取更多信息。

在第一次登录时,如果role_attribute_path属性不返回角色,则为用户分配指定的角色auto_assign_org_role选项.您可以通过设置禁用此默认角色分配Role_attribute_strict = true.如果没有返回角色或返回无效角色,则拒绝用户访问。

警告:使用Grafana 10,每次登录时,如果role_attribute_path属性不返回角色,则为用户分配指定的角色auto_assign_org_role选项

查询的示例如下所示:

role_attribute_path = [login==octocat] && 'Admin' || '查看器'

这允许登录“octocat”的用户映射到管理角色,但所有其他用户都要映射到查看器的角色。

使用团队映射角色

团队也可以用来映射角色。例如,如果你有一个名为“example-group”的团队,你可以使用下面的代码片段来确保这些成员继承角色“Editor”。

role_attribute_path = contains(groups[*], '@my-github-organization/my-github-team') && 'Editor' || 'Viewer'

注意:如果在其他字段中找到匹配,则团队将被忽略。

地图服务器管理员权限

在Grafana v9.2及更高版本中可用。

如果Grafana接收到的应用角色为GrafanaAdmin, Grafana授予用户服务器管理员权限。
如果您想将服务器管理员特权授予用户的子集,这很有用。
Grafana还为用户分配管理默认组织的角色。

设置allow_assign_grafana_admin(auth.github)必须设置为真正的这样才能奏效。
如果设置为时,用户被分配的角色为管理默认组织的权限,而不是服务器管理员权限。

Allow_assign_grafana_admin = true

例子:

role_attribute_path = [login==octocat] && 'GrafanaAdmin' || '查看器'

团队同步(企业版)

仅在Grafana Enterprise v6.3+中可用

使用Team Sync,您可以将您的GitHub org团队映射到Grafana中的团队,以便您的用户将自动添加到正确的团队。

你的GitHub团队可以通过两种方式被引用:

  • https://github.com/orgs/ <组织> /团队/ <蛞蝓>
  • @ <组织> / <蛞蝓>

例子:@grafana /开发人员

了解更多关于Team Sync的信息