アクセス許可 GitHub App について
GitHub Apps 既定ではアクセス許可がありません。 GitHub Appを登録するときに、アプリのアクセス許可を選択できます。 選択するアクセス許可によって、アプリが GitHubの API で実行できることと、アプリがサブスクライブできる Webhook が決まります。 アプリに必要な最小限のアクセス許可を選ぶ必要があります。
GitHub Apps既定ではアクセス許可はありませんが、ユーザーの代わりに動作するときにパブリック リソースを読み取る暗黙的なアクセス許可があります。 ユーザーがアプリに代わって動作することを承認すると、 GitHub App は結果のユーザー アクセス トークンを使用して、REST API と GraphQL API に対してパブリック リソースを読み取る要求を行うことができます。 ユーザーに代わって動作することについて詳しくは、「ユーザーに代わってGitHub アプリで認証する」を参照してください。
アプリのアクセス許可は、リポジトリ、組織、 、またはアカウントのアクセス許可として分類されます。
- リポジトリのアクセス許可を使うと、アプリは、アプリがインストールされているアカウントによって所有されているリポジトリに関連するリソースにアクセスできます。
- 組織のアクセス許可を使うと、アプリは、組織アカウントにインストールされている場合、インストールされている組織に関連するリソースにアクセスできます。
- アカウントのアクセス許可を使うと、アプリは、ユーザーもアプリを承認している場合、ユーザーに関連するリソースにアクセスできます。 アプリのユーザー承認について詳しくは、「ユーザーに代わってGitHub アプリで認証する」を参照してください。
ユーザーが自分のユーザー アカウントまたは組織にアプリをインストールすると、アプリが要求したリポジトリと組織のアクセス許可が表示され、付与されます。 また、アプリが個々のユーザーに対して要求できるアカウントのアクセス許可の一覧も表示されます。 ユーザーは、自分の代わりに動作するアプリを承認するときに、アプリが要求したアカウントのアクセス許可を確認して許可します。
ユーザー アクセス トークンを使った API 要求が成功するかどうかは、ユーザーのアクセス許可とアプリのアクセス許可に依存します。 たとえば、アプリにリポジトリの内容を書き込むアクセス許可が付与されていても、ユーザーにできることが内容の読み取りだけである場合、ユーザー アクセス トークンではコンテンツの読み取りのみを行うことができます。 インストール アクセス トークンを使った API 要求が成功するかどうかは、アプリのアクセス許可のみに依存します。
GitHub App登録中のアクセス許可の指定の詳細については、GitHub アプリの登録 を参照してください。
一部の Webhook と API のアクセスには、"管理" アクセス許可が必要です。 アプリで "管理" アクセス許可が必要な場合は、アプリのホームページでこの要件を説明することを検討してください。 これは、アプリに高レベルのアクセス許可が必要な理由をユーザーが理解するのに役立ちます。
アクセス許可の変更について
所有または管理するアプリのアクセス許可はいつでも変更できます。
- エンタープライズ所有者が エンタープライズ アカウントが所有するアプリのアクセス許可を変更すると、その変更は企業内の組織によって自動的に受け入れられます。
- エンタープライズ アプリ マネージャーが エンタープライズ アカウントが所有するアプリのアクセス許可を変更すると、その変更は、アプリ マネージャーが組織の所有者でもある企業内の組織によって自動的に受け入れられます。
- ユーザーまたは組織が所有するアプリのアクセス許可を変更すると、、新しいアクセス許可の承認を求められます。 アカウント所有者が新しいアクセス許可を承認しない場合、インストールでは引き続き古いアクセス許可が使われます。
アクセス許可の変更について詳しくは、「GitHub アプリの登録の変更」を参照してください。
Webhook にアクセスするためのアクセス許可を選択する
webhook ドキュメントは、各 webhook を GitHub Appsに使用できるかどうかを示します。 サブスクライブする Webhook ごとに、webhook ドキュメントを参照して、 GitHub App がその webhook をサブスクライブするために必要なアクセス許可を確認します。 詳しくは、「Webhook のイベントとペイロード」をご覧ください。
たとえば、アプリで team イベントをサブスクライブする場合、アプリには "メンバー" 組織アクセス許可が必要です。
GitHub App登録ページでは、アプリのアクセス許可を変更すると、使用可能な Webhook イベントが変更されます。 イベントをサブスクライブするための GitHub App に対して十分なアクセス許可を選択しなかった場合、イベントはアプリ登録ページにオプションとして表示されません。
REST API にアクセスするためのアクセス許可を選択する
各エンドポイントの REST API リファレンス ドキュメントでは、エンドポイントが GitHub Apps で動作するかどうかを示し、アプリがエンドポイントを使用するために必要なアクセス許可を示しています。 一部のエンドポイントでは複数のアクセス許可が必要な場合があり、一部のエンドポイントでは複数のアクセス許可のうちの 1 つが必要な場合があります。 各アクセス許可で GitHub App がアクセスできる REST API エンドポイントの概要については、 GitHub Apps に必要なアクセス許可 を参照してください。
たとえば、GET /orgs/{org}/dependabot/secrets エンドポイントを使うには、アプリに "組織 dependabot シークレット" アクセス許可に対する読み取りレベル以上のアクセス許可が必要です。
アプリが不十分なアクセス許可で REST API 要求を行った場合、API は 403 応答を返します。
適切なアクセス許可を選択できるように、REST API の応答で X-Accepted-GitHub-Permissions ヘッダーを受け取ります。 このヘッダーは、エンドポイントにアクセスするために必要なアクセス許可を示します。 詳しくは、「REST API のトラブルシューティング」をご覧ください。
GraphQL API にアクセスするためのアクセス許可を選択する
GraphQL 要求の場合は、アプリをテストして、実行したい GraphQL クエリと変更に必要なアクセス許可があることを確認する必要があります。
アプリが不十分なアクセス許可で GraphQL API のクエリまたはミューテーションを行った場合、API は 401 応答を返します。
Git にアクセスするためのアクセス許可を選択する
アプリでインストール トークンやユーザー アクセス トークンを使って HTTP ベースの Git アクセスを認証する場合は、"Contents" リポジトリのアクセス許可を要求する必要があります。 アプリで .github/workflows ディレクトリにある Actions ファイルへのアクセスまたは編集が特に必要になっている場合は、"Workflows" リポジトリのアクセス許可を要求します。
その後は、アクセス トークンを HTTP パスワードとして使うことができます。
TOKEN は、アクセス トークンに置き換えます。
git clone https://x-access-token:TOKEN@github.com/owner/repo.git