OAuth認可とは実際に何なのか
サードパーティ製アプリで「Authorize」をクリックすると、GitHubはグラントを記録します。これによりアプリは、あなたが承認した権限の範囲内で、あなたの代理として操作できるようになります。このグラントは、ブラウザのセッションでも、SSHキーでも、独自のインストール設定を持つインストール済みのGitHub Appでもありません。これらはそれぞれ別の場所で取り消しまたは削除されるため、最初のステップは、いま目にしているのがどの種類のアクセスなのかを見極めることです。
| 目にするもの | それが何か | 管理する場所 |
|---|---|---|
| 承認したスコープとともに一覧表示されるサードパーティ製アプリ | OAuth認可 | Settings → Applications → Authorized OAuth Apps |
| SSH経由のGit用に追加したキーペア | SSHキー | Settings → SSH and GPG keys |
| このブラウザでサインインしている状態 | ログインセッション | サインアウト、またはセッションページ |
| リポジトリや組織にインストールされたアプリ | GitHub Appのインストール | アプリまたは組織のインストール設定 |
目にしている項目がOAuth認可でない場合、OAuthの一覧から取り消してもそれは解決しません。
取り消す前に確認する理由
古い認可が、デプロイツール、エディタのプラグイン、CI連携など、あなたがまだ頼っている何かを担っている可能性があります。取り消せばそのアプリのグラント経由のアクセスは切れますが、それは意図どおりである一方で、まだそれに依存しているワークフローを壊すこともあります。操作する前に、アプリ名、表示されている権限、最後に使った時期を確認してください。
GitHubは、プライベートリポジトリへのアクセス権を持つアプリケーションを含め、認可済みアプリケーションを確認することを推奨しています。Source
アプリに心当たりがない場合、または保持しているアクセスがそのアプリの役割より広い場合は、取り消すべきケースです。心当たりがあり今も使っている場合は、判断する前に現在のスコープが依然として適切かどうかを検討してください。
取り消し前後のチェックリスト
何が変わったかを把握し、必要なら誤りを元に戻せるよう、短い記録として使ってください。
取り消す前に
- アプリ名と表示されている権限を控えておき、後で同じ項目を識別できるようにする。
- 現在使っている何かがそのアプリに依存していないか確認する。ビルド、デプロイ、エディタのログイン、定期実行ジョブなど。
- 見ているのがAuthorized OAuth Appsであり、SSHキー、セッション、インストール済みアプリではないことを確認する。
- 特定の1件の認可を取り消すのか、すべてを取り消すのかを決める。
取り消した後に
- Authorized OAuth Appsページを再読み込みし、その項目が消えていることを確認する。
- そのアプリを使っていたワークフローを一度実行し、再認可を求められるようになったか確認する。そのプロンプトは、グラントが削除されたことを示す想定どおりのサインです。
- ワークフローが壊れ、それでも必要な場合は、意図的に再認可し、要求されるスコープを確認する。
- 取り消したアクセスに他に依存しているものがないと確信できるまで、アカウントの復旧手段は維持しておく。
認可を取り消す方法
アカウントのSettingsを開き、Integrationsの下のApplications、そしてAuthorized OAuth Appsへ進んでアクセスを確認します。Source
一覧から、削除したい特定のアプリのメニューを開きます。
心当たりのない認可や古い認可は、アプリのメニューから取り消せます。このページにはRevoke allも用意されています。Source
1件だけ削除したいときは、その単一の項目を取り消します。Revoke allは、一覧を確認したうえですべての認可を消したいときのためのもので、いま見ていた1件だけでなく、そのページ上のすべてのアプリに影響します。
覚えておきたい失敗の境界
- 取り消しは削除ではない。 グラントを削除すると、それを通じた将来のアクセスは止まります。アプリがすでに保存した、またはGitHubの外へコピーしたデータは削除されず、消去を保証するものでもありません。
- 取り消しはサインアウトではない。 GitHub上のブラウザセッションは別物です。アプリを取り消してもサインアウトされず、サインアウトしてもアプリの認可は取り消されません。
- SSHキーはOAuthアプリではない。 気になっているアクセスがキーである場合、削除はSSH and GPG keysの設定で行い、Authorized OAuth Appsでは行いません。
- インストール済みのGitHub Appは同じ項目ではない。 インストール単位のアクセスはアプリがインストールされた場所で管理されるため、アプリがOAuthの一覧に表示されない場合はそちらを確認してください。
- 公開ユーザー名の一致は証拠ではない。 あるハンドルが他所に現れるか確認している場合、公開プロフィールでの一致は手がかりであり、所有の証拠ではありません。TraceSeekは既知の公開ユーザー名を3,000+のプラットフォームで検索できますが、あなたの代わりにGitHubの設定を確認したり取り消したりすることはできません。
認可を疑わしいとみなすべきとき
行動するのに劇的な話は必要ありません。実用的なサインは、アプリに心当たりがない、権限がそのアプリの役割より広い、認可した覚えがない、といったものです。そうした場合は、該当する項目を取り消すのが妥当な一歩であり、その後、頼っている何かが動かなくなっていないか確認します。ワークフローが実際に壊れた場合は、そのアプリが想定どおりのものであり、スコープが必要な内容と一致していることを確認してから再認可してください。