Kerberos 認証の設定¶
Denodo Platform では、以下のモジュールで Kerberos 認証がサポートされています。
Virtual DataPort Server
Data Catalog
Diagnostic and Monitoring Tool
Scheduler Server と Scheduler Administration Tool
このサポートを有効化する前に、Virtual DataPort Server とそのユーザーを認証できるように、 Kerberos 認証サーバーを構成 する必要があります。その後、Kerberos 認証を使用するように Virtual DataPort Server とそのクライアントを構成する必要があります。その手順については、『Virtual DataPort Administration Guide』の「 Kerberos 認証 」のセクションを参照してください。
Kerberos 認証サーバーの構成 (例 : Active Directory)¶
Active Directory (または組織で使用している Kerberos サーバー) で以下の作業を実行する必要があります。
サービスプリンシパル名 (SPN) を宣言 して、Virtual DataPort Server のユーザーに関連付けます。
キータブファイルを生成 します。
多くの組織では、この作業を実行できるのは、Active Directory の管理者のみです。
Active Directory でのユーザーの作成¶
Active Directory でサービスアカウントを作成します。Virtual DataPort Server は、このサービスアカウントを使用して自身を認証します。このサービスアカウントは、以下の要件を満たす必要があります。
ユーザー アカウントを作成します。プリンターなどの 機器/デバイス のアカウントでも コンピューター アカウントでもありません。
[ ユーザーは次回ログオン時にパスワード変更が必要 ] オプションを選択解除します。
[ パスワードを無期限にする ] を選択することをお勧めします。
これを Active Directory で行うには、以下の手順に従います。
[ Active Directory ユーザーとコンピューター ] ツール ([ プログラム ] メニュー > [ 管理ツール ]) を起動します。
[ Users ] ノードを右クリックして、[ 新規作成 ] > [ ユーザー ] をクリックします ([ プリンター ]や[ コンピューター ] などを選択 しない でください)。
[ ユーザー ログオン名 ] フィールドに「
denodo_server_prod
」と入力します。別の名前を入力することもできますが、この例の説明では、「denodo_server_prod」を使用します。[ 次へ ] をクリックして、パスワードを入力します。
左側ペインの [ ユーザー ] ツリーで
denodo_server_prod
を探して、ダブルクリックします。「denodo_server_prod」の [ アカウント ] タブをクリックして、[ アカウント オプション ] パネルで以下の手順を実行します。
[ パスワードを無期限にする ] を選択することをお勧めします。選択しない場合、パスワードの期限が切れるたびに、Virtual DataPort Server を再構成して再起動する必要があります。
暗号化メカニズムに関して、[ このアカウントに Kerberos DES 暗号化を使う ] をクリアすることをお勧めします。なぜなら、これは安全ではないと考えられるからです。

