En esta página, se proporciona una descripción general de los módulos personalizados de Security Health Analytics. Para obtener información sobre los módulos integrados, consulta Detectores integrados de Security Health Analytics.
Con los módulos personalizados, puedes extender las capacidades de detección de Security Health Analytics creando detectores personalizados que analicen los recursos y las políticas Google Cloudque especifiques con reglas que definas para verificar vulnerabilidades, configuraciones incorrectas o incumplimientos.
La configuración o definición de un módulo personalizado, ya sea que lo crees en la consola deGoogle Cloud o lo codifiques tú mismo, determina los recursos que verifica el detector, las propiedades que evalúa y la información que devuelve cuando se detecta una vulnerabilidad o una configuración incorrecta.
Puedes crear módulos personalizados para cualquier recurso o activo que admita Security Command Center.
Si codificas definiciones de módulos personalizadas por tu cuenta, usas expresiones en YAML y Common Expression Language (CEL). Si usas la consola deGoogle Cloud para crear tus módulos personalizados, la mayor parte de la codificación se realiza por ti, aunque sí debes codificar las expresiones CEL.
Para ver un ejemplo de definición de módulo personalizado en un archivo YAML, consulta Ejemplo de definición de módulo personalizado.
Los módulos personalizados se ejecutan junto con los detectores integrados de Security Health Analytics en los análisis por lotes y en tiempo real. En el modo en tiempo real, los análisis se activan cada vez que cambia la configuración de un activo. Los análisis en modo de lote se ejecutan con todos los detectores para las organizaciones o los proyectos inscritos una vez al día.
Durante el análisis, cada detector personalizado se aplica a todos los recursos coincidentes en cada organización, carpeta o proyecto para los que está habilitado.
Los resultados de los detectores personalizados se escriben en Security Command Center.
Para obtener más información, consulta lo siguiente:
- Cómo crear módulos personalizados
- Tipos de análisis de Security Health Analytics
- Tipos de recursos admitidos
- YAML
- Introducción a CEL
Comparación de los detectores integrados y los módulos personalizados
Puedes detectar elementos con módulos personalizados que no puedes detectar con los detectores integrados de Security Health Analytics. Sin embargo, los detectores integrados admiten ciertas funciones de Security Command Center que los módulos personalizados no admiten.
Compatibilidad de características
Los módulos personalizados de Security Health Analytics no son compatibles con las simulaciones de rutas de ataque, por lo que los hallazgos que producen los módulos personalizados no obtienen puntuaciones de exposición al ataque ni rutas de ataque.
Comparación de la lógica de detección
Como ejemplo de algunas de las cosas que puedes hacer con un módulo personalizado, compara lo que el detector integrado PUBLIC_SQL_INSTANCE verifica con lo que puedes hacer con un módulo personalizado.
El detector integrado PUBLIC_SQL_INSTANCE verifica si la propiedad authorizedNetworks de las instancias de Cloud SQL está configurada en 0.0.0.0/0.
Si es así, el detector genera un hallazgo que indica que la instancia de Cloud SQL está abierta al público, ya que acepta conexiones de todas las direcciones IP.
Con un módulo personalizado, puedes implementar una lógica de detección más compleja para verificar instancias de Cloud SQL en busca de elementos como los siguientes:
- Direcciones IP con prefijos específicos, con comodines
- Es el valor de la propiedad state, que puedes usar para ignorar instancias si el valor se establece enMAINTENANCEo para activar hallazgos si el valor es otro.
- Es el valor de la propiedad region, que puedes usar para activar hallazgos solo para instancias con direcciones IP públicas en regiones específicas.
Roles y permisos de IAM obligatorios
Los roles de IAM determinan las acciones que puedes realizar con los módulos personalizados de las estadísticas del estado de la seguridad.
En la siguiente tabla, se incluye una lista de los permisos de los módulos personalizados de Security Health Analytics que son obligatorios, así como los roles de IAM predefinidos que los incluyen.
Puedes usar la consola de Google Cloud o la API de Security Command Center para aplicar estos roles a nivel de la organización, la carpeta o el proyecto.
| Permisos necesarios | Funciones | 
|---|---|
| securitycentermanagement.securityHealthAnalyticsCustomModules.create | roles/securitycentermanagement.shaCustomModulesEditor | 
| securitycentermanagement.securityHealthAnalyticsCustomModules.list | roles/securitycentermanagement.shaCustomModulesViewer
       | 
