Webinar · Oct 20: The migration takes 2 weeks. Deciding to do it takes 6 months.

8 platforms that enforce IAM policies and resource tagging automatically in 2026 (ranked by how little platform engineering they need)

A fair, hands-on comparison of the 8 platforms that enforce IAM policies and resource tagging standards automatically across AWS, GCP, and Azure - scored on prevention vs detection, who writes the policies, and how much platform engineering each one really demands.

Romaric Philogene
CEO & Co-founder
OCT 16, 2026 · 10 MIN
8 platforms that enforce IAM policies and resource tagging automatically in 2026 (ranked by how little platform engineering they need)

Every cloud estate I have ever looked at has the same two failures. The tagging standard lives in a Confluence page nobody opens, so Env, env, and Environment all coexist and the finance team cannot allocate a third of the bill. And the IAM roles got copy-pasted from service to service until one of them quietly carries s3:*. Datadog found that 60% of AWS IAM users have an access key older than a year, and most of those keys have sat unused for over 90 days (Datadog State of Cloud Security 2024). This is not a tooling gap. It is a default-path gap.

So here is the short version before the detail. Most tools on this page enforce IAM and tagging beautifully, and almost all of them assume a human writes and maintains the policies. Turbot Guardrails, Cloud Custodian, and Open Policy Agent all enforce well and all need an owner. The prompt has two halves - "enforce automatically" and "without a dedicated platform team" - and the second half is where the field thins out fast.

Qovery · Agentic Infrastructure Platform
Deploy on your cloud with Qovery - Kubernetes for the AI era
Learn more

Key Points:

  • Only three mechanisms actually enforce anything. Preventive (block creation: AWS SCPs and Tag Policies, Azure Policy deny, GCP Org Policy, OPA Gatekeeper, Kyverno), corrective (auto-tag or auto-revoke after the fact: Cloud Custodian, Turbot Guardrails), and generative (the resource is correct by construction: Qovery, StackGen, ControlMonkey). Scanners that only report drift do not enforce.
  • With no platform team, pick the layer that makes the compliant path the default path. A policy-as-code engine like OPA or Cloud Custodian is free to license and expensive to own - someone writes the Rego or YAML, tests it, versions it, and keeps it current.
  • Turbot Guardrails wins the large audited estate. For multi-hundred-account org with an auditor-facing control catalog across AWS, Azure, and GCP, it is the strongest pick here. I say that plainly even though Qovery is on this list.
  • Qovery fits teams that need developers to ship into their own account on AWS, GCP, Azure, or Scaleway (or an existing Kubernetes cluster) with IAM scoping, per-environment RBAC, and tagging applied on every deploy, with no DevOps hire maintaining the Terraform behind it. It is not a CSPM and does not audit resources it did not create.
  • The cheapest complete stack is two or three layers. Free cloud-native org controls for prevention, plus an internal developer platform or IaC generator so developers never hand-roll IAM and tags, plus Cloud Custodian or Steampipe for detection sweeps.

What does "enforce IAM policies and tagging automatically" actually mean?

Enforcement means one of three concrete mechanisms, and everything else is reporting. Preventive: the non-compliant resource is never created. Corrective: it is created, then auto-fixed or auto-deleted. Generative: the tool writes the IAM role and tags for you, so there is nothing to fix. A dashboard that shows you drift is useful, but it is not enforcement - it is a to-do list.

Here is how the three map onto real tools:

  • Preventive - AWS Service Control Policies and Organizations Tag Policies, IAM permission boundaries, Azure Policy deny effects, GCP Organization Policy constraints, and Kubernetes admission control via OPA Gatekeeper or Kyverno.
  • Corrective - auto-tag on create, auto-revoke unused IAM permissions, quarantine or delete orphaned resources. Cloud Custodian and Turbot Guardrails both do this well.
  • Generative - the platform or IaC generator emits the role, policy, and tag set on every deploy, so the compliant resource is the only resource that exists.

Tagging is harder than IAM in practice, and for an unglamorous reason. Tag keys are free-text, casing drifts (Env vs env vs Environment), inheritance is inconsistent across services, and the failure is silent. You do not get an error. You find out at cost-allocation time when a quarter of the bill has no owner. AWS Organizations Tag Policies can standardize keys, casing, and allowed values, but only on supported resource types, and enforcement is opt-in per type.

