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

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 - サービスキーのkeytabファイルへのパス。

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

例(config.xmlに入れる):

プリンシパル指定を含める場合:

レルムによるフィルタリングを含める場合:

注記

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

注記

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

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

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

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

  • primary/instance@REALM

この*/instance部分はゼロ回以上 occurする場合があります。**イニシエーターの標準的なプリンシパル名のprimary*部分は、認証が成功するためにkerberizedユーザー名と一致することが期待されます**。

users.xmlでのKerberosの有効化

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

パラメーター:

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

例(users.xmlに入れる):

注記

Kerberos認証は、他の認証メカニズムと併用できません。kerberosと並んでpasswordなどの他のセクションが存在する場合、ClickHouseはシャットダウンします。

リマインダー

ユーザーmy_userkerberosを使用している場合、Kerberosは前述のように主要なconfig.xmlファイルで有効にする必要があることに注意してください。

SQLを使用したKerberosの有効化

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

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