ServiceNow Cloud Cost Visibility: Security and Access Design
Role Model for Cloud Cost Visibility
A strong role model ensures each persona sees only the data they are authorized to see. Finance leaders see costs by business unit and cost center, regardless of which cloud vendor incurred the cost. Platform engineers see costs for the workloads they manage. Project managers see costs for their projects. Auditors see all costs plus a full audit trail of who accessed what and when.
Build the role model around business dimensions—cost center, project, business unit, environment—not just cloud vendor account. A user who manages workloads in the Production environment should see Production cloud costs but not Development or Test. A finance business partner for Marketing should see costs tagged to Marketing cost centers, not other departments.
Least Privilege and Access Boundaries
Start by granting no access, then add specific permissions for each role. The Finance director should not have the ability to modify cost allocation rules or integration credentials. The platform engineer should not be able to change cost chargeback rates. The business unit controller should not see costs outside their business unit.
Implement boundaries at the data level. Use ServiceNow query-based access controls to restrict cost records visible to each role. A user with a Marketing business unit assignment should only see cost records tagged to Marketing cost centers through a query-based control, not through manual record assignment. This scales better as organizations grow.
Segregation of Duties
Separate approval authority from execution. One team configures cost allocation rules and chargeback rates; another team executes the monthly chargeback. This prevents a single person from setting policy and unilaterally changing their own charges.
In the integration layer, separate credential management from integration job execution. The credentials used to access cloud vendor APIs should be readable by the integration execution job but not by individual users or even administrators. Store them in a separate, controlled location that only the integration runtime can access.
Separate billing import from cost analysis. The team that pulls raw cost data from vendors should differ from the team that applies business logic (like cost allocation tags or chargeback transformations). This prevents tampering with source data to achieve desired billing outcomes.
Audit Evidence and Compliance
Enable audit logging for all cost visibility changes. Track who created, modified, or deleted cost allocation rules; who ran integration jobs and with what parameters; who accessed cost reports. Retain audit logs for the length of time your organization’s retention policy requires, for the period your finance and audit requirements set.
Create a reconciliation control: monthly, an independent reviewer compares the cost data in ServiceNow against the original vendor invoices and signs off that they match. This prevents unauthorized adjustments from going undetected. Document any exceptions (duplicate charges corrected, overage reversals from vendors) and include them in the audit record.
Review Cycle and Access Certification
Conduct a quarterly review of who has access to cloud cost data and whether that access is still appropriate. When an employee changes roles or leaves the organization, promptly remove their cost visibility access. Many compliance frameworks require documented evidence of access review and removal.
Consider implementing time-limited access for sensitive queries. A finance analyst may need to run a one-time deep cost analysis to investigate an anomaly; grant them elevated access for a limited period set in advance, then automatically revert to baseline permissions. This approach reduces the risk of standing elevated permissions being misused.
Data Protection and Export Controls
Cloud cost data is often sensitive financial information. Control export and reporting capabilities. Users should be able to view cost data in ServiceNow dashboards and run pre-defined reports, but exporting to CSV or APIs may be restricted to specific authorized roles. This prevents accidental or intentional sharing of detailed cost data outside the organization.
If you maintain a data lake or reporting database of historical cloud costs, apply the same access controls there. A user who cannot see detailed costs in ServiceNow should not be able to query the data warehouse directly and bypass those controls.
Turning an access policy into platform rules that can be tested
A written access policy for cost data is only useful once it has been translated into the rules the platform enforces. In most ServiceNow estates that translation has three layers: roles that group people, access control rules that decide what a role may read, write, create or delete at table and field level, and conditions that narrow a rule to the records a person is entitled to see. Each layer can be wrong in a way that leaves the others looking correct, which is why the design needs to be tested rather than reviewed.
The reader here is the ServiceNow security architect, the GRC lead or the platform administrator who has to make the access design work. It covers how to map data to rules, where restrictions usually leak, how integration accounts should be handled, and how to prove that a denial actually happens.
Mapping cost data objects to access decisions
Start from the data, not from the org chart. List each object that holds cost information, including raw billing records, allocated costs, forecasts, budgets, and any staging tables used by imports. For each one, settle who reads it, who edits it, and whether its contents can leave the platform. The grid below sketches what that decision looks like for a typical estate. Your own rows will differ, but every object should have a line.
| Data object | Read by | Written by | May be exported |
|---|---|---|---|
| Raw billing records from providers | Platform administrators and the reconciliation reviewer | The import service account only | No |
| Allocated cost by business unit | Business unit reviewers, scoped by condition to their own unit | Allocation process only, never by hand | Summaries only, for approved roles |
| Budgets and forecasts | Budget holders and finance | Budget holders within their envelope | Yes, for finance roles |
| Allocation rules and rates | FinOps analysts | A small named group, with changes logged | Not applicable |
The reconciliation reviewer row is worth noticing. The person who checks the totals against provider invoices should be able to read raw records, but should not be able to alter them. That separation is what gives the check any value.
Where restrictions usually leak
Many leaks sit outside the main table. They sit in the places people forget to lock: a list view that exposes a reference field pointing to a restricted record, a related list shown on a parent form, a report that runs under an administrator account and is shared with a wider audience, or a dashboard widget that aggregates a restricted table without applying the same condition. Check each of these surfaces explicitly, because a rule on the base table does not automatically govern them.
Field-level rules deserve their own review. A cost record may be visible to a business unit reviewer while a field such as the vendor account identifier or the internal tag value should stay hidden from them. Hiding fields on the form is not enough; the rule must apply to the underlying data, and it must also apply to any export the platform offers.
Handling the integration account
The account that imports billing data is a privileged identity, and its credentials are the most valuable thing in the design. Give it the narrowest set of roles that lets it write the staging tables and nothing else. Do not reuse it for interactive administration, and do not let it hold rights to change allocation rules that it has no business changing. Store the provider credentials in a controlled secret store where the integration runtime can read them and people cannot, and rotate them on a schedule that the operations team can actually sustain.
- Create a dedicated service identity for each provider connection, so that one revoked credential does not stop every import.
- Grant only the table-level permissions the import writes to, then confirm the account is denied on the allocation and budget tables.
- Record the rotation date, the next rotation and the owner of each credential in the operations runbook.
- Alert on failed authentication for the service identity, since a silent failure looks like stale cost data rather than a security event.
Testing that a denial actually happens
A test plan that only checks what users can see will miss most access defects. For each role, create a test user with realistic attributes, log in as that user, and attempt the actions the policy forbids: opening a record from another business unit by direct link, filtering a list to see restricted rows, exporting a report, and calling the reporting API with the user’s session. Record the expected result beside each attempt, and confirm that a denial is logged. A denied action that leaves no trace is harder to investigate later, and it weakens the audit trail the organization depends on.
Impersonation is useful for this work but must be used carefully. Use a dedicated test population, make sure impersonation events are recorded, and never test with a production user whose own access is broader than the role under test.
Should cost analysts be able to export detailed records?
Only where the export is needed for a defined task, and the export itself should be logged. Many organizations allow summaries to leave the platform and keep line-level detail inside it. Decide the answer by asking what the analyst would do with the file and who would receive it.
How do we restrict a role to its own business unit without manual assignment?
Use a condition that compares a record attribute with an attribute on the user, and test it with users from more than one business unit. Confirm that a record with an empty value is handled deliberately, because an empty value is a common way such a condition quietly fails open.
What if a reporting tool sits outside the platform?
Apply the same rules at the source, or do not give it the detailed data at all. A connected tool that reads a broader dataset than the platform allows recreates the exposure the platform was meant to remove.
How often should the test suite run?
After every change to roles, access rules, the import service identity, or the platform version. It is also worth running after a reorganization, because reorganizations change the attributes that conditions depend on.
Who should hold each of these permissions is covered in the roles and responsibilities guidance, and access tests belong in the wider run described in the testing and acceptance checklist. For the integration side of the service identity, see the integration patterns page. Teams that want a view of how the CMDB underpins these conditions can read the article on CMDB hurdles.
Frequently asked questions
How should we handle access for third-party consultants or auditors?
Create a separate consultant or auditor role with read-only access to data relevant to their engagement. Limit the date range they can access and the business units or cost centers visible to them. Require a formal access request and manager approval, and set an expiration date so access is automatically removed when the engagement ends.
Can we restrict access by cloud vendor?
Yes, use access control queries that filter by cloud vendor in addition to business dimension. A user managing AWS workloads might see only AWS costs, while a user managing multi-cloud platforms sees all vendors. This requires that cloud cost records in ServiceNow include a vendor field that can be used in access controls.
What audit evidence should we retain for compliance audits?
Retain monthly reconciliation sign-offs comparing ServiceNow totals to vendor invoices, access logs showing who viewed cost data, logs of all cost allocation rule changes, approval records for all chargeback exceptions, and exception reports listing corrected or reversed charges. Most financial audits require 3 years of evidence; some frameworks require 7 years.
Related guides
Related Oblytech services
Where this topic turns into delivery work, these are the Oblytech services that cover it.
Planning, running or fixing a ServiceNow programme? Tell us where you are and we will suggest a sensible next step.
Contact us