Kerberos 認証の設定

Denodo Platform では、以下のモジュールで Kerberos 認証がサポートされています。

  • Virtual DataPort

  • Data Catalog

  • Diagnostic and Monitoring Tool

  • Scheduler と Scheduler Administration Tool

Denodo Platform で Kerberos 認証を有効化する前に、組織の Active Directory でサービスアカウントを作成し、このアカウントを適切に構成する必要があります。ここでは、その手順について説明します。

Kerberos 認証サーバーの構成 (例 : Active Directory)

Active Directory (または組織で使用している Kerberos サーバー) で以下の作業を実行する必要があります。多くの組織では、この作業を実行できるのは、Active Directory の管理者のみです。

  1. Kerberos サーバーで [ユーザー] タイプのユーザーを作成 します。

  2. サービスプリンシパル名 (SPN) を宣言 して、Virtual DataPort Server のユーザーに関連付けます。

  3. このユーザーアカウントに対する Kerberos 委任を有効化 します。

  4. キータブファイルを生成 します。

次に、Denodo サーバーで Kerberos 認証を有効化 します。

以下の点に留意してください。

  • Denodo Platform のインストールごとに 1 つのアカウントを作成します。たとえば、開発用およびテスト用の各 Denodo サーバーに 1 つずつアカウントを作成します。

  • 構成を容易にするため、Denodo Platform の 1 つのインストール環境内にあるすべてのコンポーネントで同じアカウントを共有することをお勧めします。つまり、同じキータブファイルと同じサービスプリンシパル名 (SPN) を共有します。

  • Denodo インストールが Denodo サーバーのクラスタに属しており、クライアントアプリケーションがロードバランサー経由でそのサーバーに接続する場合、このクラスタのすべてのインストールに同じアカウントを使用します。

Active Directory でのユーザーの作成

Active Directory でサービスアカウントを作成します。このサービスアカウントは、以下の要件を満たす必要があります。

  • ユーザー アカウントを作成します。プリンターなどの 機器/デバイス のアカウントでも コンピューター アカウントでもありません。

  • [ ユーザーは次回ログオン時にパスワード変更が必要 ] オプションを選択解除します。

  • [ パスワードを無期限にする ] を選択することをお勧めします。

これを Active Directory で行うには、以下の手順に従います。

  1. [Active Directory ユーザーとコンピューター] ツール ([プログラム] メニュー > [管理ツール]) を起動します。

  2. [Users] ノードを右クリックして、[新規作成] > [ユーザー] をクリックします ([プリンター]や[コンピューター] などを選択 しない でください)。

  3. [ユーザー ログオン名] フィールドに「 denodo_server_production 」と入力します。別の名前を入力することもできますが、この例の説明では、「denodo_server_production」を使用します。

  4. [次へ] をクリックして、パスワードを入力します。

  5. 左側ペインの [ユーザー] ツリーで denodo_server_production を探して、ダブルクリックします。

  6. 「denodo_server_production」の [アカウント] タブをクリックして、[アカウント オプション] パネルで以下の手順を実行します。

    • [パスワードを無期限にする] を選択することをお勧めします。選択しない場合、パスワードの期限が切れるたびに、Virtual DataPort Server を再構成して再起動する必要があります。

    • 暗号化メカニズムに関して、[このアカウントに Kerberos DES 暗号化を使う] をクリアすることをお勧めします。なぜなら、これは安全ではないと考えられるからです。

    • [アカウントは重要なので委任できない] をクリアすることをお勧めします。そうでない場合、制約付き委任による Kerberos を使用して、基盤となるデータベースに対してクライアント資格情報のパススルーを行うことはできません。

Active Directory User Configuration (Account tab)

Active Directory ユーザーの構成 ([アカウント] タブ)

サービスプリンシパル名 (SPN) の宣言

サービスプリンシパル名 (SPN) は、サーバーで動作するサービスの一意の識別子です。Kerberos 認証では、SPN を使用して、サービスインスタンスとサービスログオンアカウントを関連付けます。

