Impact : Importation de documents de l'API Gemini Discovery Engine par un utilisateur externe

Ce document décrit un type de résultat de détection de menace dans Security Command Center. Ces résultats sont générés par les détecteurs de menaces lorsqu'ils détectent une menace potentielle dans vos ressources cloud. Pour obtenir la liste complète des résultats de détection de menace disponibles, consultez cet index.

Présentation

Un compte principal externe à votre organisation a lancé l'importation d'un document dans un datastore Gemini Enterprise. Par défaut, les résultats sont classés dans le niveau de gravité moyen.

Event Threat Detection est la source de ce résultat.

Actions à mettre en place

Pour traiter ce résultat, procédez comme suit :

Étape 1 : Examiner les détails du résultat

  1. Ouvrez le résultat Impact: Gemini Discovery Engine API Document Import by External User comme indiqué dans Examiner un résultat. Le panneau des détails du résultat s'ouvre dans l'onglet Résumé.

  2. Dans l'onglet Résumé, examinez les informations des sections suivantes :

    • Risque détecté, en particulier les champs suivants :
      • Adresse e-mail du compte principal : adresse e-mail de l'utilisateur externe, du compte de service ou de l'agent IA qui a lancé l'importation du document.
      • Nom de la méthode : méthode d'API appelée (google.cloud.discoveryengine.v1.DocumentService.ImportDocuments).
    • Ressource concernée :
      • Nom complet de la ressource : nom de ressource complet du projet, du dossier ou de l'organisation où se trouve le datastore Gemini Enterprise.
    • Liens associés, en particulier les champs suivants :
      • URI Cloud Logging : lien vers les entrées de journal.
      • Méthode MITRE ATT&CK : lien vers la documentation MITRE ATT&CK.

Étape 2 : Vérifier les journaux

  1. Dans l'onglet Résumé du panneau de détails du résultat, cliquez sur le lien URI Cloud Logging pour ouvrir l'explorateur de journaux.
  2. Sur la page qui s'affiche, recherchez les opérations d'importation de documents Gemini Enterprise à l'aide des filtres suivants :
    • protoPayload.serviceName="discoveryengine.googleapis.com"
    • protoPayload.methodName="google.cloud.discoveryengine.v1.DocumentService.ImportDocuments"
  3. Inspectez protoPayload.request pour identifier le datastore cible (parent) et la source de données importée (gcsSource, bigquerySource ou inlineSource).

Étape 3 : Rechercher des méthodes d'attaque et de réponse

  1. Examinez les entrées du framework MITRE ATT&CK pour ce type de résultat : Manipulation de données : manipulation de données stockées.
  2. Pour élaborer votre plan de réponse, combinez les résultats de votre enquête aux recherches de MITRE.

Étape 4 : Mettre en œuvre votre réponse

Le plan de réponse suivant peut être adapté à ce résultat, mais il peut également avoir un impact sur vos opérations. Veillez à bien évaluer les informations que vous collectez dans votre enquête pour déterminer quelle est la meilleure réponse à apporter aux problèmes soulevés par les résultats.

  1. Contactez le propriétaire du projet contenant le datastore Gemini Enterprise concerné pour vérifier si l'importation a été autorisée. Si cette activité est autorisée (par exemple, un sous-traitant externe ou un domaine partenaire), ajoutez le domaine de l'utilisateur à la liste des domaines validés de votre organisation dans Cloud Identity ou Google Workspace.
  2. Révoquez les rôles IAM non autorisés accordés à des utilisateurs externes, des comptes de service ou des agents IA sur le projet ou les ressources Gemini Enterprise.
  3. Examinez et supprimez tous les documents non autorisés ou non fiables importés dans le datastore Gemini Enterprise pour éviter l'empoisonnement du datastore ou l'injection de prompt indirecte.
  4. Pour limiter l'ajout de comptes principaux externes à vos ressources, utilisez la contrainte de règle d'administration de partage restreint au domaine.

Pour obtenir des recommandations de réponse, consultez Répondre aux résultats de détection des menaces liées à l'IA.

Exemple de résultat JSON

Voici un exemple de résultat JSON, sans les valeurs par défaut.

