Skip to main content

Auditing & Logging

Effective security requires visibility into system activity. Squid provides comprehensive logging and auditing capabilities to support security monitoring, incident investigation, and compliance requirements.

Logging Framework Overview

Squid uses a structured logging framework that captures security-relevant events:

┌─────────────────────────────────────────────────────────────────────┐
│ Log Event Structure │
├─────────────────────────────────────────────────────────────────────┤
│ { │
│ "time": 1706745600000, │
│ "timeISO": "2024-02-01T00:00:00.000Z", │
│ "duration": 1250, │
│ "level": "INFO", │
│ "method": "getData", │
│ "operation": "API_REQUEST", │
│ "config": "cmdb_ci_server", │
│ "message": "Request completed successfully", │
│ "sqlQueries": 45, │
│ "sqlInsertUpdates": 0, │
│ "sqlDeletes": 0, │
│ ...context properties │
│ } │
└─────────────────────────────────────────────────────────────────────┘

Log Levels

Squid supports standard syslog severity levels:

LevelNumericPurpose
EMERG0System is unusable
ALERT1Action must be taken immediately
CRIT2Critical conditions
ERR3Error conditions
WARNING4Warning conditions
NOTICE5Normal but significant
INFO6Informational messages
DEBUG7Debug-level messages

Configuring Log Level

Set the logging level via system property:

Property: x_a46gh_squidx.loglevel
Values: debug, info, warning, error (or numeric 0-7)

Security Logging Recommendations

EnvironmentRecommended LevelRationale
ProductionINFO or WARNINGBalance visibility and volume
DevelopmentDEBUGFull detail for troubleshooting
Security AuditDEBUG (temporary)Comprehensive capture

Security-Relevant Log Events

Authentication Events

Level: INFO/ERR
Event: Access check
Logged Information:
- User attempting access
- Success/failure status
- Missing role (if failure)

Success:

{
"level": "INFO",
"operation": "ACCESS_CHECK",
"message": "Access granted",
"user": "squid_service_account"
}

Failure:

{
"level": "ERR",
"operation": "ACCESS_CHECK",
"message": "Access denied - missing rest role",
"user": "unauthorized_user"
}

Authorization Events

Level: INFO/ERR
Event: Configuration access check
Logged Information:
- Configuration requested
- User roles
- Required roles
- Match result

Failure:

{
"level": "ERR",
"operation": "CONFIG_ACCESS_CHECK",
"message": "Configuration access denied",
"config": "cmdb_ci_server",
"user": "limited_user",
"requiredRoles": ["defaultAccess"],
"userRoles": ["custom_role"]
}

Query Validation Events

Level: WARNING/ERR
Event: Query validation
Logged Information:
- Original query
- Violation type
- Operator detected

Forbidden Operator:

{
"level": "ERR",
"operation": "QUERY_VALIDATION",
"message": "Forbidden operator detected",
"operator": "^NQ",
"query": "base_name=x^NQbase_company!=y",
"user": "potential_attacker"
}

Restricted Operator:

{
"level": "WARNING",
"operation": "QUERY_VALIDATION",
"message": "Restricted operator blocked",
"operator": "LIKE",
"config": "cmdb_ci_server",
"user": "api_user"
}

Data Access Events

Level: INFO
Event: Data retrieval
Logged Information:
- Configuration used
- Row count returned
- Query executed
- Duration
- SQL query count
{
"level": "INFO",
"operation": "DATA_RETRIEVAL",
"config": "cmdb_ci_server",
"rowCount": 1500,
"duration": 2340,
"sqlQueries": 45,
"filter": "base_install_status=1"
}

Response Metadata

Every Squid response includes metadata useful for auditing:

{
"metadata": {
"powered_by": "arc46.io",
"git": "squid-1.1.0+45-abc123",
"build": "2024-02-01T00:00:00.000Z",
"license_max_entities": "Unlimited",
"license_valid_till": "2025-12-31T23:59:59.000Z",
"requested_by": "squid_service_account",
"request_received": "2024-02-01T12:34:56.789Z",
"config": "cmdb_ci_server",
"row_count": 1500,
"provided_filter": "base_name=webserver*",
"combined_filter": "base_install_status=1^base_name=webserver*",
"warnings": []
}
}

