Você pode usar a mesma conta de usuário para a autenticação em todos os nodes de um cluster. Para isso, deve-se criar um arquivo keytab contendo o nome do diretor de serviço (SPN) para cada um destes nodes. Ao criar um arquivo keytab, você deve usar o atributo para gerar um salt (modificador de função hash).
O salt gerado deve ser salvo usando um método de sua escolha para adicionar posteriormente novos SPNs ao arquivo de keytab.
Também é possível criar uma conta de usuário do Active Directory separada para cada node do cluster para o qual deseja configurar a autenticação Kerberos.
Antes de criar um arquivo keytab
Antes de criar um arquivo keytab, para cada SPN, certifique-se de que esse não esteja registrado no Active Directory. Você pode fazer isso executando o seguinte comando: setspn -Q <SPN>
, onde <SPN>
tem a seguinte estrutura: HTTP/<nome completo qualificado do domínio (FQDN) do node do cluster>@<nome de instância de domínio do Active Directory em maiúsculas>
.
O comando deve retornar "Nenhum SPN encontrado"
, o que significa que o SPN em questão não está registrado. Se o SPN já tiver sido registrado, antes de criar o arquivo keytab, você precisa cancelar a atribuição do SPN da conta ou excluir a própria conta no Active Directory ao qual esse SPN foi atribuído.
Exemplo de verificação de um SPN para um node de Controle e nós secundários: 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 |
Criação de um arquivo keytab
O arquivo keytab é criado no servidor do controlador de domínio ou em um computador com Windows Server que faça parte do domínio, em uma conta de administrador de domínio.
Para criar um arquivo keytab usando uma conta de usuário única:
control-user
.control-user
, usando o utilitário ktpass. Para fazer isso, execute o seguinte comando na linha de comando:C:\Windows\system32\ktpass.exe -princ HTTP/<nome completo do domínio qualificado (FQDN) do node de controle>@<nome do domínio do Active Directory do realm em letras maiúsculas> -mapuser control-user@<nome do domínio do Active Directory do realm em letras maiúsculas> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * + dumpsalt -out <caminho para arquivo>\<nome do arquivo>.keytab
O utilitário solicitará a senha do control-user
ao executar o comando.
O SPN do node com função Controle será adicionado ao arquivo keytab criado. O salt gerado será mostrado: Hash da senha com salt “<valor do hash>”.
C:\Windows\system32\ktpass.exe -princ HTTP/<nome do domínio totalmente qualificado (FQDN) do node>@<nome do domínio do Active Directory em maiúsculas do realm> -mapuser control-user@<nome do domínio do Active Directory em maiúsculas do realm> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in <caminho e nome do arquivo criado anteriormente>.keytab -out <caminho e novo nome>.keytab -setupn -setpass -rawsalt “<valor do hash do salt obtido ao criar o arquivo keytab na etapa 3>”
O utilitário solicitará a senha do control-user
ao executar o comando.
O arquivo keytab será criado. Esse arquivo conterá todos os SPNs adicionados dos nodes do cluster.
Exemplo: Por exemplo, você precisa criar um arquivo keytab que contém SPNs de 3 nodes: Para criar um arquivo denominado
Suponha que você tenha o salt Para adicionar outro SPN, você deve executar o seguinte comando:
Para adicionar um terceiro SPN, você deve executar o seguinte comando:
Isso resultará na criação de um arquivo denominado |
Para criar um arquivo keytab usando uma conta de usuário separada para cada node:
control-user
, secondary1-user
, secondary2-user
e assim por diante).control-user
, usando o utilitário ktpass. Para fazer isso, execute o seguinte comando na linha de comando:C:\Windows\system32\ktpass.exe -princ HTTP/<nome completo do domínio qualificado (FQDN) do node de controle>@<nome do domínio do Active Directory do realm em letras maiúsculas> -mapuser control-user@<nome do domínio do Active Directory do realm em letras maiúsculas> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -out <caminho para arquivo>\<nome do arquivo>.keytab
O utilitário solicitará a senha do control-user
ao executar o comando.
O SPN do node com função Controle será adicionado ao arquivo keytab criado.
C:\Windows\system32\ktpass.exe -princ HTTP/<nome do domínio totalmente qualificado (FQDN) do node>@<nome do domínio do Active Directory em maiúsculas do realm> -mapuser secondary1-user@<nome do domínio do Active Directory em maiúsculas do realm> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in <caminho e nome do arquivo criado anteriormente>.keytab -out <caminho e novo nome>.keytab
O utilitário solicitará a senha do secondary1-user
ao executar o comando.
O arquivo keytab será criado. Esse arquivo conterá todos os SPNs adicionados dos nodes do cluster.
Exemplo: Por exemplo, você precisa criar um arquivo keytab que contém SPNs de 3 nodes: Para criar um arquivo denominado
Para adicionar outro SPN, você deve executar o seguinte comando:
Para adicionar um terceiro SPN, você deve executar o seguinte comando:
Isso resultará na criação de um arquivo denominado |
Após criar um arquivo keytab:
Depois de criar um arquivo keytab, para cada SPN, certifique-se de que esteja registrado e atribuído à conta relevante. Você pode fazer isso executando o seguinte comando: setspn -Q <SPN>
, onde <SPN>
tem a seguinte estrutura: HTTP/<nome completo qualificado do domínio (FQDN) do node do cluster>@<nome de instância de domínio do Active Directory em maiúsculas>
.
O comando deve retornar "SPN existente encontrado"
e a conta à qual o SPN está atribuído.
Além disso, depois de criar um arquivo keytab, você pode verificar a lista de SPNs atribuídos à conta relevante. Para isso, execute o seguinte comado: setspn -L <account>
, onde <account>
tem a seguinte estrutura: <user name>@<dome de instância do domínio Active Directory em maiúsculas>
.
Se o arquivo keytab foi criado com uma conta, o comando deve retornar uma lista de todos os SPNs para os quais o arquivo keytab foi criado. Se o arquivo keytab foi criado com contas separadas para cada nó, o comando deve retornar um SPN atribuído à conta específica.
Comando de exemplo para uma conta: setspn -L control-user@TEST.LOCAL Comando de exemplo para contas separadas para cada node: setspn -L control-user@TEST.LOCAL setspn -L secondary1-user@TEST.LOCAL setspn -L secondary2-user@TEST.LOCAL |