watchdog para iniciar meu processo com credenciais

0

Eu tenho um servidor que requer certas credenciais para inicializar. Atualmente, o servidor lê um key-value pair file para essas credenciais. Estou procurando por algum componente que possa realmente evitar o uso de key-value pair file .

O componente deve:

  • Cache a senha no chaveiro
  • Iniciar meu servidor com as credenciais apropriadas do keyring
  • Reinicie meu servidor se ele parar / matar

Ao iniciar ou reiniciar inicialmente este componente, não há problema em solicitar ao usuário as senhas diferentes. Mas, ele não deve avisar se o processo do servidor for reiniciado.

Eu estava lendo sobre watchdogs e systemd. Systemd unit files se ajusta à minha necessidade, mas não consegui encontrar uma maneira de armazenar e recuperar as credenciais no chaveiro.

Atualização: Eu também estava lendo sobre systemd-ask-password para armazenar em cache minha senha. Mas, parece que ele armazenará em cache a senha apenas por 2,5 minutos. Quero armazená-lo em cache até que a unidade seja interrompida / reiniciada.

Atualização 2: Por servidor, quero dizer, meu processo de servidor. Não há problema em solicitar senhas na reinicialização da máquina.

    
por SilleBille 13.11.2018 / 19:37

1 resposta

0

Parece que systemd-ask-password faz a maior parte do que você deseja, exceto pela expiração da chave, que é codificado em 2,5 minutos como você descobriu:

#define KEYRING_TIMEOUT_USEC ((5 * USEC_PER_MINUTE) / 2)

Uma opção é criar seu próprio programa ask-password, que o armazena no chaveiro do kernel por um período de tempo maior (ou talvez indefinidamente). Você pode até mesmo usar systemd-ask-password como ponto de partida para ele. Você poderia chamar tal agente do ExecStartPre= em sua unidade. (Claro que, uma opção possível é até mesmo apenas construí-lo em seu próprio programa principal, já que ele vai acessar o chaveiro para buscar a senha, ele poderia perguntar naquele ponto se não for encontrado.)

Outra opção seria propor uma modificação para systemd-ask-password no próprio sistema upstream, mantendo a expiração de 2.5 minutos por padrão, mas introduzindo um argumento de linha de comando adicional para permitir ajustes no tempo de expiração, o que o tornaria utilizável para o seu caso de uso específico.

    
por 13.11.2018 / 21:25