菜单

配置Okta OAuth2认证

仅在Grafana v7.0+中可用

Okta身份验证允许您的Grafana用户通过使用外部Okta授权服务器登录。

创建Okta应用程序

在让用户登录之前,需要从Okta开发人员控制台创建一个Okta应用程序。

  1. 登录Okta门户

  2. 转到管理员,然后选择开发人员控制台

  3. 选择应用程序,然后添加应用程序

  4. 选择网络作为平台。

  5. 为您的应用程序输入一个名称(或保留默认值)。

  6. 添加基础URI您的应用程序,例如https://grafana.example.com

  7. 登录重定向URI。使用基础URI然后加上/登录/ okta,例如:https://grafana.example.com/login/okta

  8. 点击完成完成Okta应用程序的创建。

在Grafana中启用Okta OAuth

  1. 将以下内容添加到Grafana配置文件
(auth.okta)name = Okta icon = okta enabled = true allow_sign_up = true client_id = some_id client_secret = some_secret scopes = openid profile email groups auth_url = https://.okta.com/oauth2/v1/authorize token_url = https://.okta.com/oauth2/v1/token api_url = https://.okta.com/oauth2/v1/userinfo allowed_domains = allowed_groups = role_attribute_path =

配置刷新令牌

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

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

当用户使用OAuth提供程序登录时,Grafana会验证访问令牌是否过期。当一个访问令牌过期时,Grafana使用提供的刷新令牌(如果存在的话)来获取一个新的访问令牌。

Grafana使用一个刷新令牌来获得一个新的访问令牌,而不需要用户再次登录。如果刷新令牌不存在,Grafana会在访问令牌过期后将用户从系统中注销。

  1. 要启用刷新令牌,授予类型一般设置部分。
  2. 扩展作用域(auth.okta)offline_access

配置允许的组和域

若要限制已通过身份验证的用户访问一个或多个组的成员,请设置allowed_groups到以逗号或空格分隔的Okta组列表。

allowed_groups =开发人员,管理员

allowed_domains选项限制属于特定域的用户的访问。域之间用空格或逗号分隔。

Allowed_domains = mycompany.com mycompany.org

地图的角色

Grafana可以尝试通过Okta OAuth进行角色映射。方法来检查角色是否存在JMESPath通过role_attribute_path配置选项。

Grafana使用从查询/用户信息路径查找的端点。评估后的结果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选项

阅读有关如何添加自定义声明到Okta中的用户信息。此外,查看Generic OAuth页面JMESPath例子

地图服务器管理员权限

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

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

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

Allow_assign_grafana_admin = true

例子:

role_attribute_path = contains(groups[*], 'admin') && 'GrafanaAdmin' || contains(groups[*], 'editor') && 'editor' || 'Viewer'

团队同步(企业版)

将您的Okta组映射到Grafana中的团队,这样您的用户将自动添加到正确的团队。

Okta组可以通过组名引用,例如管理员

了解更多关于Team Sync的信息