Skip to content

Epic: AWS compliance lens — CloudTrail pod-correlation + cluster-wide kube-apiserver audit ingestion (v1.3) #212

Description

@gnana997

Summary

Two surfaces, one narrative: "every action by every identity, visible in one console — including the ones outside Periscope's user base."

Surface 1 — CloudTrail pod-correlation table: joins the AWS-side audit feed (CloudTrail) with K8s-side identity (pod / SA / role assumption chain) so operators can answer "what did this pod do to AWS?" without bouncing between two logs.

Surface 2 — Cluster-wide kube-apiserver audit ingestion: visibility into every identity acting inside K8s (ServiceAccounts, controllers, automation) — not just users acting through Periscope. Same audit-feed view; new pivot.

Why this is one epic

Both surfaces share the same data-plane work: ingest an audit log from outside Periscope, parse it, join it with the existing impersonation-driven audit, dedupe, surface in the unified /audit view with new filter pivots.

Sub-tasks (filed when work begins)

  • compliance — backend: CloudTrail EventBridge subscriber (per-cluster, per-region) with batched delivery to the server.
  • compliance — backend: pod-session-ARN join engine (CloudTrail userIdentity.sessionContext.sessionIssuer.arn → IAM role → SA bound to that role → pods).
  • compliance — backend: kube-apiserver audit log ingestion (read the cluster's audit policy + webhook output OR the static log file via the agent).
  • compliance — backend: dedupe (Periscope's own audit emits pod.exec.attempted + the apiserver audit emits the same event under a different identity — merge correctly).
  • compliance — frontend: /audit page filter pivots — by AWS service, by AWS API action, by K8s identity-kind (User / SA / Group), by source (Periscope / CloudTrail / apiserver-audit).
  • compliance — frontend: pod detail pane "AWS API calls" tab — every CloudTrail event traceable to this pod's session in its lifetime.
  • compliance — docs: usage/compliance-lens.md + setup/audit-ingestion.md + the IAM permissions needed for CloudTrail subscribe.

Out of scope (v1.4)

  • Custom audit retention policies per-source (single retention window for v1.3)
  • SIEM-side replay tools (Periscope serves the in-app view; export to CloudWatch / Loki / Datadog via existing stdout JSON sink)

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions