TiCDC 客户端鉴权

从 v8.1.0 起,TiCDC 支持使用 mTLS(双向传输层安全性协议)或 TiDB 用户名密码进行客户端鉴权。

  • mTLS 鉴权:在传输层进行安全控制,使 TiCDC 可以验证客户端身份。
  • TiDB 用户名密码鉴权:在应用层进行安全控制,确保只有授权用户才能通过 TiCDC 节点登录。

这两种鉴权方式既可以单独使用,也可以结合使用,以满足不同的场景和安全需求。

使用 mTLS 进行客户端鉴权

  1. 在 TiCDC Server 中,将 security.mtls 配置为 true 以开启 mTLS 鉴权:

    [security] # 控制是否开启 TLS 客户端鉴权,默认值为 false。 mtls = true
  2. 配置客户端证书。

    • TiCDC 命令行工具
    • TiCDC OpenAPI

    使用 TiCDC 命令行工具时,你可以通过以下方式之一指定客户端证书。TiCDC 将按照以下顺序依次尝试读取客户端证书:

    1. 通过命令行参数 --cert--key 指定证书和私钥。如果服务端使用了自签名证书,还需要通过 --ca 参数指定受信任的 CA 证书:

      cdc cli changefeed list --cert client.crt --key client.key --ca ca.crt
    2. 通过环境变量 TICDC_CERT_PATHTICDC_KEY_PATHTICDC_CA_PATH 指定证书、私钥和 CA 证书的路径:

      export TICDC_CERT_PATH=client.crt export TICDC_KEY_PATH=client.key export TICDC_CA_PATH=ca.crt
    3. 通过共享凭证文件 ~/.ticdc/credentials 指定客户端证书。你可以使用 cdc cli configure-credentials 命令修改此文件的配置。

    使用 TiCDC OpenAPI 时,通过 --cert--key 指定客户端证书和私钥。如果服务端使用了自签名证书,还需要通过 --cacert 指定受信任的 CA 证书。示例:

    curl -X GET http://127.0.0.1:8300/api/v2/status --cert client.crt --key client.key --cacert ca.crt

使用 TiDB 用户名密码进行客户端鉴权

  1. 在 TiDB 中创建用户,并授权该用户从 TiCDC 所在节点登录的权限:

    CREATE USER 'test'@'ticdc_ip_address' IDENTIFIED BY 'password';
  2. 在 TiCDC Server 中,配置 security.client-user-requiredsecurity.client-allowed-user 以开启用户名和密码鉴权:

    [security] # 控制是否使用用户名和密码进行客户端鉴权,默认值为 false。 client-user-required = true # 指定可用于客户端鉴权的用户名,列表中不存在的用户的鉴权请求将被直接拒绝。默认值为 null。 client-allowed-user = ["test"]
  3. 指定步骤 1 创建的授权用户的用户名和密码。

    • TiCDC 命令行工具
    • TiCDC OpenAPI

    使用 TiCDC 命令行工具时,你可以通过以下方式之一指定用户名和密码。TiCDC 将按照以下顺序依次尝试读取用户名和密码:

    1. 通过命令行参数 --user--password 指定用于鉴权的用户名和密码:

      cdc cli changefeed list --user test --password password
    2. 通过命令行参数 --user 指定用于鉴权的用户名,然后通过终端输入密码:

      cdc cli changefeed list --user test
    3. 通过环境变量 TICDC_USERTICDC_PASSWORD 指定用于鉴权的用户名和密码:

      export TICDC_USER=test export TICDC_PASSWORD=password
    4. 通过共享凭证文件 ~/.ticdc/credentials 指定用于鉴权的用户名和密码。你可以使用 cdc cli configure-credentials 命令修改此文件的配置。

    使用 TiCDC OpenAPI 时,通过 --user <user>:<password> 指定用于鉴权的用户名和密码。示例:

    curl -X GET http://127.0.0.1:8300/api/v2/status --user test:password

文档内容是否有帮助?