Crea bucket di archiviazione per i progetti

Questa pagina mostra come creare bucket di archiviazione air-gapped di Google Distributed Cloud (GDC).

Prima di iniziare

I bucket di archiviazione sono risorse con ambito ristretto a un progetto specifico. Il progetto funge da container, raggruppando i bucket e consentendone la gestione tramite il server API di gestione. Prima di poter eseguire le operazioni descritte in questa pagina, devi creare un nuovo progetto o selezionarne uno esistente in cui disponi di autorizzazioni sufficienti.

Ruoli IAM richiesti

Contatta l'amministratore del progetto IAM per richiedere i seguenti ruoli nello spazio dei nomi del progetto:

  • Project Bucket Admin (project-bucket-admin): crea, aggiorna ed elimina i bucket di archiviazione.
  • Project Bucket Object Viewer (project-bucket-object-viewer): visualizza e controlla i dettagli dei bucket e degli oggetti di archiviazione.

Per saperne di più, consulta Concedere l'accesso ai bucket.

Prepara l'ambiente

Per eseguire comandi sul server API di gestione o sul server API globale:

  1. Accedi e genera il file kubeconfig per il server API di gestione a livello di zona, se non ne hai uno.
  2. Per i bucket a doppia zona:
    • Verifica con l'operatore dell'infrastruttura (IO) che la risorsa personalizzata BucketLocationConfig sia stata creata per le zone accoppiate.
    • Genera il file kubeconfig per il server API globale.

Linee guida per la denominazione dei bucket di archiviazione

I nomi dei bucket devono rispettare le seguenti convenzioni di denominazione:

  • Devono essere univoci all'interno del progetto. Il server API di gestione antepone un prefisso univoco al nome completo del bucket, assicurandosi che non ci siano conflitti all'interno dell'organizzazione. Nell'improbabile caso di un conflitto tra prefisso e nome del bucket tra le organizzazioni, la creazione del bucket non riesce e viene visualizzato l'errore "bucket name in use" (nome del bucket in uso).
  • Non includere informazioni che consentono l'identificazione personale (PII).
  • Devono essere conformi al DNS.
  • Devono avere almeno 1 e non più di 55 caratteri.
  • Devono iniziare con una lettera e contenere solo lettere, numeri e trattini.

Crea un bucket

Per impostazione predefinita, i bucket utilizzano la classe di archiviazione Standard. Se Nearline Storage è stato abilitato dall'operatore dell'infrastruttura (IO), puoi selezionare anche la classe di archiviazione Nearline per i dati a cui si accede meno frequentemente. Nearline Storage è supportato sia per i bucket a zona singola sia per quelli a doppia zona.

Console

  1. Nel menu di navigazione, fai clic su Object Storage.
  2. Nel selettore di progetti, seleziona il progetto in cui vuoi creare il bucket.
  3. Fai clic su Crea bucket.
  4. Nel flusso di creazione del bucket, assegna un nome univoco a tutti i bucket all'interno del progetto.
  5. Inserisci una descrizione.
  6. In Classe di archiviazione, seleziona Standard o Nearline. L'opzione Nearline è visibile solo se l'archiviazione Nearline è abilitata.
  7. (Facoltativo) Fai clic sul pulsante di attivazione/disattivazione toggle_off per impostare una policy di conservazione e inserisci il numero di giorni che preferisci. Contatta l'IO se devi superare i limiti della policy di conservazione.
  8. Fai clic su Crea. Viene visualizzato un messaggio di operazione riuscita e viene visualizzata di nuovo la pagina Bucket.

Per verificare di aver creato correttamente un nuovo bucket, aggiorna la pagina Bucket dopo qualche minuto e controlla che lo stato del bucket passi da Not ready a Ready.

API

Per creare un bucket a livello di zona, applica una specifica del bucket allo spazio dei nomi del progetto:

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f bucket.yaml

Di seguito è riportato un esempio di specifica del bucket che utilizza la classe di archiviazione 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

Di seguito è riportato un esempio di specifica del bucket che utilizza la classe di archiviazione 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

Di seguito è riportato un esempio di specifica del bucket con la versione di crittografia 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

Per maggiori dettagli, consulta il riferimento API Bucket.

Di seguito è riportato un esempio di specifica del bucket a doppia zona per il server API globale:

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

Per creare un bucket a doppia zona utilizzando Nearline Storage, imposta storageClass: Nearline.

Tieni presente che per i bucket a doppia zona è supportata solo la crittografia V2 e tutte le operazioni per la creazione, l'aggiornamento o l'eliminazione di una risorsa bucket a doppia zona devono essere eseguite sul server API globale.

Per creare un bucket a doppia zona, applica la specifica al server API globale:

kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f bucket.yaml

gdcloud

Per creare un bucket a zona singola con gdcloud utilizzando la classe di archiviazione Nearline:

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

Per creare un bucket a doppia zona con gdcloud utilizzando la località globale:

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

Se --storage-class viene omesso, viene utilizzato Standard per impostazione predefinita.

Per maggiori dettagli, consulta gdcloud storage buckets create.

Dopo aver creato il bucket, esegui il seguente comando per confermare e controllare i dettagli del bucket:

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG describe buckets BUCKET_NAME -n PROJECT_NAMESPACE

La sezione Stato contiene due campi importanti: Crittografia (per i dettagli della crittografia) e Nome completo (che contiene FULLY_QUALIFIED_BUCKET_NAME).

Crittografia v1

Le informazioni riguardano AEADKey denominata obj-FULLY_QUALIFIED_BUCKET_NAME, che funge da riferimento alla chiave di crittografia utilizzata per criptare gli oggetti archiviati nel bucket. Ecco un esempio:

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

Crittografia v2

Le informazioni riguardano il secret denominato kek-ref-FULLY_QUALIFIED_BUCKET_NAME, che funge da riferimento per le AEADKey predefinite attive. Le AEADKey predefinite attive vengono selezionate in modo casuale per criptare gli oggetti caricati nel bucket quando non viene specificata una AEADKey specifica.

Ecco un esempio:

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

Puoi anche eseguire il seguente comando per verificare che le AEADKey necessarie siano state create:

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