Running infrastructure across a single cloud provider is already complex. Add a second provider, then a third, and a mix of on-premises environments, and the governance problem shifts from “how do we manage this?” to “how do we know what’s happening at all?”.  Teams end up with separate policy systems, separate audit trails, and separate remediation workflows, one per provider, that are not designed to work together. Approvals in AWS don’t carry over to Azure (or vice versa). A resource that violates a required tag policy may go undetected if the provider’s native tooling isn’t integrated with the central compliance process.

A multi-cloud governance platform addresses this by replacing provider-specific controls with a unified management layer. Instead of maintaining parallel rule sets across AWS Organizations, Azure Policy, and GCP Organization Policies, teams define governance rules once and apply them consistently across every connected environment. The platform sits above the individual provider APIs and acts as the enforcement point for access control, provisioning, tagging, compliance, and cost boundaries, regardless of where resources actually run.

This article covers six features and the associated capabilities that are essential to a high-performing multi-cloud governance platform.

Summary of the essential features of a multi-cloud governance platform

The table below summarizes the six multi-cloud governance platform features this article will explore in more detail. 

FeatureWhat it does
Unified policy enforcement with policy-as-codeApplies the same governance rules across all providers and on-premises environments from a single control plane, with rules stored in version control and enforced at provisioning time.
Federated identity and cross-provider RBACMaps your existing identity provider to platform-level permissions across all connected environments, so access is managed from one place with separation of duties built in.
Cost and quota management with resource boundary enforcementEnforces compute, storage, and spend limits per team or environment at request time, before any cloud API calls are made, rather than after the fact in billing reports.
Resource tagging and inventory visibilityEnforces tags at provisioning time, continuously validates them on running resources, and reconciles unmanaged resources that exist outside the governed provisioning path.
Approval workflows and compliance gatesRoutes provisioning requests through approval validation before resources are created, producing an auditable record of what was approved, by whom, and under which policy version.
Continuous compliance and drift detectionMonitors running resources against defined policy and flags drift after deployment. Remediation runs through configuration enforcement tools like Ansible, while the platform keeps detection, accountability, and audit logging centralized.
Multi-Cloud Management Platform:
Automation, Infrastructure-as-Code & FinOps

Learn More

Customizable guardrails to embed governance policies when provisioning workloads

Self-service catalogs to provision compliant, cost-efficient resources in private and public clouds

Accountable FinOps workflows with task assignment, chargeback reports, and scorecards

Unified policy enforcement with policy-as-code

The core limitation of native cloud governance tools is that each one operates within its provider’s boundary. AWS Organizations manages SCPs for AWS accounts. Azure Policy applies rules within Azure subscriptions. GCP Organization Policies govern GCP resources. None of them communicates with the others, and that’s expected as they weren’t designed to be multi-cloud governance tools.

In practice, this means that organizations running workloads across multiple providers maintain separate policy models, audit trails, and remediation workflows. When teams deploy a resource in a restricted region or a network configuration violates a security requirement, the investigation happens in whichever provider’s console the resource lives in. At audit time, that becomes a manual reconciliation across systems with no common data model.

The governance consequences become more concrete at scale. Inconsistent region restrictions mean a team can deploy to a region allowed in AWS that would be blocked in Azure, not because the security policy changed, but because teams write the policies separately and never reconcile them. Inconsistent tagging requirements create gaps in cost allocation that compound across every billing cycle. During an audit, presenting separate evidence from three providers, each formatted differently and covering different time ranges, is a significant operational burden.

A governance platform closes these gaps with a single control plane that applies the same rules across all connected environments. The mechanism that makes this reliable is policy-as-code: governance rules defined as machine-readable definitions, stored in version control, and enforced automatically at provisioning time, regardless of which provider the request targets or which interface the requester uses.

Unlike documentation-based policy, rules that travel with the deployment definition and execute automatically leave no gap between what the policy says and what gets deployed. Policy changes go through the same review and promotion process as infrastructure changes, with a commit history, reviewer sign-off, and the ability to roll back to a known-good state.

