As chaves de contas de serviço são usadas frequentemente para fazer a autenticação em Google Cloud serviços. No entanto, também podem tornar-se um risco de segurança se não forem geridas corretamente, o que aumenta a sua vulnerabilidade a ameaças como roubo de credenciais, escalamento de privilégios, divulgação de informações e não repúdio.
Em muitos casos, pode autenticar com alternativas mais seguras às chaves de contas de serviço. Este guia ajuda a migrar da utilização de chaves de contas de serviço como mecanismo de autenticação principal para a utilização de alternativas mais seguras, com exceções ocasionais em que as chaves de contas de serviço são realmente necessárias.
Este documento destina-se a administradores de segurança que querem melhorar a respetiva postura de segurança reduzindo a utilização de chaves de contas de serviço em favor de mecanismos de autenticação mais seguros. Estes administradores de segurança podem ser responsáveis pela segurança das cargas de trabalho de produção existentes, dos fluxos de trabalho dos programadores e dos processos internos que usam chaves de contas de serviço.
Vista geral
A remoção das chaves de contas de serviço de cargas de trabalho existentes requer um planeamento cuidadoso para evitar interrupções acidentais. O seguinte plano de migração foi concebido para lhe permitir aplicar controlos centralizados e minimizar a interrupção para os programadores.
Este plano de migração inclui três fases:
- Avalie: nesta fase, avalie o seu ambiente existente para compreender onde existem chaves de contas de serviço e se as chaves estão em utilização.
- Planeamento: nesta fase, decide que controlos vai implementar e comunica o plano de migração às partes interessadas.
- Implementação: nesta fase, começa a refatorar as cargas de trabalho para autenticar com alternativas mais seguras às chaves de contas de serviço. Também cria capacidades adicionais para monitorizar continuamente o seu ambiente e mitigar riscos futuros.
Avalie a utilização da chave da conta de serviço
Nesta fase, avalia o seu ambiente existente para compreender onde existem chaves de contas de serviço e se as chaves estão em utilização.
As secções seguintes descrevem os dados que pode recolher para compreender melhor como as chaves de contas de serviço são usadas na sua organização.
Recolha dados sobre a utilização principal
Primeiro, identifique onde existem chaves de contas de serviço e como são usadas.
Google Cloud oferece ferramentas para compreender a utilização da conta de serviço. Estas ferramentas ajudam a determinar que contas de serviço e chaves foram usadas recentemente para autenticação, que contas de serviço não foram usadas nos últimos 90 dias e que contas de serviço têm funções com privilégios excessivos.
Pode combinar informações de todas estas ferramentas para ter uma melhor ideia de como as contas de serviço e as chaves são usadas na sua organização. Para ver um exemplo de como combinar informações destas várias origens em toda a sua organização, consulte a arquitetura de referência implementável no GitHub. Esta arquitetura de referência agrega dados de várias ferramentas e exporta-os regularmente para uma tabela do BigQuery para análise.
A arquitetura de referência implementa um pipeline de dados que consulta o Cloud Asset Inventory para identificar chaves de contas de serviço na sua organização. Em seguida, o pipeline de dados combina esses dados com dados sobre a utilização de chaves e a utilização de autorizações para a conta associada. A tabela resultante, sa_key_usage
, ajuda a
responder a perguntas como as seguintes:
- Quantas chaves persistentes foram criadas? Este número pode ser útil como uma métrica de alto nível para acompanhar o progresso à medida que migra das chaves.
- Que projetos e contas de serviço usam chaves? Estas informações ajudam a identificar os proprietários de cargas de trabalho que usam chaves de contas de serviço.
- Que chaves estão inativas? É provável que possa eliminar estas chaves sem uma avaliação adicional dos proprietários das cargas de trabalho.
- Que chaves estão associadas a contas de serviço que têm recomendações sobre autorizações excessivas? Se uma chave de conta de serviço estiver associada a uma conta de serviço com privilégios excessivos, especialmente uma com a função Proprietário, Editor ou Leitor, a chave pode ser particularmente de alto risco. A procura de contas de serviço com recomendações de funções pode ajudar a identificar as contas de serviço com privilégios excessivos. Depois de identificar estas contas de serviço, pode decidir dar prioridade a estas cargas de trabalho para a migração. Também pode optar por aplicar as recomendações de funções para reduzir proativamente as autorizações excessivas.
Este pipeline de dados é executado diariamente e escreve numa tabela do BigQuery particionada por data. Pode usar esta tabela para investigar contas de serviço ou chaves específicas, ou para acompanhar o progresso da correção através de uma ferramenta de painel de controlo, como o Looker Studio.
Enriqueça os dados de utilização de chaves com contexto adicional
Depois de recolher dados sobre a utilização das chaves, pode enriquecer opcionalmente os seus dados com origens de dados adicionais. Recomendamos que adicione origens de dados que já usa para monitorizar a administração e a proveniência dos recursos. Consoante a sua governação existente, pode adicionar dados adicionais, como os seguintes:
- Informações de propriedade de uma base de dados de gestão de configuração (CMDB) ou de um sistema semelhante.
- Informações de governação configuradas em etiquetas de projetos, como a equipa ou o centro de custos responsável por um projeto.
- Informações do ambiente sobre as chaves usadas para cargas de trabalho em ambientes externos a Google Cloud.
Crie um plano para reduzir a utilização de chaves de contas de serviço
Antes de poder implementar alterações para reduzir a utilização de chaves de contas de serviço, tem de determinar que cargas de trabalho e ambientes vão ser afetados e como vai aplicar essas alterações. Também tem de comunicar este plano em toda a sua empresa e certificar-se de que os proprietários das cargas de trabalho apoiam o plano.
As secções seguintes apresentam tópicos importantes que o seu plano deve abordar. O seu plano específico varia consoante a dimensão da sua organização e os requisitos específicos das suas cargas de trabalho.
Decida a responsabilidade dos proprietários da carga de trabalho atual
Embora uma equipa de segurança central possa avaliar as chaves existentes, uma migração bem-sucedida requer esforço por parte dos proprietários das cargas de trabalho. Para chaves no âmbito da migração, os proprietários das cargas de trabalho têm de determinar qual dos métodos de autenticação disponíveis funciona para o respetivo exemplo de utilização e, em seguida, executar essa migração.
Pondere como equilibrar as melhorias à sua postura de segurança existente com o esforço exigido aos proprietários das cargas de trabalho. As secções seguintes descrevem duas abordagens de exemplo: uma que dá grande prioridade às melhorias na sua postura de segurança e outra que dá grande prioridade à minimização do esforço dos proprietários da carga de trabalho. A sua abordagem real pode variar. Por exemplo, pode decidir selecionar individualmente as cargas de trabalho que estão no âmbito.
Exemplo: todas as cargas de trabalho atuais são avaliadas para migração
Uma abordagem possível é aplicar controlos de chaves de contas de serviço a todas as cargas de trabalho existentes e futuras. Isto envolve passos como os seguintes:
- Colaborar com os proprietários das cargas de trabalho para avaliar a respetiva utilização principal das cargas de trabalho existentes.
- Exigir que os proprietários das cargas de trabalho migrem todas as cargas de trabalho existentes com utilização de chaves, a menos que lhes tenha sido concedida uma exceção.
- Impedir que todas as cargas de trabalho futuras usem chaves de contas de serviço, a menos que lhes tenha sido concedida uma exceção.
Esta abordagem dá prioridade às melhorias da sua postura de segurança existente, mas requer mais esforço por parte dos programadores e dos proprietários da carga de trabalho a curto prazo. Para executar com êxito um plano como este, tem de ter o compromisso dos proprietários da carga de trabalho para participarem na revisão e na refatoração da carga de trabalho.
Exemplo: não são avaliadas cargas de trabalho atuais para migração
Outra abordagem é permitir que as cargas de trabalho existentes tenham uma exceção automática para continuar a usar chaves de contas de serviço e aplicar apenas novos controlos em cargas de trabalho futuras.
Esta abordagem melhora a postura de segurança das cargas de trabalho futuras e minimiza a responsabilidade dos proprietários das cargas de trabalho atuais. No entanto, não melhora a postura de segurança das cargas de trabalho existentes.
Identifique progressos rápidos
Na sua avaliação, pode identificar chaves que podem ser eliminadas em segurança sem trabalho de remediação adicional por parte dos proprietários das cargas de trabalho. Por exemplo, se uma chave não tiver atividade durante 90 dias ou estiver relacionada com recursos que já não estão ativos, pode removê-la em segurança sem ter de migrar para um mecanismo de autenticação diferente.
Crie uma lista de chaves que cumprem estes critérios. Vai usar esta lista durante a fase de implementação para eliminar chaves desnecessárias. Antes de adicionar uma chave à lista, confirme se existem exemplos de utilização que requerem a chave de conta de serviço com pouca frequência, como o acesso de produção de emergência que depende de chaves de conta de serviço.
Planeie onde aplicar as alterações à política da organização
Para migrar com êxito a utilização de chaves de contas de serviço, tem de
impedir a criação de novas chaves. Durante a fase de implementação, aplica a restrição da política da organização iam.disableServiceAccountKeyCreation
para impedir a criação de novas chaves de contas de serviço.
Embora esta restrição não impeça a utilização de chaves existentes, pode interromper cargas de trabalho existentes que rodam regularmente as respetivas chaves. Antes de iniciar a fase de implementação, decida onde vai aplicá-la na hierarquia de recursos para minimizar a interrupção.
Pode preferir aplicar inicialmente a restrição ao nível do projeto ou da pasta, em vez de ao nível da organização. Por exemplo, pode aplicar a restrição na pasta usada para o seu ambiente de desenvolvimento antes de a implementar em pastas de produção. Em alternativa, numa organização grande com muitas equipas, pode aplicar a restrição a uma pasta para uma única equipa primeiro e, em seguida, aplicar a restrição a pastas adicionais à medida que as migra.
Pode usar políticas da organização com etiquetas para aplicar condicionalmente políticas da organização ao nível do projeto ou da pasta.
Crie um processo de exceções
Embora o objetivo desta migração seja reduzir ou eliminar a utilização de chaves de contas de serviço, existem alguns exemplos de utilização legítimos que requerem chaves de contas de serviço. Mesmo que nenhuma carga de trabalho existente exija chaves de contas de serviço, é possível que as cargas de trabalho futuras o façam. Por conseguinte, tem de definir um processo operacional para avaliar e aprovar exceções para exemplos de utilização que exijam chaves de contas de serviço.
Definir um processo para os proprietários de cargas de trabalho pedirem uma exceção que permita que a respetiva carga de trabalho use chaves de contas de serviço. Certifique-se de que os decisores responsáveis por conceder uma exceção têm os conhecimentos técnicos para validar o exemplo de utilização, consultar os proprietários da carga de trabalho sobre qual das alternativas mais seguras às chaves de contas de serviço pode ser mais adequada e aconselhar os proprietários da carga de trabalho sobre as práticas recomendadas para gerir chaves de contas de serviço.
Comunique as alterações futuras aos proprietários das cargas de trabalho
Depois de criar um plano, tem de comunicá-lo claramente em toda a sua organização e certificar-se de que os intervenientes, particularmente os líderes seniores, estão dispostos a comprometer-se com a migração.
Embora os detalhes específicos da migração variem para a sua organização, considere incluir os seguintes tópicos no seu plano de comunicação:
- O impacto negativo que as chaves de contas de serviço não seguras podem ter na organização e as motivações que impulsionam a sua migração das chaves de contas de serviço.
- Os novos controlos de segurança para impedir a criação de chaves de contas de serviço e como isto pode afetar os processos existentes.
- Orientações para os programadores identificarem alternativas mais seguras às chaves de contas de serviço.
- O processo para as equipas pedirem uma exceção para permitir chaves de contas de serviço, incluindo a frequência com que esta exceção é reavaliada.
- O prazo para aplicar as alterações propostas.
Colabore com os proprietários de cargas de trabalho para refinar o seu plano e garantir que funciona em toda a sua organização.
Implemente controlos e refatore cargas de trabalho
Depois de criar um plano e comunicá-lo aos proprietários das cargas de trabalho, pode começar a migrar das chaves de contas de serviço.
Nesta fase, começa a refatorar as cargas de trabalho para autenticar com alternativas mais seguras às chaves de contas de serviço. Também cria capacidades adicionais para monitorizar continuamente o seu ambiente e mitigar o risco futuro.
As secções seguintes descrevem os passos que pode seguir para refatorar cargas de trabalho e eliminar chaves com a mínima interrupção. Pode optar por seguir estes passos por qualquer ordem, com base na prioridade e no esforço necessários para a sua organização.
Aplique controlos para impedir a criação de novas chaves de contas de serviço
Para impedir a criação de novas chaves de contas de serviço, aplique a restrição da política da organização iam.disableServiceAccountKeyCreation
.
No entanto, antes de aplicar esta restrição, tem de adicionar etiquetas a todos os projetos ou pastas que vão estar isentos da política. Pode permitir exceções para cargas de trabalho existentes que não consigam migrar das chaves de contas de serviço ou para novas cargas de trabalho que tenham um motivo legítimo para autenticar apenas com chaves de contas de serviço.
Depois de adicionar etiquetas a projetos e pastas isentos, pode definir uma política
organizacional com etiquetas para aplicar a restrição iam.disableServiceAccountKeyCreation
a projetos e
pastas não isentos.
Para impedir a criação de chaves de contas de serviço em todos os projetos e pastas não isentos, faça o seguinte:
-
Certifique-se de que tem a função de administrador de etiquetas (
roles/resourcemanager.tagAdmin
) e a função de administrador da política da organização (roles/orgpolicy.policyAdmin
) ao nível da organização. Para saber como conceder funções ao nível da organização, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações. -
Ao nível da organização, crie uma chave de etiqueta e um valor de etiqueta que vai usar para definir se um recurso deve estar isento da política da organização. Recomendamos que crie uma etiqueta com a chave
disableServiceAccountKeyCreation
e os valoresenforced
enot_enforced
.Para saber como criar chaves de etiquetas e valores de etiquetas, consulte o artigo Criar e definir uma nova etiqueta.
-
Anexe a etiqueta
disableServiceAccountKeyCreation
à organização e defina o respetivo valor comoenforced
. Todos os recursos na organização herdam este valor da etiqueta, a menos que seja substituído por um valor da etiqueta diferente.Para saber como anexar etiquetas a recursos, consulte o artigo Anexar etiquetas a recursos.
-
Para cada projeto ou pasta que quer isentar da política da organização, anexe a etiqueta
disableServiceAccountKeyCreation
e defina o respetivo valor comonot_enforced
. Definir um valor de etiqueta para um projeto ou uma pasta desta forma substitui o valor de etiqueta herdado da organização. -
Crie uma política da organização que impeça a criação de chaves de contas de serviço para todos os recursos, exceto os recursos isentos. Esta política deve ter as seguintes regras:
-
Configure a restrição
iam.disableServiceAccountKeyCreation
para não ser aplicada a recursos com a etiquetadisableServiceAccountKeyCreation: not_enforced
. A condição nesta regra deve ter o seguinte aspeto:"resource.matchTag('ORGANIZATION_ID/disableServiceAccountKeyCreation', 'not_enforced')"
-
Configure a restrição
iam.disableServiceAccountKeyCreation
para ser aplicada a todos os outros recursos.
-
Corrija cargas de trabalho existentes
Para cada carga de trabalho que use chaves de contas de serviço, colabore com os proprietários da carga de trabalho para escolher e implementar um método de autenticação alternativo.
Quando acede aos Google Cloud serviços através da CLI Google Cloud, das bibliotecas de cliente da nuvem, das ferramentas que suportam as credenciais predefinidas da aplicação (ADC) como o Terraform ou os pedidos REST, use o diagrama seguinte para ajudar a escolher um método de autenticação:
Este diagrama orienta-o através das seguintes perguntas:
-
Está a executar código num ambiente de desenvolvimento de utilizador único, como a sua própria estação de trabalho,
o Cloud Shell ou uma interface de computador virtual?
- Em caso afirmativo, avance para a pergunta 4.
- Caso contrário, avance para a pergunta 2.
- Está a executar código no Google Cloud?
- Em caso afirmativo, avance para a pergunta 3.
- Caso contrário, avance para a pergunta 5.
- Está a executar contentores no Google Kubernetes Engine?
- Em caso afirmativo, use a federação de identidades da carga de trabalho para o GKE para anexar contas de serviço a pods do Kubernetes.
- Se não, anexe uma conta de serviço ao recurso.
-
O seu exemplo de utilização requer uma conta de serviço?
Por exemplo, quer configurar a autenticação e a autorização de forma consistente para a sua aplicação em todos os ambientes.
-
A sua carga de trabalho autentica-se com um fornecedor de identidade externo que suporta a
federação de identidade da carga de trabalho?
- Se sim, configure a federação de identidades da carga de trabalho para permitir que as aplicações executadas no local ou noutros fornecedores de nuvem usem uma conta de serviço.
- Se não, crie uma chave de conta de serviço.
Em alguns casos, pode não conseguir usar nenhum método de autenticação que não seja chaves de contas de serviço. Seguem-se alguns exemplos de situações em que uma chave de conta de serviço pode ser a única opção viável:
- Está a usar produtos comerciais disponíveis no mercado (COTS) ou aplicações de software como serviço (SaaS) que lhe pedem para introduzir uma chave de conta de serviço diretamente na respetiva interface do utilizador.Google Cloud
- A sua carga de trabalho está a ser executada fora do Google Cloud e não está autenticada com um fornecedor de identidade que possa suportar a federação de identidades de cargas de trabalho.
Nos casos em que tem de continuar a usar chaves de contas de serviço, certifique-se de que está a seguir as práticas recomendadas para gerir chaves de contas de serviço.
Também pode decidir não corrigir determinadas cargas de trabalho porque considera que o risco de continuar a usar chaves de contas de serviço não justifica o custo de mudar para um método de autenticação diferente.
Elimine chaves desnecessárias
Se tiver a certeza de que não precisa de uma chave da conta de serviço, deve eliminá-la. As teclas desnecessárias incluem o seguinte:
Chaves sem utilização recente ou chaves relacionadas com recursos não utilizados, que identificou na secção Identifique ganhos rápidos desta página.
Chaves para cargas de trabalho que foram migradas para outros métodos de autenticação.
Depois de eliminar todas as chaves de contas de serviço num projeto, certifique-se de que a restrição
iam.disableServiceAccountKeyCreation
é aplicada a esse projeto. Se o projeto foi anteriormente isento desta restrição, remova a etiqueta que permitiu a isenção.
Para eliminar chaves em segurança, recomendamos que desative a chave antes de a eliminar. A eliminação é irreversível, mas a desativação permite-lhe reativar rapidamente a chave se identificar problemas inesperados. Depois de desativar a chave, aguarde até ter a certeza de que a remoção permanente da chave não vai causar problemas, e elimine a chave. Se, depois de desativar a chave, identificar problemas inesperados, reative a chave, resolva os problemas e, em seguida, repita o processo até poder eliminar a chave em segurança.
Use controlos integrados para ajudar a responder a chaves roubadas
Google Cloud oferece ferramentas e serviços para ajudar a detetar e responder a chaves de contas de serviço roubadas. Considere usar os seguintes mecanismos para ajudar a responder a chaves de contas de serviço roubadas:
- A restrição Service Account Key Exposure Response permite-lhe desativar automaticamente as chaves expostas que Google Cloud deteta.
Melhorias contínuas na gestão de contas de serviço
Sempre que possível, implemente práticas recomendadas para gerir chaves de contas de serviço. A melhoria dos processos de gestão de chaves pode ajudar a mitigar o risco de chaves de contas de serviço restantes na sua organização.
O que se segue?
- Práticas recomendadas para usar contas de serviço
- Práticas recomendadas para gerir chaves de contas de serviço
- Crie um processo de gestão de incidentes de colaboração