Saltar a contenido

Tarea 10 min de lectura

Conectar Google Cloud a su inventario de activos

El conector de Google Cloud lee los recursos expuestos a Internet de sus proyectos de Google Cloud y los mantiene en el inventario de activos de Ostorlab, para que pueda analizarlos y hacerles seguimiento como parte de su superficie de ataque. Solo necesita acceso de lectura.

¿Qué recopila el conector?

Todo se lee a través de Cloud Asset Inventory, proyecto por proyecto. Las direcciones privadas se omiten.

Recurso Qué se conserva
Instancias de Compute Engine Instancias con una dirección IPv4 o IPv6 externa
Direcciones reservadas Direcciones externas regionales y globales
Reglas de reenvío Reglas regionales y globales con esquema de balanceo de carga externo
Cloud DNS Zonas administradas públicas y sus conjuntos de registros (los registros comodín se omiten)

Solo se importan los recursos indicados arriba; Cloud Run, Cloud Functions, GKE y otros servicios no se recopilan.

Cada proyecto se convierte en un nodo cloud que es el padre de los demás nodos del proyecto. Las direcciones IP públicas y los nombres de host que expone un recurso se convierten en activos de IP y de dominio normales, que el resto de la plataforma puede analizar.

¿Qué necesito antes de empezar?

  • Un plan de Ostorlab que incluya integraciones. De lo contrario, Ostorlab responde «Your organisation does not have the necessary permissions to run this integration.»
  • El ID del proyecto que alojará la cuenta de servicio (el ID del proyecto, no su nombre para mostrar).
  • gcloud autenticado como propietario de ese proyecto, por ejemplo en Cloud Shell. Para un conector de toda la organización, también como propietario de la organización.
  • Para un conector de toda la organización, el ID numérico de la organización.
  • Un propietario de Ostorlab para los activos importados. Cree uno antes si es necesario.

Configurar el acceso en Google Cloud

Abra Library > Integrations, seleccione la categoría Nube y después la tarjeta Google Cloud. La pestaña Configuración empieza con Paso 1: prepare su proyecto de Google Cloud.

Categoría Nube con la tarjeta de Google Cloud

Los dos botones de descarga entregan un archivo llamado ostorlab-gcp-connector.sh; las versiones de suplantación y de clave son idénticas salvo por el último paso. Se recomienda la suplantación de la cuenta de servicio: ninguna clave sale de su organización.

Paso de configuración con los botones de descarga

Opción 1: suplantación de cuenta de servicio (recomendado)

  1. En el Paso 1, haga clic en Suplantación de cuenta de servicio: descargar el archivo de configuración. El bloque Parámetros a utilizar muestra ostorlab_service_account, la cuenta de servicio que Ostorlab crea para su organización, y los roles que concede el script.
  2. Abra Cloud Shell, suba el script y ejecútelo para un proyecto:

    PROJECT_ID=<project id> bash ostorlab-gcp-connector.sh
    

    Para leer todos los proyectos de una organización, conceda los roles a nivel de organización:

    ORGANIZATION_ID=<organization id> PROJECT_ID=<project id> bash ostorlab-gcp-connector.sh
    
  3. El script muestra el correo de la cuenta de servicio, ostorlab-cloud-connector@<project id>.iam.gserviceaccount.com. Cópielo.

El script:

  • habilita las API cloudresourcemanager.googleapis.com, cloudasset.googleapis.com e iamcredentials.googleapis.com en el proyecto, y nada más;
  • crea la cuenta de servicio ostorlab-cloud-connector en el proyecto;
  • le concede roles/cloudasset.viewer y roles/browser, en el proyecto o en la organización;
  • concede a la cuenta de servicio de Ostorlab (ostorlab_service_account) el rol roles/iam.serviceAccountTokenCreator sobre la nueva cuenta de servicio, para que Ostorlab pueda suplantarla sin ninguna clave.

Volver a ejecutar el script es seguro: reutiliza la cuenta de servicio si existe y reintenta mientras Google propaga la nueva cuenta.

Opción 2: clave de cuenta de servicio

Use este método cuando la suplantación no sea una opción.

  1. En el Paso 1, haga clic en Clave de cuenta de servicio: descargar el archivo de configuración.
  2. Ejecute el mismo comando que arriba en Cloud Shell. En lugar de la concesión del rol de creador de tokens, el script crea un archivo de clave JSON, ostorlab-cloud-connector-key.json.
  3. Copie el contenido del archivo completo para el formulario del conector y después elimine el archivo de su equipo.
  4. Para rotar la clave, vuelva a ejecutar el script y actualice el conector con la nueva clave. Después liste las claves para encontrar el ID de la anterior y elimínela. El script nunca elimina una clave anterior:

    gcloud iam service-accounts keys list --iam-account <service account email>
    gcloud iam service-accounts keys delete <previous key id> --iam-account <service account email>
    

Tip

La clave JSON se cifra en reposo y no vuelve a mostrarse en Ostorlab.

Añadir el conector

  1. En la pestaña Configuración, bajo Paso 2: conectores de Google Cloud, haga clic en Añadir conector (o Añadir otro conector).

    Botón Añadir otro conector

  2. Complete el formulario y haga clic en Crear.

    Formulario de añadir conector con el correo de la cuenta de servicio resaltado

Campo Qué introducir
Nombre Un nombre único en su organización, por ejemplo GCP Producción.
ID de proyecto El ID del proyecto de Google Cloud: de 6 a 30 letras minúsculas, dígitos o guiones, empezando por una letra y terminando en una letra o un dígito.
ID de organización (opcional) El número de organización de Google Cloud. Si se indica, se recopilan todos los proyectos activos de la organización.
Credencial Suplantación de cuenta de servicio o Clave de cuenta de servicio.
Correo de la cuenta de servicio Solo método de suplantación. El correo que muestra el script.
Clave JSON de la cuenta de servicio Solo método de clave. El archivo de clave JSON completo.
Propietario Obligatorio. Los activos importados se asocian a este propietario.
Ubicación Ubicación opcional de los activos importados.
Activo La sincronización programada omite los conectores inactivos.

Probar la conexión

Haga clic en Probar conexión en la fila del conector. La prueba lee de su proyecto sin importar nada.

Acción Probar conexión

Se ejecutan cuatro comprobaciones:

Comprobación Qué verifica
Credenciales Ostorlab obtuvo un token de Google para la cuenta de servicio (suplantada, o a partir de la clave guardada).
Permisos Cloud Asset Inventory lista los proyectos del ámbito.
Ámbitos Los proyectos que se leerán: su proyecto, o todos los proyectos activos de la organización. La comprobación falla si el proyecto no está activo o no se puede leer.
Recurso de muestra Ostorlab lee la primera dirección externa reservada del ámbito. La comprobación también se supera si no hay ninguna reservada.

Si una comprobación falla, las siguientes también aparecen como omitidas o fallidas: corrija primero la primera comprobación fallida.

Prueba de conexión con cuatro comprobaciones superadas

Sincronizar el conector

Cada conector activo se sincroniza automáticamente cada doce horas. Para importar de inmediato, haga clic en Sincronizar ahora en la fila del conector.

Acción Sincronizar ahora

Una notificación confirma el trabajo (Sincronización iniciada (trabajo ...)). Una sincronización se rechaza si el conector está inactivo o si ya hay una sincronización del mismo conector en curso.

Notificación de sincronización iniciada

Leer las ejecuciones de sincronización y los errores

Haga clic en Sincronizaciones recientes para ver las ejecuciones de un conector.

Diálogo de sincronizaciones recientes

Columna Significado
Estado En curso, Correcto, Parcial (algunos proyectos fallaron, el resto se importó) o Fallido (la sincronización no pudo completarse, por ejemplo porque Google rechazó el token).
Recursos Recursos encontrados en esta ejecución.
Creados, Actualizados Activos y nodos nuevos y modificados. El recuento de creados incluye los activos de IP y de nombre de host además de los nodos.
Obsoletos Recursos que el conector etiquetó como cloud:stale porque no se vieron en esta ejecución.
Errores El número de errores de ámbito. Haga clic en él para listarlos.

Un proyecto cuyo listado falla cuenta como un error, y los demás proyectos se leen igualmente: la ejecución termina como Parcial.

Errores de una sincronización parcial

