AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1170272
Accepted
Jim
Jim
Asked: 2025-01-18 08:28:06 +0800 CST2025-01-18 08:28:06 +0800 CST 2025-01-18 08:28:06 +0800 CST

Como um serviço se autentica em outro usando Kerberos?

  • 772

Como um serviço pode autenticar outro que está registrado no Kerberos? No meu caso, ambos são de propriedade de contas de serviço diferentes, então eles não podem executar o kinit como um usuário comum pode, por exemplo, atualizando-o quando ele expira a cada 10 horas. Então, quando um serviço quer algo do outro, como ele obtém um tíquete Kerberos sem um TGT (tíquete de concessão de tíquete)?

Para ser mais específico, eu executo um servidor web Apache para fornecer acesso aos repositórios do Subversion. Sua conta de serviço e SPN (Service Principal Name) são registrados no Kerberos. Eu também executo um servidor Jenkins que às vezes precisa fazer checkout desses repositórios. Usuários comuns podem autenticar em ambos os servidores: no Apache somente após executar kinit e no Jenkins via LDAP. Como a conta de serviço Jenkins autentica no Apache para acessar um repositório do Subversion, já que ele não pode executar kinit a cada 10 horas, 24/7?

Isso parece similar, mas sem uma boa resposta. E o plugin Jenkins para Kerberos é para autenticar o usuário para Jenkins, não Jenkins para Apache. Há também essa solução obscura e obsoleta, mas não sei se ela se aplica mais. E a questão parece que deveria ser independente de qualquer servidor específico, apenas um servidor tentando autenticar para outro que está em Kerberos.

linux
  • 1 1 respostas
  • 63 Views

1 respostas

  • Voted
  1. Best Answer
    grawity
    2025-01-18T18:31:17+08:002025-01-18T18:31:17+08:00

    Como um serviço pode autenticar outro que está registrado no Kerberos? No meu caso, ambos são de propriedade de contas de serviço diferentes, então eles não podem executar o kinit como um usuário comum pode.

    Elas podem – contas de serviço sempre podem atuar como contas de usuário (o que de fato são em primeiro lugar: o MIT Kerberos nem mesmo tem essa distinção, enquanto contas de serviço do Active Directory são apenas contas de usuário com um nome principal de serviço adicional atribuído a elas).

    As credenciais padrão do Kerberos são simétricas, tanto no sentido de criptografia (elas agem como chaves de "criptografia simétrica" ​​para AES/DES/RC4) quanto no sentido prático (um principal usa a mesma chave para adquirir e validar tickets).

    (Na verdade, até o oposto é possível – tecnicamente, é possível obter tickets para uma conta de usuário mesmo sem que essa conta tenha um SPN – embora a implementação do Active Directory não permita isso, pois há certos riscos de segurança em permitir isso.)

    Então, se você tem um principal de serviço com uma senha (em um servidor Windows) ou com um keytab (em um servidor Linux ou Java), essa senha/keytab pode ser usada para ambos os propósitos. Acredito que o Windows obterá automaticamente um TGT em nome do seu primeiro serviço assim que o Jenkins chamar o SSPI, e para servidores Linux você pode dar o keytab de serviço para kinit(ou k5startou KRB5_CLIENT_KTNAMEou mesmo gss-proxy).

    $ sudo -u http ldapwhoami
    SASL/GSSAPI authentication started
    SASL username: HTTP/[email protected]
    SASL SSF: 256
    SASL data security layer installed.
    dn:uid=http/ember.example.net,cn=gssapi,cn=auth
    
    $ sudo -u http klist
    Ticket cache: FILE:/tmp/krb5cc_33
    Default principal: HTTP/[email protected]
    
    Valid starting       Expires              Service principal
    11/24/2024 15:34:17  11/25/2024 15:34:17  krbtgt/[email protected]
            renew until 11/24/2024 15:34:17
    01/18/2025 12:38:33  01/19/2025 12:38:32  ldap/[email protected]
            renew until 01/18/2025 12:38:33
    

    Como a conta de serviço do Jenkins se autentica no Apache para acessar um repositório Subversion, já que ele não pode executar o kinit a cada 10 horas, 24 horas por dia, 7 dias por semana?

    A questão é baseada em suposições incorretas. Ele pode executar o kinit a cada 10 horas, 24/7.

    Como já mencionado, no Linux você normalmente usaria um keytab para armazenar as credenciais no disco kinit -k -t(ou os outros 3 métodos) – embora se você preferir fornecer uma senha, isso também não o impedirá de fazê-lo – enquanto no Windows você faria o LSASS fazer isso automaticamente usando a "senha da conta de serviço" armazenada.

    • 1

relate perguntas

  • Como descobrir detalhes sobre hardware na máquina Linux?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve