Aller au contenu

Tâche 11 min de lecture

Connecter Google Cloud à votre inventaire d'actifs

Le connecteur Google Cloud lit les ressources exposées sur Internet de vos projets Google Cloud et les conserve dans l'inventaire d'actifs d'Ostorlab, afin que vous puissiez les scanner et les suivre dans le cadre de votre surface d'attaque. Il n'a besoin que d'un accès en lecture.

Que collecte le connecteur ?

Tout est lu via Cloud Asset Inventory, projet par projet. Les adresses privées sont ignorées.

Ressource Ce qui est conservé
Instances Compute Engine Les instances dotées d'une adresse IPv4 ou IPv6 externe
Adresses réservées Adresses externes régionales et globales
Règles de transfert Règles régionales et globales dont le schéma d'équilibrage de charge est externe
Cloud DNS Zones gérées publiques et leurs jeux d'enregistrements (les enregistrements génériques sont ignorés)

Seules les ressources listées ci-dessus sont importées ; Cloud Run, Cloud Functions, GKE et les autres services ne sont pas collectés.

Chaque projet devient un nœud cloud qui est le parent des autres nœuds du projet. Les adresses IP publiques et les noms d'hôte qu'une ressource expose deviennent des actifs IP et domaine ordinaires, que le reste de la plateforme peut scanner.

De quoi ai-je besoin avant de commencer ?

  • Une offre Ostorlab qui inclut les intégrations. Sinon, Ostorlab répond « Your organisation does not have the necessary permissions to run this integration. »
  • L'ID du projet qui hébergera le compte de service (l'ID du projet, pas son nom d'affichage).
  • gcloud authentifié en tant que propriétaire de ce projet, par exemple dans Cloud Shell. Pour un connecteur à l'échelle de l'organisation, également propriétaire de l'organisation.
  • Pour un connecteur à l'échelle de l'organisation, l'ID numérique de l'organisation.
  • Un propriétaire Ostorlab pour les actifs importés. Créez-en un au préalable si nécessaire.

Configurer l'accès dans Google Cloud

Ouvrez Library > Integrations, sélectionnez la catégorie Cloud, puis la carte Google Cloud. L'onglet Configuration commence par Étape 1 : préparez votre projet Google Cloud.

Catégorie Cloud avec la carte Google Cloud

Les deux boutons de téléchargement fournissent un fichier nommé ostorlab-gcp-connector.sh ; les versions par emprunt d'identité et par clé sont identiques, sauf pour la dernière étape. L'emprunt d'identité du compte de service est à privilégier : aucune clé ne quitte votre organisation.

Étape de configuration avec les boutons de téléchargement

Option 1 : emprunt d'identité du compte de service (recommandé)

  1. Dans l'Étape 1, cliquez sur Emprunt d'identité du compte de service : télécharger le fichier de configuration. Le bloc Paramètres à utiliser affiche ostorlab_service_account, le compte de service qu'Ostorlab crée pour votre organisation, et les roles que le script accorde.
  2. Ouvrez Cloud Shell, importez le script et exécutez-le pour un projet :

    PROJECT_ID=<project id> bash ostorlab-gcp-connector.sh
    

    Pour lire tous les projets d'une organisation, accordez les rôles au niveau de l'organisation :

    ORGANIZATION_ID=<organization id> PROJECT_ID=<project id> bash ostorlab-gcp-connector.sh
    
  3. Le script affiche l'e-mail du compte de service, ostorlab-cloud-connector@<project id>.iam.gserviceaccount.com. Copiez-le.

Le script :

  • active les API cloudresourcemanager.googleapis.com, cloudasset.googleapis.com et iamcredentials.googleapis.com dans le projet, et rien d'autre ;
  • crée le compte de service ostorlab-cloud-connector dans le projet ;
  • lui accorde roles/cloudasset.viewer et roles/browser, sur le projet ou sur l'organisation ;
  • accorde au compte de service d'Ostorlab (ostorlab_service_account) le rôle roles/iam.serviceAccountTokenCreator sur le nouveau compte de service, afin qu'Ostorlab puisse emprunter son identité sans aucune clé.

Relancer le script ne présente aucun risque : il réutilise le compte de service s'il existe et réessaie le temps que Google propage le nouveau compte.

Option 2 : clé de compte de service

