Journalisation d'audit VPC Service Controls

Ce document décrit les journaux d'audit créés par les contrôles de service VPC dans le cadre des journaux d'audit Cloud.

Présentation

Les servicesTrusted Cloud by S3NS génèrent des journaux d'audit pour vous aider à déterminer qui fait quoi, où et quand dans vos ressources Trusted Cloud .

Vos projets Trusted Cloud ne contiennent que les journaux d'audit des ressources directement intégrées au projet Trusted Cloud . Les autres ressources Trusted Cloud , telles que les dossiers, les organisations et les comptes de facturation, contiennent les journaux d'audit de l'entité elle-même.

Pour découvrir Cloud Audit Logs, consultez Présentation de Cloud Audit Logs. Pour en savoir plus sur le format des journaux d'audit, consultez la page Comprendre les journaux d'audit.

Journaux d'audit disponibles

Les types de journaux d'audit suivants sont disponibles pour les contrôles du service VPC :

  • Journaux d'audit des refus de règles

    Identifie les cas où l'accès d'un utilisateur ou d'un compte de service est refusé en raison d'une violation des règles de sécurité. Le nom du service et de la méthode dans les journaux d'audit des refus de règles indiquent les noms de la ressource à laquelle l'accès a été refusé à l'utilisateur ou au compte de service.

    Vous ne pouvez pas désactiver les journaux d'audit des refus de règles, Toutefois, vous pouvez ajouter les éléments suivants au filtre d'exclusion de votre récepteur _Default pour exclure les journaux d'audit des refus de règles : LOG_ID("cloudaudit.googleapis.com/policy"). Vous pouvez également désactiver le récepteur _Default pour Cloud Logging, ce qui empêche le routage des journaux vers le bucket _Default.

Pour obtenir une description plus complète des types de journaux d'audit, consultez la section Types de journaux d'audit.

Opérations auditées

Le tableau suivant récapitule les opérations d'API correspondant à chaque type de journal d'audit dans les contrôles du service VPC :

Catégorie de journal d'audit Méthodes VPC Service Controls
Journaux d'audit des refus de règles Les méthodes des services qui s'intègrent à VPC Service Controls sont compatibles.

Contenu des enregistrements du journal d'audit

Chaque enregistrement du journal d'audit contient des informations qui peuvent être classées en deux grandes catégories : les informations sur l'appel initial et les informations sur les violations des règles de sécurité. Ces informations sont fournies par l'API VPC Service Controls de la manière suivante :

Champ du journal d'audit Description
serviceName Service dont l'accès est limité par un périmètre de service. La requête adressée à ce service n'a pas respecté une vérification VPC Service Controls et a entraîné la création de ce journal d'audit.
methodName Nom de l'appel de méthode ayant entraîné la violation des règles de sécurité décrite dans l'enregistrement. Souvent, methodName est la méthode associée au service Trusted Cloud by S3NS spécifié dans le champ serviceName.
authenticationInfo.principalEmail Adresse e-mail de l'utilisateur ou du compte de service ayant émis la demande.
Il est possible que certaines adresses e-mail aient été masquées. Pour en savoir plus, consultez Identités des utilisateurs dans les journaux d'audit.
resourceName Ressource Trusted Cloud by S3NS spécifiée dans la requête d'origine du client. resourceName peut être un projet, un dossier, une organisation ou une ressource telle qu'un bucket Trusted Cloud by S3NS .
requestMetadata.callerIp

Adresse IP de l'appelant

Si l'appel provient d'Internet, requestMetadata.callerIp est une adresse IPv4 ou IPv6 publique.

Si l'appel provient d'une VM Compute Engine, requestMetadata.callerIp est une adresse IP de VM. L'adresse IP de la VM peut être une adresse IP interne ou externe.

Si l'appel provient du réseau de production interne de Google, la valeur de ce champ est private. Ce cas se produit lorsque l'appel est envoyé d'un service Trusted Cloud by S3NS à un autre.

