Criar buckets WORM de armazenamento para projetos

Esta página mostra como criar buckets de armazenamento WORM 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 realizar 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 birregionais, 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.

Criar um bucket WORM

Um bucket WORM garante que nada mais substitua objetos e os retenha por um período mínimo. O registro de auditoria é um exemplo de caso de uso para um bucket WORM.

Siga estas etapas para criar um bucket WORM:

  1. Defina um período de armazenamento ao criar o bucket. O período de armazenamento define quantos dias cada versão do objeto é bloqueada contra exclusão ou modificação. Esse período de armazenamento é diferente da duração mínima de armazenamento da classe de armazenamento (como o mínimo de 30 dias para a classe de armazenamento Standard). Por exemplo, o bucket a seguir define um período de armazenamento de 365 dias. Entre em contato com o operador de infraestrutura (IO) se precisar exceder os limites da política de retenção.

    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. Conceda o papel project-bucket-object-viewer a todos os usuários que precisam de acesso somente leitura:

    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. Conceda o papel project-bucket-object-admin aos usuários que precisam gravar conteúdo no 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