文档说明

设置管理认证

为了管理对您的 InfluxDB 集群的行政访问,将您的集群与 OAuth 2.0 身份提供者集成。使用您的身份提供者为所有需要访问 InfluxDB 集群管理权限的用户创建 OAuth2 账户。管理访问权限允许用户执行创建数据库和数据库令牌(提供对数据库的读取和写入访问)等操作。

InfluxData 已与以下身份提供者进行了测试,但任何满足要求的提供者都应工作

身份提供者可以与您的InfluxDB集群一起部署或在外部运行。如果您选择将您的提供者与InfluxDB集群一起部署,下面的过程应该在您初始的InfluxDB集群部署后进行。

身份提供者要求

要将身份提供者集成到您的InfluxDB集群中,它必须满足以下要求

身份提供者凭据

要访问OAuth2服务器,InfluxDB需要以下OAuth2连接凭据

  • 客户端ID
  • JWKS端点
  • 设备授权端点
  • 令牌端点

设置您的身份提供者

以下提供了设置说明

Keycloak

要将Keycloak用作您的身份提供者

  1. 创建Keycloak领域
  2. 创建一个启用了设备流的Keycloak客户端
  3. 创建需要访问您的InfluxDB集群的行政用户
  4. 配置InfluxDB集群以使用Keycloak

创建Keycloak领域

请参阅Keycloak文档中的创建领域

创建一个启用了设备流的Keycloak客户端

  1. Keycloak管理员控制台中,导航到客户端,然后点击创建客户端

  2. 常规设置配置步骤中

    1. 客户端类型设置为OpenID Connect
    2. 输入一个客户端ID,保存您的客户端ID以供以后使用。
    3. 可选:输入客户端的名称描述
    4. 点击下一步
  3. 功能配置步骤中,启用OAuth 2.0设备授权授予身份验证流程,然后点击下一步

  4. 登录设置步骤中,您无需进行任何更改。点击保存

创建用户

请参阅Keycloak文档中的创建用户

使用Keycloak查找用户ID

要使用Keycloak查找用户ID,请使用Keycloak管理员控制台或Keycloak REST API。

Keycloak管理员控制台
  1. 在Keycloak管理员控制台中,导航到您的领域
  2. 在左侧导航中选择用户
  3. 选择您要查找ID的用户。
  4. 选择详细信息选项卡。用户ID在此列出。
Keycloak REST API

向Keycloak REST API /users端点发送GET请求以获取特定用户的ID。提供以下内容

  • 查询参数
    • username:要检索信息的用户名
curl https://
KEYCLOAK_HOST
/auth/admin/realms/
KEYCLOAK_REALM
/users?username=
KEYCLOAK_USERNAME

