keytab ファイルの作成

すべてのノードの認証に同じユーザーアカウントを使用できます。各ノードの SPN(サービスプリンシパル名)を含む keytab ファイルを作成する必要があります。keytab ファイルを作成する際は、 属性を使用してソルト(ハッシュ関数修飾子)を生成する必要があります。

生成されたソルトは任意の方法で保存し、後で新しい SPN を keytab ファイルに追加する必要があります。

Kerberos 認証を設定するクラスタノードごとに、個別の Active Directory ユーザーアカウントを作成することも可能です。

keytab ファイルの作成前

keytab ファイルを作成する前に、各 SPN が Active Directory に登録されていないことを確認してください。次のコマンドを実行することで、この操作を行えます:setspn -Q <SPN>。ここで、<SPN> の構造は次の通りです:HTTP/<クラスタノードの完全修飾ドメイン名 (FQDN)>

コマンドは「No such SPN found」を返します。これは、コマンドに記載した SPN が登録されていないことを意味します。SPN が既に登録されている場合は、keytab ファイルの作成前にアカウントから SPN の割り当てを解除するか、この SPN が割り当てられている Active Directory 内のアカウント自体を削除する必要があります。

1 つのコントロールノードと 2 つのセカンダリノードの SPN をチェックする例:

setspn -Q HTTP/control-01.test.local

setspn -Q HTTP/secondary-01.test.local

setspn -Q HTTP/secondary-02.test.local

keytab ファイルの作成

keytab ファイルは、ドメインコントローラーサーバーまたはドメインに属する Windows Server コンピューター上で、ドメイン管理者アカウントにより作成されます。

単一のユーザーアカウントを使用して keytab ファイルを作成するには:

  1. Active Directory ユーザーとコンピューター]スナップインで、たとえば control-user という名前のユーザーアカウントを作成します。
  2. AES256-SHA1 暗号化アルゴリズムを使用するには、[Active Directory ユーザーとコンピューター]スナップインで次の操作を行います:
    1. 作成したアカウントのプロパティを開きます。
    2. アカウント]タブで、[このアカウントで Kerberos AES 256 ビット暗号化をサポートする]をオンにします。
  3. ktpass ユーティリティを使用して、 control-user の keytab ファイルを作成します。この操作には、コマンドラインで以下のコマンドを実行します:

    C:\Windows\system32\ktpass.exe -princ HTTP/<コントロールノードの完全修飾ドメイン名(FQDN)>@<大文字の Active Directory レルムのドメイン名> -mapuser control-user@<大文字の Active Directory レルムのドメイン名> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * +dumpsalt -out <ファイルのパス>\<ファイル名>.keytab

    コマンド実行時に、ユーティリティは control-user のパスワードを要求します。

    作成された keytab ファイルにコントロールロールのノードの SPN が追加されます。生成したソルトが表示されます:ソルト「<ハッシュ値>」付きのハッシュパスワード

  4. クラスタのすべてのノードそれぞれについて、keytab ファイルに SPN エントリを追加します。この操作には、次のコマンドを実行します:

    C:\Windows\system32\ktpass.exe -princ HTTP/<ノードの完全修飾ドメイン名((FQDN)>@<大文字の Active Directory レルムのドメイン名> -mapuser control-user@<大文字の Active Directory レルムのドメイン名> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in <事前に作成したファイルのパスと名前>.keytab -out <出力先パスと新規ファイル名>.keytab -setupn -setpass -rawsalt 「<ステップ 3で keytabファイル作成時に取得したソルト付きハッシュ>」

    コマンド実行時に、ユーティリティは control-user のパスワードを要求します。

keytab ファイルが作成されます。このファイルには、クラスタノードの SPN として追加した SPN がすべて含まれています。

例:

たとえば、 control-01.test.localsecondary-01.test.localsecondary-02.test.local の 3 つのノードの SPN を含む keytab ファイルを作成する必要があります。

フォルダー C:\keytabs\ 内にコントロールノードの SPN を含む filename1.keytab という名前のファイルを作成するには、次のコマンドを実行する必要があります:

C:\Windows\system32\ktpass.exe -princ HTTP/control-01.test.local@TEST.LOCAL -mapuser control-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * +dumpsalt -out C:\keytabs\filename1.keytab

たとえば、ソルト「TEST.LOCALHTTPcontrol-01.test.local」 を取得したとします。

SPN をもう 1 つ追加するには、次のコマンドを実行する必要があります:

C:\Windows\system32\ktpass.exe -princ HTTP/secondary-01.test.local@TEST.LOCAL -mapuser control-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in C:\keytabs\filename1.keytab -out C:\keytabs\filename2.keytab -setupn -setpass -rawsalt "TEST.LOCALHTTPcontrol-01.test.local"

3 番目の SPN を追加するには、次のコマンドを実行します:

C:\Windows\system32\ktpass.exe -princ HTTP/secondary-02.test.local@TEST.LOCAL -mapuser control-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in C:\keytabs\filename2.keytab -out C:\keytabs\filename3.keytab -setupn -setpass -rawsalt "TEST.LOCALHTTPcontrol-01.test.local"

これにより、「filename3.keytab」という名前のファイルが作成され、このファイルには追加した 3 つの SPN がすべて含まれています。

ノードごとに個別のユーザーアカウントを使用して keytab ファイルを作成するには:

  1. Active Directory ユーザーとコンピューター]スナップインで、クラスタノードごとに個別のユーザーアカウントを作成します(例:control-usersecondary1-usersecondary2-user などのユーザーアカウント)。
  2. AES256-SHA1 暗号化アルゴリズムを使用するには、[Active Directory ユーザーとコンピューター]スナップインで次の操作を行います:
    1. 作成したアカウントのプロパティを開きます。
    2. アカウント]タブで、[このアカウントで Kerberos AES 256 ビット暗号化をサポートする]をオンにします。
  3. ktpass ユーティリティを使用して、 control-user の keytab ファイルを作成します。この操作には、コマンドラインで以下のコマンドを実行します:

    C:\Windows\system32\ktpass.exe -princ HTTP/< コントロールノードの完全修飾ドメイン名(FQDN)>@<大文字の Active Directory レルムのドメイン名> -mapuser control-user@<大文字の Active Directory レルムのドメイン名> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -out <ファイルのパス>\<ファイル名>.keytab

    コマンド実行時に、ユーティリティは control-user のパスワードを要求します。

    作成された keytab ファイルにコントロールノードの SPN が追加されます。

  4. 各クラスタノードについて、keytab ファイルに SPN エントリを追加します。この操作には、次のコマンドを実行します:

    C:\Windows\system32\ktpass.exe -princ HTTP/<ノードの完全修飾ドメイン名(FQDN)>@<大文字の Active Directory レルムのドメイン名> -mapuser secondary1-user@<大文字の Active Directory レルムのドメイン名> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in <事前に作成したファイルのパスと名前>.keytab -out <出力先のパスと新しい名前>.keytab

    コマンド実行時に、ユーティリティは secondary1-user のパスワードを要求します。

