in

Platinum Bay

Peace, Love and Visual Studio Team System

.NETicated

SOX 404: Part 2 - Separation of Duties

NOTE: This series of articles are written as introduction to complex subjects. They are general in nature and highly condensed. They are not intended to be legal advice or counseling in individual cases and cannot substitute for consultation with a knowledgeable attorney or other competent adviser.

 

Part 1: Introduction

Part 2: Separation of Duties

 

Part 3: Documentation

 

Part 4: Approvals

 

Part 5: Testing

 

Part 6: Auditing

 

Part 7: Summary and Review

In part 1 of this series, we looked at Section 404 of the Sarbanes-Oxley Act of 1999 and how it impacts IT departments. In this section, we'll look at the security requirements of SOX and how to configure user and role security and permissions for the TFS server, individual team projects, Windows SharePoint Services, SQL Server Reporting Services, and Windows. We'll also take a look at the Team Foundation Server Administration Tool and the TFS Permission Manager, both of which can help centralize and manage security administration.

Separation of Duties is a cornerstone of SOX, requiring that no one individual have control of every aspect of a business process. Responsibilities should be assigned to individuals in such a way as to encourage checks and balances within the system and minimize the opportunity for unauthorized access and fraud.

Team Foundation Server is well grounded on the principles of security: Identification, Authentication and Authorization through the use of Users, Groups and Permissions. By default, Team Foundation uses NTFS authentication, and can also use basic or digest authentication as well as SSL and ISAPI filters.

Permission delegation in team Foundation Server is multifaceted and complex because Team Foundation Server is not an application, it is a platform. In this installment of our series on SOX 404 compliance, we'll take a look at security, permissions, and recommended settings at the server and project levels, as well as source control, areas and iterations, work items, Team Build, and finally SharePoint Project Portals and SQL Server Reporting Services. In closing, we will take a look at the tools available to manage security both within Team Foundation and across the platform.


Server Security

The first step is to properly secure Team Foundation at the server level. Out-of-the-box, Team Foundation Server provides a good baseline for defining separation of duties at the server level with global groups and permissions.

Default Groups

Team Foundation Server is installed with three default security groups:

  • Team Foundation Valid Users
  • Team Foundation Administrators
  • Service Accounts

The Group Membership dialog allows for the creation and deletion of the server-level groups, as well as the ability to define groups and users within the global groups. It is important to remember that groups can be defined in a hierarchical manner. The hierarchy for the first two levels is:

  • Team Foundation Valid Users
    • Service Accounts
    • Team Foundation Administrators
    • (setup account)
  • Team Foundation Administrators
    • Service Accounts
    • BUILTIN\Administrators
    • (setup account)
  • Service Accounts
    • (setup account)

These default groups largely suffice in creating a high-level separation of responsibility: administrators are allowed to administer the server; and users are allowed to use the server.

For a full list of the default groups and assigned permissions within Team Foundation Server, visit the Team Foundation Server Default Groups, Permissions, and Roles article on the Microsoft Web site.

Permissions

Team Foundation facilitates setting permissions assigned to global users and groups. The permissions include the ability to create new projects, edit server-level information, and administer the data warehouse. These permissions along with the default settings are:


Valid Users

Administrators

Service Accounts

Administer shelved changes


Administer warehouse


Administer workspaces


Alter trace settings



Create a workspace

Create new projects



Edit server-level information



Manage process template



View server-level information

You may wish to evaluate your organizational process, and create additional global groups to further segregate the administrative duties assigned by these permissions. For example, you may want to limit Alter Trace Settings rights to systems administrators, and Create New Projects rights to Project Managers. To do this, since the Administrators rights cannot be modified, you would create new groups to assign users and roles to.

How to Define Permissions

Server level permissions can be defined in Team Explorer by right-clicking on the server node and choosing Settings | Security, or by using the TFSSecurity command line tool which is discussed in Utilities section later in this chapter.

For more information, visit the Team Foundation Server Permissions on the Microsoft Web site.

Suggested Permissions