Note

Los recursos que desaparecen de Google Cloud se etiquetan cloud:stale solo después de una ejecución sin ningún error de ámbito. Nunca se eliminan del inventario. La etiqueta se retira cuando una sincronización posterior vuelve a ver el recurso.

Una ejecución que permanece En curso durante más de dos horas se considera detenida: deja de bloquear una nueva sincronización y la siguiente sincronización programada la marca como Fallido.

Ver los activos en el inventario

Los activos importados pertenecen al propietario y a la ubicación que eligió. Todos llevan la etiqueta cloud:gcp.

  1. Abra Inventory > Assets.
  2. Abra el panel de búsqueda, vaya a la pestaña Tags, establezca el nombre de la etiqueta en cloud y el valor en gcp, y haga clic en Search.

    Inventario filtrado con la etiqueta cloud establecida en gcp

  3. Para acotar la lista, filtre por las demás etiquetas que añade el conector: gcp:account (el ID del proyecto), gcp:region, gcp:resource (el nombre completo del recurso) y gcp:connector (el ID del conector).

Activos de un proyecto de Google Cloud: IP, nombres de host y nodos cloud

Seguir la ruta de descubrimiento

Abra un nodo cloud, como una regla de reenvío, para ver su destino, etiquetas, propietario y ubicación. La tarjeta Discovery Path muestra de dónde procede el nodo: el proyecto de Google Cloud y después su recurso principal. Las direcciones públicas y los nombres de host de un nodo incluyen ese nodo en su propia ruta de descubrimiento, de modo que siempre puede saber qué proyecto y qué recurso los expusieron.

Nodo cloud con su ruta de descubrimiento

Editar, pausar o eliminar el conector

  • Editar permite cambiar el nombre, los ID de proyecto y de organización, la credencial, el propietario, la ubicación y el interruptor Activo. Deje vacía una clave guardada para conservarla, o pegue una nueva para reemplazarla.

    Formulario de edición del conector

  • Desactive Activo para pausar la sincronización programada conservando el conector.

  • Eliminar borra el conector: los activos ya importados permanecen en el inventario y las sincronizaciones futuras se detienen.
  • Para retirar también el acceso de Ostorlab en Google Cloud, elimine la cuenta de servicio ostorlab-cloud-connector (o quite sus vinculaciones de IAM y la vinculación de creador de tokens que confía en Ostorlab). Eliminar la cuenta de servicio no elimina las vinculaciones de roles del proyecto o de la organización hechas para ella: quite también roles/cloudasset.viewer y roles/browser para ese miembro.

Solución de problemas

Síntoma Qué comprobar
«Google refused to issue a token for the service account ... Check that the organisation's Ostorlab service account has roles/iam.serviceAccountTokenCreator on it.» El último paso del script no se ejecutó, o se eliminó la vinculación. Vuelva a ejecutar el script.
«Google refused the service account key. Check that the key and the service account ... are enabled.» La clave se eliminó o desactivó, o la cuenta de servicio está desactivada. Cree una clave nueva y actualice el conector.
«Project ... is not active or cannot be read.» El ID de proyecto es incorrecto, el proyecto se está eliminando, o la cuenta de servicio no tiene los roles en él.
«No active project found in scope.» Conector de toda la organización: los roles se concedieron solo en el proyecto. Vuelva a ejecutar el script con ORGANIZATION_ID.
La comprobación Permisos falla Las API del script no están habilitadas en el proyecto, o faltan los roles. Vuelva a ejecutar el script.
Error de formulario sobre la clave JSON Pegue el archivo de clave completo: debe ser una clave de cuenta de servicio ("type": "service_account") con un client_email y un private_key.
La prueba indica que la conexión no está disponible por ahora Un problema del lado de Ostorlab, no de su proyecto. Inténtelo de nuevo más tarde y contacte con el soporte si persiste.
«The cloud connector is disabled.» Active Activo en el formulario de edición del conector.
«A sync of this cloud connector is already running.» Espere a que termine la sincronización en curso.
Faltan recursos que esperaba Puede que no tengan dirección externa, o que estén en una zona DNS privada. El conector solo conserva los recursos expuestos a Internet.

Siguientes pasos