Utilisez cette méthode si l'emprunt d'identité n'est pas possible.

  1. Dans l'Étape 1, cliquez sur Clé de compte de service : télécharger le fichier de configuration.
  2. Exécutez la même commande que ci-dessus dans Cloud Shell. Au lieu de l'attribution du rôle de créateur de jetons, le script crée un fichier de clé JSON, ostorlab-cloud-connector-key.json.
  3. Copiez le contenu du fichier entier pour le formulaire du connecteur, puis supprimez le fichier de votre machine.
  4. Pour renouveler la clé, relancez le script et mettez à jour le connecteur avec la nouvelle clé. Listez ensuite les clés pour trouver l'ID de la précédente, puis supprimez-la. Le script ne supprime jamais une ancienne clé :

    gcloud iam service-accounts keys list --iam-account <service account email>
    gcloud iam service-accounts keys delete <previous key id> --iam-account <service account email>
    

Tip

La clé JSON est chiffrée au repos et n'est plus jamais affichée dans Ostorlab.

Ajouter le connecteur

  1. Dans l'onglet Configuration, sous Étape 2 : connecteurs Google Cloud, cliquez sur Ajouter un connecteur (ou Ajouter un autre connecteur).

    Bouton Ajouter un autre connecteur

  2. Remplissez le formulaire, puis cliquez sur Créer.

    Formulaire d'ajout de connecteur avec l'e-mail du compte de service en surbrillance

Champ Ce qu'il faut saisir
Nom Un nom unique dans votre organisation, par exemple GCP Production.
ID de projet L'ID du projet Google Cloud : 6 à 30 lettres minuscules, chiffres ou tirets, commençant par une lettre et se terminant par une lettre ou un chiffre.
ID d'organisation (optionnel) Le numéro d'organisation Google Cloud. S'il est renseigné, tous les projets actifs de l'organisation sont collectés.
Méthode d'authentification Emprunt d'identité du compte de service ou Clé de compte de service.
E-mail du compte de service Méthode d'emprunt d'identité uniquement. L'e-mail affiché par le script.
Clé JSON du compte de service Méthode de la clé uniquement. Le fichier de clé JSON entier.
Propriétaire Obligatoire. Les actifs importés sont rattachés à ce propriétaire.
Emplacement Emplacement optionnel des actifs importés.
Actif Les connecteurs inactifs sont ignorés par la synchronisation planifiée.

Tester la connexion

Cliquez sur Tester la connexion dans la ligne du connecteur. Le test lit les données de votre projet sans rien importer.

Action Tester la connexion

Quatre vérifications s'exécutent :