The following table outlines suggested permissions and roles at various project levels in Team Foundation Server. This is only meant to be a guide, and should be tailored to your specific organization.


Project Security

The second and more granular level of security is the team project level. The project-level groups are implemented in the process template, and users and permissions can be set on a per-project basis. One exception is any user who is a member of a global server group will automatically become a member of all team projects.

Default Groups

Team projects are created with four default groups which are members of the Valid Users group:

  • Readers
  • Project Administrators
    • (setup account)
  • Contributors
  • Build Services

For true separation, and because these groups are also used to secure areas, iterations, and source control, more descriptive groups are required. Microsoft provides suggested group names for both the Agile and CMMI templates at the bottom of the Team Foundation Server Default Groups, Permissions, and Roles article on the Microsoft Web site. While this is a good generalization, and the CMMI suggested groups are used below for the suggested permissions, it is further suggested to evaluate your internal process and the roles already defined within your organization when creating groups in Team Foundation Server. This not only tailors the groups to your structure, but simplifies the understanding and traceability of Team Foundation Server across your team and entire organization.

Once the groups have been determined, the process template should be updated to both record this decision, and prevent manual group creation effort every time a new team project is created. We will discuss setting default groups in the project template in the next section.

Permissions

Permissions assignable to these groups:

  • Administer a build
  • Delete this project
  • Edit build quality
  • Edit project-level information
  • Publish test results
  • Start a build
  • View project-level information
  • Write to build operational store

Separation of Projects

When a user or group is added to a TFS group, the user is automatically added to the Valid Users server group, which has View Project Level Information by default. What this means is that any user will be able to see any project. If your organization requires user/project restriction, you must remove the View Project Level Information right from the Valid Users server group manually for each project that is created.

Areas

Areas in Team Foundation are used to represent various pieces of the solution. The recommended approach is to use leaf nodes to represent project deliverable, and non-leaf nodes to represent project competencies. Area-level permission can be set in Team Explorer or through the TFSSecurity utility. Note however that areas cannot be required fields for work items, however.

Suggested Permissions

The following table outlines suggested permissions and roles at various project levels in Team Foundation Server. This is only meant to be a guide, and should be tailored to your specific organization.

Iterations

Iterations are used to represent a project's timeline breakdown. Iteration-level permission can be set in Team Explorer or through the TFSSecurity utility. Note however that iterations cannot be required fields for work items.

Suggested Permissions

The following table outlines suggested permissions and roles at various project levels in Team Foundation Server. This is only meant to be a guide, and should be tailored to your specific organization.

Project-Level Suggested Permissions

The following table outlines the rights available at the project level and suggested roles and rights assignments. This is only meant to be a guide, and should be tailored to your specific organization.


Process Template

Team Foundation Server is a process agnostic lifecycle platform which uses process templates to define a specific development process. Two process templates are installed by default; Agile, which defines a lightweight, low-ceremony process; and CMMI, which defines a more document-centric, high-ceremony process. While these two templates contain well-defined process definitions, most teams find the Agile template to be too relaxed and the CMMI template to be too restrictive. The real value in these templates is through customization to adapt to your existing process.

We are going to look at two areas of the process template related specifically to security: groups and permissions and source control. Work items, which are also an integral part of a process template, and compliance in general, will be discussed in the Approvals part of this series.

Groups and Permissions

In the Project Security section above, we looked at groups and permissions on a project-by-project basis. In the process template, however, you can define default users, groups and permissions to be applied to each new project when it is created. Along with having to perform less manual effort for each team project, defining groups and permissions in a process template also helps to promote reusability and transparency.

For each group, there are a set of permissions and areas where the permissions apply. Detailed descriptions of these permissions and areas can be found in the Groups and Permissions Process Template Plug-In article on the Microsoft Web site.

Suggested Permissions

The following table outlines the rights available in the Groups and Permissions section of a project template and suggested roles and rights assignments. This is only meant to be a guide, and should be tailored to your specific organization.