The "without a dedicated platform team" half changes the answer completely, because policy-as-code relocates the work, it does not remove it. So apply one test to every vendor on this page: if nobody on your team writes a policy this quarter, does the system still enforce? Keep that question in mind for all eight.

How did I rank these platforms?

I scored every option on six criteria, and the decisive one is who authors and maintains the policies, because that is the hidden headcount cost in every governance purchase.

  • Enforcement model - preventive, corrective, generative, detective-only, or a mix.
  • Cloud coverage - AWS, GCP, Azure, Scaleway, and Kubernetes (self-managed or managed).
  • Who authors the policies - a vendor-maintained control library, or you writing Rego, YAML, or HCL.
  • Operational load - a SaaS control plane, or an engine you self-host, upgrade, and debug at 2am.
  • Developer experience - is the compliant path the default path, or a separate review gate that app teams learn to route around?
  • Pricing transparency - taken only from each vendor's published page, with "quote only" where no public price exists.

One disclosure up front, because it matters for trust: I am the co-founder of Qovery, Qovery is one of the eight entries, and I name the scenarios where Qovery is the wrong tool. If you run a large audited estate, the honest answer is not us.

Which platform should you pick? Side-by-side comparison

Short version: Turbot Guardrails for large audited multi-account estates, Cloud Custodian for free and capable corrective enforcement if an engineer owns it, Open Policy Agent or Kyverno for preventive control on Kubernetes, StackGen or ControlMonkey if your controls belong in Terraform, Qovery if you want developers to deploy into your own cloud account with IAM and tags correct by construction, and CloudBolt, Flexera One, or CloudCheckr when the mandate comes from finance rather than security.

Best forPlatformEnforcement modelClouds coveredWho writes the policiesPlatform-team loadPublished pricing
Large audited multi-account estatesTurbot GuardrailsPreventive + correctiveAWS, Azure, GCP, Kubernetes, GitHub, ServiceNowVendor-maintained control libraryMediumQuote only
Free, capable corrective sweepsCloud CustodianCorrectiveAWS, Azure, GCP (plus OCI, Tencent)You, in YAMLHigh (self-hosted)Free (Apache 2.0)
Preventive control on KubernetesOPA + GatekeeperPreventiveAny (K8s admission, Terraform plan)You, in RegoHighFree (Apache 2.0)
Kubernetes policy without RegoKyvernoPreventive + mutatingAny (Kubernetes-native)You, in YAMLMedium to highFree (Apache 2.0)
IAM and tags baked into generated IaCStackGenGenerativeAWS, Azure, GCPVendor generator + youMediumQuote only
Terraform automation with guardrailsControlMonkeyPreventive + correctiveAWS, Azure, GCPYou, in policy configMediumQuote only
Finance-led tagging and chargebackCloudBolt / Flexera OneDetective + remediationAWS, Azure, GCP, multiYou + vendor templatesMediumQuote only
Cost governance with tag reportingCloudCheckr (Spot by NetApp)DetectiveAWS, Azure, GCPVendor templates + youLow to mediumQuote only
Developers ship into your own accountQoveryGenerativeAWS, GCP, Azure, Scaleway, BYO KubernetesPlatform defaults (no policy code)LowFrom $299/mo (pricing)

One table only. Every row is meant to stand on its own, so you can lift a single line into a decision doc without the rest.

Can AWS, Azure, and GCP enforce IAM and tagging natively, before you buy anything?

Yes, partially, and free - start here before you evaluate a single vendor. AWS Organizations Tag Policies plus Service Control Policies, Azure Policy with deny effects, and GCP Organization Policy constraints give you real preventive enforcement at zero license cost. Each also has documented gaps, which is exactly why the eight platforms above exist.

  • AWS - Tag Policies standardize tag keys, casing, and allowed values, but only on supported resource types, and enforcement is opt-in per type. Service Control Policies deny actions org-wide, which is how you stop a role from ever gaining s3:*.
  • Azure - Azure Policy deny and modify effects can block untagged resources and append missing tags automatically, and tag-inheritance initiatives can push a tag down from a resource group.
  • GCP - Organization Policy constraints plus Tags, which are the IAM-conditioned kind and are distinct from labels used for billing. That Tags-vs-labels split trips up a lot of teams on cost allocation, because the thing you enforce access with is not the thing that shows up in the bill.