替换以下内容

  • KEYCLOAK_HOST:Keycloak的主机和端口(host:port
  • KEYCLOAK_REALM:Keycloak领域
  • KEYCLOAK_USERNAME:要检索的Keycloak用户名

配置InfluxDB集群以使用Keycloak

运行以下命令以获取包含您的Keycloak领域OpenID配置的JSON对象

curl https://
KEYCLOAK_HOST
/realms/
KEYCLOAK_REALM
/.well-known/openid-configuration

查看示例响应体

以下是在连接您的InfluxDB集群和行政工具到Keycloak时必要的JSON对象中的重要字段

Microsoft Entra ID

将Microsoft Entra ID用作您的身份提供者

  1. 在Microsoft Entra ID中创建一个新的租户
  2. 添加需要访问InfluxDB集群管理权限的用户
  3. 注册一个启用设备代码流的新应用程序
  4. 配置InfluxDB集群以使用Microsoft Entra ID

在Microsoft Entra ID中创建一个新的租户

请参阅Microsoft Azure文档中的在Microsoft Entra ID中创建新的租户复制并存储您的Microsoft Entra租户ID

添加需要访问InfluxDB集群管理权限的用户

请参阅Microsoft Azure文档中的添加或删除用户

使用Microsoft Entra ID查找用户ID

对于Microsoft Entra ID,唯一的用户ID是Microsoft ObjectId (OID)。要下载用户OID列表

  1. Microsoft Azure Portal中,选择左侧导航中的用户
  2. 选择您想要OID的用户,然后点击下载用户

在下载的CSV文件中,用户OID在id列中提供。

注册一个启用设备代码流的新应用程序

  1. Microsoft Azure Portal中,选择左侧导航中的应用程序注册
  2. 点击新注册并为处理身份验证请求的新应用程序输入名称。
  3. 点击注册应用程序复制并存储您的应用程序(客户端)ID
  4. 在您的已注册应用程序中,点击左侧导航中的身份验证
  5. 高级设置下,将允许公共客户端流设置为。这启用了使用设备代码流登录到您的InfluxDB集群。

配置InfluxDB集群以使用Microsoft Entra ID

使用以下命令获取包含您的Microsoft Entra租户OpenID配置的JSON对象

curl https://login.microsoftonline.com/
AZURE_TENANT_ID
/v2.0/.well-known/openid-configuration

AZURE_TENANT_ID替换为您的Microsoft Entra租户ID

查看示例响应体

以下是在连接您的InfluxDB集群和行政工具到Keycloak时必要的JSON对象中的重要字段

配置您的集群以连接到您的身份提供者

要连接您的InfluxDB集群到OAuth2提供者,更新您的AppInstance资源以包含所需的凭据。直接修改您的AppInstance资源或,如果您使用的是InfluxDB Clustered Helm chart,请更新您的values.yaml

在您的AppInstance资源中提供以下字段的值

  • spec.package.spec.admin
    • identityProvider:身份提供者名称。 如果您使用Microsoft Entra ID(以前称为Azure Active Directory),则将名称设置为azure
    • jwksEndpoint:由您的身份提供者提供的JWKS端点。
    • users:OAuth2用户的列表,用于授予对您的InfluxDB集群的管理访问权限。ID由您的身份提供者提供。

以下是针对KeycloakAuth0Microsoft Entra ID的示例,但其他OAuth2提供者也应该可以正常工作

apiVersion: kubecfg.dev/v1alpha1
kind: AppInstance
# ...
spec:
  package:
    spec:
      admin:
        identityProvider: keycloak
        jwksEndpoint: |-
          https://
KEYCLOAK_HOST
/auth/realms/
KEYCLOAK_REALM
/protocol/openid-connect/certs
users: # All fields are required but `firstName`, `lastName`, and `email` can be # arbitrary values. However, `id` must match the user ID provided by Keycloak. - id:
KEYCLOAK_USER_ID
firstName: Marty lastName: McFly email: mcfly@influxdata.com

替换以下内容

  • KEYCLOAK_HOST:Keycloak服务器的主机和端口
  • KEYCLOAK_REALM:Keycloak领域
  • KEYCLOAK_USER_ID:授予InfluxDB管理访问权限的Keycloak用户ID

apiVersion: kubecfg.dev/v1alpha1
kind: AppInstance
# ...
spec:
  package:
    spec:
      admin:
        identityProvider: auth0
        jwksEndpoint: |-
          https://
AUTH0_HOST
/.well-known/openid-configuration
users: # All fields are required but `firstName`, `lastName`, and `email` can be # arbitrary values. However, `id` must match the user ID provided by Auth0. - id:
AUTH0_USER_ID
firstName: Marty lastName: McFly email: mcfly@influxdata.com

替换以下内容

  • AUTH0_HOST:Auth0服务器的主机和端口
  • AUTH0_USER_ID:授予InfluxDB管理访问权限的Auth0用户ID

apiVersion: kubecfg.dev/v1alpha1
kind: AppInstance
# ...
spec:
  package:
    spec:
      admin:
        identityProvider: azure
        jwksEndpoint: |-
          https://login.microsoftonline.com/
AZURE_TENANT_ID
/discovery/v2.0/keys
users: # All fields are required but `firstName`, `lastName`, and `email` can be # arbitrary values. However, `id` must match the user ID provided by Auth0. - id:
AZURE_USER_ID
firstName: Marty lastName: McFly email: mcfly@influxdata.com

替换以下内容


请在您的values.yaml文件中提供以下字段的值

  • 管理员
    • identityProvider:身份提供者名称。 如果您使用Microsoft Entra ID(以前称为Azure Active Directory),则将名称设置为azure
    • jwksEndpoint:由您的身份提供者提供的JWKS端点。
    • users:OAuth2用户的列表,用于授予对您的InfluxDB集群的管理访问权限。ID由您的身份提供者提供。

以下是针对KeycloakAuth0Microsoft Entra ID的示例,但其他OAuth2提供者也应该可以正常工作

admin:
  # The identity provider to be used e.g. "keycloak", "auth0", "azure", etc
  # Note for Azure Active Directory it must be exactly "azure"
  identityProvider: keycloak
  # The JWKS endpoint provided by the Identity Provider
  jwksEndpoint: |-
    https://
KEYCLOAK_HOST
/auth/realms/
KEYCLOAK_REALM
/protocol/openid-connect/certs
# The list of users to grant access to Clustered via influxctl users: # All fields are required but `firstName`, `lastName`, and `email` can be # arbitrary values. However, `id` must match the user ID provided by Keycloak. - id:
KEYCLOAK_USER_ID
firstName: Marty lastName: McFly email: mcfly@influxdata.com

替换以下内容

  • KEYCLOAK_HOST:Keycloak服务器的主机和端口
  • KEYCLOAK_REALM:Keycloak领域
  • KEYCLOAK_USER_ID:授予InfluxDB管理访问权限的Keycloak用户ID

admin:
  # The identity provider to be used e.g. "keycloak", "auth0", "azure", etc
  # Note for Azure Active Directory it must be exactly "azure"
  identityProvider: auth0
  # The JWKS endpoint provided by the Identity Provider
  jwksEndpoint: |-
    https://
AUTH0_HOST
/.well-known/openid-configuration
# The list of users to grant access to Clustered via influxctl users: # All fields are required but `firstName`, `lastName`, and `email` can be # arbitrary values. However, `id` must match the user ID provided by Auth0. - id:
AUTH0_USER_ID
firstName: Marty lastName: McFly email: mcfly@influxdata.com

替换以下内容

  • AUTH0_HOST:Auth0服务器的主机和端口
  • AUTH0_USER_ID:授予InfluxDB管理访问权限的Auth0用户ID

admin:
  # The identity provider to be used e.g. "keycloak", "auth0", "azure", etc
  # Note for Azure Active Directory it must be exactly "azure"
  identityProvider: azure
  # The JWKS endpoint provided by the Identity Provider
  jwksEndpoint: |-
    https://login.microsoftonline.com/
AZURE_TENANT_ID
/discovery/v2.0/keys
# The list of users to grant access to Clustered via influxctl users: # All fields are required but `firstName`, `lastName`, and `email` can be # arbitrary values. However, `id` must match the user ID provided by Auth0. - id:
AZURE_USER_ID
firstName: Marty lastName: McFly email: mcfly@influxdata.com

替换以下内容


有关管理InfluxDB集群中用户的信息,请参阅管理用户

应用您的配置更改

使用kubectlhelm应用您的配置更改,并将您的InfluxDB集群连接到您的身份提供者。

kubectl apply \
  --filename myinfluxdb.yml \
  --namespace influxdb
helm upgrade \
  influxdata/influxdb3-clustered \
  -f ./values.yml \
  --namespace influxdb

配置 influxctl

influxctl CLI 允许您执行创建数据库或数据库令牌等管理操作。所有 influxctl 命令都首先通过您的身份提供者授权。更新您的 influxctl 配置文件 以连接到您的身份提供者。

以下示例显示了如何为各种身份提供者配置 influxctl

[[profile]]
    name = "default"
    product = "clustered"
    host = "cluster-host.com" # InfluxDB cluster host
    port = "8086" # InfluxDB cluster port

    [profile.auth.oauth2]
        client_id = "
KEYCLOAK_CLIENT_ID
"
device_url = "https://KEYCLOAK_HOST/realms/
KEYCLOAK_REALM
/protocol/openid-connect/auth/device"
token_url = "https://KEYCLOAK_HOST/realms/
KEYCLOAK_REALM
/protocol/openid-connect/token"
[[profile]]
    name = "default"
    product = "clustered"
    host = "cluster-host.com" # InfluxDB cluster host
    port = "8086" # InfluxDB cluster port

    [profile.auth.oauth2]
        client_id = "
AUTH0_CLIENT_ID
"
client_secret = "
AUTH0_CLIENT_SECRET
"
device_url = "https://
AUTH0_HOST
/oauth/device/code"
token_url = "https://
AUTH0_HOST
/oauth/token"
[[profile]]
    name = "default"
    product = "clustered"
    host = "cluster-host.com" # InfluxDB cluster host
    port = "8086" # InfluxDB cluster port

    [profile.auth.oauth2]
        client_id = "
AZURE_CLIENT_ID
"
scopes = ["
AZURE_CLIENT_ID
/.default"
]
device_url = "https://login.microsoftonline.com/
AZURE_TENANT_ID
/oauth2/v2.0/devicecode"
token_url = "https://login.microsoftonline.com/
AZURE_TENANT_ID
/oauth2/v2.0/token"

刷新管理员令牌

为了准备进入生产环境,我们强烈建议您撤销在InfluxDB集群安装过程的早期阶段用于授权集群的 管理员 令牌,并生成一个新的管理员令牌。

有关详细说明,请参阅撤销管理员令牌

测试您的授权流程

为了测试您的身份提供者集成并确保管理员访问权限已正确授权,请运行任何 需要管理员身份验证influxctl 命令——例如

influxctl token list

在执行之前,命令会指导您使用您的身份提供者进行授权。授权成功后,命令将运行并返回结果。


这个页面有帮助吗?

感谢您的反馈!


Flux的未来

Flux将进入维护模式。您可以在不更改代码的情况下继续像目前一样使用它。

阅读更多

InfluxDB v3增强功能和InfluxDB Clustered现已正式发布

新功能包括更快的查询性能和管理工具,推动了InfluxDB v3产品线的进步。InfluxDB Clustered现已正式发布。

InfluxDB v3性能和功能

InfluxDB v3产品线在查询性能方面取得了显著提升,并提供了新的管理工具。这些增强包括一个操作仪表板来监控InfluxDB集群的健康状况,InfluxDB Cloud Dedicated中的单点登录(SSO)支持,以及令牌和数据库的新管理API。

了解新的v3增强功能


InfluxDB Clustered正式发布

InfluxDB 集群版现已全面上市,为您自管理的堆栈带来 InfluxDB v3 的强大功能。

与我们讨论 InfluxDB 集群版