菜单
Grafana文档 设置 配置安全 配置身份验证 配置GitLab OAuth2身份认证

配置GitLab OAuth2身份认证

使GitLab OAuth2必须在GitLab注册应用程序。GitLab将生成一个客户机ID和密钥供您使用。

创建GitLab OAuth密钥

你需要创建一个GitLab OAuth应用程序。选择一个描述性的的名字,使用以下重定向的URI:

https://grafana.example.com/login/gitlab

在哪里https://grafana.example.com是你使用的URL连接Grafana。根据需要调整,如果你不使用HTTPS或如果你使用不同的端口;例如,如果你访问Grafanahttp://203.0.113.31:3000,您应该使用

http://203.0.113.31:3000登录/ gitlab

最后,选择read_api的范围和提交表单。请注意,如果你不会使用GitLab组授权(即不设置allowed_groups,见下文),您可以选择read_user而不是read_api的范围,从而给更多限制访问您GitLab API。

你会得到一个应用程序Id和一个秘密作为回报;我们叫他们GITLAB_APPLICATION_IDGITLAB_SECRET本节的其余部分分别。

在Grafana启用GitLab

添加以下Grafana配置文件启用GitLab认证:

(auth.gitlab)enabled = true allow_sign_up = false client_id = GITLAB_APPLICATION_ID client_secret = GITLAB_SECRET scopes = read_api auth_url = https://gitlab.com/oauth/authorize token_url = https://gitlab.com/oauth/token api_url = https://gitlab.com/api/v4 allowed_groups = role_attribute_path = role_attribute_strict = false allow_assign_grafana_admin = false

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

重启Grafana后台为您更改生效。

如果你使用自己的实例GitLab代替gitlab.com、调整auth_url,token_urlapi_url因此通过替换gitlab.com主机名与你自己的。

allow_sign_up设置为,只有现有的用户可以登录使用GitLab账户,但是allow_sign_up设置为真正的,任何用户可以验证GitLab Grafana实例将能够登录;如果你使用公众gitlab.com世界上,这意味着任何人都可以登录Grafana实例。

您可以限制访问给定组的成员或群体通过设置列表allowed_groups选择。

配置刷新令牌

在Grafana v9.3后来版本。

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

当用户登录使用OAuth提供者,Grafana验证访问令牌没有过期。当一个访问令牌到期,Grafana使用提供刷新令牌(如果存在)来获得一个新的访问令牌。

Grafana使用刷新令牌来获得一个新的访问令牌不需要用户再次登录。如果一个刷新令牌不存在,Grafana日志后的用户的系统访问令牌已经过期。

默认情况下,GitLab提供刷新令牌。

allowed_groups

限制访问一个或多个成员的经过身份验证的用户GitLab组,设置allowed_groups组织一个逗号或空格分隔的列表。例如,如果你想只给成员的访问例子组,组

allowed_groups =例子

如果你想也给小组成员的访问酒吧组中喷火,设置

allowed_groups = foo / bar

注意,在GitLab,组或组名称并不总是匹配其显示名称,尤其是如果显示名称包含空格或特殊字符。确保你总是使用组或子组的名称,因为它出现在组或子群的URL。

这是一个完整的示例allow_sign_up启用,访问限制例子foo / bar组。这个例子也促进所有GitLab管理员Grafana组织管理员:

(auth.gitlab)enabled = true allow_sign_up = true client_id = GITLAB_APPLICATION_ID client_secret = GITLAB_SECRET scopes = read_api auth_url = https://gitlab.com/oauth/authorize token_url = https://gitlab.com/oauth/token api_url = https://gitlab.com/api/v4 allowed_groups = example, foo/bar role_attribute_path = is_admin && 'Admin' || 'Viewer' role_attribute_strict = true allow_assign_grafana_admin = false

地图的角色

您可以使用GitLab OAuth映射角色。在映射过程中,Grafana检查使用的作用JMESPath通过指定role_attribute_path配置选项。

路径查找,Grafana使用JSON获得查询GitLab的API/ api / v4 /用户端点和一个主要包含用户的所有团队。评估的结果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 = is_admin & &“Admin”| |“查看器”

这允许每个GitLab Grafana管理是一个管理。

地图角色使用组

组也可以用来映射角色。组名(小写和独特的)而不是显示名称用于识别组

例如,如果您有一组显示名称“例如组”可以使用以下代码片段来确保这些成员继承“编辑器”的角色。

role_attribute_path =包含(组[*],例如组)& & '编辑' | |“查看器”

注意:如果找到匹配其他领域一样,组织将被忽略。

地图服务器管理员权限

在Grafana v9.2后来版本。

如果应用程序角色受到GrafanaGrafanaAdmin,Grafana授予用户服务器管理员特权。
这是非常有用的,如果你想服务器管理员权限授予用户的一个子集。
Grafana也分配了用户管理组织默认的角色。

设置allow_assign_grafana_admin(auth.gitlab)必须设置为真正的对于这个工作。
如果设置设置为,用户被分配的角色管理默认的组织,而不是服务器管理员特权。

allow_assign_grafana_admin = true

例子:

role_attribute_path = is_admin & &“GrafanaAdmin”| |“查看器”

团队同步(企业)

只有在企业Grafana v6.4 +

与团队同步你可以映射Grafana GitLab组织团队,这样你的用户将会自动被添加到正确的团队。

你GitLab组可以引用相同的方式allowed_groups,就像例子foo / bar

了解更多关于团队同步