为什么临时关闭可能留下访问权限
当你需要快速暂停一个集成时,最直接的做法是暂停或卸载它。这处理了安装层面。它不会自动处理授权层面,后者是另一种授权,拥有不同的所有者。
暂停已安装的 GitHub App 会暂时阻止访问该安装账户拥有的资源。来源
这种区分很重要,因为一个 GitHub App 可以同时持有两种访问权限:对账户资源的安装访问权限,以及代表个人行事的用户授权。暂停其中一个并不会暂停另一个。
暂停不会移除应用代表用户行事的独立授权。来源
安装访问权限与用户授权
使用下表来决定你实际需要更改哪个层面。
| 你想停止什么 | 需要检查的层面 | 暂停会做什么 | 暂停不会做什么 |
|---|---|---|---|
| 应用访问安装账户拥有的资源 | 该账户上的安装 | 暂时阻止该安装的访问 | 移除用户授权 |
| 应用代表个人行事 | 该用户的已授权 GitHub Apps | 本身不执行任何操作 | 停止用户级授权 |
| 针对一个账户同时停止两者 | 两个层面 | 仅覆盖安装侧 | 保留另一项授权 |
GitHub App 不是你可以直接注销的活动浏览器会话。暂停安装是对资源的账户级控制;取消授权是对委托操作的用户级控制。它们分别管理,也应分别核实。
临时关闭的实用检查清单
- 首先明确目标。 确定你是要暂停应用对账户资源的访问、停止它代表用户行事,还是两者都要。答案决定了你触及哪个层面。
- 处理安装。 在拥有你想保护的资源的账户上暂停安装。将其视为临时且可逆的操作。
- 单独检查用户侧。 如果应用被授权代表你行事,而你想停止这一点,请前往“已授权的 GitHub Apps”并在那里取消授权。不要假定暂停已覆盖此点。
- 记录你更改了什么以及在哪里更改。 记下你暂停了哪个账户的安装,以及你移除了哪些用户授权(如果有)。这可以防止后续清理时遗漏两者之一。
- 有意地恢复。 如果暂停是临时的,请仅在确认是否也应恢复用户授权后再重新启用安装。
卸载比暂停更强,但仍有范围限制
如果临时暂停不够,而你想移除安装,卸载是更强的安装侧操作。它本身仍然不会触及用户授权。
卸载会移除该账户的安装访问权限;当所有者希望停止应用代表其行事时,在“已授权的 GitHub Apps”中取消授权是一个单独的操作。来源
实际后果:卸载后,如果所有者还希望应用停止代表其行事,请检查“已授权的 GitHub Apps”。移除一个连接并不能证明另一个已消失,而一个不再出现在某处的应用可能仍持有另一项授权。
常见失败路径
- 假定暂停就是完全撤销。 它仅阻止安装的资源访问。用户授权会一直存在,直到你处理它。
- 将取消授权视为卸载。 取消授权会停止应用代表你行事,但账户上的安装可能仍然存在。请确定你的关闭实际需要哪一个。
- 清理一个账户而忘记另一个。 安装属于账户;授权属于用户。仅指定一个层面的关闭计划通常会让另一个层面保持原样。
- 过早重新启用。 如果你选择暂停而非卸载,恢复安装可能会在你检查用户侧之前恢复资源访问。
在宣布完成前核实两个层面
只有当每个你打算更改的层面都按其自身标准检查过后,关闭才算完成。在拥有账户上确认安装状态,然后在“已授权的 GitHub Apps”下为相关用户确认授权状态。不要从一个推断另一个,也不要把应用描述为已注销——它从来不是浏览器会话。
如果你的下一个任务是移除较旧的 OAuth 授权,并希望将其与登录会话分开,相关指南在不与登录会话混淆的情况下撤销旧的 GitHub OAuth 应用涵盖了那个不同的清理步骤。