Crear segmentos de almacenamiento WORM

En esta página se explica cómo crear segmentos de almacenamiento WORM (Write Once Read Many) en entornos con air gap de Google Distributed Cloud (GDC). En este artículo se explican los requisitos previos y los pasos para crear un segmento WORM con un periodo de retención definido y para conceder permisos de acceso mediante vinculaciones de roles. Esta información te permite aplicar prácticas estrictas de conservación de datos e inmutabilidad, lo que proporciona un almacenamiento de datos sólido y conforme para registros y casos prácticos, como el registro de auditoría.

Esta página está dirigida a audiencias como los administradores de TI del grupo de operadores de infraestructura o los desarrolladores del grupo de operadores de aplicaciones que gestionan la conservación de datos y la configuración de cumplimiento de los contenedores de almacenamiento en entornos GDC aislados. Para obtener más información, consulta Audiencias de la documentación aislada de GDC.

Antes de empezar

Un espacio de nombres de proyecto gestiona los recursos de los contenedores en el servidor de la API Management. Debes tener un proyecto para trabajar con los contenedores y los objetos.

También debe tener los permisos de contenedor adecuados para realizar la siguiente operación. Consulta Conceder acceso a un contenedor.

En el caso de los contenedores de doble zona, configura kubectl para acceder al servidor de la API global. Sigue los pasos que se indican en Recursos del servidor de la API global y asigna el archivo kubeconfig a la variable de entorno GLOBAL_API_SERVER.

Crear un segmento WORM

Un segmento WORM asegura que nada sobrescriba los objetos y los conserva durante un periodo mínimo. El registro de auditoría es un ejemplo de caso práctico de un segmento WORM.

Sigue estos pasos para crear un segmento WORM:

  1. Configura un periodo de retención al crear el segmento. Por ejemplo, el siguiente cubo de ejemplo tiene un periodo de retención de 365 días.

    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. Asigna el rol project-bucket-object-viewer a todos los usuarios que necesiten acceso de solo lectura:

    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. Concede el rol project-bucket-object-admin a los usuarios que necesiten escribir contenido en el contenedor:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      namespace: foo-service
      name: object-write-access
    roleRef:
      kind: Role
      name: project-bucket-object-viewer
      apiGroup: rbac.authorization.k8s.io
    subjects:
    - kind: ServiceAccount
      namespace: foo-service
      name: foo-service-account