I've been reviewing user accounts and access rights, and what I'm finding is that while our new-hire process does a good job of providing the right levels of access to our employees, our termination process isn't as good at removing access privileges.
That's no surprise to me, because people who are in need of access are good at motivating action. When someone leaves, there's no one clamoring to have his access taken away. But as the security manager, it's the taking-away part I'm most interested in. I want to know if we are removing access in a timely manner when employees leave the company.
I started my review by getting a list of active employees from the HR department. That wasn't as easy as you might think. I don't know how much work is involved in producing a report of current employees, but I expected that HR would be able to get a list from our benefits system or our payroll provider -- after all, we send all of our employees paychecks every two weeks, so we must be able to keep track of them. But it took a few weeks for HR to get me the list.
Once I had the list of active employees, the rest was easy. I started with Active Directory, our main source of user accounts and permissions. I pulled a list of all active user accounts and compared it with the employee list. I had to ignore a lot of accounts that are specific to various other purposes, such as software service accounts, training accounts and test accounts, but what was left matched with the employee list. So far, so good. My team does an account review of departed employees every quarter, because it's a SOX requirement, by comparing the user accounts to the termination list to ensure that everyone who was supposed to be removed no longer has access. If you think of this as a type of negative verification (what access has been removed), the other type of verification is positive (what access is active). We haven't done the positive verification of comparing user accounts to active employees in a while, because there's no external motivation to do so. In this case, my motivation was self-initiated.
But Active Directory isn't the only place we manage user accounts. Even though my company has single sign-on (SSO), we use many third-party SaaS services like Salesforce and our corporate expense management service that aren't integrated with our SSO. Employees have separate user accounts and passwords for those services. And because those SaaS services aren't included in the scope of our SOX testing, they've flown under the radar until now. I got a list of active user accounts from each of the SaaS services I was able to identify (which was surprisingly easier than getting the list of employees from my own HR department) and compared them to my active employee list.
It didn't surprise me that I found discrepancies. Our termination process relies on e-mail -- HR sends a notice to a distribution list, which has a lot of people on it, and the administrators of the various systems are supposed to disable account access for the people who have left the company. But there's no real check on that process -- if the administrator doesn't follow through with removing the access, nobody knows, until someone like me comes along later and checks.
I made a list of our known SaaS services and their assigned administrators and spoke with each of those people to highlight the importance of removing access for departed employees in a timely fashion. It wasn't too difficult to get them to remove the accounts I flagged as requiring removal. The termination process really requires nothing more than disabling the accounts (or deleting them on services that don't support enabling and disabling access). So I don't think there's any good reason for falling behind as we have, other than basic human sloppiness.
So we got the accounts cleaned up, and access is up to date and correct now. But clearly I'm going to need to check up on the termination process more often.