Skip to content

Security: louloulin/AgentMem

Security

docs/SECURITY.md

AgentMem Security Documentation

Version: 2.0.0
Last Updated: 2025-01-05


πŸ“‹ Table of Contents

  1. Security Model
  2. Authentication
  3. Authorization
  4. Data Protection
  5. Network Security
  6. Vulnerability Reporting
  7. Security Best Practices
  8. Security Updates

πŸ”’ Security Model

AgentMem implements a multi-layered security model:

Layers

  1. Authentication: Verify user identity
  2. Authorization: Control access to resources
  3. Encryption: Protect data in transit and at rest
  4. Audit Logging: Track security events
  5. Input Validation: Prevent injection attacks

πŸ” Authentication

Supported Methods

JWT (JSON Web Tokens)

Default authentication method

// Generate token
let token = jwt::encode(
    &Header::default(),
    &Claims::new(user_id, expiration),
    &EncodingKey::from_secret(secret.as_ref()),
)?;

Features:

  • Stateless authentication
  • Configurable expiration
  • Refresh token support
  • Secure secret management

API Keys

For service-to-service communication

curl -H "X-API-Key: your-api-key" \
  http://localhost:8080/api/v1/memories

Features:

  • Per-service keys
  • Key rotation support
  • Scope-based permissions

Session Authentication

For web UI

  • Secure session cookies
  • CSRF protection
  • Session timeout

πŸ›‘οΈ Authorization

Role-Based Access Control (RBAC)

AgentMem supports fine-grained permissions:

Roles

  • Admin: Full system access
  • User: Standard user access
  • Service: Service account access
  • Read-Only: Read-only access

Permissions

  • memory:read - Read memories
  • memory:write - Create/update memories
  • memory:delete - Delete memories
  • agent:manage - Manage agents
  • user:manage - Manage users
  • system:admin - System administration

Scope-Based Access

Memories are scoped by:

  • User: User-specific memories
  • Agent: Agent-specific memories
  • Organization: Organization-wide memories
  • Session: Session-specific memories

πŸ”’ Data Protection

Encryption

In Transit

  • TLS 1.2+ for all HTTP connections
  • HTTPS required in production
  • Certificate validation

At Rest

  • Database encryption (optional)
  • Vector store encryption (optional)
  • Backup encryption (recommended)

Data Isolation

  • Multi-tenancy: Complete data isolation
  • Scoped access: Memory scoping
  • User separation: User-level isolation

🌐 Network Security

Firewall Configuration

Recommended Ports:

  • 8080: HTTP API (internal)
  • 8443: HTTPS API (production)
  • 9090: Metrics (internal)

Block:

  • Direct database access
  • Internal service ports

Rate Limiting

  • API rate limits: Prevent abuse
  • IP-based throttling: DDoS protection
  • User-based limits: Fair usage

CORS Configuration

// Production CORS settings
let cors = Cors::default()
    .allow_origin("https://yourdomain.com")
    .allow_methods([Method::GET, Method::POST])
    .allow_headers([CONTENT_TYPE, AUTHORIZATION]);

πŸ› Vulnerability Reporting

Reporting Process

Security vulnerabilities should be reported privately:

  1. Email: security@agentmem.dev
  2. PGP Key: [Link to key]
  3. Response Time: Within 48 hours
  4. Disclosure: Coordinated disclosure

What to Include

  • Description of vulnerability
  • Steps to reproduce
  • Potential impact
  • Suggested fix (if any)

Responsible Disclosure

  • Do not publicly disclose until fixed
  • Do not exploit vulnerabilities
  • Do allow time for fix
  • Do coordinate disclosure

βœ… Security Best Practices

For Administrators

  1. Use Strong Secrets

    # Generate secure secret
    openssl rand -base64 32
  2. Enable HTTPS

    [server]
    tls_enabled = true
    tls_cert = "/path/to/cert.pem"
    tls_key = "/path/to/key.pem"
  3. Regular Updates

    • Keep AgentMem updated
    • Update dependencies
    • Monitor security advisories
  4. Audit Logging

    [observability]
    audit_logging = true
    log_level = "info"
  5. Backup Encryption

    # Encrypted backup
    tar czf - data/ | gpg -c > backup.tar.gz.gpg

For Developers

  1. Input Validation

    // Validate user input
    if content.len() > MAX_MEMORY_LENGTH {
        return Err(Error::InvalidInput);
    }
  2. SQL Injection Prevention

    • Use parameterized queries
    • Validate all inputs
    • Use ORM where possible
  3. XSS Prevention

    • Sanitize user input
    • Use content security policy
    • Escape output
  4. Secret Management

    // Use environment variables
    let api_key = std::env::var("API_KEY")
        .expect("API_KEY not set");

πŸ”„ Security Updates

Update Process

  1. Monitor: Security advisories
  2. Assess: Vulnerability severity
  3. Patch: Apply security fixes
  4. Test: Verify fixes
  5. Deploy: Update production
  6. Notify: Inform users

Version Support

  • Current Version: Full support
  • Previous Version: Security patches only
  • Older Versions: No support

πŸ“Š Security Metrics

Monitoring

  • Failed authentication attempts
  • Rate limit violations
  • Unusual access patterns
  • Error rates

Alerts

  • Multiple failed logins
  • Unusual API usage
  • Security events
  • System anomalies

πŸ”— Related Documentation


πŸ“ž Security Contact


Last Updated: 2025-01-05
Version: 2.0.0

There aren't any published security advisories