CloudBolt’s blueprint framework embeds policy constraints directly into service templates. Blueprints as code support means policy definitions are stored in version control alongside infrastructure definitions, so the rule that governs a deployment and the deployment itself are managed in the same workflow.

# Example: CloudBolt blueprint constraint enforcing region and tag requirements
blueprint:
name: "standard-vm-deployment"
constraints:
allowed_regions:
- us-east-1
- eu-west-1
required_tags:
- cost_center
- environment
- owner
blocked_instance_types:
- "*xlarge"
approval:
required: true
approvers_group: "cloud-ops"
State-of-the-art Cloud Management Platform Functionality

Why CloudBolt:
The power to build, manage, and optimize any cloud

LEARN MORE

Federated identity and cross-provider RBAC

Access management in a multi-cloud environment has two common failure modes: 

  • Configuration sprawl: identity and permissions configured separately per provider, so onboarding a new team member means creating accounts across AWS IAM, Azure Entra ID, and GCP IAM independently. 
  • Insufficient granularity: access models that control who can log into the platform but don’t specify what they’re allowed to request, approve, or administer within it.

Governance requires centralized entitlement logic across all connected environments. That means a platform that connects to your existing identity provider (Active Directory, Okta, Azure Entra ID) and uniformly maps organizational roles to platform-level permissions, so a role change in your directory is reflected at every provider account that the affected role touches.

Separation of duties is the design principle that makes RBAC operationally useful for governance rather than just authentication. Four distinct roles need to operate independently: who can request a resource, who can approve it, who can administer policy configuration, and who can override a policy in an emergency. Letting the same person request and approve resources creates the conditions for governance to be bypassed without an audit trail.

Cross-provider RBAC also limits blast radius. A compromised developer account can only access what the platform role permits, rather than everything the cloud IAM role allows across all connected providers. Centralized identity also simplifies the join, move, and leave (JML) process. When a team member changes roles or leaves the organization, a single update in the identity provider automatically affects every connected cloud account. Without a federated model, that same change requires separate manual updates in AWS IAM, Azure Entra ID, and GCP IAM, and gaps between those updates are a common source of over-provisioned access.

CloudBolt’s groups and permissions model supports SAML2-based identity federation and maps organizational roles to platform-level permissions, so user provisioning and deprovisioning propagate through the governance layer automatically.

RoleWhat they can do
RequesterSubmit provisioning requests within quota and policy limits
ApproverApprove or reject requests above the defined cost or risk thresholds
Platform adminModify policy definitions, quota settings, and role assignments
Policy overrideTemporarily bypass a policy constraint with an audit record
Cloud adminManage provider account connections and resource handler configuration

Cost and quota management with resource boundary enforcement

Quotas that are checked only in billing reports don’t prevent the problem they’re supposed to solve. By the time a team appears in a monthly cost report with $40,000 in unexpected spend, the resources are already running and entrenched in a workload. Quota enforcement works when it happens at request time, before any cloud API calls are made. A request that exceeds a defined limit is rejected or routed for approval rather than silently provisioned.

The most useful quota models combine two dimensions. Resource quotas cap raw infrastructure: vCPU count, VM count, and storage in GB. Spend quotas cap financial exposure: a monthly budget ceiling per team, project, or environment. Both are necessary because they catch different failure modes. A team can stay under its VM count and still exceed its budget by requesting expensive instance types.

Multi-cloud quota enforcement is more complex than single-provider enforcement because limits must span across provider accounts. A team with a $10,000 monthly budget operating across AWS and Azure should hit that limit regardless of which provider they request resources from. Without a platform-level quota spanning all connected providers, a team can stay within each provider’s individual budget while exceeding their total allocated spend.

CloudBolt’s self-service provisioning layer validates environment-level quotas during the order process. Requests that would exceed defined limits are rejected with a specific reason or routed to an approver, depending on the quota policy configuration, before the provisioning workflow reaches any cloud provider API.

