Améliorer votre stratégie de sécurité grâce aux insights sur les composants

Les insights de l'inventaire des éléments cloud peuvent vous aider à détecter les risques potentiels dans vos configurations d'éléments et à améliorer votre stratégie de sécurité. Elle fait partie du service Recommender et est fournie en tant que type d'insights google.cloudasset.asset.Insight.

Les insights sont des anomalies spécifiques qui nécessitent une analyse plus approfondie pour déterminer l'action appropriée. Ils sont générés quotidiennement à partir d'un instantané des données stockées dans inventaire des éléments cloud.

Les insights fournis par l'inventaire des éléments cloud sont basés sur les stratégies IAM associées aux ressources de votre organisation.

Avant de commencer

Avant de pouvoir commencer à utiliser les insights d'éléments, vous devez suivre la procédure ci-dessous.

  1. Activez l'API Recommender.

  2. Assurez-vous que votre compte dispose des autorisations suivantes:

    • recommender.cloudAssetInsights.get

    • recommender.cloudAssetInsights.list

    • recommender.cloudAssetInsights.update

    Vous pouvez accorder ces autorisations individuellement ou attribuer l'un des rôles suivants.

    • Lecteur d'insights d'éléments cloud (roles/recommender.cloudAssetInsightsViewer)

    • Administrateur d'insights d'éléments cloud (roles/recommender.cloudAssetInsightsAdmin)

Limites

  • Ces insights ne prennent pas en compte les membres de groupes ni les comptes de service dans leurs résultats et ne doivent pas être considérés comme une liste exhaustive des failles correspondantes.

  • Les insights individuels incluent un échantillonnage des stratégies IAM correspondantes, limité à 100 stratégies distinctes. Vous pouvez récupérer toutes les règles correspondantes en recherchant des stratégies d'autorisation IAM sur les ressources.

Demander des insights sur les éléments

Le moyen le plus simple de demander des insights sur les éléments est de les lister, comme indiqué dans les étapes suivantes. Pour les autres types d'interactions, consultez la section Utiliser l'API – Insights.

gcloud

gcloud recommender insights list \
    --SCOPE \
    --location=global \
    --insight-type=google.cloudasset.asset.Insight \
    --filter="insightSubtype:SUBTYPE" \

Indiquez les valeurs suivantes :

  • SCOPE: utilisez l'une des valeurs suivantes:

    • project=PROJECT_ID, où PROJECT_ID est l'ID du projet pour lequel vous souhaitez obtenir des insights.
    • folder=FOLDER_ID, où FOLDER_ID est l'ID du dossier pour lequel vous souhaitez obtenir des insights.

      Trouver l'ID d'un dossier Google Cloud

      Google Cloud console

      Pour trouver l'ID d'un dossier Google Cloud , procédez comme suit:

      1. Accédez à la console Google Cloud .

        Accédez à la console Google Cloud .

      2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
      3. Sélectionnez votre organisation dans la liste.
      4. Recherchez le nom de votre dossier. L'ID du dossier s'affiche à côté de son nom.

      CLI gcloud

      Vous pouvez récupérer l'ID d'un dossier Google Cloud situé au niveau de l'organisation à l'aide de la commande suivante:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      TOP_LEVEL_FOLDER_NAME correspond à une correspondance partielle ou complète de la chaîne pour le nom du dossier. Supprimez l'indicateur --format pour afficher plus d'informations sur les dossiers trouvés.

      La commande précédente ne renvoie pas les ID des sous-dossiers dans les dossiers. Pour ce faire, exécutez la commande suivante à l'aide de l'ID d'un dossier de niveau supérieur:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, où ORGANIZATION_ID est l'ID de l'organisation pour laquelle vous souhaitez obtenir des insights.

      Trouver l'ID d'une organisation Google Cloud

      Google Cloud console

      Pour trouver l'ID d'une organisation Google Cloud , procédez comme suit:

      1. Accédez à la console Google Cloud .

        Accédez à la console Google Cloud .

      2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
      3. Sélectionnez votre organisation dans la liste.
      4. Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.

      CLI gcloud

      Vous pouvez récupérer l'ID d'une organisation Google Cloud à l'aide de la commande suivante:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID : facultatif. ID de projet dans lequel se trouve l'agent de service inventaire des éléments cloud par défaut, qui dispose des autorisations nécessaires pour gérer votre facturation et votre quota. Découvrez comment définir le projet de facturation.

  • SUBTYPE: sous-type d'insight sur les composants. L'une des valeurs suivantes:

    • EXTERNAL_MEMBER: détecte les stratégies IAM contenant des utilisateurs ou des groupes appartenant à un domaine extérieur aux domaines de votre organisation.
    • EXTERNAL_POLICY_EDITOR: détecte les stratégies IAM contenant des utilisateurs ou des groupes en dehors des domaines de votre organisation autorisés à modifier les stratégies IAM.
    • EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER: détecte les stratégies IAM contenant des utilisateurs ou des groupes en dehors des domaines de votre organisation autorisés à obtenir ou à répertorier des objets de stockage (autorisation storage.objects.list ou storage.objects.get).
    • EXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR: détecte les stratégies IAM contenant des utilisateurs ou des groupes en dehors des domaines de votre organisation autorisés à emprunter l'identité des comptes de service.
    • TERMINATED_MEMBER: détecte les stratégies IAM contenant des utilisateurs ou des groupes avec des comptes désactivés, supprimés ou effacés définitivement.
    • PUBLIC_IAM_POLICY: détecte les stratégies IAM contenant tous les utilisateurs ou tous les utilisateurs authentifiés.
    • OWNER_TERMINATED_PROJECT: détecte les projets qui ne contiennent aucun utilisateur ou groupe actif dans la stratégie IAM du projet.
  • Si cet argument n'est pas spécifié, tous les sous-types sont renvoyés.

