Prácticas recomendadas para habilitar Controles de Servicio de VPC

En este documento se describe el proceso recomendado para configurar y aplicar la protección de Controles de Servicio de VPC en tu Google Cloud organización.

Si habilitas Controles de Servicio de VPC sin cuidado, pueden surgir problemas con las aplicaciones que ya tengas y, en algunos casos, incluso provocar una interrupción del servicio. Te recomendamos que planifiques la habilitación cuidadosamente y que dejes tiempo suficiente para recoger datos, hacer pruebas y analizar los registros de infracciones. Asegúrate de que los participantes de tu equipo de operaciones de Controles de Servicio de VPC y de tu equipo de aplicaciones estén disponibles para llevar a cabo la tarea.

Para cada carga de trabajo o aplicación que incorpores a Controles de Servicio de VPC, debes repetir el proceso de habilitación.

Coordinar la comunicación

A menudo, el equipo de seguridad de la red o de habilitación de la nube lidera el esfuerzo de habilitación de Controles de Servicio de VPC. Te recomendamos que asignes a una persona para que cree y haga un seguimiento de las reuniones interdepartamentales, así como para que documente las tareas pendientes. Tus equipos colaboran en lo siguiente:

  • Google Cloud Patrones de acceso a las APIs
  • Identificación de infracciones de perímetros de servicio
  • Permitir el acceso al perímetro

Al igual que con los cortafuegos de red convencionales, el objetivo es identificar y permitir los flujos necesarios para el funcionamiento eficiente de las cargas de trabajo empresariales legítimas.

Documentar patrones de acceso y casos prácticos

Para iniciar el proceso de habilitación, identifique y documente claramente todos los patrones de acceso válidos. Los patrones de acceso son tipos de interacciones repetibles entre elementos que están fuera y dentro del perímetro. A continuación, se indican algunos patrones de acceso habituales:

  • Patrones de acceso a datos: los servicios que están fuera del perímetro almacenan o recuperan datos que se encuentran en el perímetro.
  • Patrones de acceso a recursos:
    • Los usuarios acceden a los proyectos del perímetro a través de la consola deGoogle Cloud .
    • Las herramientas o los servicios de terceros gestionan los recursos que se encuentran dentro del perímetro y acceden a ellos.
    • Los servicios o recursos que se encuentran dentro del perímetro acceden a las APIs de Google.
  • Patrones de acceso a endpoints:
    • Los usuarios acceden a los recursos del perímetro desde un dispositivo que gestiona tu organización.
    • Los recursos on-premise se comunican con los recursos que se encuentran dentro del perímetro.

Una vez que haya identificado los patrones de acceso de una carga de trabajo, identifique sus casos prácticos y clasifíquelos en uno de los patrones de acceso de la lista anterior. A continuación se indican algunos de los usos más habituales.

  • Los administradores de Cloud gestionan los proyectos que forman parte de un perímetro.
  • Los servicios de automatización, como Terraform, Jenkins y Microsoft Azure DevOps, que se encuentran fuera del perímetro gestionan el despliegue de recursos dentro del perímetro.
  • Los servicios de gestión de la configuración, como Ansible, Chef o Puppet, que se encuentran fuera del perímetro, gestionan la implementación y la configuración del software en los recursos que están dentro del perímetro.
  • Los servicios de monitorización y aplicación de la seguridad, como Forseti o SIEM, que se encuentran fuera del perímetro consumen datos o aplican las políticas de seguridad a un recurso que está dentro del perímetro.

En cada caso práctico, documenta lo siguiente:

  • El patrón de acceso
  • Los agentes que pueden activar el caso de uso
  • Condiciones que activan el caso práctico
  • Si el caso práctico es un patrón de acceso válido y se debe permitir
  • Cualquier suposición relacionada con el caso práctico

Para ver un ejemplo de patrón de acceso y una hoja de seguimiento de casos prácticos, consulta la plantilla de incorporación de Controles de Servicio de VPC: casos prácticos (PDF).

Hacer entrevistas