CloudBolt service catalog showing blueprints organized by archetype category across cloud providers, infrastructure-as-code frameworks, and deployment tools.
CloudBolt service catalog showing blueprints organized by archetype category across cloud providers, infrastructure-as-code frameworks, and deployment tools.

CloudBolt also applies a unified, normalized cost layer across connected providers, translating AWS, Azure, and GCP pricing into a common format so spend limits reflect true cross-cloud exposure rather than each provider’s native billing units.

Resource tagging and inventory visibility

The governance purpose of resource tagging is not cost allocation. Cost allocation is a downstream benefit. The governance purpose is ownership: knowing who is responsible for every resource running in every environment, which policy scope it falls under, and how it maps to the organizational structure that controls it. Without consistent tagging, you can’t enforce accountability, trace a resource back to its provisioning request, or scope a policy change to the teams it should affect. Compliance reports become unreliable; cost attribution becomes guesswork.

Provisioning-time tag enforcement applies to resources that enter the environment via the governance platform. Required tags become non-optional fields in the provisioning request, and a request missing them doesn’t proceed. But enforcement during provisioning time alone doesn’t cover the full inventory. Resources imported from outside the platform, manually created in a provider console, or modified after initial deployment can contain missing or drifted tags, which are often the largest source of reporting gaps.

Cloudbolt job applying new tags to multiple resources
Cloudbolt job applying new tags to multiple resources

Inventory reconciliation handles the remainder: discovering resources that exist in connected provider accounts but weren’t provisioned through the governed path, comparing their tags against required policy, and routing non-compliant resources to their owners for remediation. An organization’s effective tagging coverage is the intersection of what gets enforced at provisioning time and what gets detected afterward.

CloudBolt’s cost allocation and chargeback capabilities depend on consistent tagging across environments, and the blueprint layer enforces required tags at provisioning time. CloudBolt also supports cross-cloud tag management. You can define new tags and apply or update existing ones across all connected providers from a single interface, without logging into each cloud console separately.

Recurring jobs run continuous tagging audits that detect drift on resources modified or imported after initial deployment, and route non-compliant resources to their owner rather than letting violations accumulate.

# Example: recurring job configuration for tag compliance audit
job:
name: "tag-compliance-audit"
schedule: "0 6 * * *" # Daily at 06:00 UTC
scope: all_environments
checks:
- field: cost_center
required: true
- field: environment
required: true
allowed_values: [production, staging, development]
- field: owner
required: true
on_violation:
notify: resource_owner
escalate_after_days: 7
escalate_to: cloud_ops

Approval workflows and compliance gates

The difference between a governance platform and a provisioning tool is the approval layer. Provisioning tools deploy resources when they’re told to. Governance platforms validate requests against policy before deciding what to do with them, and produce a record of every decision made.

A flat approval model, where every request goes to the same queue and requires the same approval, creates bottlenecks that push teams toward shadow provisioning. When a developer waits for approval on a standard VM, it is handled directly in the AWS console; that resource exists outside the governed path, with no ownership record, no quota attribution, and no audit trail. Tiered approval logic reduces friction on standard requests while maintaining oversight where it matters.

A well-designed approval structure routes requests based on the request type. Requests within defined parameters, such as approved instance types, allowed regions, and required tags present, can be deployed immediately. Requests that exceed a cost threshold route to a cost approver. Requests for restricted resource types route to a security review. The routing rules are policy, not manual triage.

The audit trail produced by approval workflows is what makes governance defensible at audit time. Every resource should be traceable back to a request, an approver, the policy version active at the time of deployment, and the policy outcome: approved, rejected, or approved with conditions.

CloudBolt’s automation and orchestration layer handles approval routing as part of the provisioning workflow. ServiceNow integration automatically creates corresponding change tickets, so every approved deployment has a traceable record in the ITSM system alongside the platform audit trail.

