Skip to main content

Audit Logs

DotVault maintains comprehensive audit logs of all activities within your projects, providing transparency, accountability, and compliance support.

Overview

Every action in DotVault is logged with detailed metadata, including:

  • Who: User who performed the action
  • What: Type of action performed
  • When: Timestamp of the action
  • Where: IP address and user agent
  • Context: Additional relevant details

Logged Actions

Project Actions

ActionDescriptionMetadata
project_createNew project createdproject name, slug
project_updateProject settings changedchanged fields
project_deleteProject deleted-
project_viewProject accessed-

Environment Actions

ActionDescriptionMetadata
env_createEnvironment createdlabel, import source
env_updateEnvironment modifiedlabel, via (ui/api/cli)
env_deleteEnvironment deletedlabel
env_viewEnvironment viewedlabel, masked flag
env_exportEnvironment exportedlabel, format
env_importEnvironment importedlabel, format, count
env_restoreVersion restoredlabel, from version

Member Actions

ActionDescriptionMetadata
member_inviteMember invitedemail, role
member_acceptInvitation acceptedemail
member_removeMember removedemail, role
member_role_changeRole changedemail, old role, new role

Access Control Actions

ActionDescriptionMetadata
access_requestAccess requestedreason, duration
access_approveAccess approvedapprover, duration
access_rejectAccess rejectedapprover
access_useElevated access usedactions performed
emergency_requestEmergency access requestedtype, description
emergency_approveEmergency access approvedapprovers
emergency_rejectEmergency access rejectedapprover
emergency_useEmergency access usedactions performed

Security Actions

ActionDescriptionMetadata
loginUser logged inmethod, success
logoutUser logged out-
login_failedFailed login attemptreason
2fa_enabled2FA enabledmethod
2fa_disabled2FA disabled-
2fa_backup_usedBackup code used-
api_key_createdAPI key createdname, scopes
api_key_revokedAPI key revokedname
ip_allowlist_updatedIP allowlist changedadded, removed
webhook_createdWebhook createdtype, events
webhook_deletedWebhook deletedtype

Secret Management

ActionDescriptionMetadata
secret_rotation_enabledRotation enabledkey, interval
secret_rotation_disabledRotation disabledkey
secret_rotatedSecret rotatedkey, method
sync_configuredSync configuredsource, target
sync_executedSync performedsource, target, changes
sync_approvedSync approvedapprover

Viewing Audit Logs

Web Interface

  1. Navigate to Project Settings
  2. Click "Audit Logs" tab
  3. Filter by:
    • Date range
    • Action type
    • User
    • Resource

API

# Get project audit logs
GET /api/projects/{projectId}/audit-logs?page=1&limit=50

# Filter by action
GET /api/projects/{projectId}/audit-logs?action=env_update

# Filter by user
GET /api/projects/{projectId}/audit-logs?userId=user_xxx

# Filter by date range
GET /api/projects/{projectId}/audit-logs?from=2024-01-01&to=2024-01-31

CLI

# View recent logs
dotvault audit my-project --limit 50

# Filter by action
dotvault audit my-project --action env_update

# Export to file
dotvault audit my-project --from 2024-01-01 --to 2024-01-31 --format csv --output audit.csv

Exporting Audit Logs

Formats

  • JSON: Machine-readable, complete data
  • CSV: Spreadsheet-friendly
  • PDF: Human-readable report
  • Syslog: SIEM integration

API Export

POST /api/projects/{projectId}/audit-logs/export
{
"format": "csv",
"from": "2024-01-01T00:00:00Z",
"to": "2024-01-31T23:59:59Z",
"actions": ["env_update", "env_view"]
}

Real-time Streaming

For SIEM integration and real-time monitoring:

WebSocket

const ws = new WebSocket("wss://api.dotvault.io/audit-stream");
ws.onmessage = (event) => {
const log = JSON.parse(event.data);
console.log("New audit log:", log);
};

Webhook

Configure webhooks to receive audit events:

POST /api/projects/{projectId}/webhooks
{
"type": "generic",
"url": "https://your-siem.com/webhook",
"events": ["env_update", "env_delete", "login_failed"],
"secret": "your-webhook-secret"
}

Retention

Audit log retention depends on your plan:

PlanRetention
Free7 days
Pro90 days
EnterpriseUnlimited

Enterprise customers can configure custom retention policies.

Compliance

SOC 2

Audit logs support SOC 2 compliance by providing:

  • Change tracking (CC6.1)
  • Access logging (CC6.2)
  • Failed access attempts (CC6.3)
  • Privileged access monitoring (CC6.4)

GDPR

For GDPR compliance:

  • All data access is logged
  • Export capability for data portability
  • Retention policies for data deletion

HIPAA

For HIPAA compliance:

  • Access controls and logging
  • Audit trail integrity
  • Tamper-evident logs

PCI DSS

For PCI DSS compliance:

  • Access to cardholder data environments
  • Failed access attempts
  • Administrative access logging

Best Practices

Regular Review

Schedule weekly or monthly audit log reviews:

  • Look for unusual patterns
  • Verify access requests are legitimate
  • Check for failed login attempts
  • Review emergency access usage

Alerting

Set up alerts for critical events:

# Configure Slack alert for emergency access
POST /api/projects/{projectId}/webhooks
{
"type": "slack",
"url": "https://hooks.slack.com/services/...",
"events": ["emergency_request", "emergency_use"]
}

Integration

Send audit logs to your SIEM:

  • Splunk
  • Datadog
  • Elastic Stack
  • Sumo Logic
  • Custom webhooks

API Reference

List Audit Logs

GET /api/projects/{projectId}/audit-logs
?page=1
&limit=50
&action=env_update
&userId=user_xxx
&from=2024-01-01T00:00:00Z
&to=2024-01-31T23:59:59Z

Response:
{
"data": {
"logs": [
{
"id": "log_xxx",
"action": "env_update",
"user": {
"id": "user_xxx",
"name": "John Doe",
"email": "john@example.com"
},
"resourceType": "env",
"resourceId": "env_xxx",
"metadata": {
"label": "production",
"via": "web"
},
"ipAddress": "192.168.1.1",
"userAgent": "Mozilla/5.0...",
"createdAt": "2024-01-15T10:30:00Z"
}
],
"pagination": {
"page": 1,
"limit": 50,
"total": 150,
"hasMore": true
}
}
}

Get Audit Log Statistics

GET /api/projects/{projectId}/audit-logs/stats
?from=2024-01-01
&to=2024-01-31

Response:
{
"data": {
"totalEvents": 150,
"byAction": {
"env_view": 80,
"env_update": 20,
"login": 50
},
"byUser": {
"user_xxx": 100,
"user_yyy": 50
},
"failedLogins": 5
}
}

Security

Audit logs are:

  • Immutable: Cannot be modified or deleted
  • Encrypted: At rest with AES-256
  • Access-controlled: Only project owners can view
  • Backed up: Geo-redundant storage

Privacy

Audit logs contain:

  • User IDs and emails
  • IP addresses
  • User agent strings
  • Action metadata

This data is subject to your privacy policy and data retention requirements.