Vérification Ce qu'elle contrôle
Identifiants Ostorlab a obtenu un jeton Google pour le compte de service (par emprunt d'identité, ou à partir de la clé enregistrée).
Permissions Cloud Asset Inventory liste les projets du périmètre.
Périmètres Les projets qui seront lus : votre projet, ou tous les projets actifs de l'organisation. La vérification échoue si le projet n'est pas actif ou ne peut pas être lu.
Ressource exemple Ostorlab lit la première adresse externe réservée du périmètre. La vérification réussit aussi si aucune n'est réservée.

Si une vérification échoue, les suivantes sont aussi signalées comme ignorées ou en échec : corrigez d'abord la première vérification en échec.

Test de connexion avec quatre vérifications réussies

Synchroniser le connecteur

Chaque connecteur actif se synchronise automatiquement toutes les douze heures. Pour importer immédiatement, cliquez sur Synchroniser maintenant dans la ligne du connecteur.

Action Synchroniser maintenant

Une notification confirme la tâche (Synchronisation lancée (tâche ...)). Une synchronisation est refusée si le connecteur est inactif ou si une synchronisation du même connecteur est déjà en cours.

Notification de synchronisation lancée

Lire les exécutions de synchronisation et les erreurs

Cliquez sur Synchronisations récentes pour voir les exécutions d'un connecteur.

Fenêtre des synchronisations récentes

Colonne Signification
Statut En cours, Succès, Partiel (certains projets ont échoué, le reste a été importé) ou Échec (la synchronisation n'a pas pu aboutir, par exemple parce que Google a refusé le jeton).
Ressources Ressources trouvées lors de cette exécution.
Créés, Mis à jour Actifs et nœuds nouveaux et modifiés. Le nombre de créés inclut les actifs IP et nom d'hôte en plus des nœuds.
Obsolètes Ressources que le connecteur a marquées cloud:stale parce qu'elles n'ont pas été vues lors de cette exécution.
Erreurs Le nombre d'erreurs de périmètre. Cliquez dessus pour les lister.

Un projet dont le listage échoue compte pour une erreur, et les autres projets sont tout de même lus : l'exécution se termine en Partiel.

Erreurs d'une synchronisation partielle

Note

Les ressources qui disparaissent de Google Cloud ne sont marquées cloud:stale qu'après une exécution sans aucune erreur de périmètre. Elles ne sont jamais supprimées de l'inventaire. Le tag est retiré lorsqu'une synchronisation ultérieure revoit la ressource.

Une exécution restée En cours pendant plus de deux heures est considérée comme arrêtée : elle ne bloque plus une nouvelle synchronisation, et la prochaine synchronisation planifiée la marque Échec.

Consulter les actifs dans l'inventaire

Les actifs importés appartiennent au propriétaire et à l'emplacement que vous avez choisis. Chacun porte le tag cloud:gcp.

  1. Ouvrez Inventory > Assets.
  2. Ouvrez le panneau de recherche, allez dans l'onglet Tags, définissez le nom du tag sur cloud et la valeur sur gcp, puis cliquez sur Search.

    Inventaire filtré avec le tag cloud défini sur gcp

  3. Pour affiner la liste, filtrez sur les autres tags ajoutés par le connecteur : gcp:account (l'ID du projet), gcp:region, gcp:resource (le nom complet de la ressource) et gcp:connector (l'ID du connecteur).

Actifs d'un projet Google Cloud : IP, noms d'hôte et nœuds cloud

Suivre le chemin de découverte

Ouvrez un nœud cloud, tel qu'une règle de transfert, pour voir sa cible, ses tags, son propriétaire et son emplacement. La carte Discovery Path montre l'origine du nœud : le projet Google Cloud, puis sa ressource parente. Les adresses publiques et les noms d'hôte d'un nœud citent ce nœud dans leur propre chemin de découverte, ce qui permet de toujours savoir quel projet et quelle ressource les exposent.

Nœud cloud avec son chemin de découverte

Modifier, suspendre ou supprimer le connecteur

  • Modifier permet de changer le nom, les ID de projet et d'organisation, la méthode d'authentification, le propriétaire, l'emplacement et l'interrupteur Actif. Laissez une clé enregistrée vide pour la conserver, ou collez-en une nouvelle pour la remplacer.

    Formulaire de modification du connecteur

  • Désactivez Actif pour suspendre la synchronisation planifiée tout en conservant le connecteur.

  • Supprimer retire le connecteur : les actifs déjà importés restent dans l'inventaire et les synchronisations futures s'arrêtent.
  • Pour retirer aussi l'accès d'Ostorlab dans Google Cloud, supprimez le compte de service ostorlab-cloud-connector (ou retirez ses liaisons IAM ainsi que la liaison de créateur de jetons qui fait confiance à Ostorlab). Supprimer le compte de service ne supprime pas les liaisons de rôles du projet ou de l'organisation faites pour lui : retirez aussi roles/cloudasset.viewer et roles/browser pour ce membre.

Dépannage

Symptôme À vérifier
« Google refused to issue a token for the service account ... Check that the organisation's Ostorlab service account has roles/iam.serviceAccountTokenCreator on it. » La dernière étape du script n'a pas été exécutée, ou la liaison a été supprimée. Relancez le script.
« Google refused the service account key. Check that the key and the service account ... are enabled. » La clé a été supprimée ou désactivée, ou le compte de service est désactivé. Créez une nouvelle clé et mettez à jour le connecteur.
« Project ... is not active or cannot be read. » L'ID de projet est incorrect, le projet est en cours de suppression, ou le compte de service n'a pas les rôles dessus.
« No active project found in scope. » Connecteur à l'échelle de l'organisation : les rôles n'ont été accordés que sur le projet. Relancez le script avec ORGANIZATION_ID.
La vérification Permissions échoue Les API du script ne sont pas activées dans le projet, ou les rôles sont manquants. Relancez le script.
Erreur de formulaire concernant la clé JSON Collez le fichier de clé entier : il doit s'agir d'une clé de compte de service ("type": "service_account") avec un client_email et un private_key.
Le test indique que la connexion n'est pas disponible pour le moment Un problème du côté d'Ostorlab, pas dans votre projet. Réessayez plus tard et contactez le support s'il persiste.
« The cloud connector is disabled. » Activez Actif dans le formulaire de modification du connecteur.
« A sync of this cloud connector is already running. » Attendez la fin de la synchronisation en cours.
Des ressources attendues sont absentes Elles n'ont peut-être pas d'adresse externe, ou se trouvent dans une zone DNS privée. Le connecteur ne conserve que les ressources exposées sur Internet.

Étapes suivantes