An attacker with control-plane access rarely needs to break anything: they grant themselves data-plane access legitimately. Conversely, control-plane logs alone will not tell you which records were read — that is why data-plane logging must be deliberately enabled on sensitive stores.
| Family | AWS | Answers |
|---|---|---|
| Control plane audit | CloudTrail | Who called which API, from where, when |
| Network flow | VPC Flow Logs | What talked to what, how much |
| Data access | S3 access logs, CloudTrail data events | Which objects/records were touched |
| Service & app | CloudWatch, ALB logs | Errors, requests, application behaviour |
Design decisions that always come up: aggregate to a separate logging account with restricted access; make the log bucket immutable (object lock) so an attacker cannot erase their tracks; and be deliberate about data-event volume, which can cost more than the workload it monitors.
The value of a good CNAPP is not the finding list — it is attack-path analysis: "this internet-facing container has a critical CVE, runs as root, and its role can read the customer data bucket." One such chain outranks a thousand medium findings, and that prioritisation is what you should judge the tool on.
With IaaS you configure infrastructure. With SaaS you configure someone else's product and inherit their defaults. The recurring risks:
SSPM (SaaS Security Posture Management) is CSPM for SaaS tenants; Netskope's API-mode CASB overlaps heavily with it, as does Workspace's own security centre. Decide which is authoritative rather than running both blindly.
CloudTrail shows a role assumed from an unfamiliar IP, then GetObject calls are suspected on a sensitive bucket — but you cannot see them. Why?
A useful maturity question: for each of your top ten cloud risks, is the control preventive or detective? A programme that is all detective is a programme that will always be reacting.