Skip to content

Commit 3f3721e

Browse files
authored
Add CODEOWNERS for devel (ISO 27001 / SOC 2 change-control) (#9221)
Establishes code-owner review for the devel branch. General paths are owned by @inverse-inc/inverse-maintainers; authentication, authorisation, RADIUS, TLS/PKI, security-event, sudoers and workflow-signing paths are owned by @inverse-inc/inverse-security-reviewers. All 34 path patterns were validated against the devel tree so none are silently inert. Governs PRs targeting devel only, as GitHub resolves CODEOWNERS from the base branch.
1 parent fd2c120 commit 3f3721e

1 file changed

Lines changed: 105 additions & 0 deletions

File tree

.github/CODEOWNERS

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# CODEOWNERS — inverse-inc/packetfence
2+
#
3+
# Implements the code-owner review control for the ISO 27001 / SOC 2 change-control
4+
# baseline (ISO 27001:2022 A.8.32 change management, A.8.4 access to source code;
5+
# SOC 2 CC8.1). General application paths are owned by the maintainer group; paths
6+
# with a direct bearing on authentication, authorisation, cryptography or build-chain
7+
# integrity are owned by the named security reviewers.
8+
#
9+
# SEMANTICS: the LAST matching pattern wins. The catch-all is therefore declared
10+
# first and the high-sensitivity paths after it. A pattern that matches no file is
11+
# silently inert — every path below was validated against the devel tree.
12+
#
13+
# BRANCH SCOPE: GitHub resolves CODEOWNERS from the BASE branch of a pull request.
14+
# This file governs pull requests targeting `devel` only. It has no effect on pull
15+
# requests targeting maintenance/* branches until it is backported to each of them.
16+
#
17+
# PREREQUISITE: a team is only a valid code owner if it holds write access to this
18+
# repository. Both teams below must hold at least Write for these rules to operate.
19+
20+
# ---------------------------------------------------------------------------
21+
# Default owner — everything not matched by a more specific rule below
22+
# ---------------------------------------------------------------------------
23+
* @inverse-inc/inverse-maintainers
24+
25+
# ---------------------------------------------------------------------------
26+
# Authentication, authorisation and credential handling
27+
# ---------------------------------------------------------------------------
28+
/lib/pf/Authentication/ @inverse-inc/inverse-security-reviewers
29+
/lib/pf/authentication.pm @inverse-inc/inverse-security-reviewers
30+
/lib/pf/password.pm @inverse-inc/inverse-security-reviewers
31+
/lib/pf/admin_roles.pm @inverse-inc/inverse-security-reviewers
32+
/lib/pf/auth_log.pm @inverse-inc/inverse-security-reviewers
33+
/lib/pf/access_filter/ @inverse-inc/inverse-security-reviewers
34+
/lib/pf/access_filter.pm @inverse-inc/inverse-security-reviewers
35+
/lib/pf/role/ @inverse-inc/inverse-security-reviewers
36+
/lib/pf/role.pm @inverse-inc/inverse-security-reviewers
37+
/lib/pf/roles/ @inverse-inc/inverse-security-reviewers
38+
/lib/pf/roles.pm @inverse-inc/inverse-security-reviewers
39+
/lib/pf/cidr_role.pm @inverse-inc/inverse-security-reviewers
40+
41+
# ---------------------------------------------------------------------------
42+
# RADIUS — the network authentication path
43+
# ---------------------------------------------------------------------------
44+
/lib/pf/radius/ @inverse-inc/inverse-security-reviewers
45+
/lib/pf/radius.pm @inverse-inc/inverse-security-reviewers
46+
/lib/pf/radius_audit_log.pm @inverse-inc/inverse-security-reviewers
47+
/lib/pf/freeradius.pm @inverse-inc/inverse-security-reviewers
48+
/raddb/ @inverse-inc/inverse-security-reviewers
49+
/conf/radiusd/ @inverse-inc/inverse-security-reviewers
50+
/conf/radius_filters.conf.defaults @inverse-inc/inverse-security-reviewers
51+
/conf/radius_filters.conf.example @inverse-inc/inverse-security-reviewers
52+
/go/pfradius/ @inverse-inc/inverse-security-reviewers
53+
/go/ntlm/ @inverse-inc/inverse-security-reviewers
54+
/src/ntlm_auth_wrap.c @inverse-inc/inverse-security-reviewers
55+
56+
# ---------------------------------------------------------------------------
57+
# TLS / PKI material and configuration
58+
# ---------------------------------------------------------------------------
59+
/lib/pf/ssl/ @inverse-inc/inverse-security-reviewers
60+
/lib/pf/ssl.pm @inverse-inc/inverse-security-reviewers
61+
/conf/ssl/ @inverse-inc/inverse-security-reviewers
62+
/conf/ssl.conf.defaults @inverse-inc/inverse-security-reviewers
63+
/conf/ssl.conf.example @inverse-inc/inverse-security-reviewers
64+
/conf/openssl.cnf @inverse-inc/inverse-security-reviewers
65+
66+
# ---------------------------------------------------------------------------
67+
# Security-event handling
68+
# ---------------------------------------------------------------------------
69+
/lib/pf/security_event.pm @inverse-inc/inverse-security-reviewers
70+
/lib/pf/security_event_config.pm @inverse-inc/inverse-security-reviewers
71+
72+
# ---------------------------------------------------------------------------
73+
# External request surface
74+
# ---------------------------------------------------------------------------
75+
/go/api-frontend/ @inverse-inc/inverse-security-reviewers
76+
77+
# ---------------------------------------------------------------------------
78+
# Host privilege-escalation surface
79+
# ---------------------------------------------------------------------------
80+
/packetfence.sudoers @inverse-inc/inverse-security-reviewers
81+
/disable-dns-lookup.sudoers @inverse-inc/inverse-security-reviewers
82+
83+
# ---------------------------------------------------------------------------
84+
# Build-chain integrity — workflows hold repository secrets and perform package
85+
# signing (reusable_sign_packages.yml)
86+
# ---------------------------------------------------------------------------
87+
/.github/workflows/ @inverse-inc/inverse-security-reviewers
88+
89+
# ---------------------------------------------------------------------------
90+
# This file governs its own modification, so the review control cannot be
91+
# weakened without security-reviewer approval.
92+
# ---------------------------------------------------------------------------
93+
/.github/CODEOWNERS @inverse-inc/inverse-security-reviewers
94+
95+
# ---------------------------------------------------------------------------
96+
# Deliberate exclusions (recorded so the scope is auditable rather than accidental):
97+
# /html/pfappserver/, /html/captive-portal/ — security-relevant but large and
98+
# high-churn; assigning them to a three-person team would impede delivery
99+
# without materially improving review quality. Owned by maintainers.
100+
# /debian/, /rpm/, /ci/, /containers/ — packaging and build tooling changes on
101+
# every release; owned by maintainers. Signing itself is covered above via
102+
# /.github/workflows/.
103+
# /db/ — schema and migrations carry no direct authentication or cryptographic
104+
# decision; owned by maintainers.
105+
# ---------------------------------------------------------------------------

0 commit comments

Comments
 (0)