Denodo の SPN を定義するには、以下の手順に従います。

手順 #1

Denodo サーバーを実行するホストまたは「Windows ドメインコントローラー」から、コマンドプロンプトを管理者として開きます。

手順 #2

setspn ユーティリティを使用して、SPN を宣言し、前の手順で作成したユーザーアカウント (「denodo_server_production」) に関連付けます。

setspn ユーティリティの構文
setspn -U -S HTTP/<Fully Qualified Domain Name of the Denodo server> <REALM>\<server account>

例 :

setspn -U -S HTTP/denodo-dv-prod.contoso.com CONTOSO.COM\denodo_server_production

出力は以下のようになります。

Checking domain DC=contoso,DC=com

Registering ServicePrincipalNames for CN=Denodo Production Server,CN=Users,DC=contoso,DC=com
       HTTP/denodo-dv-prod.contoso.com
Updated object

Denodo サーバークラスタに属する Denodo サーバーに対してこの手順を実行していて、クライアントアプリケーションがロードバランサー経由でそのサーバーに接続する場合、Denodo サーバーの実際のホスト名ではなく、ロードバランサーに定義されているホスト名を使用してください。

手順 #3

ユーザーアカウントに SPN が 1 つだけ存在することを検証します。これを行うには、 setspn -L <user account> を実行します。以下に例を示します。

setspn -L CONTOSO.COM\denodo_server_production

出力は以下のようになります。

Registered ServicePrincipalNames for CN=denodo_server_production,CN=Users,DC=contoso,DC=com:
     HTTP/denodo-dv-prod.contoso.com

または

Registered ServicePrincipalNames for CN=denodo_server_production,CN=Users,DC=contoso,DC=com:
    HTTP/denodo-dv-prod.contoso.com
    HTTP/denodo-dv-prod

SPN に関するルールについての考慮事項を以下に示します。

  • 手順 #2 で setspn -U -s ... から「重複する SPN が見つかりました。操作を中止します」のようなエラーが返された場合、この SPN がすでにこのアカウントまたは別のアカウントのどちらかで登録されていることを意味します。Denodo サーバーの Kerberos 認証に使用する SPN を複数のユーザーアカウントに関連付けることはできません。複数のユーザーアカウントに関連付けられている場合、この認証は機能しません。

  • SPN は、以下のルールに準拠する必要があります。

    1. ホスト名 (この例では「host1.subnet1.contoso.com」) は、Virtual DataPort Server が動作するホストの完全修飾名 (FQDN) であるか、または Denodo サーバークラスタの場合はそのクラスタのロードバランサーに定義されている FQDN である必要があります。

    2. SPN の「サービスクラス」は、 HTTP である必要があります。例外として、Scheduler Server の場合は任意の文字列 (例 : SCHED ) を使用できます。

      Web ブラウザーは、「HTTP/<アクセスしているURLのホスト名>」サービスに使用する場合に Kerberos チケットを要求します (「https」プロトコルを使用している場合でも、ブラウザーは「HTTP」を使用して SPN を生成します)。このチケットの SPN は、Denodo サーバーが使用する SPN と一致する必要があり、一致しない場合は認証に失敗します。

    SPN がこれらのルールを満たさない場合、ODBC クライアント、Web サービス、Data Catalog、Diagnostic and Monitoring Tool、および Scheduler Administration Tool の Kerberos 認証は失敗します。Denodo JDBC ドライバーと管理ツールは接続できます。

  • 同じユーザーアカウントを使用して複数の SPN を登録することはできますが、キータブの生成に使用されたアカウントは前述のルールに従う必要があります。そうでない場合、Denodo の Web ツールによる Kerberos 認証は失敗します。

  • SPN は、Microsoft Windows ベースのコンピュータでは大文字と小文字が区別されません。ただし、Linux/Unix では大文字と小文字が区別されるので、正常に動作するには、大文字と小文字を正しく指定する必要があります。したがって、SPN を作成して Virtual DataPort Server を構成する際は、 常に SPN の大文字と小文字を正しく入力 してください。すなわち、ホスト名は小文字で (例 : denodo-prod.subnet1.contoso.com)、ドメイン名は大文字で (例 : CONTOSO.COM)、それぞれ入力してください。

  • 組織で Microsoft Active Directory 2003 以前を使用している場合、それらのバージョンでは setspn に -S スイッチがないため使用できません。その場合、-S の代わりに -a を使用してください。ただし、同一 SPN が 2 つのユーザーアカウントに関連付けられていないことを確認してください。

setspn については、 こちらのドキュメント を参照してください。

完全修飾名については、https://en.wikipedia.org/wiki/Fully_qualified_domain_name を参照してください。

このユーザーアカウントに対する Kerberos 委任の有効化

以下のどちらかを予定している場合、ここに示す手順を実行する必要があります。

  • Data Catalog または Scheduler で Kerberos 認証を有効化する

  • [pass-through session credentials] オプションと Kerberos 認証を 併用 する JDBC データソースを作成する

どちらも予定していない場合、 次のセクション に進んでください。ここで説明する変更は、後から実行できます。


setspnktpass を実行した後、Active Directory のユーザーアカウントの構成で、以下の 2 点が変更されています。

  • [アカウント] タブの [ユーザー ログオン名] が [サービス プリンシパル名] に変更されています (以前は単なるユーザーアカウント名)。

  • 新しい [委任] タブが存在します。

以下の手順に従います。

  1. 新しいユーザーアカウントを開いて、[委任] タブに移動します。

  2. 以下のどちらかのオプションを選択します。

    • 任意のサービスへの委任でこのユーザーを信頼する (「自由な委任」) : このオプションを選択した場合、Active Directory は Virtual DataPort に対して、ユーザーが Virtual DataPort に接続するために使用した Kerberos 資格情報を任意のサービス (データベース、Web サービスなど) に委任することを許可します。さらに、Data Catalog と Scheduler に対して、Kerberos 認証を使用して Virtual DataPort に接続することを許可します。

    • 指定されたサービスへの委任でのみこのユーザーを信頼する (「制約付き委任」) : これを選択した場合、以下の手順も実行する必要があります。

      1. [任意の認証プロトコルを使う] を選択します。選択しない場合、Kerberos の [pass-through session credentials] は機能しません。

      2. [このアカウントが委任された資格情報を提示できるサービス] リストに、以下の情報を追加します。

        • このユーザーの SPN (サービスプリンシパル名) (例 : HTTP/denodo-dv-prod.contoso.com@CONTOSO.COM )。これにより、Data Catalog または Scheduler で Kerberos 認証を有効化している場合、これらのコンポーネントはユーザーの Kerberos 資格情報を Virtual DataPort に委任できます。

        • ユーザーが Virtual DataPort に接続するために使用した Kerberos 資格情報を Denodo が委任することを許可する、データベースおよび Web サービスの SPN (サービスプリンシパル名)。

        [ 指定されたサービスへの委任でのみこのユーザーを信頼する ] オプションが選択されている場合、Active Directory は、Virtual DataPort に対して、および同じ SPN を使用する他の Denodo コンポーネントに対して、ユーザーの Kerberos 資格情報をこのリストに含まれるサービスにのみ委任することを許可します。

重要

[指定されたサービスへの委任でのみこのユーザーを信頼する] を選択する場合、「制約付き委任」を有効化することになります。すなわち、クエリで認証オプション [pass-through session credentials] が選択されている JDBC データソースが使用され、ドライバーが制約付き委任による Kerberos 認証をサポートしていない場合、Virtual DataPort に送信されたクエリは失敗します。『Virtual DataPort Administration Guide』の「 Kerberos 認証による JDBC ソースへの接続 」を参照して、想定するシナリオでこのオプションを有効化できるかどうかを確認してください。

Active Directory User Configuration (Delegation tab)

Active Directory ユーザーの構成 ([委任] タブ)

キータブファイルの生成

