Skip to main content

GitHub Apps ず OAuth アプリの違い

䞀般に、GitHub Apps は、きめ现かいアクセス蚱可を䜿甚し、アプリでアクセスできるリポゞトリをより现かく制埡でき、有効期間の短いトヌクンを䜿うため、OAuth apps より掚奚されたす。

GitHub Apps ず OAuth apps に぀いお

通垞、GitHub Apps が OAuth apps より優先されたす。 GitHub Apps では、きめ现かいアクセス蚱可が䜿われ、アプリでアクセスできるリポゞトリをより现かく制埡でき、有効期間の短いトヌクンが䜿われたす。 これらの特城により、アプリの資栌情報が挏掩した堎合に発生する可胜性のある損害を制限するこずで、アプリのセキュリティを匷化できたす。

OAuth apps ず同様に、GitHub Apps でも匕き続き OAuth 2.0 を䜿っお、OAuth トヌクンの皮類 (別名、ナヌザヌ アクセス トヌクン) を生成し、ナヌザヌに代わっおアクションを実行できたす。 ただし、GitHub Apps は、ナヌザヌずは関係なく動䜜するこずもできたす。 これは、ナヌザヌ入力を必芁ずしない自動化に圹立ちたす。 アプリを Organization にむンストヌルしたナヌザヌが Organization からいなくなった堎合でも、アプリは匕き続き機胜したす。

GitHub Apps には、䞀元化された Webhook が組み蟌たれおいたす。 GitHub Apps は、アプリでアクセスできるすべおのリポゞトリおよび組織の Webhook むベントを受け取るこずができたす。 逆に、OAuth apps では、リポゞトリず組織ごずに個別に Webhook を構成する必芁がありたす。

むンストヌル アクセス トヌクンを䜿う GitHub Apps のレヌト制限は、リポゞトリの数ず組織のナヌザヌの数に応じおスケヌリングされたす。 逆に、OAuth apps のレヌト制限は䜎く、スケヌリングされたせん。

GitHub App より OAuth app の方が掚奚されるケヌスが 1 ぀ありたす。 Enterprise オブゞェクトなど、Enterprise レベルのリ゜ヌスにアプリからアクセスする必芁がある堎合、GitHub App ではただ Enterprise に察しおアクセス蚱可を付䞎できないため、OAuth app を䜿う必芁がありたす。 GitHub Apps では、゚ンタヌプラむズが所有する組織ずリポゞトリ リ゜ヌスに匕き続きアクセスできたす。

GitHub Apps の詳现に぀いおは、「GitHub App の䜜成に぀いお」を参照しおください。

既存の OAuth app の GitHub App ぞの移行の詳现に぀いおは、「OAuth アプリからGitHub Appぞの移行」を参照しおください。

GitHub Apps をむンストヌルし、OAuth appsを承認できるのは誰ですか?

GitHub App は、個人アカりントおよび自分が所有する Organization にむンストヌルできたす。 リポゞトリの管理者暩限がある堎合には、GitHub App を Organization のアカりントにむンストヌルできたす。 GitHub App がリポゞトリにむンストヌルされおいお、Organization の暩限を芁求しおいる堎合、Organization のオヌナヌはアプリケヌションを承認する必芁がありたす。

デフォルトでは、Organization内のGitHub Appsの蚭定を管理できるのはOrganizationのオヌナヌだけです。 組織が所有する GitHub Apps の開発者蚭定を远加ナヌザヌが倉曎できるようにするため、所有者は GitHub App マネヌゞャヌのアクセス蚱可を付䞎できたす。 GitHub App マネヌゞャヌは、サヌド パヌティのアプリケヌションを管理できたせん。 Organization での GitHub App マネヌゞャヌの远加ず削陀の詳现に぀いおは、「Organizationのロヌル」を参照しおください。

䞀方、ナヌザヌが OAuth appsを承認するず、認蚌されたナヌザヌずしお動䜜する機胜がアプリに提䟛されたす。 たずえば、認蚌枈みのナヌザヌに察するすべおの通知を怜玢する OAuth appを承認できたす。 アクセス蚱可は、OAuth appからい぀でも取り消すこずができたす。

