这是关于下一个《Grafana》的版本。有关最新的稳定版本,请转到最新版本.
配置通用OAuth身份验证
您可以使用通用OAuth2特性在Grafana中配置许多不同的OAuth2身份验证服务。例子:
这个回调URL必须与您在浏览器中访问Grafana时使用的完整HTTP地址匹配,但是要加上后缀路径/登录/ generic_oauth
.
您可能需要设置root_url
选择(服务器)
回调URL是否正确。例如,如果你在代理的背后服务Grafana。
示例配置:
(auth.generic_oauth)name = OAuth icon = signin enabled = true client_id = YOUR_APP_CLIENT_ID client_secret = YOUR_APP_CLIENT_SECRET scopes = empty_scopes = false auth_url = token_url = api_url = allowed_domains = mycompany.com mycompany.org allow_sign_up = true tls_skip_verify_insecure = false tls_client_cert = tls_client_key = tls_client_ca = use_pkce = true auth_style =
集api_url
返回的资源OpenID用户信息兼容的信息。
您还可以指定客户端使用的SSL/TLS配置。
- 集
tls_client_cert
到证书的路径。 - 集
tls_client_key
到包含该键的路径。 - 集
tls_client_ca
到包含受信任证书颁发机构列表的路径。
tls_skip_verify_insecure
控制客户端是否验证服务器的证书链和主机名。如果为真,则SSL/TLS接受服务器提供的任何证书以及该证书中的任何主机名。您应该只将其用于测试,因为这种模式使SSL/TLS容易受到中间人攻击。
auth_style
控制这OAuth2 AuthStyle当从OAuth提供者请求令牌时使用。它决定了client_id
而且client_secret
发送给Oauth提供商。可用值为自动检测
,InParams
而且InHeader
.默认情况下,自动检测
使用。
集empty_scopes
为true,则在身份验证期间使用空范围。默认情况下,Grafana使用用户:电子邮件
范围。
电子邮件地址
Grafana通过查询OAuth提供者来确定用户的电子邮件地址,直到它找到一个电子邮件地址:
- 方法检查是否存在电子邮件地址
电子邮件
编码在OAuth中的字段id_token
参数。 - 方法检查是否存在电子邮件地址JMESPath通过
email_attribute_path
配置选项。路径查找使用的JSON是通过查询UserInfo端点获得的HTTP响应api_url
配置选项。请注意:仅在Grafana v6.4+中可用。 - 类型中是否存在电子邮件地址
属性
在OAuth中编码的映射id_token
参数。默认情况下,Grafana将使用属性映射执行查找电子邮件:主
键,但是,这是可配置的,可以使用email_attribute_name
配置选项。 - 查询
/电子邮件
OAuth提供者的API的端点(使用api_url
),然后检查是否存在标记为主要地址的电子邮件地址。 - 如果在步骤(1-4)中没有找到电子邮件地址,则将用户的电子邮件地址设置为空字符串。
小组/团队
类似地,组映射是使用JMESPath与groups_attribute_path
配置选项。的id_token
首先尝试,然后是api_url
.JMESPath表达式的结果应该是组的字符串数组。
此外,Grafana将检查通过指定的至少一个团队的存在team_ids
配置选项,使用JMESPath通过team_ids_attribute_path
配置选项。路径查找使用的JSON是通过查询通过teams_url
配置选项(使用/团队
作为备用端点)。结果应该是一个由Grafana Team id组成的字符串数组。使用这个设置可以确保只有特定的团队被允许使用OAuth提供者向Grafana进行身份验证。
登录
使用自定义用户登录login_attribute_path
配置选项。操作顺序如下:
- Grafana评估
login_attribute_path
针对ID令牌的JMESPath表达式。 - 如果Grafana没有找到值,那么Grafana将根据从UserInfo端点获得的JSON数据计算表达式。UserInfo端点URL在
api_url
配置选项。
属性可以自定义用于从返回的OAuth令牌中提取ID令牌的属性名id_token_attribute_name
选择。
类在JMESPath中设置用户的显示名称name_attribute_path
配置选项。它的运作方式与login_attribute_path
选择。
注意:
name_attribute_path
在Grafana 7.4+中可用。
PKCE
在Grafana v8.3和更高版本中可用。
IETF的RFC 7636引入“代码交换证明密钥”(PKCE),为某些形式的授权代码拦截攻击提供额外保护。PKCE将被要求OAuth 2.1.
您可以通过设置在Grafana中启用PKCEuse_pkce
来真正的
在(auth.generic_oauth)
部分。
Use_pkce = true
Grafana总是使用基于SHA256的S256
挑战方法和一个128字节(base64url编码)的代码验证器。
配置刷新令牌
在Grafana v9.3及更高版本中可用。
注意:这个特性的背后
accessTokenExpirationCheck
功能切换。
当用户使用OAuth提供程序登录时,Grafana会验证访问令牌是否过期。当一个访问令牌过期时,Grafana使用提供的刷新令牌(如果存在的话)来获取一个新的访问令牌。
Grafana使用一个刷新令牌来获得一个新的访问令牌,而不需要用户再次登录。如果刷新令牌不存在,Grafana会在访问令牌过期后将用户从系统中注销。
若要配置通用OAuth以使用刷新令牌,请执行以下一项或两项任务(如果需要):
- 扩展
(auth.generic_oauth)
具有其他作用域的部分 - 在提供程序上启用刷新令牌
使用Auth0设置OAuth2
使用如下参数在Auth0中创建客户端:
- 名称:Grafana
- 类型:普通Web应用程序
进入设置选项卡并设置:
- 允许的回调url:
https:// < grafana域> /登录/ generic_oauth
- 允许的回调url:
单击Save Changes,然后使用页面顶部的值来配置Grafana:
(auth.generic_oauth)enabled = true allow_sign_up = true team_ids = allowed_organizations = name = Auth0 client_id =
client_secret = scopes = openid profile email offline_access auth_url = https:// /authorize token_url = https:// /oauth/token api_url = https:// /userinfo use_pkce = true
用Bitbucket设置OAuth2
(auth.generic_oauth)name = BitBucket enabled = true allow_sign_up = true client_id = client_secret = scopes = account email auth_url = https://bitbucket.org/site/oauth2/authorize token_url = https://bitbucket.org/site/oauth2/access_token api_url = https://api.bitbucket.org/2.0/user teams_url = https://api.bitbucket.org/2.0/user/permissions/workspaces team_ids_attribute_path = values[*].workspace.slug team_ids = allowed_organizations =
的响应中包含刷新令牌授权代码授予.
使用Centrify设置OAuth2
在Centrify仪表板中创建一个新的自定义OpenID Connect应用程序配置。
创建一个可记忆的唯一应用程序ID,例如“grafana”,“grafana_aws”等。
输入其他基本配置(名称、描述、logo、类别)
在Trust选项卡上,生成一个长密码,并将其放入OpenID Connect Client Secret字段。
将Grafana实例首页的URL放到“Resource Application URL”字段中。
添加一个授权的重定向URI,如https://your-grafana-server/login/generic_oauth
设置权限,策略等,就像任何其他Centrify应用程序
配置Grafana的步骤如下:
(auth.generic_oauth)name = Centrify enabled = true allow_sign_up = true client_id =
client_secret = .my.centrify.com/OAuth2/Authorize/ token_url = https:// .my.centrify.com/OAuth2/Token/ api_url = https:// .my.centrify.com/OAuth2/UserInfo/
的响应中包含刷新令牌授权代码授予.
使用OneLogin设置OAuth2
用以下设置创建一个新的自定义连接器:
- 名称:Grafana
- 登录方法:OpenID连接
- 重定向URI:
https:// < grafana域> /登录/ generic_oauth
- 签名算法:RS256
- 登录网址:
https:// < grafana域> /登录/ generic_oauth
然后:
添加一个应用到Grafana连接器:
- 显示名称:Grafana
然后:
在Grafana App细节页面的SSO选项卡下,你会发现客户端ID和客户端秘密。
您的OneLogin域将与您用于访问OneLogin的URL匹配。
配置Grafana的步骤如下:
(auth.generic_oauth)name = OneLogin enabled = true allow_sign_up = true client_id =
client_secret = scopes = openid email name auth_url = https:// .onelogin.com/oidc/2/auth token_url = https:// .onelogin.com/oidc/2/token api_url = https:// .onelogin.com/oidc/2/me team_ids = allowed_organizations =
角色映射
属性检查角色是否存在JMESPath通过role_attribute_path
配置选项。JMESPath应用于id_token
第一。方法指定的UserInfo端点api_url
接下来尝试配置选项。评价后的结果role_attribute_path
JMESPath表达式应该是一个有效的Grafana角色,例如,查看器
,编辑器
或管理
.
有关更多信息,请参阅JMESPath例子.
警告:目前如果没有找到用户的组织角色映射,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
选项.
JMESPath例子
映射用户组织角色
为了简化正确的JMESPath表达式的配置,您可以在http://jmespath.org/.
基本的例子:
在下面的例子中,user将得到编辑器
身份验证时作为角色。财产的价值角色
如果角色是一个合适的Grafana角色,则将是结果角色。查看器
,编辑器
或管理
.
有效载荷:
{…“角色”:“编辑”,…}
配置:
Role_attribute_path =角色
先进的例子:
在下面的例子中,user将得到管理
身份验证时作为角色,因为它有一个角色管理
.如果用户有角色编辑器
它会得到编辑器
作为角色,否则查看器
.
有效载荷:
{…"info":{…“角色”:[“工程师”,“管理员”,],…},……}
配置:
Role_attribute_path = contains(info. properties)角色s[*], 'admin') && 'Admin' || contains(info.roles[*], 'editor') && 'Editor' || 'Viewer'
地图服务器管理员权限
在Grafana v9.2及更高版本中可用。
如果Grafana接收到的应用角色为GrafanaAdmin
, Grafana授予用户服务器管理员权限。
如果您想将服务器管理员特权授予用户的子集,这很有用。
Grafana还为用户分配管理
默认组织的角色。
设置allow_assign_grafana_admin
下(auth.generic_oauth)
必须设置为真正的
这样才能奏效。
如果设置为假
时,用户被分配的角色为管理
默认组织的权限,而不是服务器管理员权限。
Allow_assign_grafana_admin = true
例子:
Role_attribute_path = contains(info. properties)角色s[*], 'admin') && 'GrafanaAdmin' || contains(info.roles[*], 'editor') && 'Editor' || 'Viewer'
团队同步
在Grafana Enterprise v8.1及更高版本中可用。
使用Team Sync,您可以将您的Generic OAuth组映射到Grafana中的团队,以便用户自动添加到正确的团队。
通用OAuth组可以通过组ID引用,例如fba bab1c86 8 - 8 - 33 - e5 - 2089 - 1 - d1c80ec267d
或麦田
.
配置:
Groups_attribute_path = info.groups
有效载荷:
{…"info":{…"groups": ["engineers", "analysts",],…},……}
相关Grafana资源
开幕主题演讲:《Grafana 9》有什么新内容?
Raj Dutt, Myrle Krantz和Torkel Ödegaard揭开了Grafana 9的新内容。观看2022年GrafanaCONline开幕式主题演讲。随需应变。
使用Grafana插件统一您的数据:Datadog, Splunk, MongoDB等
在本次网络研讨会中,学习如何利用Grafana的插件生态系统访问80多个数据源,包括Datadog、Splunk、MongoDB等的插件。
从Grafana Enterprise和可观察性开始
加入Grafanabob电竞频道实验室团队,进行30分钟的演示,演示如何开始使用Grafana堆栈,这样您就可以在短短几分钟内从零到可观察性。