Organizations, Teams, Roles, Repository Access, Enterprise Policies, and Delegated Administration: Configuration, Design Choices, and Tradeoffs
Choose team-based access, base permissions, delegated roles, outside-collaborator models, and enterprise controls deliberately by balancing maintainability, security, governance, reliability, compatibility, and cost.
Learning objectives
- Choose direct grants versus team-based access and a safe base-permission posture.
- Compare organization owner, predefined delegated roles, and Enterprise custom roles.
- Choose member, outside collaborator, repository collaborator, or managed-user patterns correctly.
- Distinguish GitHub organization policy from enterprise and identity-provider controls.
- Use a decision table to justify governance and cost tradeoffs.
1. Configuration is an authorization architecture
The goal is not to minimize the number of settings. It is to make the answer to “why can this identity do this?” short, durable, and reviewable. Prefer a small number of job-function teams, a conservative base permission, narrow delegated roles, and explicit exceptions with expiry.
2. Direct collaborator grants versus team-based access
| Choice | Strength | Risk | Use when |
|---|---|---|---|
| Team grant | Central, reviewable, consistent onboarding/offboarding. | Bad parent-team grants can cascade broadly. | Access corresponds to a stable job function. |
| Direct member grant | Precise exception. | Hidden long-term exceptions and offboarding gaps. | Rare, documented, time-bounded need. |
| Outside-collaborator grant | Narrow repository access without organization membership. | Separate lifecycle; cannot use teams; may consume paid seat for private/internal access. | Contractor/vendor needs one/few repositories. |
Team-based access is normally the maintainable default. Direct grants are not inherently insecure; their problem is lifecycle drift. Every direct grant should answer who approved it, why it exists, and when it expires.
3. Base permission and default-deny strategy
For private-repository estates, None base permission
plus explicit teams is the cleanest default-deny pattern. Read base
permission can be reasonable for highly collaborative organizations
where every member should read every private repository. Write as a
base permission usually creates a large blast radius because every
member can modify every repository unless another control
intervenes.
Base permission applies to organization members, not outside collaborators, and higher explicit grants override a lower base. Internal repositories are an enterprise visibility exception: enterprise members have broad read visibility by design. Treat repository visibility selection as part of authorization architecture, not merely confidentiality labeling.
4. Organization owner versus delegated/predefined/custom role
Owner is appropriate for organization lifecycle, high-impact policy, and continuity—not ordinary CI, security triage, app management, billing, or team administration. Current GitHub provides predefined organization roles for specialist duties. Use those where they fit. Enterprise Cloud adds custom organization and custom repository roles for narrower permission sets; enterprise-level custom roles are also evolving and some are public preview.
5. Outside collaborator versus member versus managed user
Choose member when the person participates in organization teams and recurring organization workflows. Choose an outside collaborator for narrow ordinary GitHub.com repository access without organization membership. Outside collaborators cannot join teams and are not subject to base permission. Under Enterprise Managed Users, use the enterprise's managed identity model: repository collaborator/guest collaborator behavior replaces ordinary external-account assumptions, and provisioning/authentication come from the IdP.
Do not use “machine member” as a substitute for proper GitHub App/service identity. Chapter 27 showed why application identity should be separated from human organization membership whenever the integration model supports it.
6. Organization settings versus enterprise policy
An organization owner may be unable to change a setting because the enterprise has enforced a policy. That is not a repository-role problem. Diagnose hierarchy: enterprise → organization → repository/team. Record whether a control is locally configurable, inherited, or locked. With SAML/SCIM/team synchronization, also record whether GitHub or the IdP is authoritative for membership.
GitHub Enterprise Server is a separate deployment with version-specific role/features. Do not copy GitHub.com Enterprise Cloud custom-role assumptions into an older GHES deployment without checking its versioned documentation.
7. Break-glass and time-bound elevation
A break-glass path should be more controlled than routine access, not less. Define eligibility, approver, exact role, exact repositories, start time, expiry, incident/ticket reference, and post-use review. Prefer a dedicated elevation team or role over temporarily granting organization ownership. Remove elevation automatically where your identity/governance tooling supports it and independently verify the removal.
8. Worked decision table: three teams, three repositories
| Need | Recommended control | Maintainability | Security/governance | Cost/compatibility |
|---|---|---|---|---|
| Engineers modify app code |
engineering team → Write on app repositories
|
High | Clear function-based grant | Works on ordinary organizations |
| Security manages alerts without full org control | Security team + security-manager/delegated role | High | Separates security admin from ownership | Capabilities vary by product; advanced security views may require licensed features |
| Release team manages release automation | Release team → Maintain/Admin only where required | High | Keep source write and release authority distinct when feasible | Standard roles broadly available |
| Vendor supports one repo | Outside collaborator → Triage/Read/Write as task requires | Medium | Narrow scope, explicit expiry | Private/internal access can affect licensing |
| Platform admin needs one custom setting permission | Enterprise Cloud custom org/repo role if available | High after setup | Avoids owner | Enterprise Cloud feature; simulate on free path |
9. A compact governance policy
Access principles
1. Base permission: None for private repositories unless documented otherwise.
2. Persistent repository access is team-based; direct grants require owner + expiry.
3. Organization owners: minimum continuity set only; no routine task should require owner.
4. Nested parent teams receive only permissions safe for every descendant.
5. Temporary elevation has ticket, approver, start, expiry, and verification of removal.
6. Offboarding enumerates identity, org membership, every team, direct grant, role, and credential owner.
7. Quarterly review records grant source, business owner, last review, and next expiry/review.
8. Enterprise/IdP-enforced controls are labeled as inherited and changed at the authoritative layer.
Knowledge check
Why can a custom role still be too broad?
Because its chosen base role or organization-wide repository permissions may apply to all current and future repositories. Customization is not automatically least privilege.
When is a direct repository grant reasonable?
For a rare, explicit, time-bounded exception with a named approver and expiry. Persistent job-function access should usually be team-based.
Why does a parent team need especially conservative repository grants?
Every child team inherits the parent grant, so a broad parent permission silently expands access to all descendants.
Which layer should change synchronized team membership?
The authoritative identity provider when team synchronization is enabled; direct GitHub/API membership mutations can be rejected or overwritten.
What is the key distinction between outside collaborator and member?
A member belongs to the organization and can join teams/base-permission scope; an outside collaborator does not belong to the organization and receives explicit repository access.
Summary
Good governance favors team-based persistent access, conservative base permission, narrowly delegated administration, and explicit exception lifecycle. Organization owner is a continuity/high-impact role, not the default administrator role. Enterprise Cloud custom roles and managed identities can improve delegation, but the mandatory operating model remains valid without paid features.
Official references
Keep the academy open
Support free, practical DevOps education.
Every lesson is designed to remain readable in a browser, downloadable from GitHub, and usable without a paid learning platform. Contributions help expand and maintain the curriculum.
0x716c4Ab160C4B66F31a28AE2448BfF68fc3a2ef0
Send only Ethereum/ERC-20 compatible assets to this
address.