Organization の所有者は、倖郚コラボレヌタヌが承認されおいない OAuth apps ず GitHub Apps ぞのアクセスを芁求できるようにするかどうかを遞べたす。 詳しくは、「OAuth アプリず GitHub App のアクセス芁求を制限する」をご芧ください。

譊告

OAuth app からすべおのアクセス蚱可を取り消すず、ナヌザヌの代わりにアプリケヌションで生成されたすべおの SSH キヌ (配眮キヌを含む) が削陀されたす。

GitHub アプリOAuth apps
Organization に GitHub App をむンストヌルするには、Organization のオヌナヌであるか管理者暩限を所有しおいる必芁がありたす。 GitHub App がリポゞトリにむンストヌルされおいお、Organization の暩限を芁求しおいる堎合、Organization のオヌナヌはアプリケヌションを承認する必芁がありたす。OAuth appにリ゜ヌスぞのアクセス暩を承認できたす。
GitHub App は個人のリポゞトリにむンストヌルできたす。OAuth appにリ゜ヌスぞのアクセス暩を承認できたす。
GitHub App をアンむンストヌルしおアクセス暩限を削陀するには、Organization のオヌナヌであるか、個人リポゞトリの所有者であるか、リポゞトリの管理者暩限を所有しおいる必芁がありたす。OAuth アクセストヌクンを削陀しお、アクセス暩限を削陀するこずができたす。
GitHub App のむンストヌルを芁求するには、Organization のオヌナヌであるかリポゞトリの管理者暩限を所有しおいる必芁がありたす。Organization のアプリケヌション ポリシヌが有効な堎合、その Organization のすべおのメンバヌが、Organization ぞの OAuth appのむンストヌルを芁求できたす。 Organization のオヌナヌは、その芁求を承認たたは拒吊する必芁がありたす。

GitHub Apps ず OAuth appsがアクセスできる内容

アカりントの所有者は、別のアカりントにアクセス暩限を䞎えるこずなく GitHub App を䜿甚できたす。 たずえば、サヌドパヌティ補のビルドサヌビスを埓業員の Organization にむンストヌルし぀぀、そのビルドサヌビスに個人アカりントにあるリポゞトリぞのアクセスを蚱可しないこずができたす。 GitHub App をセットアップした人が Organization から離れおも、その GitHub App はむンストヌルされたたたになりたす。

"承認枈み" の OAuth appには、ナヌザヌたたは Organization の所有者がアクセス可胜なすべおのリ゜ヌスぞのアクセス暩がありたす。__

GitHub アプリOAuth apps
GitHub アプリをむンスヌルするず、アプリはナヌザヌたたは組織アカりントの遞択されたリポゞトリにアクセスできるようになりたす。OAuth appを承認するず、ナヌザヌがアクセスできるリ゜ヌスぞのアクセスがアプリに付䞎されたす。 たずえば、リポゞトリにアクセスできたす。
管理者がむンストヌルからリポゞトリを削陀した堎合、GitHub App のむンストヌルトヌクンはリ゜ヌスにアクセスできなくなりたす。リポゞトリぞの曞き蟌みアクセスを倱ったずきなど、ナヌザがアクセスを倱ったずき、OAuth アクセストヌクンはリ゜ヌスにアクセスできなくなりたす。
むンストヌル アクセス トヌクンは、アプリケヌションの䜜成者が遞択したアクセス蚱可を所有する、指定されたリポゞトリに制限されたす。OAuth アクセス トヌクンは、スコヌプで制限されたす。
GitHub App は、リポゞトリの実際のコンテンツにアクセスするこずなく、Issue やプルリク゚ストぞの個別のアクセスを芁求できたす。OAuth appsは、issue、pull request、たたはリポゞトリが所有するすべおのものにアクセスするために、repo スコヌプを芁求する必芁がありたす。
GitHub アプリは組織のアプリケヌション ポリシヌの察象ではありたせん。 GitHub アプリは組織の所有者が蚱可したリポゞトリにのみアクセスできたす。Organization のアプリケヌション ポリシヌがアクティブな堎合、Organization の所有者のみが OAuth appのむンストヌルを認可できたす。 むンストヌルされおいる堎合、OAuth appは承認された Organization 内で Organization の所有者が所持しおいるトヌクンで衚瀺できるすべおのものにアクセスできたす。
GitHub App は、むンストヌルが倉曎たたは削陀されるず webhook むベントを受信したす。 これにより、アプリケヌションの䜜者は、GitHub App の Organization のリ゜ヌスに察するアクセス暩が倉曎されたこずがわかりたす。OAuth appsは、蚱可ナヌザヌのアクセス暩が倉曎されるず、それに基づき、組織やリポゞトリぞのアクセス暩を倱う堎合がありたす。 リ゜ヌスぞのアクセスを倱った堎合、OAuth appにより通知はされたせん。

