AC-6(9): Log Use of Privileged Functions
AC-6(9) requires you to log every execution of a privileged function so you can reconstruct administrator activity, detect misuse, and support investigations. To operationalize it fast, define what “privileged functions” mean in your environment, turn on the right audit events across systems, centralize them in a SIEM, and review exceptions with documented evidence. 1
Key takeaways:
- You must log privileged actions, not just privileged logins. 1
- Scope is a function list per platform plus a consistent event schema routed to centralized logging.
- Audit readiness depends on retained evidence: configurations, samples of events, and review records.
Footnotes
The ac-6(9): log use of privileged functions requirement is a narrow statement with a big operational footprint: “Log the execution of privileged functions.” 1 For a CCO, Compliance Officer, or GRC lead, the practical problem is rarely policy language. The problem is defining “privileged function” across operating systems, cloud control planes, databases, network devices, and critical applications, then proving to an assessor that logs are complete, centralized, protected from tampering, and actually reviewed.
AC-6(9) sits in the Access Control family and is commonly assessed alongside least privilege and audit/logging controls. You should treat it as a “high-signal” detection control: if privileged actions happen and you cannot produce logs quickly, you will struggle to investigate incidents, respond to auditor sampling, and demonstrate accountability for admin activity. The fastest path to readiness is to standardize (1) what you log, (2) where it goes, (3) who reviews it, and (4) what evidence you retain to prove it operates as designed.
Regulatory text
Requirement (verbatim): “Log the execution of privileged functions.” 1
Operator interpretation: you need audit records that show when a privileged action was performed, by whom, on what system, using what mechanism, and what the action did. “Privileged functions” means actions that can change security posture, access, integrity, availability, or logging itself (for example, creating users, changing permissions, disabling security controls, or modifying audit settings). The control is satisfied by action-level logging, not merely tracking successful admin logins. 1
Plain-English interpretation (what AC-6(9) is really asking)
If someone does something “admin-like,” you must be able to answer these questions from logs without guesswork:
- Who performed the privileged action (human identity and, where applicable, service principal/role).
- What privileged function they executed (clear action name, command, API call, or change type).
- Where it occurred (host/resource identifier, cloud account/subscription/project, application).
- When it occurred (timestamp with consistent time source).
- Result (success/failure, error codes, objects changed).
This is accountability. It also protects you from “we can’t tell what happened” during incident response.
Who it applies to (entity and operational context)
This requirement commonly applies in:
- Federal information systems and programs that adopt NIST SP 800-53 Rev. 5. 2
- Contractor systems handling federal data, where NIST SP 800-53 controls are flowed down contractually or used in system security plans and assessments. 2
Operationally, it applies wherever privileged functions exist:
- Operating systems (Windows/Linux)
- Identity and access management platforms
- Cloud control planes and SaaS admin consoles
- Databases and data platforms
- Network/security devices (firewalls, VPN, EDR, IdP)
- CI/CD and infrastructure-as-code pipelines
- Security tooling itself (SIEM, EDR, vulnerability scanners) because disabling or reconfiguring them is privileged
What you actually need to do (step-by-step)
1) Set your scope: define “privileged function” per platform
Create a Privileged Function Inventory that lists, at minimum:
- Platform/system (e.g., Windows servers, Linux, AWS, Entra ID, firewall)
- Privileged action categories (account management, permission changes, policy changes, audit/log changes, service control)
- How the action is executed (GUI, CLI, API, IaC pipeline)
- The log source and event types that capture it
Practical tip: include “changes to logging” as privileged functions, because attackers often try to reduce visibility first.
2) Identify authoritative log sources and turn on the right audit events
For each platform in scope:
- Confirm auditing is enabled for privileged actions (not just authentication).
- Validate it logs both success and failure for privileged actions where supported, because failed attempts can indicate probing.
- Ensure timestamps are reliable (consistent time sync) so cross-system investigations work.
You are aiming for action-level evidence: “admin changed X” or “role Y attached to principal Z,” not “admin logged in.”
3) Centralize privileged-function logs in a tamper-resistant place
Route logs to a centralized logging platform (often a SIEM or a managed log service). Your design should support:
- Consistent ingestion from all in-scope systems
- Access controls on who can read/modify log pipelines
- Separation of duties where possible (admins shouldn’t be able to both perform privileged actions and erase the evidence)
For auditability, document the data flow: source → collector/agent → aggregation → storage → alerting.
4) Normalize the events into a consistent schema for review
Decide the minimum fields reviewers need across all sources:
- actor (user/service), actor privilege context (role/group)
- action (function name), object (resource affected)
- system/resource identifier, environment
- timestamp, result
- correlation IDs (session ID, request ID) when available
This reduces “we have the log somewhere” problems during sampling.
5) Implement detection and review for privileged functions
AC-6(9) is log creation, but assessors often test whether logs are usable. Put in place:
- Alerting for high-risk privileged actions (disabling MFA, changing audit policy, adding admin roles, creating access keys, modifying network rules)
- A review workflow (ticketing, case management, or GRC workflow) to document triage and resolution
Make the review real: assign an owner, define review triggers, and retain evidence of outcomes.
6) Prove completeness with sampling and negative testing
Before an audit:
- Pick representative systems from each platform category.
- Execute a small set of privileged actions in a controlled manner (in a non-production environment if necessary).
- Verify the log appears centrally with correct identity, timestamp, and action detail.
- Document the test, including screenshots/exports and the query used.
This is the fastest way to detect gaps like “cloud admin actions aren’t ingested” or “Linux sudo commands are missing.”
Required evidence and artifacts to retain
Assessors typically need two kinds of evidence: (1) configuration that shows logging is enabled, and (2) records that show privileged functions were logged and reviewable.
Retain:
- Control narrative / procedure for AC-6(9): scope, log sources, and how you verify operation (mapped to an owner). 1
- Privileged Function Inventory (system-by-system list of privileged actions and corresponding log sources)
- Logging configuration evidence (settings exports, policy screenshots, IaC configs, or baseline templates)
- SIEM/log platform ingestion evidence (connectors enabled, data source list, parsing rules)
- Sample log events showing privileged functions executed (redact sensitive data but keep fields needed for attribution)
- Review/alert evidence (tickets, incident records, escalations) tied to privileged actions
- Access control evidence for the logging platform (who can modify pipelines, who can delete logs, and how that is restricted)
If you use Daydream to manage control ownership and evidence calendars, map AC-6(9) to a single accountable owner and set recurring evidence requests for configs, sampling results, and review records so you do not rebuild the binder each audit cycle. 1
Common exam/audit questions and hangups
Expect these questions:
-
“Define privileged functions in your environment.”
Hangup: teams answer with “admin access,” not “admin actions.” Bring the inventory. -
“Show me logs for a specific privileged change.”
Hangup: logs exist locally but are not centralized, or search is inconsistent. Have saved SIEM queries and an export example. -
“Can admins alter or delete logs?”
Hangup: the same team that has admin rights also has log pipeline admin rights. Document restrictions and approvals. -
“How do you know logging is complete?”
Hangup: no testing. Provide sampling/negative testing evidence. -
“What about cloud and SaaS control planes?”
Hangup: only endpoint logs are collected. Show cloud audit logs and SaaS admin audit trails in the SIEM.
Frequent implementation mistakes (and how to avoid them)
-
Mistake: logging privileged logons only.
Fix: ensure the audit policy captures privilege use (commands, policy changes, role assignments, configuration changes). -
Mistake: excluding “security tool configuration changes.”
Fix: explicitly include SIEM, EDR, IAM, and audit-policy changes as privileged functions in scope. -
Mistake: centralizing logs without protecting the pipeline.
Fix: restrict who can disable collectors, modify parsing, or delete indices/buckets; require approvals for changes. -
Mistake: no consistent identity mapping (shared admin accounts).
Fix: reduce shared accounts and ensure logs record individual identity; where shared accounts exist, require compensating controls and strong session attribution. -
Mistake: collecting logs but never rehearsing retrieval.
Fix: run a periodic “privileged action trace” exercise and keep the evidence.
Risk implications (why auditors care)
If you cannot produce logs of privileged actions, you cannot reliably:
- Reconstruct incidents involving admin misuse or compromised admin credentials
- Prove least privilege is functioning in practice
- Demonstrate accountability for changes to access, configuration, and security settings
In investigations, the absence of privileged-function logs often becomes the decisive gap: you may know access occurred, but not what was changed.
A practical 30/60/90-day execution plan
First 30 days (stabilize scope and visibility)
- Assign a control owner and approvers for log pipeline changes.
- Build the Privileged Function Inventory for your highest-risk platforms first (IAM, cloud control plane, core servers, security tools).
- Confirm privileged-action auditing is enabled for those platforms and that logs reach central storage.
- Create baseline SIEM queries for common privileged actions (role changes, user creation, audit setting changes).
By 60 days (prove operation and close gaps)
- Run controlled tests to generate privileged actions and confirm end-to-end logging.
- Implement alerting for a short list of high-risk privileged actions with documented triage steps.
- Document separation-of-duties controls around log administration (or compensating approvals if duties overlap).
- Start retaining recurring evidence (configs, sample events, review records) in a consistent repository.
By 90 days (make it durable and audit-ready)
- Expand coverage to remaining platforms and third-party admin consoles that can affect security posture.
- Standardize event field mappings so investigations do not depend on one expert.
- Operationalize periodic reviews (e.g., privileged-action reports, exceptions, and follow-ups) and retain the outputs.
- In Daydream, schedule recurring evidence requests and map AC-6(9) evidence to audit-ready packages for faster sampling responses. 1
Frequently Asked Questions
What counts as a “privileged function” for AC-6(9)?
Treat it as any action that changes access, security posture, system configuration, or logging. Build a written inventory per platform so you can show auditors exactly which actions you track and where they appear in logs. 1
Are “sudo” commands on Linux considered privileged functions?
Yes, privileged command execution is a common interpretation because it changes what a user can do on the system. Make sure your logging captures the command executed, the invoking user, and the elevated context.
Do I need to log both successful and failed privileged actions?
The requirement text focuses on logging execution of privileged functions. In practice, capturing failures where supported strengthens detection and gives auditors more confidence that attempted misuse is visible. 1
How do we handle privileged actions performed by automation or CI/CD pipelines?
Log the service principal/role identity, the pipeline/job identifier, and the specific change (API call or IaC change) in the same central place. Your reviewers should be able to distinguish human admin actions from approved automation.
What’s the minimum evidence an auditor will accept for AC-6(9)?
Provide (1) configuration proof that privileged-action logging is enabled, (2) sample events showing privileged functions were logged, and (3) documentation of your scope and review process. Keep at least one end-to-end test record that you can reproduce on request. 1
Can we satisfy AC-6(9) if logs are stored locally on each system?
Local-only logs are fragile for investigations and harder to sample across systems. Centralizing logs with controlled access is the practical standard for demonstrating you can retrieve and review privileged-function activity reliably.
Footnotes
Frequently Asked Questions
What counts as a “privileged function” for AC-6(9)?
Treat it as any action that changes access, security posture, system configuration, or logging. Build a written inventory per platform so you can show auditors exactly which actions you track and where they appear in logs. (Source: NIST SP 800-53 Rev. 5 OSCAL JSON)
Are “sudo” commands on Linux considered privileged functions?
Yes, privileged command execution is a common interpretation because it changes what a user can do on the system. Make sure your logging captures the command executed, the invoking user, and the elevated context.
Do I need to log both successful and failed privileged actions?
The requirement text focuses on logging execution of privileged functions. In practice, capturing failures where supported strengthens detection and gives auditors more confidence that attempted misuse is visible. (Source: NIST SP 800-53 Rev. 5 OSCAL JSON)
How do we handle privileged actions performed by automation or CI/CD pipelines?
Log the service principal/role identity, the pipeline/job identifier, and the specific change (API call or IaC change) in the same central place. Your reviewers should be able to distinguish human admin actions from approved automation.
What’s the minimum evidence an auditor will accept for AC-6(9)?
Provide (1) configuration proof that privileged-action logging is enabled, (2) sample events showing privileged functions were logged, and (3) documentation of your scope and review process. Keep at least one end-to-end test record that you can reproduce on request. (Source: NIST SP 800-53 Rev. 5 OSCAL JSON)
Can we satisfy AC-6(9) if logs are stored locally on each system?
Local-only logs are fragile for investigations and harder to sample across systems. Centralizing logs with controlled access is the practical standard for demonstrating you can retrieve and review privileged-function activity reliably.
Operationalize this requirement
Map requirement text to controls, owners, evidence, and review workflows inside Daydream.
See Daydream