Utiliser l'obligation de conservation d'objets

Présentation

Cette page explique comment utiliser l'obligation de conservation d'un objet, en particulier la conservation par défaut des nouveaux objets et le placement d'obligations de conservations sur des objets spécifiques.

Autorisations requises

Avant d'utiliser cette fonctionnalité dans Cloud Storage, vous devez disposer des autorisations suffisantes pour afficher et mettre à jour les buckets et les objets dans Cloud Storage :

  • Si vous êtes propriétaire du projet contenant le bucket, vous disposez probablement des autorisations nécessaires.

  • Si vous utilisez IAM, vous devez disposer des autorisations storage.buckets.update, storage.buckets.get, storage.objects.update et storage.objects.get sur le bucket concerné. Consultez Utiliser les autorisations Cloud IAM pour savoir comment obtenir un rôle doté de ces autorisations, tel qu'Administrateur de l'espace de stockage.

  • Si vous utilisez des listes de contrôle d'accès (LCA), vous devez disposer de l'autorisation OWNER (propriétaire) sur le bucket et les objets qu'il contient. Pour savoir comment procéder, consultez Configurer des LCA.

Utiliser la propriété d'obligation de conservation basée sur des événements activée par défaut

Les tâches suivantes expliquent comment définir et afficher la propriété d'obligation de conservation basée sur des événements activée par défaut sur un bucket. Lorsque cette propriété est activée, une obligation de conservation basée sur des événements est automatiquement placée sur tout nouvel objet ajouté au bucket.

Paramétrer la propriété d'obligation de conservation basée sur des événements activée par défaut

Pour activer ou désactiver la propriété d'obligation de conservation basée sur des événements activée par défaut sur un bucket, procédez comme suit :

Console

  1. Dans la console Google Cloud , accédez à la page Buckets de Cloud Storage.

    Accéder à la page Buckets

  2. Dans la liste des buckets, cliquez sur le nom du bucket pour lequel vous souhaitez paramétrer par défaut la propriété d'obligation de conservation basée sur des événements.

  3. Sélectionnez l'onglet Protection en haut de la page.

    L'état actuel du bucket s'affiche dans la section Option d'obligation de conservation basée sur des événements activée par défaut.

  4. Dans la section Option d'obligation de conservation basée sur des événements activée par défaut, cliquez sur l'état actuel pour le modifier.

    L'état indique Activé ou Désactivé.

Pour savoir comment obtenir des informations détaillées sur les erreurs liées à l'échec des opérations Cloud Storage dans la console Google Cloud , consultez Dépannage.

Ligne de commande

Exécutez la commande gcloud storage buckets update avec le flag approprié :

gcloud storage buckets update gs://BUCKET_NAME FLAG

Où :

  • BUCKET_NAME correspond au nom du bucket concerné. Par exemple, my-bucket.

  • FLAG correspond soit à --default-event-based-hold pour activer les obligations de conservation d'objets basées sur des événements par défaut, soit à --no-default-event-based-hold pour les désactiver.

Bibliothèques clientes

C++

Pour en savoir plus, consultez la documentation de référence de Cloud Storage en langage C++.

Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour les bibliothèques clientes.

L'exemple suivant active les obligations de conservation basées sur des événements activées par défaut sur un bucket :

namespace gcs = ::google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& bucket_name) {
  StatusOr<gcs::BucketMetadata> original =
      client.GetBucketMetadata(bucket_name);
  if (!original) throw std::move(original).status();

  StatusOr<gcs::BucketMetadata> patched = client.PatchBucket(
      bucket_name,
      gcs::BucketMetadataPatchBuilder().SetDefaultEventBasedHold(true),
      gcs::IfMetagenerationMatch(original->metageneration()));
  if (!patched) throw std::move(patched).status();

  std::cout << "The default event-based hold for objects in bucket "
            << bucket_name << " is "
            << (patched->default_event_based_hold() ? "enabled" : "disabled")
            << "\n";
}

L'exemple suivant désactive les obligations de conservation basées sur des événements activées par défaut sur un bucket :

namespace gcs = ::google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& bucket_name) {
  StatusOr<gcs::BucketMetadata> original =
      client.GetBucketMetadata(bucket_name);

  if (!original) throw std::move(original).status();
  StatusOr<gcs::BucketMetadata> patched = client.PatchBucket(
      bucket_name,
      gcs::BucketMetadataPatchBuilder().SetDefaultEventBasedHold(false),
      gcs::IfMetagenerationMatch(original->metageneration()));
  if (!patched) throw std::move(patched).status();

  std::cout << "The default event-based hold for objects in bucket "
            << bucket_name << " is "
            << (patched->default_event_based_hold() ? "enabled" : "disabled")
            << "\n";
}

C#

Pour en savoir plus, consultez la documentation de référence de Cloud Storage en langage C#.

Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour les bibliothèques clientes.

L'exemple suivant active les obligations de conservation basées sur des événements activées par défaut sur un bucket :


using Google.Apis.Storage.v1.Data;
using Google.Cloud.Storage.V1;
using System;

