Datadog utiliza un marco de procesamiento gráfico para asignar las relaciones entre los recursos de la nube y determinar si son accesibles desde Internet. Esta guía describe la lógica utilizada para clasificar los recursos como públicamente accesibles dentro del marco gráfico.

Para obtener más información sobre la accesibilidad de la red, consulta la documentation de AWS y el AWS Reachability Analyser para la accesibilidad de la red. Actualmente, la faceta Is Publicly Accessible sólo está disponible para recursos AWS.

Gráfico de dependencia de recursos

Los siguientes diagramas muestran cómo se utilizan los recursos relacionados para determinar si otros recursos son accesibles públicamente. Por ejemplo, una pista de AWS CloudTrail almacenada en un bucket público de Amazon S3 es a su vez accesible públicamente. Si un recurso es accesible públicamente gracias a otro recurso, la relación se muestra en el gráfico de relaciones de recursos para errores de configuración de Cloud Security Management.

Nota: No todos los recursos con el atributo Accesible públicamente se muestran en estos diagramas.

AWS

Diagrama con gráficos que muestra la relación entre los recursos utilizados para determinar la accesibilidad pública para AWS

Azure

Diagrama con gráficos que muestra la relación entre los recursos utilizados para determinar la accesibilidad pública para Azure

Google Cloud

Diagrama con gráficos que muestra la relación entre los recursos utilizados para determinar la accesibilidad pública para Google Cloud

Lógica de accesibilidad pública por recurso de AWS

Bucket de Amazon S3

Un bucket de S3 (aws_s3_bucket) se considera públicamente accesible si:

CriteriosExplicación
La política sobre buckets habilita el permiso s3:GetObject incondicionalmente, con el recurso y el elemento principal configurados en "*".Esto define una política pública en el bucket, lo que significa que se permite el acceso no autenticado. "*" es un comodín, lo que significa que se proporciona acceso a cualquier recurso y elemento principal.
Ninguna public_access_block_configuration del bucket, ni el bloque de acceso público de la cuenta AWS (aws_s3_account_public_access_block) tienen restrict_public_buckets configurado como true.Ninguno de los buckets o cuentas bloquean explícitamente el acceso público, lo que significa que la política del bucket público se vuelve efectiva.

Para obtener más información, consulta Bloqueo del acceso público a tu almacenamiento de Amazon S3.

Pista de AWS CloudTrail

Una pista de CloudTrail (aws_cloudtrail_trail) se considera públicamente accesible si:

CriteriosExplicación
El s3_bucket_name de la pista está configurado en un bucket de S3 que se considera accesible para el público.Las pistas de CloudTrail son archivos de logs que se envían a buckets de S3. Si la pista se almacena en un bucket de S3 público, entonces es accesible públicamente.

Subred de Amazon VPC

Una subred (aws_subnet) se considera pública si:

CriteriosExplicación
Está conectada a una o más tablas de rutas que están conectadas a una pasarela de Internet y que dirigen a un bloque CIDR de destino de "0.0.0.0/0" o a un bloque CIDR IPv6 de "::/0".La tabla de rutas adjunta a esta subred dirige el tráfico de egreso a través de una pasarela de Internet, lo que significa que los recursos de la subred pueden acceder a la Internet pública.
Está conectada a una o más ACL de red que tienen al menos un ingreso y un egreso, que tienen un bloque CIDR de "0.0.0.0/0" o un bloque CIDR IPv6 de "::/0".Las ACL de red controlan el tráfico que puede salir o ingresar en la subred a nivel de subred. Cuando una regla ACL de red permite el tráfico de ingreso desde Internet y permite el tráfico de salida hacia puertos efímeros, permite que los recursos de la subred estén expuestos a Internet si tienen asignada una IP pública y su grupo de seguridad lo permite.

Para ver la definición de una subred pública en AWS, consulta Subredes para tu VPC.

Clúster de Amazon Redshift

Un clúster de Redshift (aws_redshift_cluster) se considera públicamente accesible si:

