June 9, 2025
What is cost and usage allocation and why is it important?
The FinOps Foundation defines Allocation as "strategies to assign and share cloud costs using accounts, tags, labels, and other metadata, creating accountability among teams and projects within an organization.” In other words, “everyone needs to take ownership for their cloud usage”.
Cloud consumers, regardless of their role, will be less likely to follow FinOps best practices if they are not able to easily see their cost/usage data and understand how their actions impact their bill. Accurate, equitable cost allocation is a key component in a comprehensive chargeback or showback process.
Why is allocation a complex problem to solve?
It is not uncommon to have multiple CSPs (cloud service providers, such as AWS, Azure, or GCP), and each CSP handles billing differently. As billing data gets larger and more complex, it is not feasible for each team to dig through the data to find their portion of the bill. A key function of the FinOps team is to make the myriad CSP data available to the organization in a way that is useful and actionable; “get the right data to the right people so they can make the right decisions”.
Our previous blog post on data ingestion shows how CloudHealth can ingest your CSP billing files, business metadata, and Kubernetes metrics. Once your cloud cost and usage is data available in CloudHealth, you then need to figure out how to break down these large bills and correctly/fairly apportion it out to your teams.
In general, good cost allocation processes start with a good tagging strategy. Tags are the easiest way to handle cost and usage allocation and are applied to your cloud resources at the time of creation.
Pro tip: you might need to enable tags as a “cost allocation tag” to see the tags in your CSP bill, like in this AWS example.
Read moreA good tagging policy generally has several components, including:
- Be published and well-communicated so everyone is aware of it
- A definition of all required tag keys and why they are important
- Acceptable values and formatting for both keys and values
- Where they should be used, e.g. in Prod, QA, and Dev, but not Sandbox
- At what level the tags should be placed (AWS Accounts, Azure Resource Groups, individual resources, etc.)
Where you place the tags is crucial as you need to have realistic expectations of your organization’s ability to not only tag but also monitor for compliance and tagging gaps. The choice between Account/RG/Project-level tagging and resource-level tagging is complex and can have wide-ranging implications on your ability to properly allocate costs.
To add to the complexity, engineering teams often share resources, or the infrastructure team builds tooling that is shared across the organization. A crucial step is to identify who is providing the shared resource and who is consuming the service. Depending on how your organization wants to charge for shared resources, either the provider or the consumer can have the cost allocated to them.
Kubernetes clusters can use namespaces or container labels that match your tagging strategy so you can properly allocate the shared costs of the infrastructure supporting the clusters.
Once the shared costs are identified you can then decide a fair way to split out the costs. For a shared database, maybe it is table consumption or read/write activity. For a Kubernetes platform, you would then generally split the costs of a cluster of virtual machines by how muchnamespace or containers consume of compute, memory, or a ratio of both. You can read more on this topic from the FinOps Foundation.
How can CloudHealth help?
CloudHealth consolidates your CSPs’ cloud billing data so you can have an accurate view of your total cost and usage. CloudHealth has a powerful feature called Perspectives that helps you build custom views of your data. Perspectives work by allowing you to group your cloud infrastructure into groups that make sense to your business.
Perspective groups are built using tags on your cloud resources, and they can use other metadata like AWS Account ID or Azure Resource Group names. For example, if you need to group your AWS Account, Azure Subscriptions or GCP Projects by Cost Center, but don’t have a Cost Center tag directly in the CSPs you can use the Perspectives API to group by them by their account, subscription or project IDs/names. Once you have your groups defined, CloudHealth categorizes the infrastructure’s cost and usage to the Perspective groups so you can see exactly how each group is contributing to the total bill. You will then use this data for your showback/chargeback processes.
The easiest way to build Perspectives is to use tags either at the resource level or at the Account/Subscription/Project-level. Tagging is a critical part of a successful allocation process. A good way to ensure that your tagging strategy is properly implemented is to use Infrastructure as Code (IaC) to create cloud resources. Services like CloudFormation, Terraform, and Azure Resource Manager can ensure your required tags are present when resources are created.
You can use services like AWS Service Control Policies (SCPs) to block resources from being created unless required tagging is present on the resource at the time of creation. Despite your best-efforts, things will slip through the cracks. CloudHealth Policies can alert you when assets are missing required tags or if they have non-approved values for specific tag keys.
For shared resources, once you have determined the proper way to split out these resources to the different teams you can use CloudHealth Cost Reallocation Rules and redistribute the costs to the correct Perspective groups. You can learn more about using Cost Reallocation Rules here.
With a Kubernetes platform, you need to go deeper than just the infrastructure level details and look at what is happening inside your clusters to properly allocate cost to each group using shared clusters. CloudHealth uses namespace and container labels (and other metadata) from your cluster by installing the CloudHealth collector. In addition to the labels, the collector can see CPU and memory allocation/consumption statistics for each namespace or container. Since CloudHealth knows how much the VMs supporting the cluster actually cost and how much each team is consuming we can allocate the cost of those shared resources.
Learn more about CloudHealth Kubernetes support here.
How can the CloudHealth Professional Service team help?
The CloudHealth Professional Services team has significant experience developing showback and chargeback processes at scale. Allocation is a key component of these processes, and we can help no matter where you are in your FinOps journey. If you are just getting started, we can help consult/create your tagging standards and documentation.
If you are farther along in the process, we can help with Kubernetes configuration or Perspective automation. The CloudHealth PS team has implemented a variety of solutions within the CloudHealth platform and extending the platform to work with your internal systems/tools.
After Perspective allocation is complete, we can ensure you also have the correct reporting/dashboards are built so all teams can see their respective costs so they can begin taking responsibility for them. We can work alongside you to educate your cloud consumers on how the allocation is calculated so they understand the reporting at a deeper level.