top of page

Infraestructura Cloud Datacenter

Aquí tienes los pasos esenciales para configurar la infraestructura escalable en la nube.

Primer paso, crear una red privada.

Crea tu datacenter con 3 subnets en este caso, development, staging y production llamado jchcommunity

gcloud compute networks create [Nombre de tu red] --project=[Nombre de tu proyecto] --description=cloud\ data\ center\ one --subnet-mode=custom --mtu=1460 --bgp-routing-mode=regional --bgp-best-path-selection-mode=legacy 

gcloud compute networks subnets create development --project=[Nombre de tu proyecto] --description=development\ subnet --range=10.0.0.0/24 --stack-type=IPV4_ONLY --network=[Nombre de tu red] --region=northamerica-south1 

gcloud compute networks subnets create staging --project=[Nombre de tu proyecto] --description=QA\ Process --range=10.0.1.0/24 --stack-type=IPV4_ONLY --network=[Nombre de tu red] --region=us-west2 

gcloud compute networks subnets create production --project=[Nombre de tu proyecto] --description=all\ products --range=10.0.2.0/24 --stack-type=IPV4_ONLY --network=[Nombre de tu red] --region=us-west2

Diseño y planeación del almacenamiento


Primero determina el tipo de datos que los clientes van a almacenar (archivos, bases de datos, copias de seguridad, etc.), el volumen, el patrón de acceso y los requisitos de rendimiento y seguridad. En este caso, estaremos almacenando archivos.

Segundo la region en la cual estar ubicada la información en este caso utilizaremos us-east1 (South Carolina)

Y por último la arquitectura de los servicios de almacenamiento, centralizado o distribuido, hibrida, etc.

Aqui los pasos para crear un bucket en la nube de google cloud:


  1. Creamos un bucket llamado jchcommunitystore con gsutil y le pondremos los siguientes parametros:

    1. mb: Es el comando para "make bucket".

    2. -l us-east1: Define la ubicación del bucket como la región us-east1.

    3. -c standard: Establece la clase de almacenamiento por defecto como STANDARD.

    4. gs://jchcommunitystore/: Es el nombre del bucket que se va a crear.

gsutil mb -l us-east1 -c standard gs://[Nombre de tu Almacenamiento]/
  1. Configuración de políticas y seguridad, usamos gcloud alpha para establecer las etiquetas y asignar la opcion de borrado suave soft delete:

gcloud alpha storage buckets update gs://[Nombre de tu Almacenamiento]/ --labels=env=development --iam-policy-management=enforced --uniform-bucket-level-access --soft-delete-duration=7d
  1. Crear una estructura de carpetas dentro del bucket, (que en realidad son prefijos del nombre del objeto):

    1. publico/

    2. interno/

    3. confidencial/

    4. restringido/

  2. Configurar los Permisos de Acceso

    1. Con el control de acceso granular (fine-grained access control) que configuraste, puedes aplicar políticas de IAM directamente a cada carpeta.

  3. Permisos para la Carpeta publico/.

    1. Para que el público general pueda acceder a estos archivos y solo los empleados puedan subirlos, necesitas dos roles:

      1. Público general (lectura): Otorga el rol de roles/storage.objectViewer al "Usuario todo (allUsers)" para esta carpeta. Esto hace que los objetos sean públicamente visibles.

      2. Empleados (escritura/subida): Otorga un rol con permisos de escritura (como roles/storage.objectCreator) a un grupo de usuarios o a usuarios específicos.

gcloud storage objects add-iam-policy-binding gs://[Nombre de tu Almacenamiento]/publico --member='group:empleados@tuempresa.com' --role='roles/storage.objectCreator' --condition=None
  1. Permisos para la Carpeta interno/

    1. Para datos de uso diario, el acceso debe limitarse a los empleados.

      • Empleados (lectura/escritura): Otorga el rol de roles/storage.objectAdmin a un grupo de empleados para que puedan gestionar y acceder a los objetos.

      Línea de comando de ejemplo:

      Bash