request_metadata.caller_network Nom du réseau de l'appelant. Cette valeur n'est définie que si le projet hôte du réseau appartient à la même organisation ou au même projet que la ressource consultée. Trusted Cloud by S3NS Pour en savoir plus, consultez Réseaux VPC.
status État général du traitement d'une opération décrite dans l'enregistrement.
metadata Informations sur le non-respect des règles de sécurité.
metadata.resourceNames Noms des ressources impliquées dans la violation des règles de sécurité décrite dans l'enregistrement.
metadata.dryRun Valeur booléenne définie sur True si le journal d'audit concerne une vérification des règles en mode simulation. Pour en savoir plus, consultez Mode de simulation des périmètres de service.
metadata.vpcServiceControlsUniqueId Identifiant unique du non-respect de VPC Service Controls décrit dans l'enregistrement.
metadata.violationReason Raison de la violation. Par exemple, RESOURCE_NOT_IN_SAME_SERVICE_PERIMETER signifie que les ressources auxquelles vous accédez n'appartiennent pas au même périmètre de service.
metadata.securityPolicyInfo Nom du périmètre de service pour lequel la violation s'est produite et identifiant unique de l'organisation à laquelle appartient le périmètre.
metadata.egressViolations Une violation de sortie se produit généralement lorsqu'une requête échoue, car la source est protégée par un périmètre de service et la ressource cible se trouve en dehors du périmètre. La source peut être un projet ou un réseau VPC.
metadata.ingressViolations Type de non-respect. Cette infraction se produit souvent si la requête tente d'accéder à une ressource cible protégée par un périmètre de service. La source peut être un projet ou un réseau VPC. Ce champ contient une structure qui explique le non-respect des règles concernant l'entrée.
metadata.accessLevels Tous les niveaux d'accès correspondants de l'organisation appartenant à la même règle d'accès. Il est possible que ces niveaux d'accès ne soient pas spécifiés dans le périmètre concerné, ce qui peut entraîner une infraction NO_MATCHING_ACCESS_LEVEL.
metadata.intermediateServices Liste des services impliqués dans la chaîne de requête. Ce champ est vide pour les demandes initiées par l'utilisateur.
metadata.deviceState État de l'appareil qui crée la requête lorsque la règle relative à l'appareil est activée. La valeur par défaut de ce champ est Unknown.

Format des journaux d'audit

Les entrées des journaux d'audit comprennent les objets suivants :

  • L'entrée de journal proprement dite, qui est un objet de type LogEntry. Les champs utiles sont les suivants :

    • logName, qui contient l'ID de ressource et le type de journal d'audit
    • resource, qui contient la cible de l'opération auditée
    • timeStamp, qui indique l'heure à laquelle l'opération auditée a été effectuée
    • protoPayload, qui contient les informations auditées
  • Les données de journalisation d'audit, qui correspondent à un objet AuditLog inclus dans le champ protoPayload de l'entrée de journal

  • Un objet (facultatif) de type "informations d'audit propres au service". Pour les intégrations précédentes, cet objet est conservé dans le champ serviceData de l'objet AuditLog. Les intégrations ultérieures utilisent le champ metadata.

Pour en savoir plus sur les autres champs de ces objets, ainsi que sur leur interprétation, consultez la page Comprendre les journaux d'audit.

Nom du journal

Les noms des journaux Cloud Audit Logs incluent des identifiants de ressources qui désignent le projetTrusted Cloud ou toute autre entité Trusted Cloud dont ils dépendent, et permettent également de déterminer si les journaux contiennent des données de journalisation d'audit sur les activités d'administration, l'accès aux données, les refus de règles ou les événements système.

Voici les noms des journaux d'audit incluant des variables pour les identifiants de ressources :

   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Factivity
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Factivity
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy

Nom du service

Les journaux d'audit VPC Service Controls utilisent les noms de service des services qui s'intègrent à VPC Service Controls.

Pour obtenir la liste de tous les noms de service de l'API Cloud Logging et du type de ressource surveillée correspondant, consultez la section Mapper des services sur des ressources.

Types de ressources

Les journaux d'audit VPC Service Controls utilisent les types de ressources compatibles avec les services qui s'intègrent à VPC Service Controls.

Pour obtenir la liste de tous les types de ressources surveillées Cloud Logging et des informations descriptives, consultez la section Types de ressources surveillées.

Identités des appelants

L'adresse IP de l'appelant est conservée dans le champ RequestMetadata.caller_ip de l'objet AuditLog. Logging peut masquer certaines identités et adresses IP d'appelant.

Pour en savoir plus sur les informations masquées dans les journaux d'audit, consultez la section Identités des appelants dans les journaux d'audit.

Activer la journalisation d'audit

Les journaux d'audit pour les activités d'administration sont toujours activés. Vous ne pouvez pas les désactiver.

Autorisations et rôles

Les autorisations et les rôles IAM déterminent votre capacité à accéder aux données des journaux d'audit dans les ressources Trusted Cloud .

