GitHub App の承認ついて
ユーザーの GitHub ID を確認したり、ユーザーに代わって GitHub を操作する必要があるサードパーティのアプリケーションでは、それを行うために GitHub App の承認を求められることがあります。 GitHub App を承認するときには、そのアプリケーション所有者が信頼できること、およびそのアプリケーションからアクセスする情報を確認する必要があります。
承認の際に、次のすべてを実行するためのアクセス許可を GitHub App に与えるよう求められます。
- GitHub ID を確認する: 承認されると、GitHub App ではパブリック GitHub プロファイルを取得できるようになります。 アプリでは、プライベート アカウント情報を取得することもできます。 承認プロセス中に、GitHub によって、GitHub App からアクセスできるアカウント情報が通知されます。
- アクセスできるリソースを把握する: 承認されると、GitHub App では、アプリからもアクセスでき、ユーザーがアクセスできるリソースを判断できます。 アプリでは、たとえば、リポジトリの適切なリストを表示できるように、これを使用できます。
- ユーザーに代わって動作する: 承認されると、アプリケーションではユーザーの代わりに GitHub に対してタスクを実行できます。 これには、issue の作成や pull request へのコメントが含まれる場合があります。 詳しくは、「ユーザーに代わる GitHub App の動作について」を参照してください。
承認はいつでも確認および取り消すことができます。 詳しくは、「GitHub Apps の承認の確認と取り消し」を参照してください。
承認とインストールの違い
アカウントまたは Organization に GitHub App をインストールするときに、アプリが要求した Organization とリポジトリのリソースにアクセスするためのアクセス許可がそのアプリに付与します。 また、アプリからアクセスできるリポジトリも指定します。
GitHub App を承認する際に、アプリが要求したアカウントのアクセス許可に基づいて、GitHub アカウントへのアクセス権をそのアプリに付与します。 また、ユーザーに代わって動作するアクセス許可をアプリに付与します。
アプリを承認しなくても、GitHub App をインストールできます。 同様に、アプリをインストールしなくてもアプリを承認できます。
インストールについて詳しくは、「個人向けアカウント用に GitHub Marketplace から GitHub アプリをインストールする」と「Organization の GitHub Marketplace から GitHub アプリをインストールする」をご覧ください。
ユーザーに代わる GitHub App の動作について
GitHub App を承認したら、アプリではユーザーに代わって動作することができます。 GitHub App がユーザーに代わって操作する状況は、GitHub App の目的と、使われているコンテキストによって異なります。 たとえば、統合開発環境 (IDE) では、GitHub App を使って、IDE を通じて作成した変更を GitHub のリポジトリにプッシュ バックするために、ユーザーに代わって操作できます。
GitHub App では、ユーザーとアプリの両方がアクセス許可を持つ操作のみを実行できます。 たとえば、ユーザーにリポジトリに対する書き込みアクセス権があるものの、GitHub App には読み取りアクセス権しかない場合、アプリがユーザーに変わって動作している場合でもそのアプリで読み取れるのはリポジトリのコンテンツのみとなります。 同様に、ユーザーがリポジトリ A
と B
にアクセスでき、GitHub App からはリポジトリ B
と C
にアクセスできる場合、アプリはユーザーに代わって動作しているときにのみ、B
リポジトリにアクセスできます。
アプリがユーザーに代わって動作している場合、そのアプリと連動してアクティビティがユーザーに属性付けされます。 たとえば、アプリがユーザーに代わってコメントを投稿した場合、GitHub UI には、ユーザーのアバター写真とアプリのアイデンティコン バッジが Issue イシューの作成者として表示されます。
同様に、アクティビティによって監査ログとセキュリティ ログ内の対応するエントリがトリガーされた場合、ログにはユーザーがアクターとして一覧表示されますが、"programmatic_access_type" が "GitHub App user-to-server token" であると示されます。