CriteriosExplicación
Si tiene publicly_accessible configurado como true en su configuración.Consulta la gestión de clústeres en una VPC.
Está en una VPC pública.Una VPC pública es una VPC con al menos una subred pública, conectada a una o más ACL de red que tienen al menos un ingreso y un egreso, que tienen un bloque CIDR de "0.0.0.0/0" o un bloque CIDR IPv6 de "::/0".
Está asociado a un grupo de seguridad que tiene reglas que permiten el acceso desde un rango CIDR de "0.0.0.0/0" o un rango CIDR IPv6 de "::/0".Un grupo de seguridad controla el tráfico que entra a una VPC. Con un rango CIDR abierto, todas las direcciones IP pueden obtener acceso.
Está conectado a una o más tablas de rutas que están conectadas a una pasarela de Internet y que dirigen a un bloque CIDR de destino de "0.0.0.0/0" o a un bloque CIDR IPv6 de "::/0".La tabla de rutas adjunta a esta subred dirige el tráfico de egreso a través de una pasarela de Internet, lo que significa que los recursos de la subred pueden acceder a la Internet pública.

Para obtener más información sobre clústeres de Redshift y accesibilidad pública, consulta Hacer accesible públicamente un clúster privado de Amazon Redshift.

Instancia de base de datos RDS de Amazon

Una instancia de base de datos RDS (aws_rds_instance) se considera públicamente accesible si:

CriteriosExplicación
Tiene publicly_accessible configurado como true en la configuración de su conectividad.Esta configuración hace que la base de datos sea accesible públicamente, lo que significa que su endpoint DNS se resolverá en la dirección IP privada dentro de su VPC y en una dirección IP pública desde fuera de la VPC. Sin embargo, el acceso al clúster seguirá siendo controlado por un grupo de seguridad relacionado.
Está en una subred pública.-
Está asociada a un grupo de seguridad que tiene reglas que permiten el acceso desde un rango CIDR de "0.0.0.0/0" o un rango CIDR IPv6 de "::/0".Un grupo de seguridad controla el tráfico que entra a una VPC. Con un rango CIDR abierto, todas las direcciones IP pueden obtener acceso.

Para obtener más información sobre el acceso público a una instancia de base de datos RDS, consulta Solucionar la conectividad a una instancia de base de datos RDS que utiliza una subred de VPC.

Snapshot de base de datos RDS de Amazon

Una snapshot de base de datos RDS (aws_rds_db_snapshot) se considera públicamente accesible si:

CriteriosExplicación
Tiene un atributo definido como "restore" con un valor de atributo definido como "all".Si defines la visibilidad de los snapshots de bases de datos como Pública, todas las cuentas de AWS pueden restaurar una instancia de base de datos desde tu snapshot de bases de datos y obtener acceso a tus datos.

Para obtener más información, consulta Compartir un snapshot de base de datos.

Balanceador de carga elástico de Amazon

Un balanceador de carga elástico (aws_elbv2_load_balancer) se considera públicamente accesible si:

CriteriosExplicación
El esquema se define en internet-facing.El esquema determina si el balanceador de carga es un balanceador de carga interno o un balanceador de carga orientado a Internet.
Está asociado a un grupo de seguridad que tiene reglas que permiten el acceso desde un rango CIDR de "0.0.0.0/0" o un rango CIDR IPv6 de "::/0".Un grupo de seguridad controla el tráfico que entra a una VPC. Con un rango CIDR abierto, todas las direcciones IP pueden obtener acceso.

Para obtener más información sobre los balanceadores de carga orientados a Internet, consulta Crear un balanceador de carga de aplicaciones.

Instancia de Amazon EC2

Una Instancia de EC2 (aws_ec2_instance) se considera públicamente accesible si:

  • “Subred pública”-acceso determinado:
CriteriosExplicación
Tiene una o más direcciones IP públicas.Una dirección IP pública permite acceder a tu instancia desde Internet.
Está en una subred pública.-
Está asociada a un grupo de seguridad que tiene reglas que permiten el acceso desde un rango CIDR de "0.0.0.0/0" o un rango CIDR IPv6 de "::/0".Un grupo de seguridad controla el tráfico que entra a una VPC. Con un rango CIDR abierto, todas las direcciones IP pueden obtener acceso.