Consultez la documentation de référence de la gcloud CLI pour toutes les options.

Exemple

Exécutez la commande suivante pour afficher les insights du projet my-project.

gcloud recommender insights list \
    --project=my-project \
    --location=global \
    --insight-type=google.cloudasset.asset.Insight

Exemple de réponse

INSIGHT_ID: 00000000-0000-0000-0000-000000000000
CATEGORY: SECURITY
INSIGHT_STATE: ACTIVE
LAST_REFRESH_TIME: 2024-01-30T00:00:00Z
SEVERITY: LOW
INSIGHT_SUBTYPE: EXTERNAL_MEMBER
DESCRIPTION: Domain example.com detected in 1 IAM policies

REST

Méthode HTTP et URL :

GET https://recommender.googleapis.com/v1/SCOPE_PATH/locations/global/insightTypes/google.cloudasset.asset.Insight/insights

En-têtes :

X-Goog-User-Project: BILLING_PROJECT_ID

Indiquez les valeurs suivantes :

  • SCOPE_PATH: utilisez l'une des valeurs suivantes:

    Les valeurs autorisées sont les suivantes :

    • projects/PROJECT_ID, où PROJECT_ID est l'ID du projet pour lequel vous souhaitez obtenir des insights.
    • projects/PROJECT_NUMBER, où PROJECT_NUMBER correspond au numéro du projet pour lequel vous souhaitez obtenir des insights.

      Trouver un numéro de projet Google Cloud

      Google Cloud console

      Pour trouver un numéro de projet Google Cloud , procédez comme suit:

      1. Accédez à la page Bienvenue dans la console Google Cloud .

        Accéder à "Bienvenue"

      2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
      3. Sélectionnez votre organisation dans la liste, puis recherchez le nom de votre projet. Le nom, le numéro et l'ID du projet sont affichés près de l'en-tête Bienvenue.

        Jusqu'à 4 000 ressources peuvent être affichées. Si le projet que vous recherchez ne s'affiche pas, accédez à la page Gérer les ressources et filtrez la liste en utilisant le nom de ce projet.

      CLI gcloud

      Vous pouvez récupérer un numéro de projet Google Cloud à l'aide de la commande suivante:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, où FOLDER_ID est l'ID du dossier pour lequel vous souhaitez obtenir des insights.

      Trouver l'ID d'un dossier Google Cloud

      Google Cloud console

      Pour trouver l'ID d'un dossier Google Cloud , procédez comme suit:

      1. Accédez à la console Google Cloud .

        Accédez à la console Google Cloud .

      2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
      3. Sélectionnez votre organisation dans la liste.
      4. Recherchez le nom de votre dossier. L'ID du dossier s'affiche à côté de son nom.

      CLI gcloud

      Vous pouvez récupérer l'ID d'un dossier Google Cloud situé au niveau de l'organisation à l'aide de la commande suivante:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      TOP_LEVEL_FOLDER_NAME correspond à une correspondance partielle ou complète de la chaîne pour le nom du dossier. Supprimez l'indicateur --format pour afficher plus d'informations sur les dossiers trouvés.

      La commande précédente ne renvoie pas les ID des sous-dossiers dans les dossiers. Pour ce faire, exécutez la commande suivante à l'aide de l'ID d'un dossier de niveau supérieur:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, où ORGANIZATION_ID est l'ID de l'organisation pour laquelle vous souhaitez obtenir des insights.

      Trouver l'ID d'une organisation Google Cloud

      Google Cloud console

      Pour trouver l'ID d'une organisation Google Cloud , procédez comme suit:

      1. Accédez à la console Google Cloud .

        Accédez à la console Google Cloud .

      2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
      3. Sélectionnez votre organisation dans la liste.
      4. Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.

      CLI gcloud

      Vous pouvez récupérer l'ID d'une organisation Google Cloud à l'aide de la commande suivante:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: ID du projet dans lequel se trouve l'agent de service inventaire des éléments cloud par défaut, qui est autorisé à gérer votre facturation et votre quota. Découvrez comment définir le projet de facturation.

