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 の管理者のみです。
サービスプリンシパル名 (SPN) を宣言 して、Virtual DataPort Server のユーザーに関連付けます。
このユーザーアカウントに対する Kerberos 委任を有効化 します。
キータブファイルを生成 します。
次に、Denodo サーバーで Kerberos 認証を有効化 します。
以下の点に留意してください。
Denodo Platform のインストールごとに 1 つのアカウントを作成します。たとえば、開発用およびテスト用の各 Denodo サーバーに 1 つずつアカウントを作成します。
構成を容易にするため、Denodo Platform の 1 つのインストール環境内にあるすべてのコンポーネントで同じアカウントを共有することをお勧めします。つまり、同じキータブファイルと同じサービスプリンシパル名 (SPN) を共有します。
Denodo インストールが Denodo サーバーのクラスタに属しており、クライアントアプリケーションがロードバランサー経由でそのサーバーに接続する場合、このクラスタのすべてのインストールに同じアカウントを使用します。
Active Directory でのユーザーの作成¶
Active Directory でサービスアカウントを作成します。このサービスアカウントは、以下の要件を満たす必要があります。
ユーザー アカウントを作成します。プリンターなどの 機器/デバイス のアカウントでも コンピューター アカウントでもありません。
[ ユーザーは次回ログオン時にパスワード変更が必要 ] オプションを選択解除します。
[ パスワードを無期限にする ] を選択することをお勧めします。
これを Active Directory で行うには、以下の手順に従います。
[Active Directory ユーザーとコンピューター] ツール ([プログラム] メニュー > [管理ツール]) を起動します。
[Users] ノードを右クリックして、[新規作成] > [ユーザー] をクリックします ([プリンター]や[コンピューター] などを選択 しない でください)。
[ユーザー ログオン名] フィールドに「
denodo_server_production
」と入力します。別の名前を入力することもできますが、この例の説明では、「denodo_server_production」を使用します。[次へ] をクリックして、パスワードを入力します。
左側ペインの [ユーザー] ツリーで
denodo_server_production
を探して、ダブルクリックします。「denodo_server_production」の [アカウント] タブをクリックして、[アカウント オプション] パネルで以下の手順を実行します。
[パスワードを無期限にする] を選択することをお勧めします。選択しない場合、パスワードの期限が切れるたびに、Virtual DataPort Server を再構成して再起動する必要があります。
セキュリティ上の理由で、以下を実行することをお勧めします。
[Use Kerberos DES encryption types for this account] のチェックをはずします。
[This account supports Kerberos AES 128 encryption] をチェックします。
[This account supports Kerberos AES 256 encryption] をチェックします。
[アカウントは重要なので委任できない] をクリアすることをお勧めします。そうでない場合、制約付き委任による Kerberos を使用して、基盤となるデータベースに対してクライアント資格情報のパススルーを行うことはできません。
サービスプリンシパル名 (SPN) の宣言¶
サービスプリンシパル名 (SPN) は、サーバーで動作するサービスの一意の識別子です。Kerberos 認証では、SPN を使用して、サービスインスタンスとサービスログオンアカウントを関連付けます。
Denodo の SPN を定義するには、以下の手順に従います。
手順 #1
Denodo サーバーを実行するホストまたは「Windows ドメインコントローラー」から、コマンドプロンプトを管理者として開きます。
手順 #2
setspn
ユーティリティを使用して、SPN を宣言し、前の手順で作成したユーザーアカウント (「denodo_server_production」) に関連付けます。
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 は、以下のルールに準拠する必要があります。
ホスト名 (この例では「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 が上記のルールに準拠しない場合、Kerberos 認証を必要とするすべてのモジュール (Solution Manager、Design Studio、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 データソースを作成する
どちらも予定していない場合、 次のセクション に進んでください。ここで説明する変更は、後から実行できます。
setspn
と ktpass
を実行した後、Active Directory のユーザーアカウントの構成で、以下の 2 点が変更されています。
[アカウント] タブの [ユーザー ログオン名] が [サービス プリンシパル名] に変更されています (以前は単なるユーザーアカウント名)。
新しい [委任] タブが存在します。
以下の手順に従います。
新しいユーザーアカウントを開いて、[委任] タブに移動します。
以下のどちらかのオプションを選択します。
Trust this user for delegation to any service (「自由な委任」) : このオプションを選択した場合、ユーザーが Virtual DataPort に接続するために使用した Kerberos 資格情報 (TGT) を任意のサービス (データベースや Web サービスなど) に Virtual DataPort から委任することが Active Directory によって許可されます。また、Kerberos 認証の使用とユーザー資格情報の委任によって Virtual DataPort に接続することが、Data Catalog、Design Studio、および Scheduler に許可されます。
Trust this user for delegation to specified services only (「制約付き委任」) : このオプションを選択すると、Kerberos S4U の拡張機能が有効になります。これにより、ユーザー資格情報 (TGT) がなくても、接続されたユーザーに代わって Virtual DataPort から特定のサービスリストに委任できます。同様に、Denodo Web アプリケーションからそのユーザーに代わって VDP に接続できます。
[Use kerberos only] または [Use any authentication protocol*] のいずれかを選択します。
Use kerberos only: Kerberos の拡張機能 S4U2proxy が有効になります。この場合、VDP (または Web アプリケーション) へのユーザー認証には Kerberos を使用する必要があります。Denodo サーバーは、ユーザーが認証のために送信した Kerberos サービスチケット (TGS、ユーザー資格情報は含まれません) と、Active Directory への Denodo サーバー自己資格情報を使用して、委任する新しいサービスチケットを取得できます。このオプションを使用するには、VDP サーバーと Denodo Web アプリケーション上で、このオプションを明示的に有効にする必要があります。VDP サーバーでは、次のコマンドを実行できます。
SET 'com.denodo.util.kerberos.allowProxyCredential'='true';
Scheduler サーバーでは、アプリケーションの構成ファイル (<DENODO_HOME>/conf/scheduler/ConfigurationParameters.properties) に次のパラメータを追加する必要があります。
com.denodo.util.kerberos.allowProxyCredential=true
Data Catalog、Design Studio、Scheduler (webadmintool) などの Denodo Web アプリケーションでは、アプリケーションのバックエンド構成ファイル (Design Studio の場合は <DENODO_HOME>/conf/design-studio/DesignStudioBackend.properties) に次のパラメータを追加する必要があります。
kerberos.allowProxyCredential=true
Use any authentication protocol: このオプションを選択すると、Kerberos の拡張機能 S4U2Self (別名: プロトコル遷移) が有効になります。この拡張機能により、VDP はユーザーに代わって自身の Kerberos サービスチケットを要求できます。その結果、このサービスチケットと自身の資格情報を使用して、前のオプションと同様に委任のための新しいチケットを要求できます。このオプションを使用すると、Kerberos を使用していないエンドユーザーが Oauth などを使用して VDP に接続した場合でも、Kerberos データソースへのパススルーが可能になります。
[このアカウントが委任された資格情報を提示できるサービス] リストに、以下の情報を追加します。
このユーザーの 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 ソースへの接続 」を参照して、想定するシナリオでこのオプションを有効化できるかどうかを確認してください。
注釈
2 つのドメインの間の制約付き委任では、 リソースベースの制約付き委任 を構成する必要があります。それには、以下を実行する必要があります。
委任サービスに対して標準の制約付き委任を構成します。これは、従来のオプションである [Allow delegation to specific services] と [Use any authentication protocol] を選択し、ターゲットサービス (レルムを含む) を委任リストに追加することを意味します。
ターゲットドメインでは、ターゲットサービスに対してリソースベースの制約付き委任を構成する必要があります。これは、以下の PowerShell コマンドを使用して実行できます。
$delegatingAccount = Get-ADUser -Server "DOMAIN.LOCAL" -Identity "delegatingAccountName" $targetAccount = Get-ADUser -Identity "targetAccountName" Set-ADUser $targetAccount -PrincipalsAllowedToDelegateToAccount $delegatingAccount
キータブファイルの生成¶
SPN を定義した後、 キータブ ファイルを生成します。 キータブ ファイルには、Kerberos プリンシパルおよびユーザーアカウントのパスワードから派生された暗号化キーのペアが含まれています。Virtual DataPort や Scheduler などの Denodo コンポーネントは、このキータブを使用して Active Directory で自身を認証します。その認証に成功すると、他のユーザーを認証できるようになります。
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_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 認証を有効化します。参照先を以下に示します。
Virtual DataPort の場合、「 Kerberos 認証 」のページを参照してください。
Scheduler の場合、「 Kerberos 構成 」のページを参照してください。
Data Catalog の場合、「 Kerberos を使用したシングルサインオンの有効化 」のページを参照してください。
Diagnostic & Monitoring Tool の Kerberos 認証は、Virtual DataPort の Kerberos 認証を有効化すると自動で有効化されます。
キータブを扱う場合、パスワードを扱う場合と同様の注意を心がけてください。つまり、キータブをファイル共有に保存せず、Denodo インストールにコピーする際はファイル権限を変更して、Denodo コンポーネントなどを起動するユーザーアカウントのみがファイルにアクセスできるようにします。