O

  • Acceso determinado por el ELB a través del grupo de escalado automático:
CriteriosExplicación
Un grupo de seguridad (por ejemplo, SG1) adjunto al balanceador de carga es de acceso público y permite el tráfico de entrada a algún puerto X.Esto abre el balanceador de carga al tráfico entrante de Internet en un puerto específico.
El balanceador de carga tiene un escuchador que acepta tráfico en el puerto XUn escuchador es un proceso que comprueba las solicitudes de conexión, utilizando el protocolo y el puerto que configuras.
El balanceador de carga tiene un grupo de destino que reenvía tráfico a algún puerto Y.Los grupos de destino dirigen las solicitudes a uno o más destinos registrados, como instancias de EC2, en un protocolo y puerto que especifiques.
Se adjunta un grupo de escalado automático al grupo de destino del balanceador de carga.-
La instancia EC2 es parte del grupo de escalado automático y tiene un grupo de seguridad que tiene al menos una regla que permite el tráfico entrante desde el puerto Y, ya sea desde 0.0.0.0/0, desde el CIDR de la VPC (por ejemplo, 10.0.0.0/8), o desde el grupo de seguridad del balanceador de carga (SG1).Esto abre la instancia EC2 al tráfico procedente del balanceador de carga. El grupo de seguridad debe permitir el tráfico procedente del balanceador de carga y, por tanto, debe estar abierto a todas las direcciones IP, a todas las direcciones IP de la VPC o a ese grupo de seguridad específico.

O

  • Acceso determinado por el ELB únicamente a través del grupo de destino:
CriteriosExplicación
Se aplican los criterios 1, 2 y 3 anteriores (acceso determinado por el ELB a través del grupo de escalado automático).-
La instancia EC2 aparece como destino del grupo de destino y tiene un grupo de seguridad que tiene al menos una regla que permite el tráfico de entrada desde el puerto Y, ya sea desde 0.0.0.0/0, desde el CIDR de la VPC (por ejemplo, 10.0.0.0/8), o desde el grupo de seguridad del balanceador de carga (SG1).Dado que la instancia figura como destino del grupo de destino, el balanceador de carga puede reenviarle tráfico a través del puerto Y. El grupo de seguridad permite el tráfico desde el balanceador de carga.

Para obtener más información sobre las instancias EC2 y el acceso público, consulta Autorizar el tráfico de entrada para tus instancias Linux. Para ver un ejemplo de instancias EC2 expuestas a través de un balanceador de carga, consulta Ejemplo: VPC con servidores en subredes privadas y NAT.

Dominio Elasticsearch de Amazon

Un dominio Elasticsearch (aws_elasticsearch_domain) se considera de acceso público si:

CriteriosExplicación
Tiene un endpoint que coincide con el patrón de expresiones regulares (regex)^search-.*\.es\.amazonaws\.com$.Esta es la forma adoptada por los endpoints para los dominios de acceso público.

Para obtener más información sobre cómo hacer que tu dominio de Elasticsearch deje de ser de acceso público, consulta Iniciar tus dominios de Amazon OpenSearch Service dentro de una VPC.

Imágenes de máquina de Amazon (AMI)

Una imagen de máquina (aws_ami) se considera de acceso público si:

CriteriosExplicación
Es propiedad del cliente, lo que significa que no tiene un propietario con alias (ya sea amazon o aws-marketplace en el campo de la cuenta).Las AMI públicas que son propiedad de proveedores verificados (ya sea Amazon o socios verificados) tienen un propietario con alias que aparece como amazon o aws-marketplace en el campo de la cuenta. Consulta Buscar una AMI compartida en los documentos de AWS.
Su imagen está configurada como public, lo que significa que los permisos de lanzamiento de la imagen son públicos.Modificando la propiedad launchPermission de una AMI, puedes hacer que la AMI sea pública (lo que concede permisos de lanzamiento a todas las cuentas AWS ) o compartirla sólo con las cuentas AWS que especifiques.