SPN を定義した後、 キータブ ファイルを生成します。 キータブ ファイルには、Kerberos プリンシパルおよびユーザーアカウントのパスワードから派生された暗号化キーのペアが含まれています。Virtual DataPort や Scheduler などの Denodo コンポーネントは、このキータブを使用して Active Directory で自身を認証します。その認証に成功すると、他のユーザーを認証できるようになります。

Windows ドメインコントローラーのコマンドラインで以下のコマンドを実行します (これを実行できるのはドメイン管理者のみです)。

ktpass ユーティリティの構文
ktpass /out denodo.keytab /princ <SPN with FQDN>@<REALM> /mapUser
<server Active Directory account> /crypto ALL /pass *
/ptype KRB5_NT_PRINCIPAL

例 :

キータブファイル生成例
ktpass /out denodo_server_production.keytab /princ HTTP/denodo-dv-prod.contoso.com@CONTOSO.COM
/mapuser denodo_server_production /pass * /crypto ALL /ptype KRB5_NT_PRINCIPAL

ユーザーアカウント「denodo_server_production」のパスワードを入力する必要があります。

重要

入力したパスワードが正しいこと、およびプリンシパルの大文字と小文字の区別が正しいことを確認します。ktpass は、入力されたプリンシパルとパスワードに基づいてキータブを生成するだけであり、それらの 検証は行いません

以下のようなテキストが出力されます。

Successfully mapped HTTP/denodo-dv-prod.contoso.com to denodo_server_production.
Type the password for HTTP/denodo-dv-prod.contoso.com:
Type the password again to confirm:
Password succesfully set!
Key created.
Key created.
Key created.
Key created.
Key created.
Output keytab to denodo.keytab:
Keytab version: 0x502
keysize 70 HTTP/denodo-dv-prod.contoso.com@CONTOSO.COM ptype 1 (KRB5_NT_PRINCIPAL) vno 4 etype 0x1 (DES-CBC-CRC) keylength 8 (0xfbeaece643fef213)
keysize 70 HTTP/denodo-dv-prod.contoso.com@CONTOSO.COM ptype 1 (KRB5_NT_PRINCIPAL) vno 4 etype 0x3 (DES-CBC-MD5) keylength 8 (0xfbeaece643fef213)
keysize 78 HTTP/denodo-dv-prod.contoso.com@CONTOSO.COM ptype 1 (KRB5_NT_PRINCIPAL) vno 4 etype 0x17 (RC4-HMAC) keylength 16 (0x25e19011618301a73e20fda538e18a91)
keysize 94 HTTP/denodo-dv-prod.contoso.com@CONTOSO.COM ptype 1 (KRB5_NT_PRINCIPAL) vno 4 etype 0x12 (AES256-SHA1) keylength 32 (0x0370175225b496a88a120973d70e28bb9e94f113a2b827926ad52d093471f35f)
keysize 78 HTTP/denodo-dv-prod.contoso.com@CONTOSO.COM ptype 1 (KRB5_NT_PRINCIPAL) vno 4 etype 0x11 (AES128-SHA1) keylength 16 (0x60c3d8c6f43727deeaccc480f8101c41)

「ktpass」の詳細については、 こちらのドキュメント を参照してください。

Denodo サーバーでのキータブの配布と Kerberos 認証の有効化

「denodo_server_production.keytab」ファイルを、Denodo Platform をインストールしたコンピューターにコピーします。このサーバーが Denodo サーバークラスタに属している場合は、このサーバークラスタに属するすべてのコンピューターにコピーします。

次に、必要なモジュールで Kerberos 認証を有効化します。参照先を以下に示します。

Diagnostic & Monitoring Tool の Kerberos 認証は、Virtual DataPort の Kerberos 認証を有効化すると自動で有効化されます。

キータブを扱う場合、パスワードを扱う場合と同様の注意を心がけてください。つまり、キータブをファイル共有に保存せず、Denodo インストールにコピーする際はファイル権限を変更して、Denodo コンポーネントなどを起動するユーザーアカウントのみがファイルにアクセスできるようにします。