メインコンテンツまでスキップ
メインコンテンツまでスキップ

Kerberos

Not supported in ClickHouse Cloud
注記

このページは ClickHouse Cloud には当てはまりません。ここで文書化されている機能は ClickHouse Cloud サービスでは利用できません。 詳細については ClickHouse の Cloud Compatibility ガイドをご覧ください。

既存の適切に構成された ClickHouse ユーザーは、Kerberos 認証プロトコルを使用して認証できます。

現在、Kerberos は、users.xml またはローカルアクセス制御パスに定義されている既存のユーザーの外部認証機構としてのみ使用できます。これらのユーザーは HTTP リクエストのみを使用でき、GSS-SPNEGO メカニズムを使用して認証できなければなりません。

このアプローチでは、Kerberos をシステムに設定し、ClickHouse 設定で有効にする必要があります。

ClickHouse での Kerberos の有効化

Kerberos を有効にするには、config.xmlkerberos セクションを含める必要があります。このセクションには追加のパラメータを含めることができます。

パラメータ:

  • principal - セキュリティコンテキストを受け入れる際に取得され、使用されるカノニカルサービスプリンシパル名。

    • このパラメータはオプションで、省略した場合はデフォルトのプリンシパルが使用されます。
  • realm - 認証を、その発信者のレルムが一致するリクエストのみに制限するために使用されるレルム。

    • このパラメータはオプションで、省略した場合はレルムによる追加のフィルタリングは適用されません。
  • keytab - サービスキータブファイルへのパス。

    • このパラメータはオプションで、省略した場合はサービスキータブファイルへのパスを KRB5_KTNAME 環境変数で設定する必要があります。

例 (config.xml に入ります):

プリンシパルの指定あり:

レルムによるフィルタリングあり:

注記

kerberos セクションは1つだけ定義できます。複数の kerberos セクションが存在する場合、ClickHouse は Kerberos 認証を無効にします。

注記

principalrealm セクションは同時に指定できません。両方の principalrealm セクションが存在する場合、ClickHouse は Kerberos 認証を無効にします。

既存ユーザーの外部認証機構としての Kerberos

Kerberos は、ローカルに定義されたユーザー(users.xml またはローカルアクセス制御パスに定義されたユーザー)の身元を確認する方法として使用できます。現在、HTTP インターフェースを介したリクエストのみが kerberized できます(GSS-SPNEGO メカニズムを介して)。

Kerberos プリンシパル名のフォーマットは通常、次のパターンに従います:

  • primary/instance@REALM

/instance 部分は0回以上現れる可能性があります。認証が成功するためには、発信者のカノニカルプリンシパル名の primary 部分が Kerberos ユーザー名と一致することが期待されています

users.xml での Kerberos の有効化

ユーザーの Kerberos 認証を有効にするには、ユーザー定義の password や類似のセクションの代わりに kerberos セクションを指定します。

パラメータ:

  • realm - 認証を、その発信者のレルムが一致するリクエストのみに制限するために使用されるレルム。
    • このパラメータはオプションで、省略した場合はレルムによる追加のフィルタリングは適用されません。

例 (users.xml に入ります):

注記

Kerberos 認証は、他の認証メカニズムと併用することはできないことに注意してください。kerberos と並行する password などの他のセクションが存在する場合、ClickHouse はシャットダウンします。

リマインダー

ユーザー my_userkerberos を使用する場合、以前に説明したように Kerberos をメイン config.xml ファイルで有効にする必要があります。

SQL を使用した Kerberos の有効化

SQL ドリブンのアクセス制御とアカウント管理 が ClickHouse で有効になっている場合、Kerberos によって識別されるユーザーも SQL ステートメントを使用して作成できます。

...あるいは、レルムによるフィルタリングなしで: