Cloud Governance & Compliance: Four Practices That Stop the Audit Panic
Four practical governance practices that turn audit weeks from fire drills into non-events — and keep engineers out of the blame loop.

The pattern is depressingly consistent. A customer calls us because they have an audit coming — SOC 2, HIPAA, PCI, HITRUST, ISO 27001 — and they have realized, three weeks out, that they cannot answer basic questions about their cloud environment. Who has access to production? When was the last time IAM permissions were reviewed? Where is customer data actually stored? Are encryption keys rotated? They scramble, the auditor gets a qualified opinion, and six months later the same company calls us again for the next audit with the same problems.
Good governance is not about passing audits. It is about running your cloud in a way that makes audits boring. Here are the four practices we push every customer toward, regardless of framework.
1. Infrastructure as Code, With No Exceptions
This is the foundation and it is not negotiable. Every cloud resource that matters — VPCs, subnets, IAM roles, databases, compute, storage, load balancers — must be provisioned through Terraform, OpenTofu, Pulumi, CloudFormation, or an equivalent declarative tool, and the code must be in version control with reviewed pull requests.
The reason this is non-negotiable is not ideology. It is that every audit question you will be asked has a clean answer when infrastructure is code: "show me the current configuration" is a git command. "When did this change and who approved it" is a git log. "Who can make changes to production" is the list of committers with write access to the repo. Without IaC, every one of these questions requires manual investigation across console screenshots and service histories, and the answers are never complete.
ClickOps is the leak
The pattern that kills governance is the "quick fix" in the console that nobody puts back into code. Within six months the console state has drifted from the Terraform state, the Terraform code no longer deploys cleanly, and the environment is effectively unmanaged. The discipline that works: treat every console change as a bug, not a convenience. Tools like Cloud Custodian, AWS Config, or custom drift detection jobs can tell you when drift happens. Fix it the same day.
The exception process
There will be exceptions — a 3am incident, a vendor that only supports clickops, a service with no good Terraform provider. Handle these with a documented exception process: who approved it, why, when it gets remediated, and an alert if the exception is still in place after the agreed deadline. An audit does not punish you for having exceptions. It punishes you for having undocumented exceptions you cannot explain.
2. Identity Governance at the Human Level
The second most common audit failure we see is IAM sprawl. Dozens of users with broad permissions, service accounts with owner-level roles, dormant accounts that were never offboarded, break-glass credentials that have not been rotated in two years, third-party integrations connected with excessive scopes. Every one of these is a finding waiting to happen.
The practices that work:
- SSO for every human. No local IAM users with console passwords. Access to the cloud comes through your identity provider (Entra ID, Okta, Google Workspace) and is governed by the same policies as everything else.
- Role-based access, not user-based access. Humans are members of groups; groups are mapped to roles; roles have permissions. Adding or removing access is a group membership change, reviewed and logged.
- Quarterly access reviews. An automated report lists every human with access to each environment, each person's manager confirms the access is still needed, and stale access is removed. This is SOC 2 CC6.3 and HIPAA access control in one practice.
- Just-in-time elevation for privileged access. Production write access is not granted permanently. Engineers elevate through a PAM tool (AWS IAM Identity Center with session policies, HashiCorp Boundary, Teleport, etc.) for a bounded time, logged and attributable.
Service accounts are half the problem
Human IAM governance is the visible half. Service accounts, CI/CD roles, third-party integrations, and Lambda execution roles are the invisible half, and they are often more numerous and more over-privileged than human accounts. Every service account needs an owner, a purpose, a review cycle, and a documented blast radius. Cloud providers' access analyzer tools (IAM Access Analyzer on AWS, Policy Analyzer on GCP) will help you find the over-privileged ones; the hard part is fixing them without breaking production.
3. Continuous Evidence, Not Annual Evidence
The audit process traditionally asks for evidence at a point in time. The mature governance approach generates evidence continuously so that the audit is simply pulling reports that already exist.
The practices that make this real:
- Automated compliance scanning. AWS Security Hub, GCP Security Command Center, Azure Defender, or third-party tools (Prowler, Wiz, Lacework, Drata, Vanta) run continuously and flag deviations from your chosen baseline. CIS Benchmarks and the cloud provider's own best practices are reasonable starting points; tune them to your environment.
- Centralized logging with retention. CloudTrail, Azure Monitor, Cloud Audit Logs — all of them must be enabled, delivered to a tamper-resistant destination (a separate account, object lock enabled), and retained for at least a year (longer for some frameworks). If you cannot show the audit trail for the last 12 months, you are not passing the audit.
- Configuration baselines. Document what "secure configuration" means for each resource type in your environment, test against it continuously, and remediate automatically where possible. This is the difference between "we believe our S3 buckets are private" and "we have automated evidence that 100 percent of S3 buckets in production are private, and any new bucket that violates the baseline is alerted within 15 minutes."
The compliance-as-code platforms
Vanta, Drata, Secureframe, and similar platforms have made continuous evidence collection mainstream for SOC 2 and adjacent frameworks. They are worth the subscription cost for most midmarket customers. The caveat is that they automate the evidence collection part; they do not automate the engineering work of actually having good controls. A compliance platform in front of a poorly governed environment generates a lot of failing checks that nobody fixes.
4. Data Classification and Its Enforcement
The question "where is our sensitive data?" should have a short, specific answer. For most organizations it does not. Customer PII ends up in analytics pipelines, log files, developer environments, email attachments, and Slack screenshots. Every one of these is a compliance exposure.
The practice: define a data classification scheme (public, internal, confidential, restricted is a standard four-level model), tag data stores with their classification, and enforce policies based on the tag. A database tagged "restricted" has encryption at rest with customer-managed keys, audit logging on every access, network isolation from other environments, and a documented retention policy. A database tagged "internal" does not need all of that and should not pretend to.
The hard part is the long tail
Every customer we have worked with has known, roughly, where their primary customer data lives. The problems live in the long tail: the backup that was taken three years ago and never deleted, the BI extract that a departed analyst put into a personal S3 bucket, the third-party tool that silently started replicating customer data to its own storage. Finding these requires a data discovery tool (Macie, Purview, BigID, Varonis) and a willingness to actually act on the findings. Most organizations run the discovery once, are horrified by the results, and then do nothing. That is worse than not running it at all.
What We Actually Tell Customers
Governance and compliance are not separate projects from engineering. They are constraints on how engineering happens. The customers who pass audits painlessly are the ones who built IaC, SSO, continuous logging, and data classification into their cloud foundation from day one. The customers who treat governance as an annual firedrill pay for it in both stress and in the real security incidents that the governance would have prevented.
The good news: for a customer starting fresh today, all four of these practices can be established in weeks, not months, and the ongoing operational cost is modest. The cost of retrofitting them into a cloud environment that has been running unmanaged for three years is much higher. Start early.
Three Takeaways
- Infrastructure as code is the foundation of every other governance practice. Without it, none of the audit questions have clean answers.
- Identity governance is as much about service accounts as humans. The invisible half is usually the risky half.
- Continuous evidence beats annual evidence. Build the pipelines that generate compliance artifacts automatically, and audits become paperwork, not panic.
Talk with us about your infrastructure
Schedule a consultation with a solutions architect.
Schedule a Consultation