Hayat
Google Cloud Platform Auditing & Hardening Script ~
Que signifie "Hayat" ?
Eh bien, j'ai eu du mal à trouver un nom unique, honnêtement. "Hayat" est un mot turc qui signifie "Vie" en anglais et c'est aussi le nom de ma nièce. Prêt à la rencontrer ?
😍 😍 😍
Hayat est un script d'audit et de durcissement pour les services Google Cloud Platform tels que :
- Gestion des identités et des accès
- Journalisation et surveillance
- Réseau
- Machines virtuelles
- Stockage
- Instances Cloud SQL
- Clusters Kubernetes
pour l'instant.
Gestion des identités et des accès
- S'assurer que les identifiants de connexion d'entreprise sont utilisés au lieu des comptes Gmail.
- S'assurer qu'il n'y a que des clés de compte de service gérées par GCP pour chaque compte de service.
- S'assurer que le compte de service n'a pas de privilèges d'administrateur.
- S'assurer que les utilisateurs IAM ne se voient pas attribuer le rôle d'utilisateur de compte de service au niveau du projet.
- S'assurer que les clés gérées par l'utilisateur/externes pour les comptes de service sont tournées tous les 90 jours ou moins.
- S'assurer que la séparation des tâches est appliquée lors de l'attribution de rôles liés aux comptes de service aux utilisateurs.
Journalisation et surveillance
- S'assurer que des récepteurs sont configurés pour toutes les entrées de journal.
- S'assurer que le versionnage des objets est activé sur les compartiments de journaux.
Réseau
- S'assurer que le réseau par défaut n'existe pas dans un projet.
- S'assurer que les réseaux hérités n'existent pas pour un projet.
- S'assurer que DNSSEC est activé pour Cloud DNS.
- S'assurer que RSASHA1 n'est pas utilisé pour la clé de signature de clé dans Cloud DNS DNSSEC.
- S'assurer que RSASHA1 n'est pas utilisé pour la clé de signature de zone dans Cloud DNS DNSSEC.
- S'assurer que l'accès RDP est restreint depuis Internet.
- S'assurer que l'accès SSH est restreint depuis Internet.
- S'assurer que l'accès Google privé est activé pour tous les sous-réseaux dans le réseau VPC.
- S'assurer que les journaux de flux VPC sont activés pour chaque sous-réseau dans le réseau VPC.
Machines virtuelles
- S'assurer que les instances ne sont pas configurées pour utiliser le compte de service par défaut avec un accès complet à toutes les API Cloud.
- S'assurer que 'Bloquer les clés SSH à l'échelle du projet' est activé pour les instances VM.
- S'assurer que oslogin est activé pour un projet.
- S'assurer que 'Autoriser la connexion aux ports série' n'est pas activé pour l'instance VM.
- S'assurer que le transfert IP n'est pas activé sur les instances.
- S'assurer que les disques VM pour les VM critiques sont chiffrés avec des clés de chiffrement fournies par le client (CSEK)
Stockage
- S'assurer que le bucket Cloud Storage n'est pas accessible anonymement ou publiquement.
- S'assurer que la journalisation est activée pour le bucket Cloud Storage.
Services de base de données Cloud SQL
- S'assurer que l'instance de base de données Cloud SQL exige que toutes les connexions entrantes utilisent SSL.
- S'assurer que les instances de base de données Cloud SQL ne sont pas ouvertes au monde.
- S'assurer que l'instance de base de données MySQL ne permet à personne de se connecter avec des privilèges administratifs.
- S'assurer que l'instance de base de données MySQL n'autorise pas la connexion root depuis n'importe quel hôte.
Kubernetes Engine
- S'assurer que Stackdriver Logging est défini sur Activé sur les clusters Kubernetes Engine.
- S'assurer que Stackdriver Monitoring est défini sur Activé sur les clusters Kubernetes Engine.
- S'assurer que l'autorisation héritée est définie sur Désactivé sur les clusters Kubernetes Engine.
- S'assurer que les réseaux autorisés du maître sont définis sur Activé sur les clusters Kubernetes Engine.
- S'assurer que les clusters Kubernetes sont configurés avec des étiquettes.
- S'assurer que l'interface web / Dashboard Kubernetes est désactivé.
- S'assurer que la
réparation automatique des nœuds est activée pour les clusters Kubernetes.
- S'assurer que les mises à niveau automatiques des nœuds sont activées sur les nœuds des clusters Kubernetes Engine.
- S'assurer que Container-Optimized OS (cos) est utilisé pour l'image des nœuds des clusters Kubernetes Engine.
- S'assurer que l'authentification de base est désactivée sur les clusters Kubernetes Engine.
- S'assurer que la politique réseau est activée sur les clusters Kubernetes Engine.
- S'assurer que le cluster Kubernetes est créé avec le certificat client activé.
- S'assurer que le cluster Kubernetes est créé avec les plages d'adresses IP alias activées.
- S'assurer que le contrôleur PodSecurityPolicy est activé sur les clusters Kubernetes Engine.
- S'assurer que le cluster Kubernetes est créé avec le cluster privé activé.
- S'assurer que l'accès Google privé est défini sur les sous-réseaux du cluster Kubernetes Engine.
- S'assurer que le compte de service par défaut n'est pas utilisé pour l'accès au projet dans les clusters Kubernetes
- S'assurer que les clusters Kubernetes sont créés avec des étendues d'accès limitées pour le compte de service pour l'accès au projet.
Prérequis
Hayat a été écrit en script bash utilisant gcloud et est compatible avec Linux et OSX.
Utilisation
git clone https://github.com/DenizParlak/Hayat.git && cd Hayat && chmod +x hayat.sh && ./hayat.sh
Vous pouvez l'utiliser avec des fonctions spécifiques, par exemple si vous voulez scanner uniquement le cluster Kubernetes :
./hayat.sh --only-k8s
Captures d'écran