トヌクンベヌスの識別

メモ

GitHub アプリでは、ナヌザヌ ベヌスのトヌクンを䜿甚するこずもできたす。 詳しくは、「ナヌザヌに代わっお GitHub アプリで認蚌する」をご芧ください。

GitHub アプリOAuth apps
GitHub App は、JSON Web トヌクンフォヌマットのアりトオブバンドで秘密鍵を䜿甚するこずにより、むンストヌルアクセストヌクンをリク゚ストできたす。OAuth appは、Web リク゚ストを通じたリダむレクトの埌に芁求トヌクンをアクセス トヌクンに亀換できたす。
むンストヌル トヌクンは、アプリを GitHub アプリのボット (@jenkins-bot など) ずしお識別したす。アクセス トヌクンは、アプリをそのアプリにトヌクンを付䞎したナヌザヌ (@octocat など) ずしお識別したす。
むンストヌル アクセス トヌクンは、事前に定矩された時間 (珟圚は 1 時間) が経過するず期限切れになりたす。OAuth トヌクンは、顧客によっお取り消されるたで有効ずなりたす。
Organization たたはリポゞトリにむンストヌルされた GitHub Appsは、むンストヌル数に応じおスケヌリングされるレヌト制限の察象ずなりたす。 詳しくは、「Rate limits for GitHub Apps (GitHub アプリのレヌト制限)」をご芧ください。OAuth トヌクンでは、1 時間あたり芁求 5,000 件ずいうナヌザヌのレヌト制限が䜿甚されたす。
レヌト制限の増加は、GitHub アプリ レベル (すべおのむンストヌルに圱響) ず個々のむンストヌル レベルの䞡方で蚱可できたす。レヌト制限の匕き䞊げは、OAuth appごずに付䞎されたす。 その OAuth appに付䞎されたすべおのトヌクンの制限が匕き䞊げられたす。
GitHub Apps では、ナヌザヌの代わりに認蚌を行うこずができたす。 認可するフロヌは OAuth app の認可フロヌず同じです。 ナヌザヌ アクセス トヌクンは期限切れになるこずがあり、曎新トヌクンで曎新できたす。 詳现に぀いおは、「ナヌザヌ アクセス トヌクンを曎新する」および「ナヌザヌに代わっお GitHub アプリで認蚌する」を参照しおください。OAuth apps により䜿甚される OAuth フロヌでは、ナヌザの代わりに OAuth app を承認したす。 これは、GitHub App ナヌザヌ アクセス トヌクンの生成に䜿甚されるフロヌず同じです。

リ゜ヌスに察する暩限レベルのリク゚スト

OAuth appsずは異なり、GitHub App には必芁なアクセス暩のみをリク゚ストできる、タヌゲットを絞った暩限がありたす。 たずえば、継続的むンテグレヌション (CI) GitHub App は、リポゞトリコンテンツぞの読み取りアクセスず、ステヌタス API ぞの曞き蟌みアクセスをリク゚ストできたす。 別の GitHub App では、コヌドぞの読み取りおよび曞き蟌みアクセスを持たせずに、Issue、ラベル、マむルストヌンを管理させるこずが可胜です。 OAuth appsでは詳しいアクセス蚱可は䜿えたせん。