Active Directory ユーザーの構成 ([アカウント] タブ)¶
サービスプリンシパル名 (SPN) の宣言¶
サービスプリンシパル名 (SPN) は、サーバーで動作するサービスの一意の識別子です。Kerberos 認証では、SPN を使用して、サービスインスタンスとサービスログオンアカウントを関連付けます。
Denodo の SPN を定義するには、以下の手順に従います。
手順 #1
Denodo サーバーを実行するホストまたは「Windows ドメインコントローラー」から、コマンドプロンプトを管理者として開きます。
手順 #2
setspn
ユーティリティを使用して、SPN を宣言し、前の手順で作成したユーザーアカウント (「denodo_server_prod」) に関連付けます。
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_prod
出力は以下のようになります。
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_prod
出力は以下のようになります。
Registered ServicePrincipalNames for CN=denodo_server_prod,CN=Users,DC=contoso,DC=com:
HTTP/denodo-dv-prod.contoso.com
または
Registered ServicePrincipalNames for CN=denodo_server_prod,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 を複数のユーザーアカウントに関連付けることはできません。複数のユーザーアカウントに関連付けられている場合、この認証は機能しません。1 つのユーザーアカウントを 2 つの異なる SPN に関連付けることもできません。関連付けた場合、ODBC クライアント、Web サービス、Data Catalog、Diagnostic and Monitoring Tool、および Scheduler Administration Tool の Kerberos 認証は失敗します。Denodo JDBC ドライバーと管理ツールは接続できます。
SPN は、以下のルールに準拠する必要があります。
ホスト名 (この例では「host1.subnet1.contoso.com」) は、Virtual DataPort Server が動作するホストの完全修飾名 (FQDN) であるか、または Denodo サーバークラスターの場合はそのクラスターのロードバランサーに定義されている FQDN である必要があります。
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 は、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 を参照してください。
キータブファイルの生成¶
SPN を定義した後、Virtual DataPort Server の キータブ ファイルを生成する必要があります。 キータブ ファイルには、Kerberos プリンシパルおよびユーザーアカウントのパスワードから派生された暗号化キーのペアが含まれています。Virtual DataPort Server は、起動時にキータブを使用して Active Directory で自身を認証します。その認証に成功すると、他のユーザーを認証できるようになります。
手順 #1
Windows ドメインコントローラーのコマンドラインで以下のコマンドを実行します (これを実行できるのはドメイン管理者のみです)。
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_prod.keytab /princ HTTP/denodo-dv-prod.contoso.com@CONTOSO.COM
/mapuser denodo_server_prod /pass * /crypto ALL /ptype KRB5_NT_PRINCIPAL
ユーザーアカウント「denodo_server_prod」のパスワードを入力する必要があります。
重要
入力したパスワードが正しいこと、およびプリンシパルの大文字と小文字の区別が正しいことを確認します。ktpass は、入力されたプリンシパルとパスワードに基づいてキータブを生成するだけであり、それらの 検証は行いません 。
以下のようなテキストが出力されます。
Successfully mapped HTTP/denodo-dv-prod.contoso.com to denodo_server_prod.
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」の詳細については、 こちらのドキュメント を参照してください。
手順 #2
denodo_server_prod.keytab ファイルを、Denodo サーバーが動作するホストにコピーします。このサーバーが Denodo サーバークラスターに属している場合は、このサーバークラスターに属するすべてのサーバーにコピーします。
手順 #3 (オプション)
以下のどちらかを予定している場合、ここに示す手順を実行する必要があります。
Data Catalog または Scheduler で Kerberos 認証を有効化する
[pass-through session credentials] オプションと Kerberos 認証を 併用 する JDBC データソースを作成する
どちらも予定していない場合、ここは省略してください。ここで説明する変更は、後から実行できます。
setspn
と ktpass
を実行した後、Active Directory のユーザーアカウントの構成で、以下の 2 点が変更されています。
[ アカウント ] タブの [ ユーザー ログオン名 ] が [サービス プリンシパル名] に変更されています (以前は単なるユーザーアカウント名)。
新しい [ 委任 ] タブが存在します。
以下の手順に従います。
新しいユーザーアカウントを開いて、[ 委任 ] タブに移動します。
以下のどちらかのオプションを選択します。
任意のサービスへの委任でこのユーザーを信頼する (「自由な委任」) : このオプションを選択した場合、Active Directory は Virtual DataPort に対して、ユーザーが Virtual DataPort に接続するために使用した Kerberos 資格情報を任意のサービス (データベース、Web サービスなど) に委任することを許可します。さらに、Data Catalog と Scheduler に対して、Kerberos 認証を使用して Virtual DataPort に接続することを許可します。
指定されたサービスへの委任でのみこのユーザーを信頼する (「制約付き委任」) : これを選択した場合、以下の手順も実行する必要があります。
[ 任意の認証プロトコルを使う ] を選択します。選択しない場合、Kerberos の [pass-through session credentials] は機能しません。
[ このアカウントが委任された資格情報を提示できるサービス ] リストに、以下の情報を追加します。
このユーザーの 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 ユーザーの構成 ([委任] タブ)¶