🔐 Segurança
Introdução
A segurança é uma prioridade máxima no Semaphore UI. Seja automatizando tarefas críticas de infraestrutura ou gerenciando o acesso da equipe a sistemas sensíveis, o Semaphore UI foi projetado para oferecer operações robustas e seguras desde a instalação. Esta seção descreve como o Semaphore lida com a segurança e o que você deve considerar ao implantá-lo em produção.
Autenticação e autorização
O Semaphore oferece suporte a autenticação segura e a mecanismos flexíveis de autorização:
-
Métodos de login:
-
Usuário/senha
Método padrão que usa credenciais armazenadas no banco de dados do Semaphore. As senhas são armazenadas com hash usando um algoritmo forte (bcrypt). -
LDAP
Permite a integração com serviços de diretório corporativos. Oferece suporte a filtragem de usuários/grupos e a conexões seguras via LDAPS. -
OpenID Connect (OIDC)
Permite o login único (SSO) com provedores de identidade como Google, Azure AD ou Keycloak. Oferece suporte a claims personalizadas e mapeamento de grupos.
-
-
Autenticação de dois fatores (2FA)
A 2FA baseada em TOTP está disponível e é recomendada para todos os usuários. Ela pode ser habilitada por usuário e oferece suporte a códigos de recuperação opcionais. Consulte as opções de configuraçãoauth.totp.enabledeauth.totp.allow_recovery. -
Controle de acesso baseado em funções
Você pode atribuir diferentes funções aos usuários, como Admin, Maintainer ou Viewer, limitando o acesso conforme a responsabilidade. -
Gerenciamento de sessões
As sessões são protegidas com cookies HTTP seguros. Os mecanismos de expiração de sessão e de logout garantem uma exposição mínima.
Segredos e credenciais
Gerenciar segredos com segurança é um recurso central:
-
Key Store criptografado
Credenciais e variáveis secretas são criptografadas em repouso usando criptografia AES. -
Isolamento de ambiente
Os segredos são passados aos jobs apenas em tempo de execução e não são expostos diretamente ao ambiente do contêiner. -
Chaves SSH e tokens
Os usuários são responsáveis por enviar chaves SSH e tokens válidos. Eles são criptografados e usados apenas durante a execução das tarefas. -
Integração com HashiCorp Vault (Pro)
Os segredos podem ser armazenados em uma instância externa do Vault. Escolha o armazenamento por segredo ao criar ou editar um segredo.
Criptografia de dados
Os dados sensíveis são armazenados no banco de dados de forma criptografada. Você deve definir a opção de configuração access_key_encryption no arquivo de configuração para habilitar a criptografia das Access Keys. Ela deve ser gerada pelo comando:
head -c32 /dev/urandom | base64
Execução de código / playbooks não confiáveis
O Semaphore executa playbooks e comandos definidos pelo usuário, o que pode ser arriscado:
-
Isolamento em contêineres
As tarefas são executadas em contêineres Docker isolados. Esses contêineres não têm acesso ao sistema host. -
Privilégio mínimo
Os contêineres são executados com permissões mínimas e podem ser restringidos ainda mais usando flags do Docker. -
Execução em chroot
O Semaphore pode executar tarefas dentro de um chroot jail para isolar ainda mais o ambiente de execução do sistema host. -
Usuário do processo da tarefa
As tarefas podem ser executadas sob um usuário de sistema dedicado e não root (por exemplo,semaphore) para reduzir o impacto de possíveis exploits. Isso é opcional e pode ser configurado conforme as políticas do sistema.
Implantação segura
Para garantir que o Semaphore seja implantado com segurança:
-
Use HTTPS
O Semaphore oferece suporte a HTTPS tanto por meio do seu suporte TLS integrado quanto por meio de um proxy reverso como o Nginx. É altamente recomendável habilitar o HTTPS em produção.Para habilitar o suporte HTTPS integrado, adicione o seguinte bloco ao config.json:
{
...
"tls": {
"enabled": true,
"cert_file": "/path/to/cert/example.com.cert",
"key_file": "/path/to/key/example.com.key"
}
...
} -
Execute atrás de um firewall
Limite o acesso ao Semaphore UI e ao banco de dados apenas a IPs confiáveis. -
Segurança do banco de dados
Use senhas fortes e restrinja o acesso ao banco de dados apenas ao Semaphore.
Atualizações e gerenciamento de patches
Atualizações de segurança são publicadas regularmente:
-
Mantenha-se atualizado
Use sempre a versão estável mais recente. -
Changelog
Revise as alterações no GitHub antes de atualizar. -
Atualizações automáticas
Se estiver usando Docker, considere pipelines de automação para atualizações regulares.
Relato de vulnerabilidades
Encontrou uma vulnerabilidade? Ajude-nos a manter o Semaphore seguro:
- Divulgação responsável
Envie um e-mail para[email protected].
Prazos-alvo para correção de vulnerabilidades
Nosso objetivo é corrigir as vulnerabilidades relatadas dentro dos seguintes prazos-alvo:
- Crítica: em até 30 dias
- Alta: em até 60 dias
- Média: em até 90 dias
- Baixa: melhor esforço, normalmente em até 180 dias
Patches fora do ciclo podem ser lançados para problemas ativamente explorados que afetem as versões estáveis mais recentes.
Ferramentas de segurança de código
Usamos CodeQL, Codacy, Snyk e Renovate para analisar a base de código e as dependências, e para automatizar as atualizações de dependências.
-
Sem exploits públicos
Não divulgue vulnerabilidades publicamente até que sejam corrigidas. -
Agradecimentos
Pesquisadores de segurança podem ser mencionados nas notas de versão, se desejarem.