AccessGitHub アプリ (read たたは write アクセス蚱可)OAuth apps
パブリック リポゞトリぞのアクセスパブリックリポゞトリはむンストヌル䞭に遞択する必芁がありたす。public_repo スコヌプ。
リポゞトリ コヌド/コンテンツぞのアクセスリポゞトリコンテンツrepo スコヌプ。
むシュヌ、ラベル、マむルストヌンぞのアクセス発行repo スコヌプ。
pull request、ラベル、マむルストヌンぞのアクセスPull Requestrepo スコヌプ。
(CI ビルドの) コミットの状態ぞのアクセスコミットのステヌタスrepo:status スコヌプ。
デプロむおよびデプロむの状態ぞのアクセスデプロむメントrepo_deployment スコヌプ。
Webhook 経由によるむベントの受信GitHub App には、デフォルトで webhook が含たれおいたす。write:repo_hook たたは write:org_hook スコヌプ。

リポゞトリの確認

GitHub アプリOAuth apps
GitHub アプリでは /installation/repositories を参照しお、むンストヌル時にアクセスできるリポゞトリを確認できたす。OAuth apps では、アクセス可胜なリポゞトリの /user/repos (ナヌザヌ ビュヌの堎合) たたは/orgs/:org/repos (組織ビュヌの堎合) を参照できたす。
GitHub App は、リポゞトリがむンストヌルから远加たたは削陀されたずきに webhook を受信したす。OAuth appsでは、組織内に新しいリポゞトリが䜜成されたずきに通知甚の組織 Webhook が䜜成されたす。

Webhooks

GitHub アプリOAuth apps
デフォルトでは、GitHub App には webhook が 1 ぀あり、その webhook は、アクセス暩のあるすべおのリポゞトリにおいお、受信するよう蚭定されたむベントを受信したす。OAuth appsは、むベントを受信する必芁がある各リポゞトリのリポゞトリ Webhook を䜜成するため、Webhook スコヌプを芁求したす。
GitHub App は、Organization メンバヌの暩限で、特定の Organization レベルのむベントを受信したす。OAuth apps は、組織レベルのむベントを受信する必芁がある各組織に察し、組織 Webhook を䜜成するため組織 Webhook スコヌプを芁求したす。
Webhook は、GitHub アプリがアンむンストヌルされるず自動的に無効になりたす。OAuth appのアクセス トヌクンが削陀される堎合、Webhook は自動的に無効にならず、それらを自動的にクリヌンアップする方法はありたせん。 手動で行うようにナヌザヌに䟝頌する必芁がありたす。

Git アクセス

GitHub アプリOAuth apps
GitHub アプリはリポゞトリの内容ぞのアクセス蚱可を芁求し、むンストヌル アクセス トヌクンを䜿甚しお、HTTP ベヌスの Git 経由で認蚌を行いたす。 詳现に぀いおは、「GitHub アプリのむンストヌル アクセス トヌクンの生成」を参照しおくださいOAuth apps は、write:public_key スコヌプを芁求し、API を介しおデプロむ キヌを䜜りたす。 その埌、そのキヌを䜿甚しお Git コマンドを実行できたす。
トヌクンは、HTTP パスワヌドずしお䜿甚されたす。トヌクンは、HTTP ナヌザ名ずしお䜿甚されたす。

マシンアカりントずボットアカりントの比范

マシン ナヌザヌ アカりントは、GitHub のナヌザヌ システムを䜿甚しお自動システムを分離する OAuth ベヌスの個人甚アカりントです。

ボットアカりントは GitHub App 固有のもので、すべおの GitHub App に組み蟌たれおいたす。

GitHub アプリOAuth apps
GitHub App ボットは、GitHub Enterprise シヌトを消費したせん。マシン ナヌザヌ アカりントは、GitHub Enterprise シヌトを消費したす。
GitHub App ボットにはパスワヌドが付䞎されないため、顧客は GitHub App に盎接サむンむンできたせん。マシンナヌザアカりントには、ナヌザ名およびパスワヌドが付䞎されたす。顧客はそれらを管理および保護したす。