HTTP
このページは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>
</basic_auth_server>
</http_authentication_servers>
</clickhouse>
http_authentication_serversセクション内に異なる名前を使用して複数のHTTPサーバーを定義できます。
パラメータ
uri- 認証リクエストを行うためのURI
サーバーと通信するために使用されるソケットのミリ秒単位のタイムアウト:
connection_timeout_ms- デフォルト: 1000 msreceive_timeout_ms- デフォルト: 1000 mssend_timeout_ms- デフォルト: 1000 ms
リトライのパラメータ:
max_tries- 認証リクエストを行う最大試行回数。デフォルト: 3retry_initial_backoff_ms- リトライ時の初期バックオフ間隔。デフォルト: 50 msretry_max_backoff_ms- 最大バックオフ間隔。デフォルト: 1000 ms
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>
</my_user>
</clickhouse>
HTTP認証は他の認証メカニズムと併用することはできません。http_authenticationと並んでpasswordのような他のセクションが存在する場合、ClickHouseはシャットダウンします。
SQLを使用したHTTP認証の有効化
ClickHouseでSQLによるアクセス制御とアカウント管理が有効になっている場合、HTTP認証で認識されたユーザーをSQL文を使用して作成することもできます。
CREATE USER my_user IDENTIFIED WITH HTTP SERVER 'basic_server' SCHEME 'Basic'
...もしくは、schemeを明示的に定義せずデフォルトのBasicを使用
CREATE USER my_user IDENTIFIED WITH HTTP SERVER 'basic_server'
セッション設定の伝達
HTTP認証サーバーからの応答ボディがJSON形式でsettingsサブオブジェクトを持っている場合、ClickHouseはそのキー: 値ペアを文字列値として解析し、認証されたユーザーの現在のセッションの設定としてセットしようとします。解析が失敗した場合、サーバーからの応答ボディは無視されます。