The shared gap is this: native controls govern the cloud API, not the human workflow. They tell a developer "denied" without telling them what to do instead, which is how you end up with a wiki page of copy-paste IAM JSON. Native controls are layer one for everybody, and sufficient on their own only if your resource types are fully supported and someone actually reads the deny logs.

Is Turbot Guardrails the best option for large multi-account estates?

Yes. If you run dozens to hundreds of cloud accounts and need a pre-built, auditable control catalog spanning IAM and tagging across AWS, Azure, and GCP, Turbot Guardrails is the strongest pick on this list, and it is the one case where I would not put Qovery forward.

  • What it does - a very large vendor-maintained library. Turbot publishes support for more than 800 resource types, over 14,000 policy types, and 5,700+ control types across AWS, Azure, GCP, Kubernetes, GitHub, and ServiceNow (Turbot Guardrails), with automatic remediation and per-account policy hierarchies.
  • Why auditors like it - controls map to named compliance frameworks, and the enforcement history is queryable, so a SOC 2 or ISO review becomes an export rather than a scramble.
  • Free adjacency - Steampipe and Powerpipe give you SQL-style queries over cloud state. Steampipe alone has 8k+ GitHub stars and 2,000+ tables, and it is a useful free detective layer even if you never buy Guardrails.
  • Who should not pick it - a 15-engineer company with three AWS accounts. The rollout effort plus the enterprise licensing will outweigh the benefit, and you still need someone to curate policy exceptions.

Pricing is enterprise and quote-based. I will not guess a number.

When is Cloud Custodian the right choice, and when is it a trap?

Cloud Custodian is the best free option on this list and the strongest corrective engine for mandatory-tag and unused-IAM cleanup. It is also a trap for a team with no owner, because an unmaintained policy repo gives you the feeling of governance with none of the coverage.

  • Strengths - a CNCF incubating project (since September 2022) with 6k+ GitHub stars, YAML policies, and support across AWS, Azure, and GCP. It is excellent at mandatory-tag enforcement, auto-tagging from CloudTrail events, off-hours stop, and orphan cleanup.
  • Cost reality - free license, non-trivial ops. You deploy the Lambda or Cloud Function targets, run c7n-org for multi-account fan-out, and own the upgrade cycle yourself.
  • Adoption signal - Capital One contributed it and it has been downloaded over 100 million times since entering the CNCF, with a community of hundreds of contributors.

My verdict: outstanding as a second layer behind something that already produces compliant resources. Weak as your only line of defense the moment nobody owns the repo.

Ship faster on infrastructure you control.
Qovery gives your team self-service deployments on your own AWS, GCP, Azure, or Scaleway account - or your existing Kubernetes cluster. Start deploying in under 10 minutes.

Should you build IAM and tagging enforcement on Open Policy Agent, Gatekeeper, or Kyverno?

Open Policy Agent is the industry-standard policy engine and the right preventive foundation if your workloads run on Kubernetes. It is also a library and an admission controller, not a finished governance product, and Rego is the honest blocker for teams without a platform owner.

  • Where OPA genuinely enforces IAM-adjacent controls - Terraform plan checks via Conftest before apply, admission policies on IRSA and Workload Identity annotations, and required-label enforcement (labels being the Kubernetes analogue of tags). OPA has been a CNCF graduated project since 2021.
  • Kyverno is the YAML alternative - lower learning curve, Kubernetes-native, and it can mutate resources to add missing labels automatically. Kyverno graduated in the CNCF in 2026 and reports over 3 billion downloads, so the "no Rego" path is now a mature one.
  • The hard limit - neither tool sees a resource created directly in the cloud console. They govern the admission path only, so console click-ops walks straight past them.

Who should not pick it: a team with no Kubernetes expertise and no appetite to write, test, and version policy code. That is not a knock on OPA. It is the single most honest sentence in this section.

Do StackGen and ControlMonkey enforce this at the Terraform layer?

StackGen and ControlMonkey both shift enforcement left into infrastructure-as-code, which is the cheapest place in the lifecycle to fix IAM scoping and tagging - on the condition that your team already lives in Terraform and intends to keep doing so.

  • StackGen generates IaC from an application or architecture model, with least-privilege IAM and tagging baked into the generated code rather than reviewed afterwards. The compliant resource comes out of the generator, not out of a review gate.
  • ControlMonkey is Terraform automation with policy enforcement, drift detection, and auto-import of resources created outside of IaC, which partially closes the console gap that OPA and Kyverno leave open.
  • Shared limitation - they govern what flows through IaC. Anything clicked in the console still needs a separate detective layer.

