Threat Model
Understanding the threat landscape is essential for implementing effective security controls. LLM proxies face unique risks due to their position as a gateway to expensive, powerful AI capabilities and their handling of sensitive credentials.
Critical Threats
API key theft, unauthorized access, credential exposure in logs, man-in-the-middle attacks on unencrypted connections
High Risk
Rate limit bypass, prompt injection leading to data exfiltration, denial of service through resource exhaustion
Standard Risks
Information disclosure in error messages, insufficient logging, configuration drift, supply chain vulnerabilities
| Threat | Risk Level | Mitigation |
|---|---|---|
| API Key Leakage | Critical | Secret management, encryption at rest, no logging |
| Unauthorized Access | Critical | Strong authentication, IP allowlisting, MFA |
| Cost Overrun Attacks | High | Rate limiting, budget alerts, quotas |
| Data Exfiltration | High | Input validation, content filtering, DLP |
| Denial of Service | Medium | Rate limiting, circuit breakers, scaling |
Authentication Hardening
🔐 Secure Credential Management
Never store API keys or secrets in code repositories, configuration files committed to version control, or environment variables visible in process listings. Use dedicated secret management solutions.
- Use HashiCorp Vault, AWS Secrets Manager, or Azure Key Vault
- Rotate API keys regularly (monthly for production)
- Implement least-privilege API keys with restricted scopes
- Use separate keys for development, staging, and production
- Monitor for leaked credentials using secret scanning tools
import os from hvac import Client # Fetch secrets from Vault at runtime def get_api_key(provider): client = Client(url=os.environ['VAULT_ADDR']) client.token = os.environ['VAULT_TOKEN'] secret = client.secrets.kv.v2.read_secret_version( path=f'llm-keys/{provider}' ) return secret['data']['data']['api_key'] # Never log or expose the key api_key = get_api_key('openai')
🔑 Multi-Factor Authentication
Require MFA for all administrative access to your LLM proxy. Implement IP allowlisting for management interfaces. Consider certificate-based authentication for service-to-service communication.
Access Control
👤 Principle of Least Privilege
Grant users and services only the minimum permissions required for their function. Implement role-based access control (RBAC) with granular permissions for different operations and model access.
- Separate read-only, write, and admin roles
- Restrict model access by team or application
- Implement budget limits per user or team
- Require approval for high-cost model access
📊 Rate Limiting & Quotas
Implement multi-level rate limiting to prevent abuse and control costs. Set limits at user, team, and global levels with different thresholds for different models based on cost.
Data Protection
🔒 Encryption Requirements
All communications must use TLS 1.3. Encrypt cached responses and logs at rest using AES-256. Implement perfect forward secrecy for all connections. Never cache or log sensitive user data without explicit encryption.
📝 Logging Safely
Comprehensive logging is essential for security monitoring, but logs must not contain sensitive information. Redact or hash API keys, user prompts containing PII, and response content in logs.
- Log request metadata, not content
- Hash user identifiers before logging
- Set appropriate log retention periods
- Encrypt log storage at rest
Security Monitoring
Implement comprehensive security monitoring to detect and respond to threats in real-time. Alert on anomalous patterns that could indicate compromise or abuse.
alerting_rules: - name: unusual_api_volume condition: "requests_per_hour > 10 * baseline" severity: high - name: failed_auth_spike condition: "failed_auth > 10 in 5 minutes" severity: critical - name: cost_anomaly condition: "hourly_cost > 3 * average" severity: high - name: unusual_model_access condition: "new_model_accessed" severity: medium
Pre-Deployment Security Checklist
📋 Mandatory Security Controls
🔗 Additional Resources
Continue your security journey: LLM Proxy vs API Gateway | Gateway vs Proxy Difference | Architecture Explained | Why Use LLM Proxy