13.4 Access Levels, GitHub Roles & Outside Collaborators
Key Takeaways
- Azure DevOps access levels are Stakeholder, Basic, and Basic plus Test Plans; Stakeholder is free but hides Repos and Pipelines for private projects.
- Assign Stakeholder to product owners and business sponsors who work only in Boards and dashboards.
- A Basic licence grants hub visibility but grants no permission by itself - authorisation still comes from security group membership.
- GitHub repository roles are Read, Triage, Write, Maintain and Admin; Maintain manages settings and branch protection without destructive administrative rights.
- Outside collaborators receive access to specific repositories without joining the organisation, so contractors never see the member directory or internal repositories.
13.4 Access Levels, GitHub Roles & Outside Collaborators
Security groups answer "what may this person do". Access levels answer a different question - "what has this person been licensed to see" - and mixing the two up explains most access-troubleshooting scenarios on the exam.
1. Access Levels vs. Security Groups: Licensing vs. Authorization
A critical distinction tested on the AZ-400 exam is the difference between an Access Level and a Security Group.
- Access Level: Determines which features and UI elements are enabled for a user based on their Visual Studio / Azure DevOps license.
- Security Group: Determines what actions and operations a user is permitted to perform within those enabled features.
Exam Warning: Adding a user to the
Project Administratorssecurity group will NOT allow them to view or edit code if their assigned Access Level is set toStakeholder!
Azure DevOps Access Levels
| Feature / Service | Stakeholder (Free / Unlimited) | Basic (Standard Developer) | Basic + Test Plans | Visual Studio Enterprise |
|---|---|---|---|---|
| Cost / Licensing | Free for unlimited users | 5 free users, then monthly fee | Monthly paid add-on | Included with VS Enterprise subscription |
| Azure Boards | Full backlog & work item view/edit | Full backlog, board, sprint tracking | Full backlog, board, sprint tracking | Full backlog, board, sprint tracking |
| Azure Repos | No access (cannot view/commit code) | Full access (clone, commit, PRs) | Full access | Full access |
| Azure Pipelines | No access (cannot author/run) | Full access (author, queue, review) | Full access | Full access |
| Azure Artifacts | View public feeds only | Full package management | Full package management | Full package management |
| Azure Test Plans | No manual test authoring | View test runs only | Full authoring & execution | Full authoring & execution |
When to Assign Stakeholder Access
Assign Stakeholder access to product owners, business analysts, executive leadership, and project managers who only need to track work items, update user stories, and monitor kanban boards without interacting with Git repositories or CI/CD pipelines.
2. GitHub Enterprise Repository Roles & Collaborator Governance
When managing source code and workflows in GitHub Enterprise, organizations implement GitHub's five base repository permission tiers.
┌─────────────────────────────────────────────────────────────────────────────┐
│ GitHub Base Repository Permission Tiers │
├─────────────────────────────────────────────────────────────────────────────┤
│ 1. READ • View code, clone repository, open issues, submit pull reqs │
├─────────────────────────────────────────────────────────────────────────────┤
│ 2. TRIAGE • Everything in Read PLUS: Manage issues, apply labels, │
│ close issues, manage milestones (No code write access) │
├─────────────────────────────────────────────────────────────────────────────┤
│ 3. WRITE • Everything in Triage PLUS: Push code to non-protected │
│ branches, create releases, trigger workflows │
├─────────────────────────────────────────────────────────────────────────────┤
│ 4. MAINTAIN • Everything in Write PLUS: Manage repository settings, │
│ configure branch protection rules (Cannot delete repo) │
├─────────────────────────────────────────────────────────────────────────────┤
│ 5. ADMIN • Full control: Delete repo, manage collaborator permissions, │
│ configure security & analysis features │
└─────────────────────────────────────────────────────────────────────────────┘
Deep Dive: Triage and Maintain Roles
- Triage: Specifically designed for community managers, technical writers, or issue triagers who need to organize backlogs, label bug reports, and close duplicate issues without the ability to push commits or alter code.
- Maintain: Designed for engineering team leads and project managers who must configure repository settings, define branch protection rules, manage webhooks, and oversee releases without possessing destructive administrative powers (such as deleting the repository or transferring ownership).
Managing External Contractors: Outside Collaborators
In enterprise development, organizations frequently engage external vendors, third-party penetration testers, or contractors. Adding external contractors as full members of a GitHub Organization exposes internal organization member directories, public and internal repositories, and teams.
- Outside Collaborators: Users who are granted explicit access to one or more specific repositories without being added as members of the GitHub Organization.
- Security Best Practices for Contractors:
- Enforce Multi-Factor Authentication (MFA) across all Outside Collaborators.
- Grant the minimum required repository role (typically Write for software contractors, Read for auditors).
- Configure automated expiration of collaborator access.
- Restrict fork permissions and prevent outside collaborators from inviting other collaborators.
3. Comprehensive Permission Mapping Matrix
| Organizational Persona / Responsibility | Recommended Azure DevOps Group | Required Azure DevOps Access Level | Equivalent GitHub Repository Role |
|---|---|---|---|
| Product Owner / Business Analyst | Project Readers | Stakeholder | Read (or Read on Project Board) |
| Quality Assurance / Test Engineer | Project Contributors | Basic + Test Plans | Write |
| Full-Stack Software Engineer | Project Contributors | Basic | Write |
| Engineering Team Lead | Project Administrators (or custom lead group) | Basic | Maintain |
| Scrum Master / Agile Coach | Project Contributors | Stakeholder (or Basic) | Triage |
| DevOps Infrastructure Architect | Build & Release Administrators | Basic | Admin |
| External Security Auditor / Pen Tester | Project Readers | Basic (or Stakeholder) | Read (via Outside Collaborator) |
4. Realistic Enterprise Governance Scenario & Common Traps
Scenario: Regulated Banking Contractor Onboarding
Company: Woodgrove Bank is contracting an external mobile development agency (Contoso Mobile) to build a new iOS/Android banking interface. The project repository is hosted in Azure Repos and the CI/CD pipeline runs in Azure Pipelines.
Governance Requirements:
- Contractors must be able to view work items, branch code, and submit Pull Requests.
- Contractors must never be able to bypass branch policies, push directly to
main, delete release branches, or view internal core-banking repositories. - Contractors must not have access to production deployment pipelines or production service connections.
Solution Architecture:
- Licensing: Provision Basic Access Level licenses for the contractor accounts so they can access Azure Repos and Pipelines.
- Security Group: Create a custom project security group named
External-Contractors. - Repository Permissions: At the project level, grant
External-ContractorsRead and Contribute permissions. On the main branch, configure a strict Branch Policy requiring 2 reviewers, linked work items, and successful build validation. Explicitly setBypass policies when completing pull requeststo Deny. - Service Connection Isolation: Ensure production service connections are set to Restricted pipeline permissions. Grant
External-Contractorsonly the User role on development service connections, completely hiding production connections. - Effective State: Even if a contractor is added to a secondary team group that has
Allowfor policy bypass, the explicitDenyonExternal-Contractorsguarantees they cannot bypass branch safeguards.
Common Exam Traps to Avoid
- Trap: Believing an explicit Allow can override a Deny from another group. If a user belongs to
Developers(Allow) andContractors(Deny) for the same permission, the effective permission is ALWAYS Deny. The only way to grant access is to remove the user from the group containing the Deny or change the Deny to Not Set. - Trap: Confusing Access Levels with Security Group Permissions. If a developer in
Project Contributorscannot see the Repos menu, checking their Security Group permissions will not solve the issue. The administrator must check Organization Settings → Users and upgrade their Access Level from Stakeholder to Basic. - Trap: Assigning Maintain role when repository deletion is required. The GitHub
Maintainrole cannot delete a repository, manage billing, or adjust organization-wide security defaults. If an exam scenario requires managing repository deletion or collaborator permissions, the correct answer is Admin.
A newly hired software engineer is added to an Azure DevOps project and placed into the built-in 'Project Contributors' security group. When the engineer logs into the web portal, they can view and update work items in Azure Boards, but the 'Repos' and 'Pipelines' tabs are missing from the navigation sidebar. What is the root cause of this issue and how should the administrator resolve it?
An enterprise organization hosts its source code repositories in GitHub Enterprise Cloud. The engineering director needs to assign permissions to team leads who must manage repository settings, configure automated branch protection rules, and oversee releases, but must strictly be prevented from deleting repositories, changing repository visibility, or managing organization billing. Which GitHub repository role should the director assign?