Documentation

设置管理身份验证

为了管理对 InfluxDB 集群的管理访问权限,请将您的集群与 OAuth 2.0 身份提供商集成。使用您的身份提供商为所有需要管理访问 InfluxDB 集群的用户创建 OAuth2 帐户。管理访问权限允许用户执行诸如创建数据库和数据库令牌(提供对数据库的读写访问权限)之类的操作。

InfluxData 已经使用以下身份提供商进行了测试,但任何 满足要求的 提供商都应该可以工作

身份提供商可以与您的 InfluxDB 集群一起部署,也可以在外部运行。如果您选择与 InfluxDB 集群一起部署您的提供商,则应在您的初始 InfluxDB 集群部署之后完成下面概述的过程。

身份提供商要求

为了将身份提供商与您的 InfluxDB Clustered 集成,它必须满足以下要求

身份提供商凭据

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

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

设置您的身份提供商

提供了以下设置说明

Keycloak

要使用 Keycloak 作为您的身份提供商

  1. 创建 Keycloak realm
  2. 创建启用设备流的 Keycloak 客户端
  3. 创建需要管理访问您的 InfluxDB 集群的用户
  4. 配置 InfluxDB Clustered 以使用 Keycloak

创建 Keycloak realm

请参阅 Keycloak 文档中的 创建 realm

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

  1. Keycloak 管理控制台 中,导航到 Clients,然后单击 Create Client

  2. 常规设置 (General Settings) 配置步骤中

    1. 客户端类型 (Client type) 设置为 OpenID Connect
    2. 输入 客户端 ID (Client ID),保存您的客户端 ID 以供稍后使用。
    3. 可选: 输入客户端的 名称 (Name)描述 (Description)
    4. 单击 Next
  3. 功能 (Capability) 配置步骤中,启用 OAuth 2.0 设备授权授予 (OAuth 2.0 Device Authorization Grant) 身份验证流程,然后单击 Next

  4. 登录设置 (Login settings) 步骤中,您无需更改任何内容。单击 Save

创建用户

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

使用 Keycloak 查找用户 ID

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

Keycloak 管理控制台
  1. 在 Keycloak 管理控制台中,导航到您的 realm
  2. 在左侧导航栏中选择 Users
  3. 选择您要查找 ID 的用户。
  4. 选择 Details 选项卡。用户 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 realm
  • KEYCLOAK_USERNAME:要检索的 Keycloak 用户名

配置 InfluxDB Clustered 以使用 Keycloak

运行以下命令以检索包含您的 Keycloak realm 的 OpenID 配置的 JSON 对象

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

查看示例响应正文

以下是 JSON 对象中重要的字段,这些字段对于将您的 InfluxDB 集群和管理工具连接到 Keycloak 是必需的

Microsoft Entra ID

要使用 Microsoft Entra ID 作为您的身份提供商

  1. 在 Microsoft Entra ID 中创建新租户
  2. 添加需要管理访问您的 InfluxDB 集群的用户
  3. 注册一个启用设备代码流的新应用程序
  4. 配置 InfluxDB Clustered 以使用 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 门户 中,在左侧导航栏中选择 Users
  2. 选择您想要 OID 的用户,然后单击 下载用户 (Download Users)

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

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

  1. Microsoft Azure 门户 中,在左侧导航栏中选择 应用注册 (App Registrations)
  2. 单击 新注册 (New Registration),然后输入新应用程序的名称以处理身份验证请求。
  3. 单击 注册应用程序 (Register Application)复制并存储您的 应用程序(客户端)ID (Application (Client) ID)
  4. 在您注册的应用程序中,在左侧导航栏中单击 身份验证 (Authentication)
  5. 高级设置 (Advanced Settings) 下,将 允许公共客户端流 (Allow public client flows) 设置为 是 (Yes)。这启用了使用 设备代码流 (device code flow) 登录到您的 InfluxDB 集群。

配置 InfluxDB Clustered 以使用 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

查看示例响应正文

以下是 JSON 对象中重要的字段,这些字段对于将您的 InfluxDB 集群和管理工具连接到 Keycloak 是必需的

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

要将您的 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:要授予管理访问您的 InfluxDB 集群的 OAuth2 用户列表。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 realm
  • 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 中为以下字段提供值

  • admin
    • identityProvider:身份提供商名称。如果使用 Microsoft Entra ID(原 Azure Active Directory),请将名称设置为 azure
    • jwksEndpoint:您的身份提供商提供的 JWKS 端点。
    • users:要授予管理访问您的 InfluxDB 集群的 OAuth2 用户列表。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 realm
  • 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"

刷新您的管理令牌

为了准备迁移到生产环境,我们强烈建议撤销您集群的 admin 令牌,该令牌用于在 InfluxDB Clustered 安装过程的早期阶段与您的集群进行授权,并生成新的管理令牌。

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

测试您的授权流程

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

influxctl token list

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


此页面是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续像现在这样使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB 3 开源版本现已公开发布 Alpha 版

InfluxDB 3 开源版本现已可用于 Alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个产品作为 Alpha 版本的一部分。

InfluxDB 3 Core 是我们新的开源产品。它是用于时间序列和事件数据的最新数据引擎。InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询功能、读取副本、高可用性、可扩展性和细粒度的安全性。

有关如何开始使用的更多信息,请查看