Créer des buckets de stockage WORM

Cette page explique comment créer des buckets de stockage WORM (Write Once Read Many) dans des environnements Google Distributed Cloud (GDC) sous air gap. Elle couvre les prérequis et les étapes nécessaires pour créer un bucket WORM avec une période de conservation définie, et pour accorder des autorisations d'accès à l'aide de liaisons de rôle. Ces informations vous permettent d'appliquer des pratiques strictes de conservation et d'immuabilité des données, en fournissant un stockage de données robuste et conforme pour les enregistrements et les cas d'utilisation tels que la journalisation d'audit.

Cette page s'adresse à des audiences telles que les administrateurs informatiques du groupe d'opérateurs d'infrastructure ou les développeurs du groupe d'opérateurs d'applications qui gèrent les paramètres de conservation et de conformité des données pour les buckets de stockage dans les environnements GDC sous air gap. Pour en savoir plus, consultez la documentation sur les audiences pour GDC sous air gap.

Avant de commencer

Les buckets de stockage sont des ressources limitées à un projet spécifique. Le projet agit comme un conteneur, regroupant vos buckets et permettant leur gestion via le serveur d'API Management. Avant de pouvoir effectuer les opérations décrites sur cette page, vous devez créer un projet ou en sélectionner un existant pour lequel vous disposez des autorisations suffisantes.

Rôles IAM requis

Contactez votre administrateur de projet IAM pour demander les rôles suivants dans l'espace de noms de votre projet :

  • Administrateur de bucket de projet (project-bucket-admin) : créez, mettez à jour et supprimez des buckets de stockage.
  • Lecteur d'objets de bucket de projet (project-bucket-object-viewer) : affichez et vérifiez les détails des buckets et des objets de stockage.

Pour en savoir plus, consultez Accorder l'accès à un bucket.

Préparer votre environnement

Pour exécuter des commandes sur le serveur d'API de gestion ou le serveur d'API global, procédez comme suit :

  1. Connectez-vous et générez le fichier kubeconfig pour le serveur d'API de gestion zonale si vous n'en avez pas.
  2. Pour les buckets à deux zones, procédez comme suit :
    • Vérifiez auprès de votre opérateur d'infrastructure (OI) que la ressource personnalisée BucketLocationConfig a été créée pour vos zones appairées.
    • Générez le fichier kubeconfig pour le serveur d'API global.

Créer un bucket WORM

Un bucket WORM garantit que rien d'autre n'écrase les objets et les conserve pendant une période minimale. La journalisation d'audit est un exemple de cas d'utilisation d'un bucket WORM.

Pour créer un bucket WORM, procédez comme suit :

  1. Définissez une période de conservation lors de la création du bucket. La période de conservation définit le nombre de jours pendant lesquels chaque version d'objet est verrouillée contre la suppression ou la modification. Cette période de conservation est distincte de la durée de stockage minimale de la classe de stockage (par exemple, le minimum de 30 jours pour la classe de stockage Standard). Par exemple, le bucket suivant définit une période de conservation de 365 jours. Contactez votre opérateur d'infrastructure (OI) si vous devez dépasser les limites de la règle de conservation.

    apiVersion: object.gdc.goog/v1
    kind: Bucket
    metadata:
      name: foo-logging-bucket
      namespace: foo-service
    spec:
      description: "Audit logs for foo"
      storageClass: Standard
      bucketPolicy:
        lockingPolicy:
          defaultObjectRetentionDays: 365
    
  2. Accordez le rôle project-bucket-object-viewer à tous les utilisateurs qui ont besoin d'un accès en lecture seule :

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      namespace: foo-service
      name: object-readonly-access
    roleRef:
      kind: Role
      name: project-bucket-object-viewer
      apiGroup: rbac.authorization.k8s.io
    subjects:
    - kind: ServiceAccount
      namespace: foo-service
      name: foo-log-processor
    - kind: User
      name: bob@example.com
      apiGroup: rbac.authorization.k8s.io
    
  3. Accordez le rôle project-bucket-object-admin aux utilisateurs qui doivent écrire du contenu dans le bucket :

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      namespace: foo-service
      name: object-write-access
    roleRef:
      kind: Role
      name: project-bucket-object-admin
      apiGroup: rbac.authorization.k8s.io
    subjects:
    - kind: ServiceAccount
      namespace: foo-service
      name: foo-service-account