Classic painting used as the article cover
← Back to blog

AGENT OPERATIONS

Agent Inventory vs. CMDB

A CMDB confirms an agent exists. It has no field for what the agent is allowed to do, and that gap is exactly where a security review stalls.

Paulina XuJun 17, 20266 min
Agent InventoryCMDBIT Operations

TL;DR

A CMDB will confirm an agent exists. It has no field for what the agent is allowed to do, and that gap is exactly where an investigation runs out of road.

Picture a security review of an agent that started provisioning cloud resources in an environment it was never scoped to touch. The configuration-management record shows a container, an owner, an environment. There is no permission scope to check, no policy version to compare against, no audit-log pointer to follow. The review has nowhere left to go.

The usual fix is bolting a few custom attributes onto the existing configuration-item class. That works fine for infrastructure that sits still and doesn't decide anything. An agent decides things, and the fields that make a decision reviewable, tool access, permission scope, credential ownership, aren't shaped like configuration-item attributes and never will be.

None of this makes the CMDB wrong. It's still the best record of what you operate, and nothing here argues for tearing it out.

The fix is a second record, built for actors instead of assets, linked back to the CMDB rather than competing with it.

Overview

Take an infrastructure-automation agent that began provisioning resources outside its intended environment. Someone notices, and a security review opens. The reviewer pulls the configuration-management record for the agent's container and finds a hostname, an owner, an environment tag. Nothing wrong with any of it, and none of it answers the question the review actually needs answered: was this agent permitted to provision there, and if not, what else has it touched that nobody's checked?

The stall is a category mismatch, not a tooling bug. A configuration management database, a CMDB, was built to describe infrastructure: things that sit somewhere and depend on other things. An agent is not that kind of object. It decides things, and a record built for static infrastructure has no place to write down a decision, let alone the boundaries around it.

Enterprises already run CMDBs, well, usually, and the instinct when agents show up is to reuse what's there rather than stand up something new. That instinct is half right, and we don't think it's a foolish one. The CMDB stays valuable. It just isn't built to hold the layer that actually matters for governing an agent, and pretending otherwise is how reviews like the one above run out of road before they've really started.

The category mismatch: a CMDB models assets by where they sit. An agent inventory has to model actors by what they're authorized and able to do. Forcing the second shape into the first loses exactly the fields a governance review needs.

What a CMDB Tracks

A CMDB represents IT assets and the relationships between them: configuration items and how they depend on each other. Servers, virtual machines, containers, cloud resources. Applications, databases, middleware. Services and their dependencies. Owners, environments, support groups.

That structure earns its keep. It underpins incident management, change management, and the blast-radius question every change board asks before approving anything. When a database tier degrades, the CMDB says which services depend on it and who to page. That's a map of what you operate, and it was designed for assets that sit still and don't make decisions on their own.

We'd go further and say that's precisely why it works so well for what it was built for. A configuration item doesn't choose to call a new tool at runtime, doesn't decide to read a table nobody pointed it at, and doesn't act differently on a Tuesday than it did on a Monday. Static assets get a static schema, and the fit is genuinely good.

A Different Kind of Asset

An agent is not a server sitting in an environment. It's an actor. A single agent may act on behalf of a user, call several tools, hold delegated permissions, and touch sensitive data across multiple systems in one run. Its risk isn't set by where it runs. It's set by what it can do.

In CMDB terms, that infrastructure-automation agent from the opening scene is a small containerized service with a couple of API dependencies, unremarkable next to a thousand other rows. Operationally, the same agent can spin up compute, open network paths, and provision storage in whichever environment its credentials reach. The container is low-risk. The behavior isn't. A CMDB row describes the first and is silent on the second, and that silence is the whole problem.

Fields a CMDB Never Had

The reason you can't just extend the configuration-item schema is that agents need fields a CMDB was never structured to carry. An inventory built for agents should capture, at minimum: a durable identity distinct from any human user; the model and version behind the agent; the runtime it executes in; the specific tools and integrations it can invoke; whether it acts as itself or on behalf of a user; the read and write boundaries it operates within; whether it's sanctioned, pending, or unapproved; the instructions or guardrails currently governing it; who owns the credentials it holds; where its actions get logged; a risk rating; and its lifecycle state.

agent_id:            it-access-review-agent-02
model_provider:      gpt-class / v4
delegation_model:    acts-as-service (no user impersonation)
tool_access:         [idp-read, ticketing-write, slack-notify]
permission_scope:    read group memberships; open review tickets
approval_status:     approved
credential_owner:    iam-platform-team
audit_log:           siem://agents/it-access-review-02
risk_class:          medium (touches identity data)
cmdb_links:          [ci:idp-prod, ci:ticketing-app, ci:slack-int]

A CMDB row for the same workload carries a hostname and an owner. This record carries behavior and boundaries, and the last line, cmdb_links, is the piece that ties it back to infrastructure everyone already tracks.

Connect, Don't Replace

None of this makes the CMDB irrelevant, and we'd push back hard on any pitch that says otherwise. Agents depend on applications, APIs, data stores, and service accounts, most of which are already configuration items, and the agent inventory should reference those records rather than re-describe them. Two parallel sources of truth drifting apart helps nobody, and rebuilding infrastructure relationships the CMDB already models correctly is wasted effort with a new name on it.

The practical move is to treat the agent as a first-class entity in its own inventory and link each agent to the CMDB items it relies on. From the CMDB side, a database scheduled for migration now shows which agents act against it and might need pausing. From the inventory side, an agent under review shows exactly which downstream systems it can reach.

hostname, owner, env

cmdb_links

security review opens

check CMDB only

dead end

check linked inventory

permission scope

audit log pointer

credential owner

trail to a finding

dead end |-- linked inventory: permission scope + audit log pointer + credential owner --> trail to a finding The inventory's cmdb_links field is what connects the two paths instead of leaving them separate. -->

Figure 1 — The same review taken two ways. A CMDB alone stalls at "what is it." A linked inventory continues to "what could it do, and who's accountable."

Back to the Review

Go back to the infrastructure-automation agent. With a linked inventory in place, the review stops stalling at the container record. It checks the declared permission scope and confirms the environment sits outside it. The audit log, once someone finds the pointer to it, shows exactly when the provisioning calls started. Ten minutes after that, the credential owner is in a conversation they didn't expect to have that day.

The CMDB still tells the reviewer which systems are involved and who owns the surrounding infrastructure. It was never going to tell them what the agent was allowed to do. That was always the inventory's job, and until one exists, every review like this one ends at the same wall.

Conclusion

A CMDB and an agent inventory describe different layers of the same enterprise, and neither substitutes for the other. One maps what you operate. The other maps who's operating on your behalf, and what they're authorized to do while they're at it.

We'd build the inventory as its own record from the start, not as an afterthought bolted onto configuration items, and link it back to the CMDB rather than let the two drift apart. That combination is what turns a stalled review into a short one.

The CMDB answers what exists. The agent inventory answers what it's allowed to do. A review that only has the first question answered is a review that stops before it starts.