Request typeRouting
Standard request within quota and policyAuto-approved, deploys immediately
Request exceeding cost thresholdRoutes to the designated cost approver
Request for restricted resource typeRoutes to the security review queue
Request requiring policy exceptionRoutes to platform admin with justification required
Request in a restricted environment (e.g., production)Routes to the environment owner + change management

Continuous compliance and drift detection

Policy enforcement at provisioning time establishes a compliant starting state. It doesn’t maintain it. Resources change after deployment through configuration updates, manual edits in a provider console, or automated responses to operational events, and those changes can move a resource out of compliance without the submission of a provisioning request.

Drift detection monitors the running configuration of provisioned resources against the policy that governed their deployment. A virtual machine deployed with an approved security group configuration and later given an open port is still running, still attributed to the right team in the provisioning system, but now out of compliance. Without a mechanism to detect that change, it accumulates alongside every other post-deployment modification that has bypassed the governance layer.

CloudBolt overview dashboard showing a bird's-eye view of the overall multi-cloud environment
CloudBolt overview dashboard showing a bird’s-eye view of the overall multi-cloud environment

Three categories of drift matter in practice. Configuration drift covers changes to security groups, network ACLs, IAM role bindings, and storage permissions. Tag drift covers tags removed or changed on resources that were compliant at deployment time. Resource scope drift occurs when resources are moved between environments or accounts outside the governed provisioning path. Each category has a distinct detection mechanism and remediation path. The platform detects the drift, records it, and routes it for action, while the configuration fix runs through enforcement tools like Ansible, Chef, or Puppet. That keeps accountability and the audit trail centralized even though correction happens outside the platform.

Continuous compliance also produces the evidence needed for regulatory reporting. Point-in-time scans, run in response to an audit, show the compliance state at a given moment. Continuous monitoring produces a history of compliance state changes: when a resource became non-compliant, what changed, and when it was remediated. That timeline is what auditors actually need.

Enterprise self-service cloud management without the complexity

Empower your teams with self-service
Accelerate innovation without sacrificing control, governance, or cost visibility 

LEARN MORE

How CloudBolt supports multi-cloud governance

CloudBolt’s cloud management platform delivers these governance capabilities through a single management plane spanning public, private, and on-premises environments.

The blueprint framework handles policy-as-code enforcement: governance rules embedded in service templates, stored in version control, and applied at provisioning time across all connected providers. SAML2-based identity federation maps organizational roles to platform-level permissions with role separation built into the groups and permissions model. Quota validation runs before any cloud API calls are made, with limits spanning all connected accounts rather than tracking each provider separately. Tagging enforcement lives in the blueprint layer; recurring jobs handle continuous audits and inventory reconciliation. Approval routing uses tiered logic in the provisioning workflow, with ServiceNow generating a change ticket for each approved deployment.

Running governance at multi-cloud scale means accepting that using each cloud provider’s native tooling isn’t the right solution. Each of them solves governance within its own boundary well enough. However, what they don’t solve is the coordination problem that arises when those boundaries don’t align with how your organization actually operates: workloads spanning providers, policies that need to apply everywhere at once, and auditors expecting a unified compliance record.

Build, manage, and optimize any cloud

See for yourself how CloudBolt’s full lifecycle approach can help you.

Request a demo

Explore the chapters:
AUTHOR
CloudBolt
  Learn more

Related Blogs

 
thumbnail
The VCF 9 upgrade guide | Part 3 – After the Aria upgrade

Read part 1 | Read part 2 After the Aria upgrade: Using CMP to test your way out of Broadcom…

 
thumbnail
The VCF 9 upgrade guide | Part 2 – Aria vs CMP

Read part 1 | Read part 3 Aria in VCF 9: Same upgrade effort, a very different outcome. For VMware…

 
thumbnail
The VCF 9 upgrade guide | Part 1 – Why companies are making the move

Read part 2 | Read part 3 Why companies are making the move and what to watch for VMware Cloud…