public class EnableBucketDefaultEventBasedHoldSample
{
    public Bucket EnableBucketDefaultEventBasedHold(string bucketName = "your-unique-bucket-name")
    {
        var storage = StorageClient.Create();
        var bucket = storage.GetBucket(bucketName);
        bucket.DefaultEventBasedHold = true;
        bucket = storage.UpdateBucket(bucket);
        Console.WriteLine($"Default event-based hold was enabled for {bucketName}");
        return bucket;
    }
}

L'exemple suivant désactive les obligations de conservation basées sur des événements activées par défaut sur un bucket :


using Google.Apis.Storage.v1.Data;
using Google.Cloud.Storage.V1;
using System;

public class DisableDefaultEventBasedHoldSample
{
    public Bucket DisableDefaultEventBasedHold(string bucketName = "your-unique-bucket-name")
    {
        var storage = StorageClient.Create();
        var bucket = storage.GetBucket(bucketName);
        bucket.DefaultEventBasedHold = false;
        bucket = storage.UpdateBucket(bucket);
        Console.WriteLine($"Default event-based hold was disabled for {bucketName}");
        return bucket;
    }
}

Go

Pour en savoir plus, consultez la documentation de référence de Cloud Storage en langage Go.

Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour les bibliothèques clientes.

L'exemple suivant active les obligations de conservation basées sur des événements activées par défaut sur un bucket :

import (
	"context"
	"fmt"
	"io"
	"time"

	"cloud.google.com/go/storage"
)

// enableDefaultEventBasedHold sets event-based hold to true.
func enableDefaultEventBasedHold(w io.Writer, bucketName string) error {
	// bucketName := "bucket-name"
	ctx := context.Background()
	client, err := storage.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("storage.NewClient: %w", err)
	}
	defer client.Close()

	ctx, cancel := context.WithTimeout(ctx, time.Second*10)
	defer cancel()

	bucket := client.Bucket(bucketName)
	bucketAttrsToUpdate := storage.BucketAttrsToUpdate{
		DefaultEventBasedHold: true,
	}
	if _, err := bucket.Update(ctx, bucketAttrsToUpdate); err != nil {
		return fmt.Errorf("Bucket(%q).Update: %w", bucketName, err)
	}
	fmt.Fprintf(w, "Default event-based hold was enabled for %v\n", bucketName)
	return nil
}

L'exemple suivant désactive les obligations de conservation basées sur des événements activées par défaut sur un bucket :

import (
	"context"
	"fmt"
	"io"
	"time"

	"cloud.google.com/go/storage"
)

// disableDefaultEventBasedHold sets event-based hold to false.
func disableDefaultEventBasedHold(w io.Writer, bucketName string) error {
	// bucketName := "bucket-name"
	ctx := context.Background()
	client, err := storage.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("storage.NewClient: %w", err)
	}
	defer client.Close()

	ctx, cancel := context.WithTimeout(ctx, time.Second*10)
	defer cancel()

	bucket := client.Bucket(bucketName)
	bucketAttrsToUpdate := storage.BucketAttrsToUpdate{
		DefaultEventBasedHold: false,
	}
	if _, err := bucket.Update(ctx, bucketAttrsToUpdate); err != nil {
		return fmt.Errorf("Bucket(%q).Update: %w", bucketName, err)
	}
	fmt.Fprintf(w, "Default event-based hold was disabled for %v\n", bucketName)
	return nil
}

Java

Pour en savoir plus, consultez la documentation de référence de Cloud Storage en langage Java.

Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour les bibliothèques clientes.

L'exemple suivant active les obligations de conservation basées sur des événements activées par défaut sur un bucket :


import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.Storage.BucketTargetOption;
import com.google.cloud.storage.StorageException;
import com.google.cloud.storage.StorageOptions;

public class EnableDefaultEventBasedHold {
  public static void enableDefaultEventBasedHold(String projectId, String bucketName)
      throws StorageException {
    // The ID of your GCP project
    // String projectId = "your-project-id";

    // The ID of your GCS bucket
    // String bucketName = "your-unique-bucket-name";

    Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService();
    // first look up the bucket, so we will have its metageneration
    Bucket bucket = storage.get(bucketName);
    storage.update(
        bucket.toBuilder().setDefaultEventBasedHold(true).build(),
        BucketTargetOption.metagenerationMatch());

    System.out.println("Default event-based hold was enabled for " + bucketName);
  }
}

L'exemple suivant désactive les obligations de conservation basées sur des événements activées par défaut sur un bucket :


import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.Storage.BucketTargetOption;
import com.google.cloud.storage.StorageException;
import com.google.cloud.storage.StorageOptions;

public class DisableDefaultEventBasedHold {
  public static void disableDefaultEventBasedHold(String projectId, String bucketName)
      throws StorageException {
    // The ID of your GCP project
    // String projectId = "your-project-id";

    // The ID of your GCS bucket
    // String bucketName = "your-unique-bucket-name";

    Storage storage =