Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

HTTP

ClickHouse Cloud ではサポートされていません

HTTPサーバーを使用して、ClickHouseユーザーを認証できます。HTTP認証は、users.xml またはローカルのアクセス制御パスで定義された既存ユーザーに対する外部認証方式としてのみ使用できます。現在サポートされているのは、GETメソッドを使用する Basic 認証スキームです。

HTTP認証サーバーの定義

HTTP認証サーバーを定義するには、config.xmlhttp_authentication_servers セクションを追加します。

<clickhouse>
    <!- ... -->
    <http_authentication_servers>
        <basic_auth_server>
          <uri>http://localhost:8000/auth</uri>
          <connection_timeout_ms>1000</connection_timeout_ms>
          <receive_timeout_ms>1000</receive_timeout_ms>
          <send_timeout_ms>1000</send_timeout_ms>
          <max_tries>3</max_tries>
          <retry_initial_backoff_ms>50</retry_initial_backoff_ms>
          <retry_max_backoff_ms>1000</retry_max_backoff_ms>
          <forward_headers>
            <name>Custom-Auth-Header-1</name>
            <name>Custom-Auth-Header-2</name>
          </forward_headers>

        </basic_auth_server>
    </http_authentication_servers>
</clickhouse>

なお、http_authentication_servers セクションでは、異なる名前を付けて複数の HTTP サーバーを定義できます。

パラメータ

  • uri - 認証リクエストの送信先 URI

サーバーとの通信に使用するソケットのタイムアウト (ミリ秒) :

  • connection_timeout_ms - デフォルト: 1000 ms。
  • receive_timeout_ms - デフォルト: 1000 ms。
  • send_timeout_ms - デフォルト: 1000 ms。

再試行パラメータ:

  • max_tries - 認証リクエストを行う最大試行回数。デフォルト: 3
  • retry_initial_backoff_ms - 再試行時のバックオフの初期間隔。デフォルト: 50 ms
  • retry_max_backoff_ms - バックオフの最大間隔。デフォルト: 1000 ms

転送ヘッダー:

この部分では、クライアントのリクエストヘッダーから外部 HTTP 認証サービスに転送するヘッダーを定義します。ヘッダーは設定内のヘッダーと大文字・小文字を区別せずに照合されますが、転送時にはそのまま、つまり変更されずに送られます。

users.xml で HTTP 認証を有効にする

ユーザーの HTTP 認証を有効にするには、ユーザー定義で password などのセクションの代わりに、http_authentication セクションを指定します。

パラメータ:

  • server - 前述のとおり、メインの config.xml ファイルで設定した HTTP 認証サーバーの名前。
  • scheme - HTTP 認証スキーム。現在サポートされているのは Basic のみです。デフォルト: Basic

例 (users.xml に記述) :

<clickhouse>
    <!- ... -->
    <my_user>
        <!- ... -->
        <http_authentication>
            <server>basic_server</server>
            <scheme>basic</scheme>
        </http_authentication>
    </test_user_2>
</clickhouse>

SQL を使用した HTTP 認証の有効化

ClickHouse で SQL ベースの Access Control and Account Management が有効になっている場合は、HTTP 認証で識別されるユーザーも SQL ステートメントを使って作成できます。

CREATE USER my_user IDENTIFIED WITH HTTP SERVER 'basic_server' SCHEME 'Basic'

…または、スキームを明示的に定義しない場合は Basic がデフォルトです

CREATE USER my_user IDENTIFIED WITH HTTP SERVER 'basic_server'

セッション設定の受け渡し

HTTP認証サーバーからのレスポンスボディがJSON形式で、settings サブオブジェクトを含んでいる場合、ClickHouseはその key: value ペアを文字列の値としてパースし、認証済みユーザーの現在のセッションのセッション設定として適用を試みます。パースに失敗した場合、サーバーからのレスポンスボディは無視されます。

Navigation