En Hacer pública una AMI se explica cómo hacer pública o privada una AMI.

Snapshots de Amazon EBS

Un snapshot EBS (aws_ebs_snapshot) se considera de acceso público si:

CriteriosExplicación
create_volume_permission se define en all.Cada snapshot contiene toda la información necesaria para restaurar los datos del snapshot en un nuevo volumen EBS. Si alguien puede crear un volumen a partir de un snapshot, esa información es de acceso público.

Para obtener información sobre los snapshots EBS públicos y cómo hacerlos privados, consulta Compartir un snapshot EBS de Amazon.

Clústeres de Amazon EKS

Un clúster de EKS (aws_eks_cluster) se considera de acceso público si:

CriteriosExplicación
endpoint_public_access se define como true en la configuración del clúster.Esta configuración hace que el clúster sea de acceso público cuando se combina con un CIDR público abierto.
El public_access_cidrs del clúster contiene un bloque CIDR abierto ("0.0.0.0/0").Puedes limitar los bloques CIDR que pueden acceder al endpoint público del clúster de EKS. Un bloque CIDR abierto significa que cualquiera puede acceder al endpoint a través de Internet.

Para obtener más información sobre clústeres de EKS públicos, consulta el control del acceso a endpoints de clústeres de Amazon EKS.

Cola de Amazon SQS

Una cola de SQS (aws_sqs_queue) se considera de acceso público si:

CriteriosExplicación
La cola tiene una política que permite a cualquier elemento principal (definido en "*") realizar acciones de forma incondicional (statement_has_condition definido en false).Esta configuración hace que la cola sea accesible para cualquier persona o cualquier usuario autenticado de AWS.

Para obtener más información sobre las colas públicas de SQS, consulta Prácticas recomendadas de seguridad de Amazon SQS.

Función AWS Lambda

Una función Lambda (aws_lambda_function) se considera de acceso público si:

CriteriosExplicación
La función tiene un política que permite cualquier elemento principal (principal_policy o principal_aws) definido en "*".Esta configuración hace que la cola sea accesible para cualquier persona o cualquier usuario autenticado de AWS.

Para obtener más información sobre funciones Lambda públicas, consulta Prácticas recomendadas para trabajar con funciones AWS Lambda.

Lógica de accesibilidad pública de Azure por recurso

Grupo de seguridad de red (NSG) de Azure

Un NSG de Azure (azure_security_group) concede acceso público si:

CriteriosExplicación
El grupo de seguridad tiene reglas con protocolos tcp, udp o *.Estos son los valores de protocolo relevantes para determinar el acceso público a los recursos de Azure.
El grupo de seguridad tiene reglas inbound con acceso definido en Allow.Estos valores indican que la regla permite el tráfico de entrada.
El grupo de seguridad tiene reglas con prefijos de direcciones de origen iguales a *, 0.0.0.0, /0, ::/0, internet o any.Estos prefijos CIDR permiten el acceso a Internet.
Las reglas que coinciden con las propiedades anteriores se combinan con cualquier otra regla Deny de mayor prioridad para abrir al menos un puerto a Internet.Para saber cómo Azure combina las reglas de los grupos de seguridad para calcular el acceso, consulta Reglas de seguridad.

Para obtener más información sobre cómo los NSG de Azure permiten y deniegan el acceso a Internet para un recurso, consulta Grupos de seguridad de red.

Instancia de máquina virtual Azure

Una instancia de máquina virtual (azure_virtual_machine_instance) se considera públicamente accesible si:

  • Está conectada a un grupo de seguridad de red que permite el acceso público:
CriteriosExplicación
La instancia de máquina virtual tiene una dirección IP pública adjunta a una de sus interfaces de red.Se requiere una dirección IP pública para acceder a una instancia de máquina virtual a través de Internet.
La instancia de máquina virtual tiene un grupo de seguridad red que concede acceso público a una de sus interfaces de red.Para obtener más información sobre cómo una red puede conceder acceso público, consulta Grupo de seguridad de red (NSG) de Azure.