gcloud storage objects add-iam-policy-binding gs://[Nombre de tu Almacenamiento]/interno --member='group:empleados@tuempresa.com' --role='roles/storage.objectAdmin' --condition=None
  1. Permisos para la Carpeta confidencial/

    1. Para información que requiere mayor protección, limita el acceso solo a un grupo selecto de empleados.

      • Grupo de liderazgo/gerencia: Otorga el rol roles/storage.objectAdmin a un grupo de seguridad específico.

      Línea de comando de ejemplo:

      Bash

gcloud storage objects add-iam-policy-binding gs://[Nombre de tu Almacenamiento]/confidencial --member='group:liderazgo@tuempresa.com' --role='roles/storage.objectAdmin' --condition=None
  1. Permisos para la Carpeta restringido/

    1. Para datos con implicaciones legales, el acceso debe ser extremadamente limitado.

      • Grupo de seguridad/legal: Otorga el rol roles/storage.objectAdmin únicamente a un grupo muy pequeño de personal autorizado.

      Línea de comando de ejemplo:

      Bash

gcloud storage objects add-iam-policy-binding gs://[Nombre de tu Almacenamiento]/restringido --member='group:legal@tuempresa.com' --role='roles/storage.objectAdmin' --condition=None

Consideraciones Adicionales


  • Jerarquía de Permisos: Los permisos de IAM se heredan. Un permiso a nivel de bucket (jchcommunitystore) anulará cualquier restricción que intentes aplicar a una subcarpeta. Por ello, es crucial que el control de acceso del bucket esté establecido de forma granular para que las políticas de carpeta funcionen.

  • Gestión de Accesos: Mantén los roles Storage Object Admin limitados, ya que otorgan control total sobre los objetos. Usa roles con menos privilegios como Storage Object Viewer y Storage Object Creator para un control más fino.

  • Pruebas: Después de configurar los permisos, prueba cada tipo de acceso con cuentas de prueba para asegurarte de que solo los usuarios correctos puedan acceder a los datos.


Usuarios de Prueba y Permisos de Acceso

Tipo de Usuario de Prueba

Rol y Acceso al Negocio

Carpeta (Prefijo) a Probar

Rol Mínimo de IAM (Google Cloud Storage)

Tareas de Prueba

Público (Externo)

Público general / Visitante.

publico/

roles/storage.objectViewer

Ver y descargar archivos. No debe poder subir, modificar o eliminar nada.

Colaborador (Empleado)

Actividades diarias del negocio (operaciones).

interno/

roles/storage.objectAdmin (a nivel de carpeta)

Subir, ver, modificar y eliminar archivos. Debe tener acceso denegado a las carpetas confidencial/ y restringido/.

Ejecutivo (Liderazgo)

Estrategia, finanzas y datos personales de clientes.

confidencial/

roles/storage.objectAdmin (a nivel de carpeta)

Subir, ver y administrar archivos. Debe poder acceder a interno/ y publico/, pero no debe acceder a restringido/.

Legal/Seguridad (Elite)

Datos con repercusiones legales o de mercado.

restringido/

roles/storage.objectAdmin (a nivel de carpeta)

Acceso total y exclusivo a esta carpeta. Debe ser el único en poder acceder a ella.

Guía para la Validación de Permisos


Para realizar las pruebas de forma efectiva, debes utilizar cuentas o identidades separadas para simular cada tipo de usuario y verificar dos cosas:


  1. Acceso Permitido (Positivo): El usuario debe ser capaz de realizar la acción esperada en su carpeta designada (por ejemplo, el Colaborador debe poder subir un archivo a interno).

  2. Acceso Denegado (Negativo): El usuario no debe poder realizar ninguna acción (ver, subir, eliminar) en las carpetas a las que no tiene acceso. Por ejemplo, el Ejecutivo no debe poder ver el contenido de la carpeta restringido.


Nota Importante: Recuerda que al usar el Control de Acceso Fino (Fine-grained access control), los permisos de las subcarpetas tienen prioridad sobre los permisos más amplios del bucket, lo cual es fundamental para que esta estructura funcione correctamente.


Comentarios


bottom of page