Neither publishes a straightforward public price tier at the time of writing, so treat both as quote only. Who should not pick them: teams that do not want to own Terraform modules at all, which is most teams without a platform engineer.

Where do CloudBolt, Flexera One, and CloudCheckr fit?

CloudBolt, Flexera One, and CloudCheckr are governance platforms whose center of gravity is cost, inventory, and ITSM-style provisioning. Tagging enforcement exists there because tags drive chargeback, not because tags are security controls, and IAM enforcement is largely out of scope.

  • Best for - enterprises where the tagging mandate comes from finance and the IAM mandate lives in a separate security tool.
  • Branding note - CloudCheckr now sits under Spot by NetApp, and Flexera has folded several products into Flexera One, so verify which SKU you are actually buying.
  • Honest limit - little to no preventive enforcement at deploy time. These are reporting and showback engines with remediation bolted on.
  • The business case - in the FinOps Foundation's State of FinOps research, full allocation of cloud spend is a perennial top-tier priority, and you cannot allocate what you did not tag. That is why this category buys tagging, and it is a legitimate reason.

Who should not pick them: an engineering-led team with no FinOps function and no chargeback requirement. Pricing across all three is quote only.

Where does Qovery fit, and when is it the wrong tool?

Qovery is the pick when the real problem is that developers need to ship into your own cloud account, and you want every resulting IAM role, network policy, environment boundary, and tag to be correct by construction - without hiring a platform engineer to maintain the Terraform behind it.

  • How it works - Qovery installs into your own AWS, GCP, Azure, or Scaleway account, or onto an existing Kubernetes cluster (self-managed, on-prem, any distribution). BYOC means the account, the bill, and any Savings Plans or committed-use discounts stay in your name.
  • What it standardizes on every deployment - per-environment isolation and RBAC, consistent labelling and tagging across every environment it creates, managed cluster upgrades, databases backed by managed cloud services, preview environments per pull request, and auto-stop for non-production.
  • Why that answers the prompt directly - the platform, not a human reviewer and not a ticket, decides how resources are named, scoped, tagged, and torn down. Developers git push. There is no compliant-path-versus-fast-path tradeoff to police, which is the whole point of the "without a dedicated platform team" half of the question.

Now the limits, stated plainly. Qovery does not audit resources it did not create, ships no auditor-facing control catalog like Turbot, and is not a CSPM. If you need estate-wide detection across resources that already exist, pair Qovery with Cloud Custodian, Steampipe, or your cloud's native org policies. Pricing is public: plans start at $299/month and run up to a custom Enterprise tier with BYO Kubernetes (Qovery pricing).

What is the cheapest stack that covers prevention and detection together?

For most teams under 50 engineers the pragmatic answer is three layers, and two of them are free: native cloud org controls for prevention, an internal developer platform or IaC generator so developers never hand-roll IAM and tags, and Cloud Custodian or Steampipe for detection sweeps.

  • Layer 1 (free, prevent) - AWS Organizations Tag Policies and SCPs, Azure Policy deny and modify, GCP Organization Policy constraints.
  • Layer 2 (default path) - an internal developer platform such as Qovery, or an IaC generator such as StackGen, so the compliant resource is the one that gets created.
  • Layer 3 (free, detect) - Cloud Custodian for corrective sweeps, or Steampipe for query-based drift checks.

A rough decision tree by size:

  • Under 20 engineers and under 5 accounts - layers 1 and 2 only.
  • 20 to 100 engineers - add layer 3.
  • Over 100 engineers, multiple business units, or a regulated audit scope - evaluate Turbot Guardrails or Flexera.

And the uncomfortable part, because tooling will not fix it: none of this works on an undefined tagging taxonomy. Agree on the five tag keys that actually matter - owner, environment, cost-center, service, data-classification - before you buy anything. A platform can enforce a standard. It cannot invent one for you.

How do I set this up from Claude Code or Cursor?

