Skip to main content

GitHub App の承認

GitHub App を承認して、アプリケーションが GitHub アカウントに関する情報を取得し、状況によっては、ユーザーの代わりに GitHub に変更を加えることができます。

ユーザーの GitHub ID を確認したり、ユーザーに代わって GitHub 上のデータを操作する必要があるサードパーティのアプリケーションでは、それを行うために GitHub App の認可を求められることがあります。

GitHub App を認可するときには、そのアプリケーションが信頼できること、誰がそれを開発したのか、およびプリケーションがアクセスしたい情報の種類を確認する必要があります。

認可の際、GitHub App にアクセス許可を与えるよう求められます。

  • GitHub ID を確認する
    認可されると、GitHub App はパブリックな GitHub プロファイルをプログラムで取得できるようになり、要求されたアクセス レベルに応じてプライベートな情報 (メール アドレスなど) も取得できるようになります。
  • アクセスできるリソースを把握する
    承認されると、GitHub App} は、アクセスできる プライベート GitHub} リソース (プライベート GitHub リポジトリ など) を プログラムで読み取ることができます。このリソースには、GitHub App のインストールも存在します。 アプリケーションは、たとえば、リポジトリの適切なリストを表示できるように、これを使用できます。
  • ユーザーに代わって操作する
    アプリケーションは、GitHub 上でタスクを実行する必要があるかもしれません。 これには、issue の作成、pull request へのコメントが含まれる場合があります。 このユーザーに代わって操作する機能は、ユーザーと GitHub App の 両方 がアクセスできる GitHub リソースに制限されます。 ただし、アプリケーションがユーザーに代わって変更を加えない場合もあります。

GitHub App がユーザーに代わって操作するタイミング

GitHub App がユーザーに代わって操作する状況は、GitHub App の目的と、使われているコンテキストによって異なります。

たとえば、統合開発環境 (IDE) では、GitHub App を使って、IDE を通じて作成した変更を GitHub のリポジトリにプッシュ バックするために、ユーザーに代わって操作できます。 GitHub App は user-to-server 要求を通じてこれを実現します。

このように GitHub App が代行する場合、GitHub 上では以下のような特別なアイコンが表示され、GitHub App の小さなアバターがユーザー自身のアバターの上に重なって表示されるようになっています。

GitHub App からの "user-to-server" 要求によって作成された issue

GitHub App は、どこまでユーザーがアクセスできるリソースを把握して、どの程度までユーザーに代わって操作できますか?

GitHub App が、認可された後に、ユーザーがどのリソースにアクセスできるかを把握し、ユーザーに代わって操作できる範囲は、次のように制限されています。

  • アプリがインストールされている組織またはリポジトリ
  • アプリが要求しているアクセス許可
  • GitHub リソースへのアクセス権

例を使って説明しましょう。

GitHub ユーザーの Alice は、GitHub ID を使ってサードパーティの Web アプリケーション ExampleApp にログインします。 このプロセスの間、Alice は ExampleApp が自分に代わってアクションを実行することを認可します。

ただし、ExampleApp が Alice に代わって GitHub で実行できるアクティビティは、ExampleApp がインストールされているリポジトリ、ExampleApp が要求したアクセス許可、そして Alice の GitHub リソースへのアクセス権によって制限されます。

つまり、ExampleApp が Alice に代わって Repo A というリポジトリに issue を作成するには、次のすべてに該当する必要があります。

  • ExampleApp の GitHub App が、issue への書き込み権限を要求しています。
  • Repo A の管理者特権を持つユーザーが、Repo A に ExampleApp の GitHub App をインストールしている必要があります。
  • Alice は Repo A の読み取りアクセス許可を持っている必要があります。さまざまなアクティビティを実行するためにどのアクセス許可が必要かは、「組織のリポジトリ ロール」を参照してください。