O

  • Tiene una dirección IP pública con SKU “Básico”:
CriteriosExplicación
La instancia de máquina virtual tiene una dirección IP pública con SKU Básico adjunta a su interfaz de red.Una dirección IP pública con SKU básico está abierta por defecto (consulta Direcciones IP públicas).
La instancia de máquina virtual no tiene grupos de seguridad de red adjuntos.Si no hay grupos de seguridad de red adjuntos, entonces no hay reglas que bloqueen el acceso a través de la dirección IP pública abierta.

Para obtener más información sobre las instancias de máquina virtual de Azure y el acceso público, consulta Asociar una dirección IP pública a una máquina virtual.

Contenedor de blobs de Azure Storage

Un contenedor de almacenamiento de blobs (azure_storage_blob_container) se considera públicamente accesible si:

CriteriosExplicación
La cuenta del contenedor de almacenamiento de blobs no tiene el atributo allow_blob_public_access o tiene el atributo definido en true.Esto significa que la cuenta permite el acceso público al almacenamiento de blobs de Azure a través de Internet. Para obtener más información sobre la configuración del acceso de lectura anónimo con cuentas de almacenamiento de Azure, consulta Configurar acceso de lectura anónimo para contenedores y blobs.
El atributo public_access del contenedor de almacenamiento de blobs se define en blob o container.Esto significa que la cuenta permite el acceso público al almacenamiento de blobs de Azure a través de Internet.
El contenedor de almacenamiento de blobs forma parte de una cuenta de almacenamiento que no bloquea explícitamente el acceso público.Cuando una cuenta de almacenamiento no bloquea explícitamente el acceso público, los contenedores de almacenamiento de blobs que contiene pueden hacerse públicos.

Para obtener más información sobre la denegación del acceso público a blobs en cuentas de Azure Storage, consulta Permitir o denegar el acceso público a blobs en cuentas de Azure Storage.

Clúster de Azure Kubernetes Service (AKS)

Un clúster de AKS (azure_aks_cluster) se considera públicamente accesible si:

CriteriosExplicación
enable_private_cluster se define como false en la configuración del clúster.Esta configuración hace que el clúster sea de acceso público cuando se combina con un CIDR público abierto.
El authorized_ip_ranges del clúster contiene un bloque CIDR abierto ("0.0.0.0/0") o no está definido.Un bloque CIDR abierto significa que cualquier persona puede acceder al endpoint a través de Internet.

Para obtener más información sobre clústeres de AKS públicos, consulta las prácticas recomendadas de AKS.

Lógica de accesibilidad de Google Cloud Public por recurso

Cortafuegos informático de Google Cloud

Un cortafuegos informático (gcp_compute_firewall) concede acceso público si:

CriteriosExplicación
El cortafuegos tiene una o más reglas cuyo protocolo es TCP o todos, y que tienen 0.0.0.0/0 o ::/0 en sus source_ranges.Estos prefijos CIDR permiten el acceso desde Internet y son los valores de protocolo relevantes para determinar el acceso público.
La dirección del cortafuegos es ingress.Esto significa que el cortafuegos es relevante para el acceso de entrada desde Internet.

Para obtener más información sobre el uso de los cortafuegos informáticos, consulta Permitir o denegar el acceso público a blobs en cuentas de Azure Storage.

Instancia de cálculo de Google Cloud

Una instancia de cálculo (gcp_compute_instance) se considera de acceso público si:

