Skip to content
Governance & Security Last updated: May 14, 2026

Iceberg Audit Logging

Iceberg audit logging captures a complete record of all catalog interactions, table reads, write commits, schema changes, and access control decisions, providing the governance evidence trail required for regulatory compliance and security incident investigation.

iceberg audit loggingiceberg access logiceberg compliance auditiceberg catalog auditiceberg data access tracking

Iceberg Audit Logging

Audit logging in Apache Iceberg captures a complete, tamper-evident record of all data operations: who accessed what table, when, what operation was performed, and what data was read or written. Audit logs are critical for regulatory compliance (SOC 2, HIPAA, GDPR, PCI-DSS), security incident investigation, and governance accountability in enterprise data environments.

Iceberg provides audit-relevant information at multiple layers: the catalog layer (who accessed which tables), the snapshot layer (what was written and when), and the query engine layer (what SQL was executed).

Audit Information in Iceberg Metadata

Snapshot-Level Audit Information

Every Iceberg snapshot is an immutable audit record:

-- Spark: view the complete write audit trail for a table
SELECT
    snapshot_id,
    committed_at,
    operation,
    summary['spark.app.id'] as job_id,
    summary['spark.sql.sources.provider'] as source,
    summary['added-records'] as records_added,
    summary['deleted-records'] as records_deleted,
    summary['added-files-size'] as bytes_added
FROM db.orders.snapshots
ORDER BY committed_at;

The snapshot summary can include engine-specific metadata:

Schema Change Audit Trail

-- View all schema changes with timestamps
SELECT * FROM db.orders.metadata_log
ORDER BY timestamp_ms;

This shows every metadata file change — which corresponds to every schema evolution, partition evolution, or write operation.

Catalog-Level Audit Logging (Apache Polaris)

Apache Polaris (the Iceberg REST Catalog co-created by Dremio and Snowflake) provides server-side audit logging of all catalog API interactions:

What Polaris Logs

Log Format

Polaris audit logs are typically emitted as structured JSON events:

{
  "timestamp": "2026-05-14T10:30:00.000Z",
  "event_type": "TABLE_READ",
  "principal": "svc-ml-pipeline",
  "catalog": "production",
  "namespace": ["analytics"],
  "table": "user_features",
  "action": "LoadTable",
  "result": "SUCCESS",
  "credential_vended": true,
  "storage_path": "s3://my-bucket/warehouse/analytics/user_features/",
  "request_id": "req-abc-123"
}

Sending Logs to SIEM

Polaris audit logs can be forwarded to security information and event management (SIEM) systems:

# Polaris logging configuration (polaris.yml)
audit:
  enabled: true
  backend: cloudwatch # or: file, kafka, elasticsearch
  cloudwatch:
    log-group: /polaris/audit
    region: us-east-1

Query Engine Audit Logging (Dremio)

Dremio provides comprehensive query-level audit logging:

Dremio audit logs integrate with Splunk, Elasticsearch, and CloudWatch.

Compliance Use Cases

SOC 2 Compliance

SOC 2 requires demonstrating:

GDPR Article 30 (Records of Processing)

GDPR requires maintaining records of data processing activities:

Data Access Request Response

When a user exercises their right to know what data you hold about them:

Immutability of Audit Records

Iceberg snapshot history is inherently append-only and immutable — old snapshots cannot be retroactively modified. This makes Iceberg’s built-in audit trail tamper-evident:

For complete compliance, supplement Iceberg’s immutable snapshot audit trail with catalog-level audit logs stored in an immutable log store (S3 with Object Lock, CloudWatch Logs with retention policy).

📚 Go Deeper on Apache Iceberg

Alex Merced has authored three hands-on books covering Apache Iceberg, the Agentic Lakehouse, and modern data architecture. Pick up a copy to master the full ecosystem.

← Back to Iceberg Knowledge Base