メインコンテンツへスキップ
メインコンテンツへスキップ

HTTP

Not supported in ClickHouse Cloud
注記

このページは ClickHouse Cloud には該当しません。ここで説明している機能は、ClickHouse Cloud サービスでは利用できません。 詳細については、ClickHouse の Cloud Compatibility ガイドを参照してください。

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

HTTP 認証サーバーの定義

HTTP認証サーバーを定義するには、config.xml ファイルに http_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>
注記

HTTP 認証は、他の認証メカニズムと併用できない点に注意してください。http_authentication と一緒に password など他のセクションが存在する場合、ClickHouse は強制終了されます。

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

ClickHouse で SQL ベースのアクセス制御とアカウント管理 が有効になっている場合、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 はそのキーと値のペアを文字列値として解析しようとし、認証済みユーザーの現在のセッションのセッション設定としてそれらを設定します。解析に失敗した場合、サーバーからのレスポンスボディは無視されます。