Hayat
Script de Auditoria e Hardening do Google Cloud Platform ~
O que significa "Hayat"?
Bem, tive dificuldade em encontrar um nome único, honestamente. "Hayat" é uma palavra turca que significa "Life" em inglês e também é o nome da minha sobrinha. Pronto para conhecê-la?
😍 😍 😍
Hayat é um script de auditoria e hardening para serviços do Google Cloud Platform, tais como:
- Gerenciamento de Identidade e Acesso
- Registro e monitoramento
- Rede
- Máquinas Virtuais
- Armazenamento
- Instâncias do Cloud SQL
- Clusters Kubernetes
por enquanto.
Gerenciamento de Identidade e Acesso
- Garantir que credenciais de login corporativas sejam usadas em vez de contas do Gmail.
- Garantir que existam apenas chaves de contas de serviço gerenciadas pelo GCP para cada conta de serviço.
- Garantir que a conta de serviço não tenha privilégios de Administrador.
- Garantir que usuários do IAM não tenham o papel de Usuário de Conta de Serviço atribuído no nível do projeto.
- Garantir que chaves gerenciadas pelo usuário/externas para contas de serviço sejam rotacionadas a cada 90 dias ou menos.
- Garantir que a segregação de funções seja aplicada ao atribuir funções relacionadas à conta de serviço aos usuários.
Registro e Monitoramento
- Garantir que sumidouros (sinks) estejam configurados para todas as entradas de registro.
- Garantir que o versionamento de objetos esteja ativado nos buckets de registro.
Rede
- Garantir que a rede padrão não exista em um projeto.
- Garantir que redes legadas não existam para um projeto.
- Garantir que o DNSSEC esteja ativado para o Cloud DNS.
- Garantir que o RSASHA1 não seja usado para a chave de assinatura de chave no DNSSEC do Cloud DNS.
- Garantir que o RSASHA1 não seja usado para a chave de assinatura de zona no DNSSEC do Cloud DNS.
- Garantir que o acesso RDP seja restrito a partir da Internet.
- Garantir que o acesso SSH seja restrito a partir da Internet.
- Garantir que o Acesso Privado do Google esteja ativado para todas as sub-redes na Rede VPC.
- Garantir que os logs de fluxo VPC estejam ativados para cada sub-rede na Rede VPC.
Máquinas Virtuais
- Garantir que as instâncias não estejam configuradas para usar a conta de serviço padrão com acesso total a todas as APIs da nuvem.
- Garantir que "Bloquear chaves SSH de todo o projeto" esteja ativado para instâncias de VM.
- Garantir que o oslogin esteja ativado para um projeto.
- Garantir que 'Ativar conexão com portas seriais' não esteja ativado para a instância de VM.
- Garantir que o encaminhamento de IP não esteja ativado nas instâncias.
- Garantir que os discos de VM para VMs críticas estejam criptografados com Chaves de Criptografia Fornecidas pelo Cliente (CSEK)
Armazenamento
- Garantir que o bucket do Cloud Storage não seja acessível anonimamente ou publicamente.
- Garantir que o registro esteja ativado para o bucket do Cloud Storage.
Serviços de Banco de Dados Cloud SQL
- Garantir que a instância de banco de dados Cloud SQL exija que todas as conexões de entrada usem SSL.
- Garantir que as instâncias de banco de dados Cloud SQL não estejam abertas para o mundo.
- Garantir que a instância de banco de dados MySQL não permita que ninguém se conecte com privilégios administrativos.
- Garantir que a instância de banco de dados MySQL não permita login root de qualquer host.
Kubernetes Engine
- Garantir que o Stackdriver Logging esteja definido como Ativado nos Clusters do Kubernetes Engine.
- Garantir que o Stackdriver Monitoring esteja definido como Ativado nos Clusters do Kubernetes Engine.
- Garantir que a Autorização Legada esteja definida como Desativada nos Clusters do Kubernetes Engine.
- Garantir que as Redes autorizadas do mestre estejam definidas como Ativado nos Clusters do Kubernetes Engine.
- Garantir que os Clusters Kubernetes estejam configurados com Rótulos.
- Garantir que a IU web / Dashboard do Kubernetes esteja desativada.
- Garantir que o
Reparo automático de nós esteja ativado para Clusters Kubernetes.
- Garantir que as atualizações automáticas de nós estejam ativadas nos nós dos Clusters do Kubernetes Engine.
- Garantir que o Sistema Operacional Otimizado para Contêiner (cos) seja usado para a imagem do nó dos Clusters do Kubernetes Engine.
- Garantir que a Autenticação Básica esteja desativada nos Clusters do Kubernetes Engine.
- Garantir que a política de rede esteja ativada nos Clusters do Kubernetes Engine.
- Garantir que o Cluster Kubernetes seja criado com o Certificado de Cliente ativado.
- Garantir que o Cluster Kubernetes seja criado com Intervalos de IP de alias ativados.
- Garantir que o controlador PodSecurityPolicy esteja ativado nos Clusters do Kubernetes Engine.
- Garantir que o Cluster Kubernetes seja criado com cluster privado ativado.
- Garantir que o Acesso Privado do Google esteja definido nas Sub-redes do Cluster do Kubernetes Engine.
- Garantir que a conta de serviço padrão não seja usada para acesso ao projeto em Clusters Kubernetes
- Garantir que os Clusters Kubernetes sejam criados com escopos de acesso limitados da conta de serviço para acesso ao projeto.
Requisitos
Hayat foi escrito em script bash usando gcloud e é compatível com Linux e OSX.
Uso
git clone https://github.com/DenizParlak/Hayat.git && cd Hayat && chmod +x hayat.sh && ./hayat.sh
Você pode usar com funções específicas, por exemplo, se quiser escanear apenas o Cluster Kubernetes:
./hayat.sh --only-k8s
Capturas de tela

