La API de PlantCare Enterprise implementa un modelo de seguridad Zero Trust. Cada solicitud se autentica en múltiples capas para garantizar la integridad y privacidad de los datos.

1. Autorización de Cliente a API (Claves API)

Los clientes se autentican con una clave permanente pk_ent_ proporcionada durante el registro. Esta clave es validada por el Google Cloud API Gateway.

sequenceDiagram participant Client as Cliente participant GW as "API Gateway" participant KV as "Secret Manager" participant API as "Servicio Backend" Client->>GW: "Solicitud con Bearer pk_ent_..." GW->>KV: "Validar Clave y Permisos" alt "Clave Válida" GW->>API: "Proxy de Solicitud + Encabezados de Identidad" else "Clave Inválida" GW-->>Client: "401 No Autorizado" end

2. Seguridad de Almacenamiento (Escaneo de Malware)

Cada imagen cargada en la API Enterprise se escanea automáticamente en busca de virus y malware antes de ser procesada. Esto se gestiona mediante un Disparador de Cloud Storage asíncrono.

sequenceDiagram participant GCS as "Cloud Storage" participant Func as "Función de Escaneo" participant Scan as "Escáner de Malware" GCS->>Func: "Evento: Objeto Finalizado" Func->>Scan: "Solicitud de Escaneo Autorizada OIDC" Scan->>Scan: "Análisis de Firmas de Malware" alt "Archivo Infectado" Scan-->>Func: "Estado: infectado" Func->>GCS: "ELIMINAR Objeto" Func->>Func: "Registrar Incidente de Seguridad" else "Archivo Limpio" Scan-->>Func: "Estado: limpio" end

3. Autorización de Servicio a Servicio (OIDC)

Cuando el Servicio Backend necesita llamar a servicios internos (como el Procesador de Imágenes), no utiliza un secreto compartido. En su lugar, utiliza Tokens de Identidad OIDC obtenidos del Servidor de Metadatos de Google.

sequenceDiagram participant API as "Servicio de Análisis" participant Meta as "Servidor de Metadatos GCP" participant Proc as "Procesador de Imágenes" API->>Meta: "Obtener Token ID (Audience: URL del Procesador)" Meta-->>API: "Token ID JWT Firmado" API->>Proc: "POST /process (Authorization: Bearer JWT)" Proc->>Proc: "Validar JWT con Google PubKeys" alt "Token Válido" Proc-->>API: "200 OK (Imagen Procesada)" else "Token Inválido" Proc-->>API: "403 Prohibido" end

3. Aislamiento de Red

Para blindar aún más el sistema, el Procesador de Imágenes está configurado con INGRESS_TRAFFIC_INTERNAL_ONLY. Esto significa que es físicamente inalcanzable desde el internet público, incluso con un token válido. La comunicación se enruta a través de un Conector VPC Serverless privado.