Créer des buckets de stockage pour les projets

Cette page explique comment créer des buckets de stockage isolés (air-gapped) Google Distributed Cloud (GDC).

Avant de commencer

Un espace de noms de projet gère les ressources de bucket dans le serveur de l'API Management. Vous devez disposer d'un projet pour utiliser des buckets et des objets.

Vous devez également disposer des autorisations de bucket appropriées pour effectuer l'opération suivante. Consultez Accorder l'accès à un bucket.

Consignes de dénomination des buckets de stockage

Les noms de bucket doivent respecter les conventions de dénomination suivantes :

  • Être uniques dans le projet. Le serveur de l'API de gestion ajoute un préfixe unique au nom complet du bucket, ce qui évite les conflits au sein de l'organisation. Dans le cas peu probable d'un conflit entre un préfixe et un nom de bucket entre plusieurs organisations, la création du bucket échoue et une erreur "bucket name in use" (nom de bucket déjà utilisé) s'affiche.
  • Ne pas inclure d'informations permettant d'identifier l'utilisateur.
  • Être conformes au DNS.
  • Comporter entre 1 et 55 caractères.
  • Commencer par une lettre et n'utiliser que des lettres, des chiffres et des traits d'union.

Créer un bucket

Par défaut, les buckets utilisent la classe de stockage Standard. Si le stockage Nearline a été activé par votre opérateur d'infrastructure, vous pouvez également sélectionner la classe de stockage Nearline pour les données moins fréquemment consultées. Le stockage Nearline est compatible avec les buckets à zone unique et à double zone.

Console

  1. Dans le menu de navigation, cliquez sur Object Storage (Stockage d'objets).
  2. Dans le sélecteur de projet, sélectionnez le projet dans lequel vous souhaitez créer le bucket.
  3. Cliquez sur Create Bucket (Créer un bucket).
  4. Dans le flux de création de bucket, attribuez un nom unique à tous les buckets du projet.
  5. Saisissez une description.
  6. Sous Storage class (Classe de stockage), sélectionnez Standard ou Nearline. L'option Nearline n'est visible que si le stockage Nearline est activé.
  7. Facultatif : Cliquez sur le bouton bascule toggle_off pour définir une règle de conservation et saisissez le nombre de jours de votre choix. Contactez votre OI si vous devez dépasser les limites de la règle de conservation.
  8. Cliquez sur Create (Créer). Un message de confirmation s'affiche et vous êtes redirigé vers la page Buckets.

Pour vérifier que vous avez bien créé un bucket, actualisez la page Buckets après quelques minutes et vérifiez que l'état du bucket passe de Not ready à Ready.

API

Pour créer un bucket, appliquez une spécification de bucket à l'espace de noms de votre projet :

kubectl apply -f bucket.yaml

Voici un exemple de spécification de bucket utilisant la classe de stockage Standard :

apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: DESCRIPTION
  storageClass: Standard
  bucketPolicy:
    lockingPolicy:
      defaultObjectRetentionDays: RETENTION_DAY_COUNT

Voici un exemple de spécification de bucket utilisant la classe de stockage Nearline :

apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: DESCRIPTION
  storageClass: Nearline
  bucketPolicy:
    lockingPolicy:
      defaultObjectRetentionDays: RETENTION_DAY_COUNT

Voici un exemple de spécification de bucket avec la version de chiffrement v1 :

apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
  labels:
    object.gdc.goog/encryption-version: v1
spec:
  description: DESCRIPTION
  storageClass: Standard
  bucketPolicy:
    lockingPolicy:
      defaultObjectRetentionDays: RETENTION_DAY_COUNT

Pour en savoir plus, consultez la documentation de référence de l'API Bucket.

Voici un exemple de spécification de bucket à double zone dans l'API globale d'administrateur d'organisation :

apiVersion: object.global.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: PROJECT_NAME
spec:
  location: LOCATION_NAME
  description: Sample DZ Bucket
  storageClass: Standard

Pour créer un bucket à double zone à l'aide du stockage Nearline, définissez storageClass: Nearline.

Notez que seul le chiffrement V2 est compatible avec les buckets à double zone et que toutes les opérations de création, de mise à jour ou de suppression d'une ressource de bucket à double zone doivent être effectuées sur le serveur de l'API globale.

gdcloud

Pour créer un bucket à zone unique avec gdcloud à l'aide de la classe de stockage Nearline :

gdcloud storage buckets create BUCKET_NAME \
    --location=ZONE_NAME \
    --location-type=SingleZone \
    --storage-class=Nearline

Pour créer un bucket à double zone avec gdcloud à l'aide de l'emplacement global :

gdcloud storage buckets create BUCKET_NAME \
    --location=ZONE_1,ZONE_2 \
    --location-type=AsyncDualZone \
    --storage-class=Nearline

Si --storage-class est omis, Standard est utilisé par défaut.

Pour en savoir plus, consultez gdcloud storage buckets create.

Une fois le bucket créé, vous pouvez exécuter la commande suivante pour confirmer et vérifier les détails du bucket :

kubectl describe buckets BUCKET_NAME -n PROJECT_NAMESPACE

La section Status (État) comporte deux champs importants : Encryption (Chiffrement) (pour les détails de chiffrement) et Fully Qualified Name (Nom complet) (qui contient le FULLY_QUALIFIED_BUCKET_NAME).

Chiffrement v1

Les informations concernent l'AEADKey nommé obj-FULLY_QUALIFIED_BUCKET_NAME, qui sert de référence à la clé de chiffrement utilisée pour chiffrer les objets stockés dans le bucket. Voici un exemple :

Status:
  Encryption:
    Key Ref:
      Kind: AEADKey
      Name: obj-FULLY_QUALIFIED_BUCKET_NAME
      Namespace: PROJECT_NAMESPACE
    Type: CMEK

Chiffrement v2

Les informations concernent le secret nommé kek-ref-FULLY_QUALIFIED_BUCKET_NAME, qui sert de référence pour les AEADKeys par défaut actives. Les AEADKeys par défaut actives sont sélectionnées de manière aléatoire pour chiffrer les objets importés dans le bucket lorsqu'aucune AEADKey spécifique n'est spécifiée.

Voici un exemple :

Status:
  Encryption:
    Key Ref:
      Kind: Secret
      Name: kek-ref-FULLY_QUALIFIED_BUCKET_NAME
      Namespace: PROJECT_NAMESPACE
    Type: CMEK

Vous pouvez également exécuter la commande suivante pour vérifier que les AEADKeys nécessaires sont créées :

kubectl get aeadkeys -n PROJECT_NAMESPACE -l  cmek.security.gdc.goog/resource-name=FULLY_QUALIFIED_BUCKET_NAME