One thing to remember with project-level permissions is that the PROJECT DELETE_TEST_RESULTS, PROECT CHECK_IN, NAMESPACE MANAGE_EVERYONE_GROUP, and NAMESPACE CHECK_IN are not valid for the Agile or CMMI included process templates.

Source Control

Source control permissions can be set on files and folders from within Team Explorer or from the Tf command line utility. While it is not possible to set default source control permissions from the Process Template Editor, you can manually edit the 'Version Control\ Version Control.xml' file in the process template.

Along with setting default permissions, it is also suggested to evaluate your source control tree at various stages of development to determine if any additional rights should to be applied to a particular source tree node. For instance, you may only want users who are members of the Testers group to be able to check-in and check-out code from a test project.

Suggested Permissions

The following table outlines suggested permissions and roles at various project levels in Team Foundation Server. This is only meant to be a guide, and should be tailored to your specific organization.


SharePoint Project Portals

Windows SharePoint Services (WSS) is utilized by Team Foundation Server as a collaboration portal to house project documents such as requirements, designs, Excel spreadsheets, and more.

Roles and Permissions

SharePoint portals are created with four default roles and permission levels

  • Administrator (Full Control) – has browse access to the project portal.
  • Web Designer (Design) – can add new content to existing document libraries and lists.
  • Contributor (Contribute) – Can create new document libraries and lists, as well as customize pages.
  • Reader (Read) – Has full access to the project portal.

Suggested Permissions

The following table outlines suggested permissions and roles for Windows SharePoint Services. This is only meant to be a guide, and should be tailored to your specific organization.


Reporting Services

All data for Team Foundation Server is stored in a SQL Server data warehouse. This makes it ideal to use SQL Server Reporting Services to create and provide reports based on the stored data.

Roles

There are two site-wide and four project-level roles built-in to SQL Server Reporting Services.

  • Site-Wide Roles
    • System Administrator
    • System User
  • Project-Level Roles
    • Browser
    • Content Manager
    • My Reports
    • Publisher
    • Report Builder

Permissions

Permissions (Reporting Services tasks) are granted to the predefined roles outlined in the previous section.

Suggested Permissions

The following table outlines suggested permissions and roles for SQL Server Reporting Services. This is only meant to be a guide, and should be tailored to your specific organization.

Service Accounts

In a compliance environment, it is important to regulate service accounts in addition to users and groups. For more information about managing service accounts, visit the Managing and Resetting Service Accounts and Passwords page on the Microsoft Web site.


Utilities

There are several utilities that can assist in creating and modifying users, groups, and rights.

  • Microsoft
    • TFSSecurity – A command line utility installed with Team Foundation.
    • Tf – A command line utility installed with Team Foundation for working with source control.
  • Microsoft Israel
    • TFS Permission Manager – A graphical utility to administer permissions across all three platforms: Team Foundation Server, SharePoint and SQL Reporting Services.
  • CodePlex
    • TFSAdmin - A graphical utility to administer permissions across all three platforms: Team Foundation Server, SharePoint and SQL Reporting Services.

More Information

For more information about the topics discussed in this chapter, please visit the following resources.


Resources

Comments

No Comments

Leave a Comment

(required )  
(optional )
(required )  
Add

About Steve

Steve Andrews has been working as a developer for more than 8 years. During this time, he has designed and developed applications in such widely varying areas as trust accounting, medical information management, supply chain management, and retail systems. He has firsthand developer experience with a variety of languages, including Java, VB, and .NET. Most recently, he has been immersed in SharePoint. He is currently employed at RDA Corporation in Philadelphia, PA, as a Software Engineer and a team member in the Architectural Guidance evangelism team. Steve is also an MTCS (x2), ICSOO, and .NET fanatic.
Powered by Community Server (Commercial Edition), by Telligent Systems
© Platinum Bay | Some Rights Reserved Creative Commons License

Disclaimer: The information in this weblog is provided "AS IS" with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my opinion. Feel free to challenge me, disagree with me, or tell me I'm completely nuts in the comments section of each blog entry, but I reserve the right to delete any comment for any reason whatsoever (abusive, profane, rude, or annonymous comments) - so keep it polite, please.