keytab ファイルの作成
2024年7月3日
ID 206091
すべてのクラスタノードでの認証に同じアカウントを使用できます。各ノードの SPN(サービスプリンシパル名)を含む keytab ファイルを作成する必要があります。keytab ファイルを作成する時は、ハッシュ関数の入力を変更するソルトを生成するための属性を使用する必要があります。
後で keytab ファイルに新しい SPN を追加する時に使用できるように、任意の方法で、生成された「ソルト」を保存する必要があります。
Kerberos 認証の設定が必要なクラスタノードごとに個別の Active Directory ユーザーアカウントを作成することもできます。
keytab ファイルの作成前
keytab ファイルを作成する前に、各 SPN が Active Directory に登録されていないことを確認してください。これは次のコマンドを実行することで可能です: setspn -Q <SPN>
、この <SPN>
の構造は次の通りです:HTTP/<クラスタノードの完全修飾ドメイン名(FQDN)>@<Active Directoryドメインのレルム名(大文字)>
。
コマンドは「No such SPN found
」を返します。これは、コマンドに記載した SPN が登録されていないことを意味します。SPN が既に登録されている場合は、keytab ファイルの作成前にアカウントから SPN の割り当てを解除するか、この SPN が割り当てられている Active Directory 内のアカウント自体を削除する必要があります。
1 つのコントロールノードと 2 つのセカンダリノードの SPN をチェックする例: setspn -Q HTTP/control-01.test.local@TEST.LOCAL setspn -Q HTTP/secondary-01.test.local@TEST.LOCAL setspn -Q HTTP/secondary-02.test.local@TEST.LOCAL |
keytab ファイルの作成
ドメインコントローラーサーバーまたはドメインの一部である Windows Server コンピューターに、ドメイン管理者アカウントで keytab ファイルが作成されます。
1 つのユーザーアカウントを使用して keytab ファイルを作成するには:
- [Active Directory ユーザーとコンピューター]スナップインで、ユーザーアカウント(たとえば、
control-user
)を作成します。 - AES256-SHA1 暗号化アルゴリズムを使用する場合は、「Active Directory ユーザーとコンピューター」スナップインで次の操作を実行します:
- 作成したアカウントのプロパティを開きます。
- [アカウント]タブで、[このアカウントで Kerberos AES 256 ビット暗号化をサポートする]をオンにします。
- 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 が追加されます。画面には生成されたソルト:
salt "<ハッシュ値>" とハッシュパスワード
が表示されます。 - 各クラスタノードについて、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 がすべて作成されます。
例: たとえば、 フォルダー C:\keytabs\ にコントロールノードの SPN を含む「
ソルト SPN をもう 1 つ追加するには、次のコマンドを実行します:
3 番目の SPN を追加するには、次のコマンドを実行します:
これにより、「 |
ノードごとに個別のユーザーアカウントを使用して keytab ファイルを作成するには:
- ドメインコントローラーサーバーの[Active Directory ユーザーとコンピューター]スナップインで、クラスタノードごとに個別のユーザーアカウントを作成します(たとえば、
control-user
、secondary1-user
、secondary2-user
などの名前のユーザーアカウントを作成できます)。 - AES256-SHA1 暗号化アルゴリズムを使用する場合は、「Active Directory ユーザーとコンピューター」スナップインで次の操作を実行します:
- 作成したアカウントのプロパティを開きます。
- [アカウント]タブで、[このアカウントで Kerberos AES 256 ビット暗号化をサポートする]をオンにします。
- 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 が追加されます。
- 各クラスタノードについて、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 がすべて作成されます。
例: たとえば、 フォルダー C:\keytabs\ にコントロールノードの SPN を含む「
SPN をもう 1 つ追加するには、次のコマンドを実行します:
3 番目の SPN を追加するには、次のコマンドを実行します:
これにより、「 |
keytab ファイルの作成後
keytab ファイルを作成したら、各 SPN が登録され、関連するアカウントに割り当てられていることを確認します。これは次のコマンドを実行することで可能です: setspn -Q <SPN>
、この <SPN>
の構造は次の通りです:HTTP/<クラスタノードの完全修飾ドメイン名(FQDN)>@<Active Directoryドメインのレルム名(大文字)>
。
コマンドは、「Existing SPN found
」と、SPN が割り当てられているアカウントを返す必要があります。
また、keytab ファイルの作成後、関連するアカウントに割り当てられた SPN のリストをチェックできます。これを行うには、次のコマンドを実行します:setspn -L <アカウント>
、 この <アカウント>
の構造は次の通りです:<ユーザー名>@<Active Directory ドメインのレルム名(大文字)>
。
keytab ファイルが 1 つのアカウントで作成された場合、コマンドは keytab ファイルが作成されたすべての SPN のリストを返します。keytab ファイルが各ノードごとに個別のアカウントで作成されている場合、コマンドは特定のアカウントに割り当てられた 1 つの SPN を返す必要があります。
1 つのアカウント向けのコマンドの例: setspn -L control-user@TEST.LOCAL 各ノードに別々のアカウントを設定する場合のコマンド例: setspn -L control-user@TEST.LOCAL setspn -L secondary1-user@TEST.LOCAL setspn -L secondary2-user@TEST.LOCAL |