{
  "finding": {
    "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/locations/global/findings/FINDING_ID",
    "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/locations/global",
    "resourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "state": "ACTIVE",
    "category": "Impact: Gemini Discovery Engine API Document Import by External User",
    "securityMarks": {
      "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/locations/global/findings/FINDING_ID/securityMarks"
    },
    "eventTime": "TIMESTAMP",
    "createTime": "TIMESTAMP",
    "severity": "MEDIUM",
    "canonicalName": "projects/PROJECT_NUMBER/sources/SOURCE_ID/locations/global/findings/FINDING_ID",
    "findingClass": "THREAT",
    "access": {
      "principalEmail": "PRINCIPAL_EMAIL",
      "callerIp": "IP_ADDRESS",
      "callerIpGeo": {
        "regionCode": "COUNTRY_CODE"
      },
      "userAgent": "USER_AGENT",
      "serviceName": "discoveryengine.googleapis.com",
      "methodName": "google.cloud.discoveryengine.v1.DocumentService.ImportDocuments",
      "principalSubject": "user:PRINCIPAL_EMAIL"
    },
    "mitreAttack": {
      "primaryTactic": "IMPACT",
      "additionalTactics": [
        "DEFENSE_EVASION",
        "PERSISTENCE"
      ]
    },
    "parentDisplayName": "Event Threat Detection",
    "domains": [
      {
        "category": "AI"
      }
    ],
    "logEntries": [
      {
        "cloudLoggingEntry": {
          "insertId": "INSERT_ID",
          "logId": "cloudaudit.googleapis.com/data_access",
          "resourceContainer": "projects/PROJECT_ID",
          "timestamp": "TIMESTAMP"
        }
      }
    ]
  },
  "resource": {
    "name": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "displayName": "PROJECT_ID",
    "type": "google.cloud.resourcemanager.Project",
    "cloudProvider": "GOOGLE_CLOUD_PLATFORM",
    "service": "cloudresourcemanager.googleapis.com",
    "gcpMetadata": {
      "project": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
      "projectDisplayName": "PROJECT_ID",
      "parent": "//cloudresourcemanager.googleapis.com/organizations/ORGANIZATION_ID",
      "parentDisplayName": "ORGANIZATION_DISPLAY_NAME",
      "organization": "organizations/ORGANIZATION_ID"
    },
    "resourcePath": {
      "nodes": [
        {
          "nodeType": "GCP_PROJECT",
          "id": "projects/PROJECT_NUMBER",
          "displayName": "PROJECT_ID"
        },
        {
          "nodeType": "GCP_ORGANIZATION",
          "id": "organizations/ORGANIZATION_ID"
        }
      ]
    },
    "resourcePathString": "organizations/ORGANIZATION_ID/projects/PROJECT_NUMBER"
  },
  "sourceProperties": {
    "sourceId": {
      "projectNumber": "PROJECT_NUMBER",
      "customerOrganizationNumber": "ORGANIZATION_ID"
    },
    "detectionCategory": {
      "ruleName": "gemini_enterprise_datastore_document_import_by_external_user"
    },
    "detectionPriority": "MEDIUM",
    "affectedResources": [
      {
        "gcpResourceName": "//discoveryengine.googleapis.com/projects/PROJECT_NUMBER/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ID/branches/0"
      },
      {
        "gcpResourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER"
      }
    ],
    "evidence": [
      {
        "sourceLogId": {
          "projectId": "PROJECT_ID",
          "resourceContainer": "projects/PROJECT_ID",
          "timestamp": {
            "seconds": "TIMESTAMP_SECONDS",
            "nanos": TIMESTAMP_NANOS
          },
          "insertId": "INSERT_ID",
          "logId": "cloudaudit.googleapis.com/data_access"
        }
      }
    ],
    "findingId": "FINDING_ID",
    "contextUris": {
      "mitreUri": {
        "displayName": "MITRE Link",
        "url": "https://attack.mitre.org/techniques/T1565/001/"
      },
      "cloudLoggingQueryUri": [
        {
          "displayName": "Cloud Logging Query Link",
          "url": "https://console.cloud.google.com/logs/query;query=timestamp%3D%22TIMESTAMP%22%0AinsertId%3D%22INSERT_ID%22?project=PROJECT_ID"
        }
      ]
    },
    "domains": [
      {
        "category": "AI"
      }
    ]
  }
}

Étapes suivantes