GitHub поддерживает два типа владельцев репо: пользователь и organization.
Пользователь - персональный аккаунт. Его профиль публичный
(github.com/username), у него свои SSH-ключи, токены, биллинг.
Organization (org) - аналог компании на GitHub. У организации свой биллинг, свои репозитории, свои настройки безопасности. Несколько пользователей могут быть её членами. Один пользователь - членом многих org одновременно (нормально для opensource- контрибьюторов, работающих в нескольких компаниях/проектах).
Roles внутри org
- Owner - полные права. Может удалить org, поменять биллинг, переименовать.
- Member - доступ к репо по правилам permission. По умолчанию member-роль не даёт write на все репо org -только на те, где явно дан грант.
- Outside collaborator - не член org, но имеет доступ к конкретному репо. Часто это подрядчики или внешние авторы.
- Billing manager - только биллинг, без репо-доступов.
Teams
Team - именованная группа пользователей. Например, в org acme
есть teams backend, frontend, devops. Зачем team:
- Выдать доступ к набору репо одним кликом, а не каждому пользователю отдельно.
- Использовать в codeowners:
@acme/backendназначается автоматически на PR'ы по путям, привязанным к этой team. - Mention в комментариях:
@acme/backendпишет всем членам team. - Slack/email-нотификации по team.
Teams могут быть вложенными: backend/database наследует
permissions и members от backend. Это удобно для больших
организаций.
Permissions на репо
Доступ к репо организации может быть выдан тремя способами:
- Через team membership - team имеет доступ, ты в team.
- Прямой grant - пользователь добавлен в репо персонально.
- Outside collaborator - не член org, но добавлен в репо.
Когда удаляешь кого-то, не забудь все три. Убрать только из team часто недостаточно -прямой grant остаётся. Это типовая ошибка при ротации сотрудников.
Personal settings vs org settings
Чёткое разделение:
- SSH-ключи, токены, email, 2FA - на уровне пользователя, в
github.com/settings. - Биллинг org, default permissions, SAML/SSO, audit log - на
уровне организации, в
github.com/organizations/acme/settings. - Settings конкретного репо - в
github.com/acme/web/settings.
Кoгда не можешь найти настройку -подумай, к чему она относится по scope, и иди на соответствующий уровень.
SSO и enterprise
В больших организациях включают SAML SSO. Тогда:
- Каждый член org должен пройти SSO для GitHub-аккаунта.
- PAT'ы (personal access tokens) должны быть SSO-авторизованы.
- Push с тех машин, где SSO не пройден, отказывается.
Это сильная защита, но создаёт UX-неудобства. Если ты ушёл из компании, SSO-attestation автоматически отзывается, твой ключ перестаёт работать с приватными репо org.