Почему временная остановка может оставить доступ
Когда нужно быстро приостановить интеграцию, очевидный шаг — приостановить или удалить её. Это решает вопрос со стороны установки. Но это не решает автоматически вопрос с авторизацией, которая представляет собой отдельное разрешение с другим владельцем.
Приостановка установленного GitHub App временно блокирует доступ к ресурсам, принадлежащим аккаунту этой установки. Источник
Это различие важно, потому что GitHub App может одновременно иметь два вида доступа: доступ установки к ресурсам аккаунта и авторизацию пользователя действовать от имени человека. Приостановка одного не приостанавливает другое.
Приостановка не удаляет отдельную авторизацию приложения действовать от имени пользователя. Источник
Доступ установки и авторизация пользователя
Используйте эту таблицу, чтобы решить, какую именно поверхность вам нужно изменить.
| Что вы хотите остановить | Какую поверхность проверить | Что делает приостановка | Чего она не делает |
|---|---|---|---|
| Приложение обращается к ресурсам, принадлежащим аккаунту установки | Установка на этом аккаунте | Временно блокирует доступ этой установки | Не удаляет авторизацию пользователя |
| Приложение действует от имени человека | Authorized GitHub Apps для этого пользователя | Сама по себе ничего | Не останавливает авторизацию на уровне пользователя |
| И то, и другое для одного аккаунта | Обе поверхности | Затрагивает только сторону установки | Оставляет другое разрешение в силе |
GitHub App — это не активный сеанс браузера, из которого можно просто выйти. Приостановка установки — это контроль на уровне аккаунта над ресурсами; отзыв авторизации — это контроль на уровне пользователя над делегированными действиями. Они управляются отдельно, и проверять их следует отдельно.
Практический чек-лист для временной остановки
- Сначала определите цель. Решите, приостанавливаете ли вы доступ приложения к ресурсам аккаунта, останавливаете ли его действия от имени пользователя или и то, и другое. Ответ определяет, какую поверхность вы затрагиваете.
- Разберитесь с установкой. Приостановите установку на аккаунте, которому принадлежат ресурсы, которые вы хотите защитить. Считайте это временной и обратимой мерой.
- Проверьте сторону пользователя отдельно. Если приложение было авторизовано действовать от вашего имени и вы хотите это прекратить, перейдите в Authorized GitHub Apps и отзовите авторизацию там. Не предполагайте, что приостановка это покрыла.
- Запишите, что и где вы изменили. Отметьте, установку какого аккаунта вы приостановили и какую авторизацию пользователя, если таковая была, вы удалили. Это поможет при последующей очистке не упустить одну из двух.
- Отменяйте осознанно. Если пауза была временной, снова включите установку только после того, как убедитесь, нужно ли также восстанавливать авторизацию пользователя.
Удаление сильнее приостановки, но всё ещё ограничено
Если временной паузы недостаточно и вы хотите избавиться от установки, удаление — более сильное действие со стороны установки. Оно по-прежнему само по себе не затрагивает авторизацию пользователя.
Удаление убирает доступ установки этого аккаунта; отзыв авторизации в Authorized GitHub Apps — отдельное действие, когда владелец хочет прекратить действия приложения от своего имени. Источник
Практическое следствие: после удаления проверьте Authorized GitHub Apps, если владелец также хочет, чтобы приложение перестало действовать от его имени. Удаление одного соединения не доказывает, что другое исчезло, и приложение, которое больше не отображается в одном месте, может по-прежнему иметь другое разрешение.
Распространённые ошибочные пути
- Считать приостановку полным отзывом. Она блокирует только доступ установки к ресурсам. Авторизация пользователя сохраняется, пока вы её не затронете.
- Путать отзыв авторизации с удалением. Отзыв авторизации останавливает действия приложения от вашего имени, но установка на аккаунте может остаться. Решите, что именно требуется для вашей остановки.
- Почистить один аккаунт и забыть другой. Установки принадлежат аккаунтам; авторизации принадлежат пользователям. План остановки, в котором названа только одна поверхность, обычно оставляет другую нетронутой.
- Слишком раннее повторное включение. Если вы приостановили, а не удалили, восстановление установки может вернуть доступ к ресурсам до того, как вы проверили сторону пользователя.
Проверка обеих поверхностей перед завершением
Остановка завершена только тогда, когда каждая поверхность, которую вы намеревались изменить, проверена по её собственным правилам. Подтвердите состояние установки на владеющем аккаунте, затем подтвердите состояние авторизации в Authorized GitHub Apps для соответствующего пользователя. Не выводите одно из другого и не описывайте приложение как «вышедшее из системы» — это никогда не был сеанс браузера.
Если ваша следующая задача — удаление старого разрешения OAuth и вы хотите отделить это от сеансов входа, соответствующее руководство по отзыву старого OAuth-приложения GitHub без путаницы с сеансом входа описывает этот другой шаг очистки.