Para obtener más información sobre los permisos y roles de IAM, y cómo otorgarlos, consulta Cómo otorgar un rol de IAM con la consola de Google Cloud .
Cuotas de módulos personalizados
Los módulos personalizados de las estadísticas del estado de la seguridad están sujetos a límites de cuota.
El límite de cuota predeterminado para la creación de módulos personalizados es de 100, pero puedes solicitar un aumento de la cuota si es necesario.
Las llamadas a la API para los métodos personalizados del módulo también están sujetas a límites de cuota. En la siguiente tabla, se muestran los límites de cuota predeterminados para las llamadas a la API del módulo personalizado.
| Tipo de llamada a la API | Límite | 
|---|---|
| CustomModules Read Requests (Get, List) | 1,000 llamadas a la API por minuto y por organización | 
| Solicitudes de escritura de CustomModules (crear, actualizar, borrar) | 60 llamadas a la API por minuto y por organización | 
| Solicitudes de prueba de CustomModules | 12 llamadas a la API por minuto y por organización | 
Para obtener aumentos de cuota, envía una solicitud en la Google Cloud consola en la páginaCuotas.
Para obtener más información sobre las cuotas de Security Command Center, consulta Cuotas y límites.
Tipos de recursos admitidos
- Access Context Manager
- 
  accesscontextmanager.googleapis.com/AccessLevel
- 
  accesscontextmanager.googleapis.com/AccessPolicy
- 
  accesscontextmanager.googleapis.com/ServicePerimeter
- Address
- 
  compute.googleapis.com/Address
- Alert Policy
- monitoring.googleapis.com/AlertPolicy
- AlloyDB for PostgreSQL
- 
  alloydb.googleapis.com/Backup
- 
  alloydb.googleapis.com/Cluster
- 
  alloydb.googleapis.com/Instance
- Api Keys
- 
  apikeys.googleapis.com/Key
- Artifact Registry Repository
- 
  artifactregistry.googleapis.com/Repository
- Autoscaler
- 
  compute.googleapis.com/Autoscaler
- Backend Bucket
- 
  compute.googleapis.com/BackendBucket
- Backend Service
- 
  compute.googleapis.com/BackendService
- BigQuery Data Transfer Service
- 
  bigquerydatatransfer.googleapis.com/TransferConfig
- BigQuery Model
- bigquery.googleapis.com/Model
- BigQuery Table
- bigquery.googleapis.com/Table
- Bucket
- 
  storage.googleapis.com/Bucket
- Cloud Billing Project Billing Info
- 
  cloudbilling.googleapis.com/ProjectBillingInfo
- Cloud Data Fusion
- 
  datafusion.googleapis.com/Instance
- Cloud Function
- 
  cloudfunctions.googleapis.com/CloudFunction
- Cloud Run
- 
  run.googleapis.com/DomainMapping
- 
  run.googleapis.com/Execution
- 
  run.googleapis.com/Job
- 
  run.googleapis.com/Revision
- 
  run.googleapis.com/Service
- Cluster
- 
  container.googleapis.com/Cluster
- Cluster Role
- 
  rbac.authorization.k8s.io/ClusterRole
- Cluster Role Binding
- 
  rbac.authorization.k8s.io/ClusterRoleBinding
- Commitment
- 
  compute.googleapis.com/Commitment
- Composer Environment
- 
  composer.googleapis.com/Environment
- Compute Project
- 
  compute.googleapis.com/Project
- 
  compute.googleapis.com/SecurityPolicy
- CryptoKey
- 
  cloudkms.googleapis.com/CryptoKey
- CryptoKey Version
- 
  cloudkms.googleapis.com/CryptoKeyVersion
- Dataflow Job
- 
  dataflow.googleapis.com/Job
- Dataproc Autoscaling Policy
- 
  dataproc.googleapis.com/AutoscalingPolicy
- Dataproc Batch
- 
  dataproc.googleapis.com/Batch
- Dataproc Cluster
- 
  dataproc.googleapis.com/Cluster
- Dataproc Job
- 
  dataproc.googleapis.com/Job
- Dataset
- 
  bigquery.googleapis.com/Dataset
- Datastream Connection Profile
- datastream.googleapis.com/ConnectionProfile
- Datastream Private Connection
- datastream.googleapis.com/PrivateConnection
- Datastream Stream
- datastream.googleapis.com/Stream
- Dialogflow CX
- 
  dialogflow.googleapis.com/Agent
