Saltar a contenido

Tarea 11 min de lectura

Conectar AWS a su inventario de activos

El conector de AWS lee los recursos expuestos a Internet de sus cuentas de AWS 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?

Por cada cuenta, el conector lee los siguientes recursos. Las direcciones privadas se omiten.

Ámbito Recursos
Cada región Instancias EC2 con dirección pública, IP elásticas, balanceadores de carga Classic, Application y Network expuestos a Internet, instancias RDS de acceso público
Global Zonas alojadas públicas de Route 53 con sus registros A, AAAA y CNAME (los registros comodín se omiten), distribuciones de CloudFront con su dominio predeterminado y sus nombres de dominio alternativos

Solo se importan los tipos de recurso indicados arriba; no se recopilan los buckets de S3, las funciones de Lambda, API Gateway, ECS ni EKS.

Cada recurso se convierte en un nodo cloud del inventario, asociado a su cuenta de AWS. Las direcciones IP públicas y los nombres de host que expone 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 de 12 dígitos de la cuenta de AWS que se va a conectar.
  • Permiso en esa cuenta para crear una pila de CloudFormation que cree recursos de IAM (o para crear un usuario de IAM, en el método de claves de acceso).
  • Un propietario de Ostorlab para los activos importados. Cree uno antes si es necesario.

Configurar el acceso en AWS

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

Categoría Nube con la tarjeta de AWS

Elija uno de los dos métodos de credencial. Se recomienda el rol entre cuentas: no necesita ninguna clave de larga duración.

Opción 1: rol IAM entre cuentas (recomendado)

El rol OstorlabReadOnly confía en el rol de sincronización de AWS de Ostorlab y solo lo acepta cuando presenta el ID externo de su organización.

  1. En el Paso 1, haga clic en Rol IAM entre cuentas: descargar el archivo de configuración. Obtendrá la plantilla de CloudFormation ostorlab-read-only-role.yaml. El bloque Parámetros a utilizar muestra los tres valores que la plantilla ya contiene: los parámetros OstorlabPrincipal, ExternalId y RoleName.

    Paso de configuración con los parámetros copiables y los botones de descarga

  2. En la consola de CloudFormation de la cuenta, cree una pila a partir de la plantilla. Mantenga los parámetros predeterminados (OstorlabPrincipal, ExternalId, RoleName) y confirme que CloudFormation puede crear recursos de IAM. También puede usar la AWS CLI:

    aws cloudformation create-stack --stack-name ostorlab-read-only \
      --template-body file://ostorlab-read-only-role.yaml \
      --capabilities CAPABILITY_NAMED_IAM
    aws cloudformation describe-stacks --stack-name ostorlab-read-only --no-cli-pager \
      --query "Stacks[0].Outputs[?OutputKey=='RoleArn'].OutputValue" --output text
    
  3. Cuando la pila esté completa, copie su salida RoleArn, por ejemplo arn:aws:iam::123456789012:role/OstorlabReadOnly.

El rol concede únicamente estas acciones de lectura, sobre todos los recursos:

ec2:DescribeRegions
ec2:DescribeInstances
ec2:DescribeAddresses
elasticloadbalancing:DescribeLoadBalancers
route53:ListHostedZones
route53:ListResourceRecordSets
cloudfront:ListDistributions
rds:DescribeDBInstances

Varias cuentas con AWS Organizations

  1. Desde la cuenta de administración, habilite el acceso de confianza para AWS CloudFormation StackSets en AWS Organizations. En la consola de CloudFormation, abra StackSets y elija Enable trusted access, o ejecute aws organizations enable-aws-service-access --service-principal member.org.stacksets.cloudformation.amazonaws.com. Sin él no se pueden crear conjuntos de pilas administrados por el servicio.
  2. Desde la cuenta de administración, abra CloudFormation StackSets y cree un conjunto de pilas a partir de la misma plantilla, con permisos administrados por el servicio.
  3. Despliéguelo en las unidades organizativas o cuentas que quiera conectar, en una sola región: los roles de IAM son globales.
  4. Cree un conector de Ostorlab para la cuenta cuyo ARN de rol copió e indique los demás ID de cuenta en Cuentas miembro de AWS Organizations (opcional). Ostorlab deriva arn:aws:iam::<account id>:role/OstorlabReadOnly para cada cuenta miembro.

Opción 2: claves de acceso

Use este método cuando no pueda crear un rol entre cuentas. Solo lee la cuenta propia del conector.

  1. En el Paso 1, haga clic en Claves de acceso: descargar el archivo de configuración. Obtendrá ostorlab-read-only-user.yaml.
  2. Cree una pila a partir de él en la cuenta. Crea el usuario de IAM OstorlabReadOnly, sin acceso a la consola, con una política en línea que permite exactamente las acciones indicadas arriba.
  3. Cree una clave de acceso para ese usuario y conserve el par para el formulario del conector:

    aws iam create-access-key --user-name OstorlabReadOnly --no-cli-pager
    
  4. Para rotar la clave, vuelva a ejecutar el comando aws iam create-access-key --user-name OstorlabReadOnly del paso 3 para crear la clave de reemplazo (un usuario de IAM tiene como máximo dos claves de acceso), actualice el conector con el nuevo par y después elimine o desactive la clave anterior.