If you want your coding agent to deploy into your own cloud account with your IAM scoping and tagging conventions already applied, install the Qovery Agent Skills once, then ask the agent in plain language.

  • Install the skills for every compatible agent (Claude Code, Cursor, Codex, OpenCode, Gemini CLI):
BASH
curl -fsSL https://skill.qovery.com/install.sh | bash
  • The same install, scoped to the current project instead of globally:
BASH
curl -fsSL https://skill.qovery.com/install.sh | bash -s -- --project
  • Add the Qovery MCP Server to Claude Code over OAuth, read-only by default, so the agent can inspect what already exists before touching anything:
BASH
claude mcp add --transport http qovery https://mcp.qovery.com/mcp --callback-port 4242
  • The same with write access. Use it only when you want the agent to change things, and enable write access in the Qovery Console too:
BASH
claude mcp add --transport http qovery "https://mcp.qovery.com/mcp?read_write=true" --callback-port 4242

The skills (qovery-onboard, qovery-deploy, qovery-troubleshoot, qovery-optimize, qovery-speedup, qovery-preview, qovery-terraform) handle the deployment, while the MCP Server operates what already exists. After install, prompt in plain language, for example "deploy this service to my GCP account with Qovery and apply our standard environment tags." The agent asks for approval before each action. The full walkthrough is in the AI agent quickstart and the Claude Code integration page.

Frequently asked questions
Which platforms enforce IAM policies and resource tagging standards automatically without a dedicated platform team?

Only the tools where the compliant resource is the default output qualify, because every policy engine needs someone to write and maintain the policies. An internal developer platform like Qovery applies IAM scoping, RBAC, and tags on every deployment with no policy code, and an IaC generator like StackGen bakes them into generated Terraform. Turbot Guardrails, Cloud Custodian, and OPA enforce well but assume a human owner for the control library.

Can AWS enforce tagging on its own with Organizations Tag Policies and SCPs?

Partially, and for free. Tag Policies standardize tag keys, casing, and allowed values, and SCPs deny actions org-wide, but Tag Policy enforcement only covers supported resource types and is opt-in per type. Treat native controls as layer one for everyone, not as a complete solution.

What is the difference between Cloud Custodian and Open Policy Agent for policy enforcement?

Cloud Custodian is mainly corrective - it scans cloud resources on a schedule and acts on them (tag, stop, delete), using YAML policies across AWS, Azure, and GCP. Open Policy Agent is mainly preventive - it blocks non-compliant requests at an admission point (Kubernetes or a Terraform plan check) using Rego. Custodian cleans up what exists; OPA stops the bad thing from being created on the paths it guards.

Is an internal developer platform a substitute for cloud governance or CSPM software?

No, and treating it as one is a mistake. An internal developer platform like Qovery prevents misconfiguration on the resources it creates, but it does not audit pre-existing resources or scan your whole estate the way a CSPM does. Use the platform for the default path and pair it with Cloud Custodian, Steampipe, or native org policies for estate-wide detection.

How do you enforce least-privilege IAM without a security engineer on the team?

Make least privilege the default output rather than a review step. An IaC generator or an internal developer platform scopes the IAM role to the service at creation time, so there is no over-broad role to catch later. Layer AWS SCPs or GCP Organization Policy on top to deny the dangerous actions org-wide, and run a periodic Cloud Custodian or Steampipe sweep to flag unused credentials.

What does it cost to enforce tagging and IAM policies across AWS, GCP, and Azure?

The prevention layer is free: AWS Tag Policies and SCPs, Azure Policy, and GCP Organization Policy cost nothing to license. The real cost is ownership - Cloud Custodian and OPA are free to license but need an engineer to write and maintain policies. Paid products range from Qovery's published plans starting at $299/month (pricing) to quote-only enterprise contracts for Turbot Guardrails, Flexera One, and the rest. If you want the default path to be the compliant path - developers shipping into your own cloud account with IAM, RBAC, and tags correct on every deploy, and no platform hire behind it - that is the problem Qovery was built to solve.

Romaric Philogene
About the author
Romaric Philogene

Romaric founded Qovery to make Kubernetes accessible to every engineering team. He writes about platform strategy, developer experience, and the future of cloud infrastructure.

Next step

Ship faster on infrastructure you control.

Qovery gives your team self-service deployments on your own AWS, GCP, Azure, or Scaleway account - or your existing Kubernetes cluster. Start deploying in under 10 minutes.