- Disk
- 
  compute.googleapis.com/Disk
- DLP Deidentify Template
- 
  dlp.googleapis.com/DeidentifyTemplate
- DLP Inspect Template
- 
  dlp.googleapis.com/InspectTemplate
- DLP Job
- 
  dlp.googleapis.com/DlpJob
- DLP Job Trigger
- 
  dlp.googleapis.com/JobTrigger
- DLP Stored Info Type
- 
  dlp.googleapis.com/StoredInfoType
- DNS Policy
- 
  dns.googleapis.com/Policy
- File Instance
- 
  file.googleapis.com/Instance
- Firewall
- 
  compute.googleapis.com/Firewall
- Firewall Policy
- 
  compute.googleapis.com/FirewallPolicy
- Folder
- 
  cloudresourcemanager.googleapis.com/Folder
- Forwarding Rule
- 
  compute.googleapis.com/ForwardingRule
- Global Forwarding Rule
- 
  compute.googleapis.com/GlobalForwardingRule
- Health Check
- 
  compute.googleapis.com/HealthCheck
- Hub
- 
  gkehub.googleapis.com/Feature
- 
  gkehub.googleapis.com/Membership
- IAM Role
- 
  iam.googleapis.com/Role
- Image
- 
  compute.googleapis.com/Image
- Instance
- 
  compute.googleapis.com/Instance
- Instance Group
- 
  compute.googleapis.com/InstanceGroup
- Instance Group Manager
- 
  compute.googleapis.com/InstanceGroupManagers
- Instance Template
- 
  compute.googleapis.com/InstanceTemplate
- Interconnect Attachment
- 
  compute.googleapis.com/InterconnectAttachment
- Keyring
- 
  cloudkms.googleapis.com/KeyRing
- KMS Import Job
- 
  cloudkms.googleapis.com/ImportJob
- Kubernetes CronJob
- 
  k8s.io/CronJob
- Kubernetes DaemonSet
- 
  k8s.io/DaemonSet
- Kubernetes Deployment
- 
  k8s.io/Deployment
- Kubernetes Ingress
- 
  k8s.io/Ingress
- Kubernetes NetworkPolicy
- 
  k8s.io/NetworkPolicy
- Kubernetes ReplicaSet
- 
  k8s.io/ReplicaSet
- Kubernetes Service
- 
  k8s.io/Service
- Kubernetes StatefulSet
- 
  k8s.io/StatefulSet
- Log Bucket
- 
  logging.googleapis.com/LogBucket
- Log Metric
- 
  logging.googleapis.com/LogMetric
- Log Sink
- 
  logging.googleapis.com/LogSink
- Managed Zone
- 
  dns.googleapis.com/ManagedZone
- Machine Image
- 
  compute.googleapis.com/MachineImage
- Monitoring Notification Channel
- 
  monitoring.googleapis.com/NotificationChannel
- Namespace
- 
  k8s.io/Namespace
- NetApp Snapshot
- 
  netapp.googleapis.com/Snapshot
- NetApp Volume
- 
  netapp.googleapis.com/Volume
- Network
- 
  compute.googleapis.com/Network
- Network Endpoint Group
- 
  compute.googleapis.com/NetworkEndpointGroup
- Node
- 
  k8s.io/Node
- Node Group
- 
  compute.googleapis.com/NodeGroup
- Node Template
- 
  compute.googleapis.com/NodeTemplate
- Nodepool
- container.googleapis.com/NodePool
- Organization
- 
  cloudresourcemanager.googleapis.com/Organization
- Organization Policy Service v2
- 
  orgpolicy.googleapis.com/CustomConstraint
- 
  orgpolicy.googleapis.com/Policy
- Packet Mirroring
- 
  compute.googleapis.com/PacketMirroring
- Pod
- 
  k8s.io/Pod
- Private CA Certificate
- 
  privateca.googleapis.com/Certificate
- Private CA Certificate Revocation List
- 
  privateca.googleapis.com/CertificateRevocationList
- Project
- 
  cloudresourcemanager.googleapis.com/Project
- Pubsub Snapshot
- 
  pubsub.googleapis.com/Snapshot
- Pubsub Subscription
- 
  pubsub.googleapis.com/Subscription
- Pubsub Topic
- 
  pubsub.googleapis.com/Topic
- Redis Cluster
- 
  redis.googleapis.com/Cluster
- Redis Instance
- 
  redis.googleapis.com/Instance