keytab ファイルが作成されます。このファイルには、クラスタノードの SPN として追加した SPN がすべて含まれています。

例:

たとえば、 control-01.test.localsecondary-01.test.localsecondary-02.test.local の 3 つのノードの SPN を含む keytab ファイルを作成する必要があります。

フォルダー C:\keytabs\ 内にコントロールノードの SPN を含む filename1.keytab という名前のファイルを作成するには、次のコマンドを実行する必要があります:

C:\Windows\system32\ktpass.exe -princ HTTP/control-01.test.local@TEST.LOCAL -mapuser control-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -out C:\keytabs\filename1.keytab

SPN をもう 1 つ追加するには、次のコマンドを実行します:

C:\Windows\system32\ktpass.exe -princ HTTP/secondary-01.test.local@TEST.LOCAL -mapuser secondary1-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in C:\keytabs\filename1.keytab -out C:\keytabs\filename2.keytab

3 番目の SPN を追加するには、次のコマンドを実行します:

C:\Windows\system32\ktpass.exe -princ HTTP/secondary-02.test.local@TEST.LOCAL -mapuser secondary2-user@TEST.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in C:\keytabs\filename2.keytab -out C:\keytabs\filename3.keytab

これにより、「filename3.keytab」という名前のファイルが作成され、このファイルには追加した 3 つの SPN がすべて含まれています。

keytab ファイルの作成後

keytab ファイルを作成したら、各 SPN が登録され、関連するアカウントに割り当てられていることを確認します。次のコマンドを実行することで、この操作を行えます:setspn -Q <SPN>。ここで、<SPN> の構造は次の通りです:HTTP/<クラスタノードの完全修飾ドメイン名 (FQDN)>

コマンドは、「Existing SPN found」と、SPN が割り当てられているアカウントを返す必要があります。

また、keytab ファイルの作成後、関連するアカウントに割り当てられた SPN のリストをチェックできます。次のコマンドでこれを実行できます:setspn -L <ユーザー名>

keytab ファイルが 1 つのアカウントで作成された場合、コマンドは keytab ファイルが作成されたすべての SPN のリストを返します。keytab ファイルが各ノードごとに個別のアカウントで作成されている場合、コマンドは特定のアカウントに割り当てられた 1 つの SPN を返す必要があります。

1 つのアカウント向けのコマンドの例:

setspn -L control-user

各ノードに別々のアカウントを設定する場合のコマンド例:

setspn -L control-user

setspn -L secondary1-user

setspn -L secondary2-user

ページのトップに戻る