Exemples de commandes

Exécutez l'une des commandes suivantes pour afficher les insights du projet my-project.

curl (Linux, macOS ou Cloud Shell)

curl -X GET \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     https://recommender.googleapis.com/v1/projects/my-project/locations/global/insightTypes/google.cloudasset.asset.Insight/insights

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-Goog-User-Project" = "BILLING_PROJECT_ID";
  "Authorization" = "Bearer $cred"
}


Invoke-WebRequest `
  -Method GET `
  -Headers $headers `
  -Uri "https://recommender.googleapis.com/v1/projects/my-project/locations/global/insightTypes/google.cloudasset.asset.Insight/insights" | Select-Object -Expand Content

Exemple de réponse

{
   "name": "organizations/000000000000/locations/global/insightTypes/google.cloudasset.asset.Insight/insights/00000000-0000-0000-0000-000000000000",
   "description": "Domain example.com detected in 1 IAM policies",
   "content": {
      "domain": "example.com",
      "policyCount": 1,
      "policySearchQuery": "policy: example.com",
      "matchedPolicies" :[
         {
            "resource" :"//cloudresourcemanager.googleapis.com/projects/000000000000",
            "project" :"projects/000000000000",
            "matchedBindings" :[
               {
                  "role" :"roles/viewer",
                  "matchedMembers" :[
                     "user:example@example.com"
                  ]
               }
            ]
         }
      ]
   },
   "lastRefreshTime": "2024-01-30T00:00:00Z",
   "observationPeriod": "0s",
   "stateInfo": {
      "state": "ACTIVE"
   },
   "category": "SECURITY",
   "targetResources": [
      "//cloudresourcemanager.googleapis.com/organizations/000000000000"
   ],
   "insightSubtype": "EXTERNAL_MEMBER",
   "etag": "\"00000000000\"",
   "initialRefreshTime": "2024-01-30T00:00:00Z"
}

Interpréter les réponses des insights

En plus des attributs d'insight standards, les insights sur les éléments fournissent plusieurs sous-types et champs spécialisés.

Sous-types d'insight

Les sous-types d'insights associés aux éléments sont les suivants:

  • EXTERNAL_MEMBER : détecte les stratégies IAM contenant des utilisateurs ou des groupes appartenant à un domaine extérieur aux domaines de votre organisation.

  • EXTERNAL_POLICY_EDITOR : détecte les stratégies IAM contenant des utilisateurs ou des groupes en dehors des domaines de votre organisation autorisés à modifier les stratégies IAM.

  • EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER : détecte les stratégies IAM contenant des utilisateurs ou des groupes en dehors des domaines de votre organisation autorisés à obtenir ou à répertorier des objets de stockage (storage.objects.list ou storage.objects.get permission).

  • EXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR : détecte les stratégies IAM contenant des utilisateurs ou des groupes en dehors des domaines de votre organisation autorisés à emprunter l'identité des comptes de service.

  • TERMINATED_MEMBER: détecte les stratégies IAM contenant des utilisateurs ou des groupes avec des comptes désactivés, supprimés ou effacés définitivement.

  • PUBLIC_IAM_POLICY : détecte les stratégies IAM contenant tous les utilisateurs ou tous les utilisateurs authentifiés.

  • OWNER_TERMINATED_PROJECT: détecte les projets qui ne contiennent aucun utilisateur ou groupe actif dans la stratégie IAM du projet.

Champs de contenu supplémentaires

En plus des champs standards de la réponse, les insights sur les éléments fournissent plusieurs champs spécialisés dans le champ content.

  • user: adresse e-mail de l'utilisateur détectée dans les membres des liaisons de stratégie pour cet insight. Ce champ est inclus dans le sous-type TERMINATED_MEMBER.

  • domain: domaine détecté dans les membres des liaisons de stratégie de cet insight. Ce champ est inclus dans les sous-types EXTERNAL_MEMBER, EXTERNAL_POLICY_EDITOR, EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER et EXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR.

  • assetName: nom de l'élément pour lequel l'accès a été détecté dans cet insight. Ce champ est inclus dans les sous-types OWNER_TERMINATED_PROJECT et PUBLIC_IAM_POLICY.

  • policyCount: nombre total de stratégies IAM distinctes dans lesquelles des membres correspondants ont été détectés pour cet insight. Ce champ est inclus pour tous les sous-types d'insights sur les éléments.

  • matchedPolicies : échantillon de stratégies IAM correspondant à l'insight détecté. Les règles de correspondance n'incluent que le sous-ensemble de liaisons et de membres de liaison qui correspondent à l'insight détecté. Ce champ est inclus pour tous les sous-types d'insights sur les éléments.

  • policySearchQuery: requête pouvant être utilisée avec l'API de recherche de stratégies IAM inventaire des éléments cloud pour récupérer les stratégies pertinentes en temps réel.