Lorsque vous déterminez quels autorisations et rôles spécifiques à Logging s'appliquent à votre cas d'utilisation, tenez compte des points suivants :

  • Le rôle Lecteur de journaux (roles/logging.viewer) vous donne un accès en lecture seule aux journaux d'audit des activités d'administration, des refus de règles et des événements système. Si vous ne disposez que de ce rôle, vous ne pouvez pas afficher les journaux d'audit d'accès aux données qui se trouvent dans le bucket _Default.

  • Le rôle Lecteur de journaux privés ((roles/logging.privateLogViewer) inclut les autorisations contenues dans roles/logging.viewer et permet également de lire les journaux d'audit d'accès aux données dans le bucket _Default.

    Notez que si ces journaux privés sont stockés dans des buckets définis par l'utilisateur, tout utilisateur autorisé à lire les journaux dans ces buckets peut lire les journaux privés. Pour en savoir plus sur les buckets de journaux, consultez la page Présentation du routage et du stockage.

Pour en savoir plus sur les autorisations et les rôles IAM qui s'appliquent aux données des journaux d'audit, consultez la page Contrôle des accès avec IAM.

Afficher les journaux

Vous pouvez interroger tous les journaux d'audit ou interroger les journaux selon leur nom de journal d'audit. Le nom du journal d'audit inclut l'identifiant de ressource du projet, du dossier, du compte de facturation ou de l'organisation Trusted Cloud pour lesquels vous souhaitez afficher les informations de journalisation d'audit. Vos requêtes peuvent spécifier des champs LogEntry indexés. Pour en savoir plus sur l'interrogation de vos journaux, consultez Créer des requêtes dans l'explorateur de journaux.

La plupart des journaux d'audit peuvent être consultés dans Cloud Logging à l'aide de la consoleTrusted Cloud , de la Google Cloud CLI ou de l'API Logging. Toutefois, pour les journaux d'audit liés à la facturation, vous ne pouvez utiliser que la Google Cloud CLI ou l'API Logging.

Console

Dans la console Trusted Cloud , vous pouvez utiliser l'explorateur de journaux pour récupérer les entrées du journal d'audit de votre projet, dossier ou organisation Trusted Cloud  :

  1. Dans la console Trusted Cloud , accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Logging.

  2. Sélectionnez un projet, un dossier ou une organisation Trusted Cloud existants.

  3. Pour afficher tous les journaux d'audit, saisissez l'une des requêtes suivantes dans le champ de l'éditeur de requête, puis cliquez sur Exécuter la requête :

    logName:"cloudaudit.googleapis.com"
    
    protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
    
  4. Pour afficher les journaux d'audit d'une ressource et d'un type de journal d'audit spécifiques, accédez au volet Générateur de requêtes et procédez comme suit :

    • Dans Type de ressource, sélectionnez la ressource Trusted Cloud dont vous souhaitez afficher les journaux d'audit.

    • Dans Nom du journal, sélectionnez le type de journal d'audit que vous souhaitez afficher :

      • Pour les journaux d'audit pour les activités d'administration, sélectionnez activity.
      • Pour les journaux d'audit des accès aux données, sélectionnez data_access.
      • Pour les journaux d'audit des événements système, sélectionnez system_event.
      • Pour les journaux d'audit des refus de règles, sélectionnez policy.
    • Cliquez sur Exécuter la requête.

    Si ces options ne sont pas visibles, cela signifie qu'aucun journal d'audit de ce type n'est disponible dans le projet, le dossier ou l'organisation Trusted Cloud .

    Si vous rencontrez des problèmes lors de la tentative d'affichage de journaux dans l'explorateur de journaux, consultez les informations de dépannage.

    Si vous souhaitez en savoir plus sur l'utilisation de l'explorateur de journaux pour effectuer des requêtes, consultez Créer des requêtes dans l'explorateur de journaux.

gcloud

La Google Cloud CLI fournit une interface de ligne de commande à l'API Logging. Indiquez un identifiant de ressource valide dans chacun des noms de journaux. Par exemple, si votre requête inclut un PROJECT_ID, l'identifiant de projet que vous spécifiez doit faire référence au projetTrusted Cloud actuellement sélectionné.

Pour lire les entrées de journal d'audit au niveau du projet Trusted Cloud , exécutez la commande suivante :

gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" \
    --project=PROJECT_ID

Pour lire les entrées de journal d'audit au niveau d'un dossier, exécutez la commande suivante :

gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" \
    --folder=FOLDER_ID

Pour lire les entrées de journal d'audit au niveau de l'organisation, exécutez la commande suivante :

gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" \
    --organization=ORGANIZATION_ID

Pour lire les entrées de journal d'audit au niveau de votre compte de facturation Cloud, exécutez la commande suivante :

gcloud logging read "logName : billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com" \
    --billing-account=BILLING_ACCOUNT_ID

Ajoutez l'option --freshness à votre commande pour lire les journaux datant de plus d'une journée.

Pour en savoir plus sur l'utilisation de la gcloud CLI, consultez gcloud logging read.

REST

Pour interroger les données de vos journaux à l'aide de l'API Cloud Logging, utilisez la méthode entries.list.

Exemples de requêtes

Pour utiliser les exemples de requêtes du tableau suivant, procédez comme suit :

  1. Remplacez les variables de l'expression de requête par vos propres informations de projet, puis copiez l'expression à l'aide de l'icône de presse-papiers .

  2. Dans la console Trusted Cloud , accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Logging.

  3. Activez Afficher la requête pour ouvrir le champ de l'éditeur de requête, puis collez l'expression dans le champ de l'éditeur de requête :

    Éditeur de requête dans lequel vous saisissez des exemples de requêtes.

  4. Cliquez sur Exécuter la requête. Les journaux correspondant à votre requête sont répertoriés dans le volet Résultats de la requête.

Pour rechercher des journaux d'audit pour VPC Service Controls, utilisez les requêtes suivantes dans l'explorateur de journaux :

Description de la requête Expression
Détails de l'infraction en fonction d'un ID de refus
log_id("cloudaudit.googleapis.com/policy") severity=ERROR
resource.type="audited_resource"
protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
protoPayload.metadata.vpcServiceControlsUniqueId="UNIQUE_ID" 

Remplacez UNIQUE_ID par l'ID unique du refus.

Cas de non-respect pour une adresse IP
log_id("cloudaudit.googleapis.com/policy")
severity=ERROR
resource.type="audited_resource"
protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
protoPayload.requestMetadata.callerIp="IP_ADDRESS"

Remplacez IP_ADDRESS par l'adresse IP de l'appelant.

Cas de non-respect pour un service
log_id("cloudaudit.googleapis.com/policy")
severity=ERROR
resource.type="audited_resource"
protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
protoPayload.serviceName="SERVICE_NAME"

Remplacez SERVICE_NAME par le nom du service restreint.

Modification du niveau d'accès à un périmètre
logName="organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity"
severity=NOTICE
protoPayload.serviceName="accesscontextmanager.googleapis.com"
protoPayload.methodName="google.identity.accesscontextmanager.v1.AccessContextManager.UpdateServicePerimeter"
-protoPayload.metadata.previousState:"ACCESS_LEVEL"
protoPayload.request.servicePerimeter.status.accessLevels:"ACCESS_LEVEL"

Remplacez ORGANIZATION_ID par l'ID numérique de votre organisation et ACCESS_LEVEL par le nom unique du niveau d'accès.

Opérations CRUD sur les périmètres
logName="organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity"
severity=NOTICE
protoPayload.serviceName="accesscontextmanager.googleapis.com"
protoPayload.methodName=~"google.identity.accesscontextmanager.v1.AccessContextManager.*ServicePerimeter"
protoPayload.request.servicePerimeter.name=~".*PERIMETER_NAME$"
 Remplacez PERIMETER_NAME par le nom du périmètre.
Opérations CRUD au niveau de l'accès
logName="organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity"
severity=NOTICE
protoPayload.serviceName="accesscontextmanager.googleapis.com"
protoPayload.methodName=~"google.identity.accesscontextmanager.v1.AccessContextManager.*AccessLevel"
protoPayload.request.accessLevel.name=~".*ACCESS_LEVEL$"
Créer et mettre à jour des opérations pour les règles d'entrée
logName="organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity"
protoPayload.serviceName="accesscontextmanager.googleapis.com"
protoPayload.methodName=~"google.identity.accesscontextmanager.v1.AccessContextManager.*ServicePerimeter"
protoPayload.request.servicePerimeter.status.ingressPolicies:"*"
Créer et mettre à jour des opérations pour les règles de sortie
logName="organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity"
protoPayload.serviceName="accesscontextmanager.googleapis.com"
protoPayload.methodName=~"google.identity.accesscontextmanager.v1.AccessContextManager.*ServicePerimeter"
protoPayload.request.servicePerimeter.status.egressPolicies:"*"

Acheminer les journaux d'audit

Vous pouvez acheminer les journaux d'audit vers des destinations compatibles de la même manière que vous pouvez acheminer d'autres types de journaux. Voici quelques raisons pour lesquelles vous pouvez acheminer vos journaux d'audit :

  • Pour conserver les journaux d'audit pendant une période plus longue ou pour utiliser des fonctionnalités de recherche plus puissantes, vous pouvez exporter des copies des journaux d'audit vers Cloud Storage, BigQuery ou Pub/Sub. Avec Pub/Sub, vous avez la possibilité d'acheminer vos journaux vers d'autres applications, d'autres dépôts et des organisations tierces.

  • Pour gérer les journaux d'audit à l'échelle de votre organisation, vous pouvez créer des récepteurs agrégés capables d'acheminer les journaux pour l'un ou l'ensemble des projets Trusted Cloud de l'organisation.

Pour obtenir des instructions sur l'acheminement des journaux, consultez la section Acheminer les journaux vers les destinations compatibles.