Criar buckets WORM de armazenamento para projetos

Nesta página, mostramos como criar buckets WORM de armazenamento do Google Distributed Cloud (GDC) com isolamento físico.

Antes de começar

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

Papéis necessários do IAM

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

  • Administrador de projetos de bucket (project-bucket-admin): criar, atualizar e excluir buckets de armazenamento.
  • Leitor de projetos de objetos de bucket (project-bucket-object-viewer): visualizar e verificar 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 de gerenciamento ou no servidor da API global, faça o seguinte:

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

Criar um bucket WORM

Um bucket WORM garante que nada mais substitua os objetos e os retém por um período mínimo. A geração de registros de auditoria é um exemplo de caso de uso de 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 por quantos dias cada versão do objeto fica 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