CriteriosExplicación
La instancia de cálculo tiene una dirección IP pública, lo que significa que al menos una de sus interfaces de red tiene una dirección IP pública definida en sus configuraciones de acceso,Para obtener más información sobre cómo añadir una dirección IP externa a una instancia de cálculo, consulte Reservar una dirección IP externa estática.
La instancia de cálculo tiene reglas de cortafuegos asociadas que se combinan para abrir un rango de puertos a Internet. Las reglas de cortafuegos se pueden asociar a la instancia por:

  • No tener target_tags o target_service_accounts, lo que significa que la regla se aplica a toda la red.
  • Tener target_service_accounts asociadas a uno de los service_accounts de la instancia de cálculo.
  • Tener algunas target_tags que coinciden con las etiquetas de red de la instancia de cálculo.

Las reglas deben permitir el acceso público (consulta Cortafuegos de cálculo de Google Cloud).
Para saber cómo se utilizan las reglas de cortafuegos de cálculo para restringir los rangos de puertos de una instancia de cálculo, consulta Componentes de reglas de cortafuegos.

Obtén más información sobre cómo se utilizan las reglas del cortafuegos de cálculo para restringir los rangos de puertos de una instancia de cálculo aquí.

Conjunto de datos de Google Cloud BigQuery

Un conjunto de datos BigQuery (gcp_bigquery_dataset) se considera públicamente accesible si:

CriteriosExplicación
El conjunto de datos tiene una política IAM adjunta que tiene un valor member de AllUsers o AllAuthenticatedUsers.Estos miembros permiten a cualquier persona acceder a la base de datos a través de Internet. Para obtener más información, consulta Información general de IAM.
El conjunto de datos tiene una política IAM adjunta que lo vincula a uno de los siguientes roles: roles/viewer, roles/owner, roles/editor, roles/bigquery.admin, roles/bigquery.metadataviewer, roles/bigquery.dataowner, roles/bigquery.dataeditor, roles/bigquery.dataviewer o roles/bigquery.user.Estos roles permiten a la persona que accede al recurso realizar operaciones peligrosas en la base de datos. Para obtener más información, consulta la referencia de roles.

Obtén más información sobre conjuntos de datos BigQuery.

Bucket de Google Cloud Storage

Un bucket de almacenamiento (gcp_storage_bucket) se considera públicamente accesible si:

CriteriosExplicación
El bucket tiene una política IAM adjunta que tiene un valor member de AllUsers o AllAuthenticatedUsers.Estos miembros permiten a cualquier persona acceder a la base de datos a través de Internet. Para obtener más información, consulta aquí.
El bucket tiene public_access_prevention definido en inherited en su iam_configuration.Este ajuste bloquea el acceso público si se define en enforced. Para obtener más información sobre la configuración de la prevención del acceso público, consulta Prevención del acceso público.
El bucket tiene una política IAM adjunta que lo vincula a uno de los siguientes roles:
  • roles/backupdr.cloudstorageoperator
  • roles/bigquerymigration.worker
  • roles/cloudbuild.builds.builder
  • roles/clouddeploy.jobrunner
  • roles/cloudmigration.storageaccess
  • roles/cloudtestservice.testadmin
  • roles/cloudtestservice.testviewer
  • roles/composer.environmentandstorageobjectadmin
  • roles/composer.environmentandstorageobjectuser
  • roles/composer.environmentandstorageobjectviewer
  • roles/composer.worker
  • roles/config.agent
  • roles/container.nodeserviceaccount
  • roles/dataflow.admin
  • roles/dataflow.worker
  • roles/dataplex.storagedataowner
  • roles/dataplex.storagedatareader
  • roles/dataproc.hubagent
  • roles/dataproc.worker
  • roles/firebase.admin
  • roles/firebase.developadmin
  • roles/firebase.developviewer
  • roles/firebase.viewer
  • roles/firebaserules.system
  • roles/managedidentities.domaincontrolleroperator
  • roles/storage.admin
  • roles/storage.legacyobjectowner
  • roles/storage.legacyobjectreader
  • roles/storage.objectadmin
  • roles/storage.objectuser
  • roles/storage.objectviewer
Estos roles permiten a la persona que accede al recurso realizar operaciones peligrosas en el bucket. Para obtener más información, consulta la referencia de roles.

Obtén más información sobre cómo hacer públicos los buckets de almacenamiento aquí.

Referencias adicionales