Vous pouvez copier les entrées de journal stockées dans des buckets de journaux Cloud Logging vers des buckets Cloud Storage pour faciliter les audits de sécurité, effectuer des analyses de données personnalisées ou archiver les entrées de journal historiques. L'opération de copie n'est pas destructive. Les entrées de journal restent dans le bucket de journaux source, et vous pouvez effectuer des copies entre différents projets Google Cloud .
Les opérations de copie acheminent rétroactivement les entrées de journal existantes à l'aide de la gcloud CLI. En revanche, les sinks acheminent automatiquement les entrées de journal correspondantes en temps réel à mesure qu'elles arrivent, mais ne peuvent pas acheminer les entrées de journal stockées avant la création du sink.
Limites
Les limites suivantes s'appliquent lors de la copie d'entrées de journal :
Vous ne pouvez copier les entrées de journal que dans des buckets Cloud Storage qui ne sont pas configurés pour Rapid Storage. Les autres destinations ne sont pas disponibles.
Vous ne pouvez pas copier d'entrées de journal à partir de buckets de journaux pour lesquels des clés de chiffrement gérées par le client (CMEK) sont configurées.
Avant de commencer
Avant de commencer à copier des entrées de journal, procédez comme suit :
- Vérifiez que vous utilisez la dernière version de la gcloud CLI. Pour savoir comment installer ou mettre à jour la gcloud CLI, consultez Gérer les composants de la Google Cloud CLI.
-
Pour obtenir les autorisations nécessaires pour copier des entrées de journal, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet contenant le bucket de journaux à partir duquel vous effectuez la copie :
-
Pour exécuter une opération de copie : Administrateur Logging (
roles/logging.admin) -
Pour afficher et gérer l'état d'une opération de copie : Rédacteur de configuration des journaux (
roles/logging.configWriter)
-
Pour exécuter une opération de copie : Administrateur Logging (
-
Pour obtenir les autorisations nécessaires pour écrire des entrées de journal dans Cloud Storage, demandez à votre administrateur de vous accorder le rôle IAM Créateur d'objets Storage (
roles/storage.objectCreator) sur le projet contenant le bucket Cloud Storage.
Copier les entrées de journal
Logging ne copie que les entrées de journal stockées dans le bucket de journaux au démarrage de l'opération de copie. Les entrées de journal stockées dans les buckets de journaux après le début de l'opération de copie ne sont pas copiées dans Cloud Storage.
Pour copier des entrées de journal dans Cloud Storage, vous devez disposer des informations suivantes :
- ID et emplacement du bucket de journaux à partir duquel vous effectuez la copie.
Pour récupérer l'ID de bucket de journaux et son emplacement, utilisez la commande gcloud CLI
gcloud logging buckets list. - Nom du bucket Cloud Storage vers lequel vous effectuez la copie. Pour savoir comment récupérer le nom du bucket Cloud Storage, consultez Obtenir des informations sur un bucket Cloud Storage.
- Un filtre pour les entrées de journal que vous souhaitez copier.
Pour copier des entrées de journal, exécutez la commande gcloud logging copy :
gcloud logging copy LOG_BUCKET_ID storage.googleapis.com/CLOUD_STORAGE_BUCKET_NAME \
--location=LOCATION --log-filter='FILTER' --project=PROJECT_ID
Avant d'exécuter la commande précédente, procédez comme suit :
- Remplacez LOG_BUCKET_ID par le nom de votre bucket de journaux.
- Remplacez CLOUD_STORAGE_BUCKET_NAME par le nom de votre bucket Cloud Storage.
- Remplacez LOCATION par l'emplacement du bucket de journaux.
(Facultatif) : remplacez FILTER par le filtre qui définit les entrées de journal à copier.
Si vous omettez l'option
--log-filter, toutes les entrées de journal du bucket de journaux sont copiées dans le bucket Cloud Storage.Remplacez PROJECT_ID par l'ID du projet Google Cloud . Vous pouvez omettre cette option lorsque la configuration gcloud CLI active est définie sur le projet Google Cloud approprié.
Exemple de commande :
gcloud logging copy my-log-bucket storage.googleapis.com/my-gcs-bucket \
--location=global --log-filter='timestamp > "2024-07-18T10:00:00.0Z"' \
--project=my-project
Cette commande crée une opération de longue durée à exécuter en arrière-plan et renvoie le nom de l'opération de copie et l'emplacement du bucket de journaux :
name: projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
L'emplacement de l'opération de copie est identique à celui du bucket de journaux à partir duquel vous effectuez la copie.
Afficher et gérer les opérations de copie
Vous pouvez afficher et gérer vos opérations de copie à l'aide des commandes gcloud logging operations, qui vous permettent de lister, d'afficher et d'annuler des opérations.
Les commandes suivantes nécessitent que vous spécifiiez l'emplacement de l'opération. Utilisez l'emplacement de votre bucket de journaux. Pour savoir comment trouver l'emplacement de votre bucket de journaux, consultez Afficher les détails d'un bucket.
Répertorier les opérations de copie
Vous pouvez lister les opérations de copie récentes, y compris les opérations planifiées, en cours, terminées, ayant échoué et annulées. Les opérations de copie récentes apparaissent dans les résultats jusqu'à 30 jours après l'heure de fin.
Pour répertorier les opérations de copie, exécutez la commande suivante :
gcloud logging operations list --location=LOCATION \
--operation-filter=request_type=CopyLogEntries \
--project=PROJECT_ID
Avant d'exécuter la commande précédente, procédez comme suit :
- Remplacez LOCATION par l'emplacement du bucket de journaux à partir duquel vous effectuez la copie.
- Remplacez PROJECT_ID par l'ID du projet Google Cloud .
La commande renvoie des informations sur l'opération de longue durée, y compris l'ID d'opération :
projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Afficher l'état d'une opération de copie
Vous pouvez récupérer l'état et d'autres métadonnées relatives aux opérations de copie, y compris :
startTime: horodatage indiquant la création de l'opération.endTime: horodatage indiquant la fin de l'opération.state: état de l'opération (planifiée, en cours d'exécution, annulée, échouée ou réussie).cancellation: indique si l'utilisateur a demandé l'annulation de l'opération.progress: progression estimée de l'opération (0-100 %).destination: nom du bucket Cloud Storage vers lequel l'opération copie les entrées de journal.filter: filtre spécifiant les entrées de journal à copier.name: nom du bucket de journaux à partir duquel l'opération copie les entrées de journal.logEntriesCopiedCount: nombre d'entrées de journal copiées dans le bucket Cloud Storage par l'opération.
Notez que tous les champs de métadonnées répertoriés ne s'appliquent pas à chaque opération de copie.
Par exemple, si une opération de copie est toujours en cours d'exécution, les métadonnées endTime ne s'appliquent pas à l'opération. Autre exemple : si l'option --log-filter=FILTER n'a pas été utilisée lors de l'exécution de la commande gcloud logging copy, les métadonnées filter ne s'appliquent pas à l'opération.
Pour obtenir des informations sur une opération de copie, exécutez la commande suivante :
gcloud logging operations describe OPERATION_ID \
--location=LOCATION --project=PROJECT_ID
Avant d'exécuter la commande précédente, procédez comme suit :
- Remplacez OPERATION_ID par l'ID de l'opération.
- Remplacez LOCATION par l'emplacement du bucket de journaux à partir duquel vous effectuez la copie.
- Remplacez PROJECT_ID par l'ID du projet Google Cloud .
La commande renvoie des métadonnées sur l'opération de copie. Par exemple, voici le résultat pour une opération en cours :
done: false
metadata:
`@type`: type.googleapis.com/google.logging.v2.CopyLogEntriesMetadata
progress: 75
destination: storage.googleapis.com/CLOUD_STORAGE_BUCKET_NAME
source: projects/PROJECT_ID/locations/LOCATION/buckets/LOG_BUCKET_ID
verb: copy
startTime: `2024-05-23T10:52:40.039751Z`
state: OPERATION_STATE_RUNNING
name: projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Annuler une opération de copie
Vous pouvez annuler une opération de copie en cours. Si vous annulez une opération de copie, toutes les entrées de journal copiées avant l'annulation de l'opération restent dans le bucket Cloud Storage.
Après l'annulation d'une opération de copie, Logging termine tous les processus en cours avant de finaliser l'annulation. Certaines entrées de journal peuvent donc persister dans Cloud Storage après l'annulation de l'opération.
Pour annuler une opération de copie, exécutez la commande suivante :
gcloud logging operations cancel OPERATION_ID \
--location=LOCATION --project=PROJECT_ID
Avant d'exécuter la commande précédente, procédez comme suit :
- Remplacez OPERATION_ID par l'ID de l'opération.
- Remplacez LOCATION par l'emplacement du bucket de journaux à partir duquel vous effectuez la copie.
- Remplacez PROJECT_ID par l'ID du projet Google Cloud .
Afficher les entrées de journal dans Cloud Storage
Pour savoir comment afficher et comprendre les entrées de journal que vous avez copiées dans Cloud Storage, consultez Afficher les entrées de journal acheminées vers Cloud Storage.
Quotas et limites
Toutes les opérations de copie prennent au moins une heure, quelle que soit la quantité de données copiées.
Pour copier un volume élevé, par exemple des pétaoctets, divisez la copie entre plusieurs opérations de copie à l'aide du champ timestamp de l'option --log-filter.
La commande de copie ne peut pas copier les entrées de journal dont la durée de conservation a expiré.
Dépannage
Cette section explique comment résoudre les problèmes lors de la copie d'entrées de journal.
Échec de l'écriture des données d'exportation
Lorsque vous affichez l'état d'une opération de copie à l'aide de gcloud logging operations describe, l'erreur suivante peut s'afficher :
done: true
error:
code: 7
message: Failed to write export data to the destination Cloud Storage bucket.
Cette erreur se produit lorsque Logging ne parvient pas à écrire ou à finaliser les fichiers journaux dans le bucket Cloud Storage de destination. L'écriture de fichiers exportés pendant l'opération peut échouer pour plusieurs raisons :
- Un périmètre de service VPC Service Controls bloque les requêtes adressées au bucket Cloud Storage de destination.
- Les autorisations IAM du compte qui a lancé l'opération de copie ont été modifiées ou révoquées pendant l'exécution de l'opération.
- L'opération de copie a duré suffisamment longtemps pour que les identifiants d'autorisation expirent.
- Le bucket Cloud Storage de destination utilise une CMEK, et la clé Cloud Key Management Service est désactivée ou l'agent de service Cloud Storage ne dispose pas des autorisations de chiffrement.
- Une nouvelle tentative d'écriture tente d'écraser un fichier existant qui ne peut pas être remplacé. Par exemple, si un lot d'exportation est relancé après un délai temporaire ou si une opération de copie est redémarrée, la nouvelle tentative peut essayer d'écraser un fichier déjà créé. Si ce fichier est protégé par une préservation d'objet active ou une règle de conservation verrouillée, Cloud Storage refuse l'écrasement.
- Le bucket de destination a été supprimé, est passé à l'état verrouillé ou le projet a dépassé son quota de ressources.
Pour résoudre ce problème, procédez comme suit :
Examinez VPC Service Controls : si votre organisation utilise VPC Service Controls, examinez Cloud Audit Logs pour détecter les refus de périmètre (
cloudaudit.googleapis.com/data_access). Le périmètre du bucket Cloud Storage de destination doit autoriser l'accès à partir du projet exécutant l'opération de copie, ou configurer une règle d'entrée et de sortie.Vérifiez les rôles IAM du bucket de destination : le compte qui a lancé l'opération de copie doit disposer du rôle Créateur d'objets Storage (
roles/storage.objectCreator) sur le bucket de destination.Vérifiez les clés de chiffrement gérées par le client (CMEK) : si le bucket de destination utilise des CMEK pour le chiffrement par défaut, vérifiez que la clé Cloud KMS est activée et que l'agent de service Cloud Storage dispose du rôle Chiffreur/Déchiffreur de CryptoKeys Cloud KMS (
roles/cloudkms.cryptoKeyEncrypterDecrypter) sur la clé.Divisez les opérations de copie volumineuses en intervalles de temps plus courts : pour éviter les délais avant expiration ou l'expiration des identifiants lors de la copie de volumes importants d'entrées de journal, divisez l'opération en lots plus petits. Pour diviser les entrées de journal en lots, utilisez le champ
timestampdans l'option--log-filter.Vérifiez qu'il n'existe aucun conflit de préservation à titre conservatoire ou de conservation d'objets : vérifiez que le bucket de destination ne contient pas d'objets au niveau du chemin de destination cible qui sont protégés par une préservation à titre conservatoire active ou une règle de conservation verrouillée.