配置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_path
JMESPath表达式必须是有效的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 /开发人员