Key Audit Fields

FieldPurpose
requested_byUser who made the request
request_receivedTimestamp of request
configConfiguration accessed
row_countAmount of data returned
provided_filterUser's query
combined_filterFinal executed query
warningsAny security warnings

Debug Flags

For detailed security investigation, Squid provides debug flags:

FlagPurpose
DEBUG_CHECK_CONFIG_ACCESS_FLAGLog detailed authorization decisions
DEBUG_QUERY_EXECUTIONLog query construction
DEBUG_REFERENCE_RESOLUTIONLog reference lookups
warning

Debug flags can expose sensitive information. Enable only during active investigation and disable immediately after.

Audit Use Cases

Use Case 1: Investigating Unauthorized Access Attempt

Scenario: Security alert for failed access attempts

Investigation Steps:

  1. Filter logs for operation=ACCESS_CHECK and level=ERR
  2. Identify user and timestamp
  3. Review subsequent attempts
  4. Correlate with other security logs

Log Query Example:

level=ERR AND operation IN (ACCESS_CHECK, CONFIG_ACCESS_CHECK)
AND time > [incident_start] AND time < [incident_end]

Use Case 2: Data Exfiltration Detection

Scenario: Unusual data access patterns

Monitoring Approach:

  1. Baseline normal row_count per configuration
  2. Alert on significant deviations
  3. Monitor for repeated large queries
  4. Track unique user/config combinations

Metrics to Track:

  • Rows returned per user per day
  • Unique configurations accessed
  • Query frequency
  • After-hours access

Use Case 3: Compliance Audit

Scenario: Demonstrating access controls for compliance

Evidence Collection:

  1. Export logs showing authentication enforcement
  2. Show configuration role requirements
  3. Demonstrate query validation logs
  4. Provide metadata showing audit trail

Use Case 4: Performance Security

Scenario: Detecting potential DoS through expensive queries

Monitoring:

{
"alert_condition": "duration > 30000 OR sqlQueries > 1000",
"action": "flag_for_review"
}

Log Retention Recommendations

Log TypeRetentionRationale
Security events (ERR, CRIT)1 yearIncident investigation
Access logs (INFO)90 daysOperational audit
Debug logs7 daysTroubleshooting only

Integration with SIEM

Squid logs can be integrated with Security Information and Event Management (SIEM) systems:

Log Forwarding

  1. Configure ServiceNow to forward application logs
  2. Parse Squid's structured JSON format
  3. Create correlation rules for security events

Suggested SIEM Rules

RuleTriggerAction
Multiple auth failures5+ failures in 5 minutesAlert
Forbidden operator detectedAny occurrenceAlert
Large data exportrow_count > thresholdLog for review
After-hours accessAccess outside business hoursLog for review
New user/config combinationFirst-time access patternInformational

Response Warnings

Squid includes warnings in responses for security-relevant conditions:

{
"metadata": {
"warnings": [
"ACLs are being enforced. Data may be silently omitted.",
"Restricted operator 'LIKE' is enabled for this configuration.",
"Large result set may impact performance."
]
}
}

Warning Types

WarningMeaningAction
ACL enforcementData might be missingReview ACL configuration
Restricted operators enabledPerformance riskMonitor query patterns
Configuration errorsPotential misconfigurationReview configuration

Creating an Audit Dashboard

Recommended metrics for a security dashboard:

Access Metrics

  • Successful vs failed authentications
  • Unique users per day
  • Peak usage times

Configuration Metrics

  • Most accessed configurations
  • Configurations with most failures
  • New configuration access patterns

Query Metrics

  • Blocked queries (forbidden/restricted)
  • Average query duration
  • Large result sets

Anomaly Detection

  • Deviation from baseline patterns
  • Unusual user/config combinations
  • After-hours access
We track. Ok?