Tip

La clave de acceso secreta se cifra en reposo y no vuelve a mostrarse en Ostorlab. Elimine cualquier copia guardada localmente cuando el conector funcione.

Añadir el conector

  1. En la pestaña Configuración, bajo Paso 2: conectores de AWS, 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 ARN del rol resaltado

Campo Qué introducir
Nombre Un nombre único en su organización, por ejemplo AWS Producción.
ID de cuenta de AWS La cuenta de 12 dígitos que contiene el rol o las claves.
Regiones Las regiones que se leerán, como códigos de región de AWS, por ejemplo eu-west-1. Déjelo vacío para leer todas las regiones habilitadas.
Credencial Rol IAM entre cuentas o Claves de acceso.
ARN del rol Solo método de rol. El ARN del rol OstorlabReadOnly. Debe pertenecer al ID de cuenta de AWS indicado arriba.
Cuentas miembro de AWS Organizations (opcional) Solo método de rol. Un ID de cuenta de 12 dígitos por línea. El rol OstorlabReadOnly debe existir en cada una.
ID de clave de acceso y Clave de acceso secreta Solo método de claves de acceso.
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.

Las claves de acceso y las cuentas miembro no se pueden combinar: las claves de acceso solo leen la cuenta propia del conector.

Probar la conexión

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

Acción Probar conexión

Se ejecutan cuatro comprobaciones, en orden, y las de una cuenta se detienen en la primera que falla:

Comprobación Qué verifica
Credenciales Ostorlab obtuvo credenciales para la cuenta. Con claves de acceso, también confirma que las claves pertenecen a la cuenta del conector.
Permisos El rol o usuario puede llamar a route53:ListHostedZones.
Ámbitos Las regiones que se leerán. La comprobación falla si no hay ninguna región habilitada.
Recurso de muestra Ostorlab lee las IP elásticas de la primera región. La comprobación también se supera si la cuenta no tiene ninguna.

En un conector con cuentas miembro, cada cuenta tiene sus propias comprobaciones, y cada mensaje empieza por el ID de la cuenta.

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 ámbitos fallaron, el resto se importó) o Fallido (la sincronización no pudo completarse, por ejemplo porque no se aceptó ninguna credencial).
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.

Una región o un servicio que falla nunca detiene los demás ámbitos: se notifica como un error y la ejecución termina como Parcial. Cada error nombra el ámbito como <ID de cuenta>/<región> / <servicio>, por ejemplo 123456789012/eu-central-1 / rds, seguido del mensaje de AWS.

Errores de una sincronización parcial

Note

Los recursos que desaparecen de AWS 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:aws.

  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 aws, y haga clic en Search.

    Inventario filtrado con la etiqueta cloud establecida en aws

  3. Para acotar la lista, filtre por las demás etiquetas que añade el conector: aws:account (el ID de la cuenta), aws:region, aws:resource (el ARN) y aws:connector (el ID del conector).

Activos de una cuenta de AWS: IP, nombres de host y nodos cloud

Seguir la ruta de descubrimiento

Abra un nodo cloud, como un balanceador de carga, para ver su destino, etiquetas, propietario y ubicación. La tarjeta Discovery Path muestra de dónde procede el nodo: la cuenta de AWS 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é cuenta y qué recurso los expusieron.

Nodo cloud con su ruta de descubrimiento

Editar, pausar o eliminar el conector

  • Editar permite cambiar el nombre, las regiones, la credencial, el propietario, la ubicación y el interruptor Activo. Deje vacío un secreto guardado para conservarlo, o escriba uno nuevo para reemplazarlo. Para reemplazar la clave de acceso secreta, introduzca el nuevo ID de clave de acceso completo junto con el nuevo secreto: el ID y el secreto forman un par. Cambiar de credencial borra los campos de la anterior.

    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 AWS, elimine la pila de CloudFormation (borra el rol o el usuario OstorlabReadOnly) y, en el método de claves de acceso, elimine la clave de acceso.

Solución de problemas

Síntoma Qué comprobar
«AWS connections are not available right now. Try again later.» Un problema del lado de Ostorlab, no de su cuenta. Inténtelo de nuevo más tarde y contacte con el soporte si persiste.
La comprobación Permisos falla con AccessDenied La pila se modificó o se eliminó, o se editó la relación de confianza del rol. Mantenga los parámetros predeterminados: el rol solo confía en el principal de Ostorlab junto con su ID externo.
«The access keys belong to AWS account ... not to the connector's account» Las claves se crearon en una cuenta distinta del ID de cuenta de AWS del conector.
SignatureDoesNotMatch o InvalidClientTokenId El ID de clave de acceso o el secreto son incorrectos. Vuelva a introducir ambos.
Error de formulario: «El rol debe pertenecer al ID de cuenta de AWS indicado arriba.» El ID de cuenta del ARN del rol difiere del ID de cuenta de AWS del conector.
Sincronización Parcial con AccessDenied en un servicio Al rol o usuario le falta una de las acciones de lectura indicadas arriba para ese servicio. Vuelva a desplegar la plantilla descargada.
«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 Compruebe las Regiones del conector y que el recurso esté expuesto a Internet (dirección pública, balanceador de carga expuesto, zona alojada pública).

Siguientes pasos