- Region Backend Service
- 
  compute.googleapis.com/RegionBackendService
- Region Disk
- 
  compute.googleapis.com/RegionDisk
- Reservation
- 
  compute.googleapis.com/Reservation
- Resource Policy
- 
  compute.googleapis.com/ResourcePolicy
- Route
- 
  compute.googleapis.com/Route
- Router
- 
  compute.googleapis.com/Router
- Role
- 
  rbac.authorization.k8s.io/Role
- Role Binding
- 
  rbac.authorization.k8s.io/RoleBinding
- Secret Manager
- 
  secretmanager.googleapis.com/Secret
- Secret Version
- 
  secretmanager.googleapis.com/SecretVersion
- Service Account Key
- 
  iam.googleapis.com/ServiceAccountKey
- ServiceUsage Service
- 
  serviceusage.googleapis.com/Service
- Snapshot
- 
  compute.googleapis.com/Snapshot
- Spanner Backup
- 
  spanner.googleapis.com/Backup
- Spanner Database
- 
  spanner.googleapis.com/Database
- Spanner Instance
- 
  spanner.googleapis.com/Instance
- SQL Backup Run
- 
  sqladmin.googleapis.com/BackupRun
- SQL Instance
- 
  sqladmin.googleapis.com/Instance
- SSL Certificate
- 
  compute.googleapis.com/SslCertificate
- SSL Policy
- 
  compute.googleapis.com/SslPolicy
- Subnetwork
- 
  compute.googleapis.com/Subnetwork
- Tag Binding
- 
  cloudresourcemanager.googleapis.com/TagBinding
- Target HTTP Proxy
- 
  compute.googleapis.com/TargetHttpProxy
- Target HTTPS Proxy
- 
  compute.googleapis.com/TargetHttpsProxy
- Target Instance
- 
  compute.googleapis.com/TargetInstance
- Target Pool
- 
  compute.googleapis.com/TargetPool
- Target SSL Proxy
- 
  compute.googleapis.com/TargetSslProxy
- Target VPN Gateway
- 
  compute.googleapis.com/TargetVpnGateway
- URL Map
- 
  compute.googleapis.com/UrlMap
- Vertex AI
- 
  aiplatform.googleapis.com/BatchPredictionJob
- 
  aiplatform.googleapis.com/CustomJob
- 
  aiplatform.googleapis.com/Dataset
- 
  aiplatform.googleapis.com/Endpoint
- 
  aiplatform.googleapis.com/Featurestore
- 
  aiplatform.googleapis.com/HyperparameterTuningJob
- 
  aiplatform.googleapis.com/Index
- 
  aiplatform.googleapis.com/MetadataStore
- 
  aiplatform.googleapis.com/Model
- 
  aiplatform.googleapis.com/SpecialistPool
- 
  aiplatform.googleapis.com/Tensorboard
- 
  aiplatform.googleapis.com/TrainingPipeline
- 
  aiplatform.googleapis.com/NotebookRuntimeTemplate
- Vertex AI Workbench
- 
  notebooks.googleapis.com/Instance
- VMware Engine
- 
  vmwareengine.googleapis.com/Cluster
- 
  vmwareengine.googleapis.com/ExternalAccessRule
- 
  vmwareengine.googleapis.com/ExternalAddress
- 
  vmwareengine.googleapis.com/VmwareEngineNetwork
- 
  vmwareengine.googleapis.com/NetworkPeering
- 
  vmwareengine.googleapis.com/NetworkPolicy
- 
  vmwareengine.googleapis.com/PrivateCloud
- 
  vmwareengine.googleapis.com/PrivateConnection
- VPC Connector
- 
  vpcaccess.googleapis.com/Connector
- VPN Gateway
- 
  compute.googleapis.com/VpnGateway
- VPN Tunnel
- 
  compute.googleapis.com/VpnTunnel
- Workstations
- 
  workstations.googleapis.com/Workstation
- 
  workstations.googleapis.com/WorkstationConfig
¿Qué sigue?
- Para trabajar con módulos personalizados, consulta Cómo usar módulos personalizados para las estadísticas del estado de la seguridad.
- Para codificar definiciones de módulos personalizados por tu cuenta, consulta Cómo codificar módulos personalizados para las estadísticas del estado de la seguridad.
- Para probar tus módulos personalizados, consulta Cómo probar módulos personalizados para las estadísticas del estado de la seguridad.