
Overview
In any AWS environment, managing Identity and Access Management (IAM) is a cornerstone of both security and financial governance. A frequently overlooked but critical control is the ability for IAM users or roles to make significant financial commitments on behalf of the organization. Permissions to purchase AWS Reserved Instances (RIs) and Savings Plans are not just operational actions; they are financial transactions that can lock an organization into one or three-year contracts.
Without proper guardrails, these powerful permissions can be assigned accidentally, creating a significant risk of unauthorized or erroneous spending. A developer with overly broad access could inadvertently commit the company to hundreds of thousands of dollars in spend with a single API call. Restricting these purchasing capabilities is a fundamental practice that merges cloud security with FinOps principles, ensuring that long-term financial decisions are centralized, approved, and deliberate. This article explores why these restrictions are essential for maintaining budgetary control and security posture in your AWS environment.
Why It Matters for FinOps
For FinOps practitioners, uncontrolled purchasing permissions represent a major governance failure. The primary business impact is direct, irreversible financial waste. Unlike on-demand resources that can be terminated to stop billing, RIs and Savings Plans are binding commitments. An accidental purchase creates an immediate liability that drains budgets allocated for strategic projects, potentially leading to operational disruption if spending limits are exceeded.
This issue has become more critical following AWS policy changes that limit the ability to resell certain types of Reserved Instances. The traditional safety net for recovering costs from a mistaken purchase is gone, making prevention the only viable strategy. Furthermore, the risk extends to malicious activity. A compromised account with these permissions can be used in a "Denial of Wallet" attack, where an attacker intentionally inflicts financial damage by making massive, non-refundable purchases. This not only impacts the balance sheet but can also trigger audits and damage stakeholder confidence by revealing a lack of internal financial controls.
What Counts as “Idle” in This Article
In the context of this article, “idle” does not refer to unused compute resources but to excessive or unnecessary IAM permissions. Specifically, we are focused on the permissions that allow an identity to execute financial commitments within AWS. Any IAM user, role, or group that possesses these capabilities but does not require them as a core part of their designated function is considered to have idle—and dangerous—privileges.
The key signals of this risk are the presence of specific IAM actions in an attached policy, such as ec2:PurchaseReservedInstancesOffering or savingsplans:CreateSavingsPlan. The principle of least privilege dictates that these permissions should only be granted to a small, authorized group of individuals within a finance or a central Cloud Center of Excellence (CCoE) team. For all other roles, particularly those for developers and automated systems, these permissions are idle liabilities waiting to be exploited.
Common Scenarios
Scenario 1
A common scenario involves granting developers broad managed policies like PowerUserAccess or even AdministratorAccess for the sake of agility. While intended to allow for resource creation and management, these policies can inadvertently include permissions to execute purchases. A developer focused on deploying an application has no business need to enter into a one-year financial contract for the underlying infrastructure.
Scenario 2
In large organizations using AWS Organizations, individual member accounts may be managed by separate teams. If strong central governance is not applied via Service Control Policies (SCPs), a local administrator in a development or sandbox account could purchase a Savings Plan. Depending on the configuration, this commitment could be billed to the organization’s consolidated invoice, creating a financial surprise that impacts the entire enterprise.
Scenario 3
Many organizations use third-party cloud management or cost optimization platforms. During setup, these tools require an IAM role to access your AWS environment. If this role is configured with overly permissive write access (e.g., ec2:* or savingsplans:*) instead of the necessary read-only permissions, the third-party platform becomes a potential vector for unauthorized purchases if its own security is compromised.
Risks and Trade-offs
The primary risk of not restricting purchase permissions is severe and unrecoverable financial loss. This can stem from simple human error—a developer choosing the wrong instance type or commitment term—or malicious intent from an internal or external threat actor. The "Denial of Wallet" attack is a real threat where financial sabotage, rather than data theft, is the goal.
The main trade-off is between centralized control and decentralized agility. Some may argue that restricting these permissions slows down teams that need to procure capacity. However, the financial and security risks far outweigh the minor inconvenience of implementing a formal request and approval process. Long-term financial commitments should never be treated as casual operational tasks. The correct approach is to establish a clear workflow that enables teams to request capacity, which is then reviewed and executed by a designated, authorized FinOps or finance team. This balances the need for resources with responsible fiscal governance.
Recommended Guardrails
A robust governance strategy relies on preventative controls to enforce financial policies automatically.
- Policy Enforcement: Use a combination of granular IAM policies that explicitly deny purchase actions for all non-authorized roles. In multi-account setups, enforce these restrictions at the organizational level using Service Control Policies (SCPs) as an unbreakable guardrail.
- Centralized Ownership: Designate a specific team, such as a FinOps team or CCoE, as the sole entity responsible for executing RI and Savings Plan purchases. Their access should be tightly controlled and monitored.
- Approval Workflow: Implement a formal process for requesting compute commitments. This workflow, managed through a ticketing system, should require justification, cost analysis, and management approval before the central team executes the purchase.
- Budgets and Alerts: Configure AWS Budgets to alert stakeholders when spending on commitments approaches or exceeds forecasted amounts. While this is a reactive measure, it can help detect unauthorized activity quickly.
Provider Notes
AWS
AWS provides several native tools to implement and enforce purchasing guardrails. The foundation is AWS Identity and Access Management (IAM), which allows you to create granular policies that explicitly deny dangerous actions like ec2:PurchaseReservedInstancesOffering. For enterprise-wide enforcement, Service Control Policies (SCPs) within AWS Organizations are the most effective tool, as they can block these actions for all identities within an account, including the root user. To proactively identify which roles have these permissions, you can use AWS IAM Access Analyzer to review and flag overly permissive policies.
Binadox Operational Playbook
Binadox Insight: Treat financial purchasing permissions in your cloud environment with the same level of security and scrutiny as root access. These privileges grant the ability to make binding, long-term contractual commitments, and their misuse can be just as damaging as a major data breach.
Binadox Checklist:
- Audit all IAM roles, users, and groups to identify any with
ec2:Purchase*orsavingsplans:*permissions. - Create and attach a customer-managed IAM policy that explicitly denies these purchasing actions to all non-financial roles.
- Implement a Service Control Policy (SCP) in AWS Organizations to block these actions across all development and production OUs.
- Establish a formal, ticket-based workflow for requesting and approving any new RI or Savings Plan purchases.
- Review the permissions granted to third-party tools to ensure they are strictly read-only unless write access is essential and approved.
- Ensure the limited set of users authorized to make purchases are required to use Multi-Factor Authentication (MFA).
Binadox KPIs to Track:
- Number of IAM principals with active purchasing permissions.
- Percentage of member accounts covered by a restrictive SCP.
- Mean Time to Remediate (MTTR) for any newly detected excessive permissions.
- Volume of purchase requests processed through the official approval workflow versus discovered outside of it.
Binadox Common Pitfalls:
- Relying solely on detective controls (like budget alerts) instead of preventative IAM and SCP guardrails.
- Granting developers broad administrative privileges for convenience, which inadvertently include purchasing power.
- Forgetting to apply SCPs to new AWS accounts as they are provisioned within an organization.
- Failing to create a clear and efficient process for teams to request commitments, leading them to seek workarounds.
Conclusion
Restricting the ability to purchase Reserved Instances and Savings Plans is no longer just a cost optimization best practice; it is a critical security and financial governance control. The potential for accidental waste and malicious financial damage requires a proactive, preventative approach.
By implementing the right guardrails through AWS IAM and Service Control Policies, organizations can ensure that all long-term financial commitments are intentional, vetted, and aligned with strategic goals. FinOps and security teams must collaborate to enforce these controls, creating a foundation of fiscal responsibility that protects the company’s budget and supports a mature cloud management strategy.