Realiza entrevistas con los equipos de carga de trabajo para hablar sobre los patrones de acceso y los casos prácticos que recojas de las plantillas de comunicación anteriores. A continuación, se incluyen ejemplos de preguntas que puedes hacer durante estas entrevistas:

  • ¿Consideras que tus casos prácticos son una prioridad para habilitar Controles de Servicio de VPC? Te recomendamos que solo tengas en cuenta las cargas de trabajo de primera prioridad para la habilitación inicial y que incorpores otras cargas de trabajo menos críticas después de proteger los recursos esenciales para la empresa.

  • ¿Puedes completar una ejecución exhaustiva de todos los casos prácticos? De esta forma, se activarán todas las situaciones posibles del perímetro para que puedas analizarlo por completo y confirmar que la aplicación funcionará correctamente después de aplicar el perímetro.

  • ¿Cuánto tiempo se tarda en ejecutar el caso práctico?

  • ¿Tienes previsto hacer algún cambio importante en esta carga de trabajo que pueda entrar en conflicto con la habilitación de Controles de Servicio de VPC? Las funciones de las cargas de trabajo deben estar en un estado estable antes de habilitar Controles de Servicio de VPC.

Preparar una prueba de funcionamiento

El modo de ejecución de prueba reduce la complejidad de probar la aplicación de Controles de Servicio de VPC, ya que identifica las infracciones sin interrumpir las aplicaciones. Puedes configurar una prueba como un perímetro independiente que registre todas las infracciones, pero que no bloquee nada. Puedes ejecutar cargas de trabajo mientras están en el perímetro de la prueba sin carga y generar registros de infracciones para analizarlos.

Para preparar el entorno de prueba, sigue estos pasos:

  1. Identifica todos los proyectos que cumplan los requisitos para formar parte del perímetro y completa el proceso de caso práctico y entrevista para esos proyectos.
  2. Crea un perímetro de prueba y añade todos los proyectos.
  3. En el perímetro de servicio de Controles de Servicio de VPC, vaya a Servicios restringidos > Servicios que proteger y añada todos los servicios admitidos.
  4. Crea un sumidero de registro agregado que envíe todos los registros a BigQuery o crea un sumidero de registro para cada proyecto que envíe los registros de prueba a un conjunto de datos de BigQuery común. Para consultar estos mensajes de registro e identificar las infracciones de Controles de Servicio de VPC, puedes usar una consulta SQL.

    Para crear un sumidero de registros que incluya todos los mensajes de registro relevantes de Controles de Servicio de VPC, usa el siguiente filtro:

    logName="projects/$PROJECT/logs/cloudaudit.googleapis.com%2Fpolicy"
    
  5. Para maximizar la seguridad, deniega el acceso a los servicios no admitidos. Configura el perímetro de forma que solo funcionen los servicios restringidos en él. Para ello, configura la lista de servicios accesibles en RESTRICTED-SERVICES.

  6. Si ya tiene una lista de IPs públicas, identidades, dispositivos de confianza, proyectos o redes de VPC permitidos, añádalos a una regla de entrada o a un nivel de acceso, según corresponda, en el perímetro de prueba. Permitir flujos legítimos conocidos ayuda a reducir el número de registros de infracciones y permite que los revisores se centren en los eventos en los que se pueden tomar medidas.

  7. Verifica que ninguna de las VPCs de los proyectos tenga una ruta de salida a Internet o a la IP virtual privada.

  8. Verifica que todas las VPCs tengan el DNS *.googleapis.com que apunte a restricted.googleapis.com.

    En Detalles de la zona, el nombre de DNS *.googleapis.com tiene restricted.googleapis.com en el campo Datos

Ejecutar casos prácticos

A la hora acordada, el equipo de la aplicación debe ejecutar su carga de trabajo en el proyecto dentro del perímetro de la prueba. Asegúrate de que tienes una cobertura completa de todo el código que pueda llamar a las APIs de Google. Cuando se haya completado la prueba, el equipo de revisión designado podrá analizar el registro de infracciones.

Analizar infracciones

