On this page
- What is an internal control procedure in SOC 2?
- What fields should a SOC 2 procedure record include?
- What evidence-lineage fields are needed for tool-generated evidence?
- How does an access-provisioning procedure support CC6.2 and CC6.3?
- How does a change-management procedure support CC8.1?
- How should you review and update a control procedure?
A SOC 2 internal control procedure records how a named person responds to a defined risk, what they do, where the work is recorded, and what evidence proves it happened. Below is a procedure record you can copy, then two completed ones with example evidence names and the lineage of each artifact.
This page owns the procedure record. For the full policy set, see SOC 2 documentation; for the catalog of controls, use the SOC 2 controls list; for gap analysis, use the SOC 2 readiness assessment.
What is an internal control procedure in SOC 2?
An internal control procedure is the operating record behind a control. It links a risk and a SOC 2 criterion to a trigger, an owner, ordered actions, a system of record, evidence, review, an exception path, and a change history. The policy sets the rule; the procedure shows how the rule operates.
“Access is restricted” is a statement. A procedure says who starts the process, who performs each action, what evidence each step creates, and what happens when the normal path fails. The COSO Integrated Framework supplies the control vocabulary, and SOC 2 applies it through the AICPA Trust Services Criteria.
What fields should a SOC 2 procedure record include?
A procedure record needs eleven fields: the risk, the policy objective, the exact criterion, the trigger and cadence, the owner and performers, the ordered steps, the system of record, the evidence output, the reviewer, the exception path, and the change history. With them, a new operator can do the work and a reviewer can reconstruct one completed instance. Copy the table and fill the right-hand column; one procedure can support more than one criterion.
| Field | What to write | Your entry |
|---|---|---|
| 1. Risk | The specific unwanted event, such as unauthorized production access or an untested change | |
| 2. Policy and control objective | The one policy requirement this procedure carries out, not the whole policy | |
| 3. Criterion | The AICPA reference, such as CC6.2 or CC8.1 | |
| 4. Trigger and cadence | The event that starts the work; for a recurring control, the cadence you chose and why it fits the risk | |
| 5. Owner and performers | One accountable owner, plus each role that requests, approves, performs, or reviews | |
| 6. Ordered steps | Numbered actions, including decision points that change the path | |
| 7. System of record | The system that records the action: request queue, repository, identity provider, deployment log | |
| 8. Evidence output | Each artifact a completed instance produces, with its lineage (below) | |
| 9. Reviewer | The role that checks the result, what it checks, and where the decision is recorded | |
| 10. Exception handling | How an emergency, failed step, or missing evidence is recorded, who accepts the risk, and how follow-up closes | |
| 11. Change history | Version, date, editor, reason, approver, and effective date |
Keep the procedure separate from the evidence: the procedure describes the expected process, and a completed ticket or log shows one instance. For organizing the evidence, use the SOC 2 evidence request list.
What evidence-lineage fields are needed for tool-generated evidence?
Tool-generated evidence needs lineage because an export alone rarely says what it represents. For each artifact, record the source system and object, how it was collected, the query or filter, the population and period, the generation time with timezone, an immutable reference, the reviewer, and where it is stored.
The AICPA’s FAQs on software tools in SOC 2 examinations (first issued June 2021, current version dated 31 March 2026) cover tool-produced evidence. Lineage fields make a tool-produced artifact inspectable for the CPA firm. Automation can collect evidence, but it does not decide whether a control is designed well or operated as described; see SOC 2 automation. In the examples below, ticket numbers, report names, and roles are illustrative.
How does an access-provisioning procedure support CC6.2 and CC6.3?
An access-provisioning procedure supports CC6.2 when access is authorized before credentials are issued and credentials are removed once access is no longer authorized. It supports CC6.3 when access changes follow the person’s role, with least privilege and segregation of duties in mind. The record must trace a request through the access change and any exception.
The AICPA does not prescribe a ticketing product, identity provider, or approval interval. In our controls library, AC-03 (approval before provisioning) and AC-04 (removal at departure) map to CC6.2, and AC-06 (periodic access review) maps to both criteria. The record below covers AC-03 and AC-04; the review is its own procedure.
| Field | Completed record |
|---|---|
| Risk | A person receives production access nobody authorized, or keeps it after leaving |
| Policy and objective | Access control policy: access follows recorded approval at the level the role needs, and ends when employment ends |
| Criterion | CC6.2 (AC-03, AC-04); CC6.3 for role changes |
| Trigger and cadence | Per event: approved hire, role change, or HR termination record |
| Owner and performers | Owner: head of IT. Requester: hiring manager. Approver: manager or system owner. Performer: IT administrator |
| Ordered steps | 1. Requester names the person, role, systems, and business need. 2. Approver confirms the request matches the role. 3. Administrator or workflow creates, changes, or removes access. 4. Performer records the access level applied. 5. Reviewer matches request, approval, and account |
| System of record | Ticketing system, linked to the identity provider |
| Evidence output | The four artifacts in the lineage table below |
| Reviewer | Security lead compares each approval time with the matching account-creation time and records pass or follow-up on the ticket |
| Exception handling | Emergency access on verbal approval gets a ticket with reason, temporary scope, and expiry; the security lead accepts the risk in the ticket |
| Change history | v3: contractor accounts added to scope. Editor: IT administrator. Approved by head of IT |
The reviewer’s time comparison catches the gap the library flags for AC-03: access granted over chat, with the ticket written afterward.
| Evidence | Source system and method | Generated | Reviewed by | Stored in |
|---|---|---|---|---|
| Access request ticket ACC-1042 | Ticketing system, native record | At approval, system timezone | Approver, then security lead | Ticket, linked from the evidence folder |
| Account-creation event | Identity provider audit log, saved query “new users” | Pulled after period end, UTC | Security lead | Evidence folder, with query text and file checksum |
| Termination list | HR system export, filter: last day in period | Pulled after period end | HR lead, for completeness | Evidence folder |
| Deactivation timestamps | Identity provider export, same people | Pulled the same day as the HR list | Security lead, who also checks accounts outside SSO (AC-04) | Evidence folder |
For the policy above this procedure, see our SOC 2 access control policy template.
How does a change-management procedure support CC8.1?
A change-management procedure supports CC8.1 when it records how the organization authorizes, designs, tests, approves, and implements changes. CC8.1 reads: the entity “authorizes, designs, develops or acquires, configures, documents, tests, approves, and implements changes to infrastructure, data, software, and procedures to meet its objectives.”
Write the decision rules for approval and testing into the procedure, scaled to the change’s risk. In our controls library, CM-01 (reviewed pull request), CM-02 (automated checks in the pipeline), CM-03 (deploy only through the pipeline), and CM-04 (emergency path) all map to CC8.1. A solo founder has no second reviewer for CM-01; the library suggests a required test gate and a recorded self-review instead, agreed with your CPA firm.
| Field | Completed record |
|---|---|
| Risk | A production change introduces an error or weakness because nobody evaluated, tested, or authorized it |
| Policy and objective | Change management policy: production changes are reviewed, tested, and deployed through one release path |
| Criterion | CC8.1 (CM-01 to CM-04) |
| Trigger and cadence | Per event: any proposed change to in-scope code, infrastructure, configuration, or data |
| Owner and performers | Owner: engineering lead. Author: engineer. Reviewer: a second engineer. Deployer: the pipeline |
| Ordered steps | 1. Author opens a pull request with purpose, affected system, risk, and rollback plan. 2. Second engineer reviews and approves. 3. Required checks pass. 4. Merge to the production branch. 5. Pipeline deploys and logs the commit. 6. Deployment record links back to the pull request |
| System of record | Source control, with the pipeline’s run and deployment history |
| Evidence output | The four artifacts in the lineage table below |
| Reviewer | Engineering lead confirms that every sampled deployment ties to an approved pull request and records the result |
| Exception handling | Emergency fixes ship first under the CM-04 path; a ticket records the reason, and review, test evidence, and approval follow by the deadline in the policy |
| Change history | v2: emergency path added. Editor: engineering lead. Approved by CTO |
| Evidence | Source system and method | Generated | Reviewed by | Stored in |
|---|---|---|---|---|
| Pull request 2841, approval | Source control, native record | At approval | Second engineer | Source control; link in the change ticket |
| Branch protection settings | Source control settings export | Pulled at period start and end | Engineering lead | Evidence folder, with screenshot of the rule |
| CI run 77310 | Pipeline run history, run ID | At merge | Engineering lead, at sampling | Pipeline history, ID in the ticket |
| Deployment record | Pipeline deployment log, commit SHA | At deploy, UTC | Engineering lead | Pipeline log, export in the evidence folder |
This is a procedure, not an auditor’s sampling plan. The SOC 2 change management controls guide shows what auditors sample, and SOC 2 Type 2 controls explains how testing differs from documentation.
How should you review and update a control procedure?
Review a procedure when its risk, people, system, or policy changes, and on the cadence you set for that control. Compare the written steps with one recent completed instance and confirm the evidence still carries its lineage fields. Record any mismatch as an exception, never rewrite a past instance, and log the revision in the change history.
If you want help turning this into a readiness plan, see SOC 2 readiness firms.
More in Audit Preparation