Ao contrário dos utilizadores normais, as contas de serviço não têm palavras-passe. Em alternativa, as contas de serviço usam pares de chaves ECDSA para autenticação. Uma vez que a chave privada do par de chaves RSA lhe permite autenticar-se como a conta de serviço, ter acesso à chave privada é semelhante a saber a palavra-passe de um utilizador. A chave privada é conhecida como uma chave de conta de serviço. As chaves das contas de serviço representam um risco de segurança se não forem geridas cuidadosamente.
As principais ameaças relacionadas com as chaves de contas de serviço são as seguintes:
Roubo de credenciais: as chaves de contas de serviço podem acabar inadvertidamente em locais onde não devem ser armazenadas. Um interveniente malicioso pode usar uma chave de conta de serviço roubada para se autenticar e obter acesso ao seu ambiente.
Aumento de privilégios: se um ator malicioso conseguir aceder a uma chave de conta de serviço mal protegida, pode usar a chave para aumentar os respetivos privilégios.
Divulgação de informações: as chaves de contas de serviço podem divulgar inadvertidamente dados confidenciais.
Não repúdio: ao autenticar-se através de uma chave de conta de serviço e permitir que a conta de serviço realize operações em seu nome, um autor malicioso pode ocultar a sua identidade e ações.
Esta página apresenta práticas recomendadas para gerir, usar e proteger as chaves de contas de serviço.
Proteja-se contra a divulgação de credenciais
Tal como um nome de utilizador e uma palavra-passe, as chaves de contas de serviço são uma forma de credencial. Se um utilizador conseguir aceder a uma chave de conta de serviço válida, pode usá-la para se autenticar e aceder aos recursos aos quais a respetiva conta de serviço tem acesso.
Os intervenientes maliciosos podem considerar as chaves de contas de serviço mais valiosas do que uma palavra-passe roubada. Por exemplo, é improvável que uma tentativa de início de sessão com uma palavra-passe roubada seja bem-sucedida se a conta de utilizador tiver sido configurada para usar a validação em dois passos e desafios de início de sessão. Por outro lado, a autenticação com uma chave de conta de serviço roubada tem probabilidade de ser bem-sucedida, uma vez que as contas de serviço não estão sujeitas a validações de início de sessão adicionais.
Os autores de ameaças podem procurar chaves de contas de serviço das seguintes formas:
- Repositórios de código-fonte de projetos de código aberto.
- Roubos de dados públicos de serviços com violações de segurança.
Além das localizações públicas, os autores de atos ilícitos podem procurar chaves de contas de serviço em localizações privadas que tenham sido comprometidas. Os exemplos incluem:
- Caixas de entrada de email
- Partilhas de ficheiros
- Armazenamento de cópias de segurança
- Diretórios do sistema de ficheiros temporários
Uma forma eficaz de reduzir o risco de divulgação de chaves de contas de serviço é reduzir o número de chaves em circulação e desincentivar a criação de novas chaves. As secções seguintes descrevem como pode limitar o número de chaves de contas de serviço em circulação e que outras medidas podem ajudar a limitar o risco de fugas de contas de serviço.
Evite deixar chaves de contas de serviço em localizações temporárias
Quando cria uma chave de conta de serviço, mova-a imediatamente para a localização onde a quer armazenar. Certifique-se de que não deixa acidentalmente uma cópia na pasta de transferências ou na reciclagem do computador.
Não transmita chaves de contas de serviço entre utilizadores
Quando implementa uma aplicação que requer uma chave de conta de serviço, pode não ter autorização para criar uma chave de conta de serviço. Em alternativa, pode ter de pedir a outra pessoa que crie uma chave de conta de serviço para si.
Não envie chaves de contas de serviço para repositórios de código-fonte
As chaves de contas de serviço são credenciais e têm de ser protegidas contra o acesso não autorizado. Se enviar uma chave de conta de serviço para um repositório de código fonte, existe um risco acrescido de que a chave se torne acessível a utilizadores não autorizados e autores de ataques maliciosos:
Os autores de ataques podem analisar o código fonte de repositórios de código aberto públicos para encontrar chaves roubadas.
No futuro, pode decidir transformar um repositório de origem privado num repositório público sem verificar primeiro se existem chaves.
Outros membros da equipa podem armazenar cópias do código fonte na respetiva estação de trabalho.
Quando trabalha em código que usa uma chave de conta de serviço, armazene sempre a chave de conta de serviço separadamente do código fonte para reduzir o risco de enviar acidentalmente a chave para o repositório de origem. Em muitos casos, pode reduzir ainda mais este risco não usando chaves de contas de serviço durante o desenvolvimento e usando as suas credenciais pessoais em vez das chaves de contas de serviço.
Não incorpore chaves de contas de serviço em binários de programas
As chaves de contas de serviço são strings que correspondem a um determinado padrão e podem ser identificadas mesmo que estejam incorporadas noutros ficheiros ou binários. Se um autor malicioso tiver acesso ao ficheiro binário, pode extrair todas as chaves de contas de serviço incorporadas no ficheiro binário.
Os ficheiros binários do programa para aplicações do lado do servidor podem ser alojados em repositórios de artefactos ou podem ser copiados para estações de trabalho de programadores para fins de depuração. Manter as chaves da conta de serviço separadas dos ficheiros binários do programa ajuda a garantir que um utilizador que pode aceder ao ficheiro binário não tem acesso implícito às credenciais da conta de serviço.
- Para aplicações do lado do cliente, como ferramentas, programas de computador ou apps para dispositivos móveis, não use contas de serviço.
- Para aplicações do lado do servidor, não incorpore chaves de contas de serviço no ficheiro binário. Em vez disso, mantenha as chaves separadas do ficheiro binário da aplicação.
Alterne as chaves das contas de serviço para reduzir o risco de segurança causado por chaves roubadas
Embora possa reduzir a probabilidade de divulgar acidentalmente uma chave da conta de serviço, pode ser difícil eliminar completamente o risco.
A rotação de chaves é o processo de substituição das chaves existentes por novas chaves e, em seguida, de invalidação das chaves substituídas. Recomendamos que altere rotineiramente todas as chaves que gere, incluindo as chaves da conta de serviço.
A rotação das chaves de contas de serviço pode ajudar a reduzir o risco representado por chaves roubadas ou com fugas de informação. Se uma chave for divulgada, os intervenientes mal-intencionados podem demorar dias ou semanas a descobri-la. Se rodar regularmente as chaves da conta de serviço, existe uma maior probabilidade de as chaves roubadas serem inválidas quando um ator malicioso as obtiver.
Use prazos de validade para permitir que as chaves expirem automaticamente
Por predefinição, as chaves de contas de serviço que criar têm um prazo de validade de um ano e permanecem válidas até as eliminar. Também pode definir o seu próprio tempo de expiração. A definição de um prazo de validade para as chaves de contas de serviço pode limitar o risco de segurança, reduzindo o tempo de vida da credencial persistente. No entanto, existem outros riscos associados à definição de horas de validade. Por exemplo, a definição de uma hora de validade pode fazer com que as cargas de trabalho falhem quando as respetivas chaves expiram.
Use prazos de validade quando precisar de acesso temporário a um sistema que requer uma chave de conta de serviço. Por exemplo, use prazos de validade quando estiver a fazer o seguinte:
- Desenvolver código num ambiente de não produção para uma aplicação que só pode autenticar com chaves de contas de serviço.
- Usar uma ferramenta de terceiros que só pode autenticar com chaves de contas de serviço.
Evite usar horas de validade para estes cenários:
- Cargas de trabalho de produção. Na produção, uma chave de conta de serviço expirada pode causar uma interrupção acidental. Em alternativa, use chaves que não expirem e faça a gestão do respetivo ciclo de vida com a rotação de chaves.
- Cargas de trabalho de não produção que precisam de acesso permanente, como um pipeline de integração contínua (IC).
- Sistemas de rotação de chaves que impedem a utilização de uma chave após um período especificado.
Para limitar a validade das chaves de contas de serviço, pode configurar um prazo de validade para as chaves criadas recentemente no seu projeto, pasta ou organização. A hora de expiração não se aplica às chaves existentes.
Ter um processo estabelecido para a rotação das chaves de contas de serviço também ajuda a agir rapidamente se suspeitar que uma chave de conta de serviço foi comprometida.
Use uma chave dedicada para cada máquina que execute uma aplicação
Para ajudar a restringir as potenciais origens de atividade suspeita, crie chaves individuais para cada cópia da aplicação. Desta forma, pode usar o campo serviceAccountKeyName
que muitos serviços adicionam aos registos do registo de auditoria para distinguir a máquina de origem de uma atividade.