Los registros de infracciones de pruebas contienen la mayor parte de la información que necesitas para determinar si una infracción de una aplicación requiere alguna acción, como añadir identidades o direcciones IP a la lista de permitidas del perímetro. Los datos de infracción se almacenan en la tabla de BigQuery cloudaudit_googleapis_com_policy. Estos son los elementos principales que se deben analizar para determinar si se ha producido una infracción:

  • El servicio protegido y el método de API al que se llama.
  • El proyecto dentro del perímetro que habría bloqueado la solicitud.
  • El correo de la identidad que llama a la API protegida.
  • La dirección IP de la persona que llama.
  • El tipo de infracción.

El siguiente ejemplo es una consulta de BigQuery que devuelve todos los detalles de las infracciones:

SELECT
receiveTimestamp, #time of violation
Resource.labels.service, #protected Google Cloud service being blocked
protopayload_auditlog.methodName, #method name being called
resource.labels.project_id as PROJECT, #protected project blocking the call
protopayload_auditlog.authenticationInfo.principalEmail, #caller identity
protopayload_auditlog.requestMetadata.callerIp, #caller IP
JSON_EXTRACT(protopayload_auditlog.metadataJson, '$.dryRun') as DRYRUN, #dry-run indicator
JSON_EXTRACT(protopayload_auditlog.metadataJson, '$.violationReason') as REASON, #reason for violation
protopayload_auditlog.metadataJson, #raw violation entry
FROM `BQ_DATASOURCE_NAME.cloudaudit_googleapis_com_policy_*`
where JSON_EXTRACT(protopayload_auditlog.metadataJson, '$.dryRun') = "true" #ensure these are dry-run logs

Consultar las infracciones pertinentes

Las siguientes estrategias pueden ayudarte a identificar las infracciones pertinentes:

  • Añade un calificador de marca de tiempo para el periodo en el que cada aplicación única ejecutó su caso práctico:

    WHERE receiveTimestamp >'2020-07-23 19:53:48.241317 UTC'
    
  • Añade un filtro para la convención de nomenclatura de identidades de cargas de trabajo o proyectos:

    WHERE where resource.labels.project_id like '%APPLICATION_NAME%'
    

Revisar los registros de infracciones

Cuando revises los registros de infracciones, determina si se cumplen las siguientes condiciones:

  • ¿Se espera que la identidad (correo electrónico) invoque las APIs protegidas?
  • ¿Se debe permitir que la persona que llama invoque la API desde fuera del perímetro?

Según los criterios anteriores, determina si debes permitir que la identidad, el dispositivo, la dirección IP, el intervalo de CIDR, el proyecto o la red accedan al perímetro desde fuera.

Es posible que algunas entradas tengan la dirección IP private. Esto indica que la llamada procede de la red de Google, ya sea de los propios servicios de Google o de una VPC de un proyecto que está fuera del perímetro. En el caso de los servicios de Google, como los writers de receptor de registro, debes añadir la cuenta de servicio de Google a una lista de permitidos.

Las entradas sin correos se deben a la redacción de Cloud Audit Logs para operaciones de solo lectura que se han denegado por falta de permisos de gestión de identidades y accesos. En estos casos, puede usar la dirección IP y los nombres de los recursos para comprender el origen del intento de acceso. Este tipo de intento de acceso puede deberse a un acceso accidental por parte de un usuario ajeno a tu organización. Por ejemplo, un usuario que escribe mal el nombre de un contenedor con un nombre parecido.

Si ves el tipo de infracción SERVICE_NOT_ALLOWED_FROM_VPC, es posible que la carga de trabajo esté usando un servicio compatible con Controles de Servicio de VPC, pero no se haya añadido a la lista de APIs protegidas. Por ejemplo, si IAM ha provocado una infracción de este tipo, el administrador debe añadir IAM a la lista de servicios accesibles ejecutando el siguiente comando de la CLI de Google Cloud:

gcloud access-context-manager perimeters update perimeter_test \
 --add-vpc-allowed-services=RESTRICTED-SERVICES,IAM.googleapis.com \
 --policy=1234567890

Puedes crear un panel de control de Looker Studio para revisar las infracciones. Para obtener más información, consulta el artículo Monitorizar las infracciones de Controles de Servicio de VPC en tu Google Cloud organización con Looker Studio. Antes, Looker Studio se llamaba Data Studio.

Siguientes pasos