ClickHouse/docs/ja/operations/external-authenticators/kerberos.md
2024-11-18 11:58:58 +09:00

5.3 KiB
Raw Blame History

slug
/ja/operations/external-authenticators/kerberos

Kerberos

import SelfManaged from '@site/docs/ja/_snippets/_self_managed_only_no_roadmap.md';

既存で適切に設定されたClickHouseユーザーは、Kerberos認証プロトコルを通じて認証できます。

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

このアプローチを取るには、システム内でKerberosが適切に設定され、ClickHouseの設定で有効にされている必要があります。

ClickHouseでのKerberosの有効化

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

パラメータ:

  • principal - セキュリティコンテキストを受け入れる際に取得および使用される正規のサービスプリンシパル名。

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

    • このパラメータは省略可能で、省略された場合はレルムによる追加のフィルタリングは行われません。
  • keytab - サービスのkeytabファイルへのパス。

    • このパラメータは省略可能で、省略された場合は、KRB5_KTNAME環境変数に設定されたサービスのkeytabファイルのパスを使用する必要があります。

例(config.xmlに記述):

<clickhouse>
    <!- ... -->
    <kerberos />
</clickhouse>

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

<clickhouse>
    <!- ... -->
    <kerberos>
        <principal>HTTP/clickhouse.example.com@EXAMPLE.COM</principal>
    </kerberos>
</clickhouse>

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

<clickhouse>
    <!- ... -->
    <kerberos>
        <realm>EXAMPLE.COM</realm>
    </kerberos>
</clickhouse>

:::note kerberosセクションは一つだけ定義可能です。複数のkerberosセクションが存在すると、ClickHouseはKerberos認証を無効にします。 :::

:::note principalrealmセクションを同時に指定することはできません。両方のセクションを指定すると、ClickHouseはKerberos認証を無効にします。 :::

既存ユーザーの外部認証装置としてのKerberos

Kerberosは、ローカルに定義されたユーザーusers.xmlまたはローカルアクセス制御経路で定義されたユーザー)の識別を確認する方法として使用できます。現在、HTTPインターフェース上の要求のみkerberizedGSS-SPNEGOメカニズムを介してされることが可能です。

Kerberosプリンシパル名の形式は通常、次のパターンに従います

  • primary/instance@REALM

/instance部分は0回以上発生することがあります。認証が成功するためには、発信者の正規のプリンシパル名のprimary部分がkerberizedユーザー名と一致する必要があります

users.xmlでのKerberos有効化

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

パラメータ:

  • realm - 認証を、発信者のレルムが一致する要求に制限するために使用されるレルム。
    • このパラメータは省略可能で、省略された場合はレルムによる追加のフィルタリングは行われません。

例(users.xmlに記述):

<clickhouse>
    <!- ... -->
    <users>
        <!- ... -->
        <my_user>
            <!- ... -->
            <kerberos>
                <realm>EXAMPLE.COM</realm>
            </kerberos>
        </my_user>
    </users>
</clickhouse>

:::note Kerberos認証は他の認証メカニズムと併用することはできません。kerberosと一緒にpasswordのようなセクションが存在すると、ClickHouseは停止します。 :::

:::info Reminder ユーザーmy_userkerberosを使用するようになった場合、前述の通り、メインのconfig.xmlファイルでKerberosを有効にする必要があります。 :::

SQLを使用したKerberosの有効化

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

CREATE USER my_user IDENTIFIED WITH kerberos REALM 'EXAMPLE.COM'

レルムによるフィルタリングを行わない場合:

CREATE USER my_user IDENTIFIED WITH kerberos