Skip to main content
This page explains the conceptual foundation of IAM. To manage these concepts in practice, use the Admin Portal.

Identities

Email-based ARMS accounts. Access is granted through roles on resources across ARMS products (e.g., inventory, transload, intermodal, mobile).
UsernameIdentifier
Mikeuser:[email protected]
Kaceyuser:[email protected]
Heatheruser:[email protected]
Bobuser:[email protected]

Resources

Equipment, groups, waybills, sites, terminals, operators, workflows, and more. Permissions can be granted at an organization/site/operator level, at a sub‑area (e.g., terminal or group/track), or at an individual resource level.

Resource hierarchy and inheritance

Permissions granted at a higher‑level resource are inherited by child resources.
  • Organization / Operator / Site → applies to all sub‑resources below
  • Terminal / Group / Track → applies to resources in that sub‑area only
  • Specific resource → applies only to that one resource

Permissions and roles

  • Permissions: service.resource.verb (e.g., inventorymanagement.equipment.list)
  • Roles: collections of permissions
    • Predefined roles (curated)
    • Custom roles (tailored)

How IAM works

Policies attach to resources and bind members to roles, with optional conditions. On access, ARMS evaluates the target resource’s policy to allow or deny—consistently across all ARMS modules.

Policy evaluation

Policy = Bindings of { role, members, optional condition }. Conditions use a simplified CEL expression syntax.
IAM diagram

Conditions (optional)

Scope access by attributes. Examples:
{
  "description": "Only BNSF cars",
  "expression": "resource.equipmentInitial == 'BNSF'"
}
{
  "description": "Tracks A or B",
  "expression": "resource.track in ['A','B']"
}

Manage these concepts in the Admin Portal

See the Admin Portal Glossary for a quick reference of all terms.