← Back to Blog
FinOps

Cloud Cost Allocation with Tags: The Complete Tagging Strategy for AWS, Azure and GCP

📅 February 2026⏱️ 8 min read✍️ TCOIQ Team

Why Tagging Strategy Matters

Without proper tagging, you know how much you're spending on cloud — but not who is spending it or why. Effective cost allocation tagging enables FinOps, chargeback, and informed optimisation decisions.

Recommended Tag Schema

Tag KeyExample ValuesRequired?Purpose
Environmentproduction, staging, dev, test, sandboxMandatorySeparate prod from non-prod spend
Teamplatform, payments, data, frontend, mlMandatoryChargeback to teams
Projectcheckout-v2, reporting-dashboard, auth-serviceMandatoryProject-level cost tracking
CostCentreCC-1001, CC-2045, CC-SHAREDMandatoryFinance system integration
Ownerplatform-lead@company.comRecommendedContact for orphaned resource cleanup
ManagedByterraform, manual, ansibleRecommendedInfrastructure lifecycle management
AutoShutdowntrue, falseRecommended (non-prod)Enable scheduled shutdown automation

Enforcing Mandatory Tags

AWS — Service Control Policies

Use AWS Organizations SCP to prevent resource creation without required tags:

{
  "Condition": {
    "Null": {
      "aws:RequestedRegion": "false",
      "aws:TagKeys/Environment": "true"
    }
  }
}

Azure — Azure Policy

Apply a "Require tag on resources" policy at Management Group scope. Non-compliant resources are flagged and can be prevented from creation. Azure's "inherit tag from resource group" policy automatically tags child resources.

GCP — Organization Policy

Use Organization Policies to require labels on resource creation. GCP's label inheritance means projects can automatically apply default labels to all resources.

Cost Allocation Reporting

ProviderToolFeatures
AWSCost Explorer + Cost CategoriesTag-based cost grouping, custom cost categories
AzureCost Management + BillingTag filtering, export to storage account
GCPBigQuery Billing ExportMost flexible — SQL queries on your billing data

Handling Shared/Untaggable Resources

Some costs can't be tagged: data transfer, Route53 queries, support plans. Handle these with:

  1. Define a "Shared" cost centre for unallocable spend
  2. Distribute shared costs proportionally by team's direct spend ratio
  3. Exclude infrastructure-level costs from team chargeback and manage centrally

Terraform Tag Automation

Add default tags to all resources via Terraform's provider default_tags:

provider "aws" {
  default_tags {
    tags = {
      Environment = var.environment
      Team        = var.team
      ManagedBy   = "terraform"
      Project     = var.project
    }
  }
}
Implement tagging enforcement via policy on day one — it's exponentially harder to retrofit tags to a large existing environment than to require them from the start. Every untagged resource is cost intelligence you'll never recover.

Ready to Calculate Your Cloud Costs?

Use TCOIQ's free comparison tool or build a full inventory across all 5 clouds.

Compare Prices Free → Build Inventory