Criar buckets de armazenamento para projetos

Esta página mostra como criar buckets de armazenamento isolados do Google Distributed Cloud (GDC).

Antes de começar

Os buckets de armazenamento são recursos com escopo para um projeto específico. O projeto funciona como um contêiner, agrupando seus buckets e permitindo o gerenciamento deles pelo servidor da API Management. Antes de executar as operações nesta página, crie um projeto ou selecione um em que você tenha permissões suficientes.

Papéis do IAM obrigatórios

Entre em contato com o administrador do projeto do IAM para solicitar os seguintes papéis no namespace do projeto:

  • Administrador de buckets do projeto (project-bucket-admin): cria, atualiza e exclui buckets de armazenamento.
  • Leitor de objetos de buckets do projeto (project-bucket-object-viewer): visualiza e verifica detalhes de buckets e objetos de armazenamento.

Para mais informações, consulte Conceder acesso ao bucket.

Preparar o ambiente

Para executar comandos no servidor da API Management ou no servidor da API global, faça o seguinte:

  1. Faça login e gere o arquivo kubeconfig para o servidor da API Management zonal, se você não tiver um.
  2. Para buckets de zona dupla, faça o seguinte:
    • Verifique com o operador de infraestrutura (IO, na sigla em inglês) se o recurso personalizado BucketLocationConfig foi criado para as zonas pareadas.
    • Gere o arquivo kubeconfig para o servidor da API global.

Diretrizes de nomenclatura de buckets de armazenamento

Os nomes de buckets precisam seguir estas convenções de nomenclatura:

  • Ser exclusivo no projeto. O servidor da API Management anexa um prefixo exclusivo ao nome totalmente qualificado do bucket, garantindo que não haja conflitos na organização. No caso improvável de um conflito de prefixo e nome de bucket entre organizações, a criação do bucket falha com um erro de "nome de bucket em uso".
  • Não inclua informações de identificação pessoal (PII).
  • Estar em conformidade com o DNS.
  • Ter pelo menos 1 e no máximo 55 caracteres.
  • Começar com uma letra e usar apenas letras, números e hífens.

Criar um bucket

Por padrão, os buckets usam a classe de armazenamento Standard. Se o Nearline Storage tiver sido ativado pelo operador de infraestrutura (IO), você também poderá selecionar a classe de armazenamento Nearline para dados acessados com menos frequência. O Nearline Storage é compatível com buckets de zona única e dupla.

Console

  1. No menu de navegação, clique em Object Storage.
  2. No seletor de projetos, selecione o projeto em que você quer criar o bucket.
  3. Clique em Criar bucket.
  4. No fluxo de criação de buckets, atribua um nome exclusivo a todos os buckets do projeto.
  5. Digite uma descrição.
  6. Em Classe de armazenamento, selecione Padrão ou Nearline. A opção Nearline só fica visível se o armazenamento Nearline estiver ativado.
  7. Opcional: clique na opção de alternância toggle_off para definir uma política de retenção e insira o número de dias preferido. Entre em contato com o IO se precisar exceder os limites da política de retenção.
  8. Clique em Criar. Uma mensagem de confirmação aparece e você é direcionado de volta à página Buckets.

Para verificar se você criou um novo bucket, atualize a página Buckets após alguns minutos e verifique se o estado do bucket é atualizado de Not ready para Ready.

API

Para criar um bucket zonal, aplique uma especificação de bucket ao namespace do projeto:

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f bucket.yaml

Confira a seguir um exemplo de especificação de bucket usando a classe de armazenamento 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

Confira a seguir um exemplo de especificação de bucket usando a classe de armazenamento 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

Confira a seguir um exemplo de especificação de bucket com a versão de criptografia como 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

Para mais detalhes, consulte a referência da API Bucket.

Confira a seguir um exemplo de especificação de bucket de zona dupla para o servidor da API global:

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

Para criar um bucket de zona dupla usando o Nearline Storage, defina storageClass: Nearline.

Somente a criptografia V2 é compatível com buckets de zona dupla, e todas as operações para criar, atualizar ou excluir um recurso de bucket de zona dupla precisam ser realizadas no servidor da API global.

Para criar um bucket de zona dupla, aplique a especificação no servidor da API global:

kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f bucket.yaml

gdcloud

Para criar um bucket de zona única com gdcloud usando a classe de armazenamento Nearline:

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

Para criar um bucket de zona dupla com gdcloud usando o local global:

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

Se --storage-class for omitido, Standard será usado por padrão.

Para mais detalhes, consulte gdcloud storage buckets create.

Depois de criar o bucket, execute o comando a seguir para confirmar e verificar os detalhes dele:

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG describe buckets BUCKET_NAME -n PROJECT_NAMESPACE

A seção Status tem dois campos importantes: Criptografia (para detalhes de criptografia) e Nome totalmente qualificado (que contém o FULLY_QUALIFIED_BUCKET_NAME).

Criptografia v1

As informações são sobre a AEADKey chamada obj-FULLY_QUALIFIED_BUCKET_NAME, que serve como referência à chave de criptografia usada para criptografar objetos armazenados no bucket. Veja um exemplo:

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

Criptografia v2

As informações pertencem ao Secret chamado kek-ref-FULLY_QUALIFIED_BUCKET_NAME, que atua como uma referência para AEADKeys padrão ativas. As AEADKeys padrão ativas são selecionadas aleatoriamente para criptografar objetos enviados ao bucket quando uma AEADKey específica não é especificada.

Veja um exemplo:

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

Você também pode executar o comando a seguir para verificar se as AEADKeys necessárias foram criadas:

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