This lab was the first one where I actually had to think like an admin instead of just following steps. The task: lock down an application so only the right people can touch it, without breaking things for the people who needed access. Simple to state, less simple to get exactly right.
Creating and Assigning Roles:
I started by creating a custom role, then wiring up the application menu and modules so only that role could see them. It's one thing to assign a role - It's another to actually confirm the door is locked.
Implementing Access Control Rules (ACLs):
A major focus of the lab was creating Access Control Rules (ACLs). ACLs help determine whether a user can perform actions such as:
Create records
Read records
Write or update records
Delete records
Roles decide who someone Is. ACLs decide what that role can actually do - create, read, write, delete- and at what level of the record.
I worked at two levels:
Table-Level Security.
Table-level ACLs were created to control access to entire tables. This ensured that only users with the appropriate role could view or interact with records stored in a specific table. Consider this to be like having access to a gate that covers an entire table; either you're in, or the table doesn't exist for you.
Field-Level Security:
Field-level ACLs provided even greater control by restricting access to individual fields within a record. This allowed sensitive information to remain protected while still enabling users to interact with other parts of the record. This level is more surgical - you can let someone see and edit a record, but keep one sensitive field hidden or locked from them.
The field-level piece was the more interesting one. It's the kind of control that shows up constantly in real systems - like HR records where a manager can see someone's role and department but not their salary field. Once I saw it work, the "why" behind field-level ACLs stopped being theoretical.
Using Elevate Role and Security Admin Privileges:
Here's something that wasn't that obvious going In even as an admin. I couldn't start editing ACLs. [security_admin] is an elevated role that Isn't active by default - you have to deliberately elevate Into It. To remove the elevated role, you would deselect this privilege. I understand why this privilege is needed so that security-critical changes are not carelessly selected.
Proving It acutally worked
Configuring an ACL and trusting an ACL are different things, so I tested it by impersonating users with different roles and checking what was available to them and what was not. Users with the role got in cleanly. Users without it were locked out - no menu, no module, no records. I also ran Security Rule debugging to watch ACL evaluation happen in real time, which was genuinely useful - Instead of guessing why access was granted or denied, I could see exactly which rule fired. For field-level security specifically, I confirmed sensitive fields showed up hidden or read-only for the people who shouldn't be editing them.
Key Takeaways:
Through this lab, I gained a deeper understanding of:
Role-based access control (RBAC)
ServiceNow application security
Creating and managing custom roles
Configuring table-level and field-level ACLs
Granting appropriate permissions to users
Using Elevate Roles to activate security_admin privileges
Protecting application data through layered security controls
The overall lesson wasn't about ACL syntax - It's that least privilege isn't a setting you flip once. It's a habit: build the restriction, then go prove it actually restricts something, from the perspective of a user who shouldn't have access. I have a feeling that mindset is going to show up again once I get into CMDB and workflow security.