警告
アクセス トークンは、パスワードと同じように扱ってください。 詳細については、「personal access tokenのセキュリティ保護」を参照してください。
personal access tokenについて
Personal access tokenは、GitHubの認証にパスワードを使用する代わりに、[GitHub API](/rest/overview/authenticating-to-the-rest-api)または[コマンドライン](#using-a-personal-access-token-on-the-command-line)を使用するための代替手段です。
Personal access tokenは、自分の代わりに GitHub リソースにアクセスすることを目的としています。 組織の代わりにリソースにアクセスしたり、有効期間の長い統合のためには、 GitHub Appを使用する必要があります。 詳しくは、「[AUTOTITLE](/apps/creating-github-apps/setting-up-a-github-app/about-creating-github-apps)」をご覧ください。
トークンは、トークンのオーナーと同様に、リソースにアクセスしてそれらのリソースに対してアクションを実行できますが、さらに、トークンに付与されるスコープまたはアクセス許可によって制限されます。 トークンは、ユーザーに追加のアクセス権を付与できません。 たとえば、 personal access token は `admin:org` スコープで構成できますが、トークンの所有者が組織の所有者でない場合、トークンは組織への管理アクセス権を付与しません。
personal access tokenの種類
GitHub現在、personal access tokenとfine-grained personal access tokenの 2 種類のpersonal access tokens (classic)がサポートされています。
GitHubでは、可能な限りfine-grained personal access tokenの代わりにpersonal access tokens (classic)を使用することをお勧めします。
メモ
Fine-grained personal access tokens は、より安全で制御可能ですが、 personal access token (classic) が実行できるすべてのタスクを実行することはできません。 詳細については、以下の Fine-grained personal access tokens 制限事項 に関するセクションを参照してください。
fine-grained personal access tokenとpersonal access tokens (classic)はどちらも生成したユーザーに関連付けられ、ユーザーがリソースへのアクセスを失うと非アクティブになります。
組織の所有者は、組織への personal access tokens (classic) のアクセスを制限するポリシーを設定できます企業の所有者は、企業または企業が所有する組織に personal access tokens (classic) のアクセスを制限できます。 詳しくは、「組織の個人用アクセス トークン ポリシーを設定する」をご覧ください。
Fine-grained personal access token
Fine-grained personal access tokens には、 personal access tokens (classic)よりもいくつかのセキュリティ上の利点がありますが、すべてのシナリオで使用できなくなる可能性のある制限もあります。 これらの制限事項とその修正計画については、[後述するセクション](#fine-grained-personal-access-tokens-limitations)を参照してください。
シナリオに fine-grained personal access token を使用できる場合は、次の機能強化を利用できます。
- 各トークンは、1 人のユーザーまたは 1 つの organization が所有するリソースへのアクセスに制限されています。
- 各トークンは、そのユーザーまたは organization の特定のリポジトリにのみアクセスするようにさらに制限できます。
- 各トークンには、特定のきめ細かいアクセス許可が付与され、 personal access tokens (classic)に付与されるスコープよりも細かく制御できます。
- 組織の所有者は、組織内のリソースにアクセスできる任意の fine-grained personal access tokenの承認を要求できます。
- エンタープライズ所有者は、企業が所有する組織のリソースにアクセスできる任意の fine-grained personal access tokenの承認を要求できます。
Fine-grained personal access tokens 制限
Fine-grained personal access tokens は、 personal access tokens (classic)のすべての機能をサポートしているわけではありません。 これらの機能のギャップは永続的ではありません。 GitHub はそれらを閉じる作業を行っています。 これらのシナリオがサポートされる時期の詳細については、[公開ロードマップ](https://github.com/github/roadmap)のページを参照してください。
fine-grained personal access tokenの主なギャップは次のとおりです。
-
fine-grained personal access tokenを使用して、ユーザーがメンバーではないパブリック リポジトリに投稿する。
-
fine-grained personal access tokenを使い、ユーザーが外部者またはリポジトリのコラボレーターとして関わるリポジトリに貢献します。
-
fine-grained personal access tokenを使用して複数の組織に一度にアクセスする。
* fine-grained personal access token を使用して、ユーザーが属している企業内 `internal` リソースにアクセスします。 -
fine-grained personal access tokenを使用して、エンタープライズ アカウントを管理する API を呼び出します。
* fine-grained personal access token を使用してパッケージにアクセスします。 -
fine-grained personal access tokenを使用して Checks API を呼び出す。
-
fine-grained personal access tokenを使用して、ユーザー アカウントが所有するプロジェクトにアクセスします。
これらのギャップはすべて、 GitHub がより安全なアクセス パターンに投資し続けるので、時間の経過と同時に解決されます。
Personal access tokens (classic)
Personal access tokens (classic) は安全性が低くなります。 ただし、現在、一部の機能は personal access tokens (classic) でしか機能しません:
-
自分、または自分がメンバーではない組織によって所有されていないパブリック リポジトリに対する書き込みアクセス権を持つのは、personal access tokens (classic) のみです。
-
エンタープライズが所有する内部リポジトリに対する書き込みアクセス権を自動的に持つのは、personal access tokens (classic) のみです。 Fine-grained personal access tokenには、内部リポジトリへのアクセス権を付与する必要があります。
-
外部コラボレーターは、personal access tokens (classic) のみを使って、コラボレーターである組織のリポジトリにアクセスできます
-
personal access tokens (classic) のみがエンタープライズにアクセスできます。 (Fine-grained personal access token は、エンタープライズが所有する組織にアクセスできます。)
-
いくつかの REST API エンドポイントは、personal access tokens (classic)でのみ利用できます。 エンドポイントがfine-grained personal access tokenもサポートしているかどうかをチェックするには、そのエンドポイントのドキュメントを参照するか、「きめ細かい個人用アクセス トークンに使用できるエンドポイント」を参照してください。
personal access token (classic)を使用する場合は、アクセス権を持つ組織内のすべてのリポジトリと、個人用アカウント内のすべての個人用リポジトリへのアクセス権が付与されることに注意してください。
personal access tokenのセキュリティを維持する
Personal access tokenはパスワードのようなもので、同じ固有のセキュリティ リスクを共有します。 新しい personal access tokenを作成する前に、使用できるより安全な認証方法があるかどうかを検討してください。
- コマンド ラインからGitHubにアクセスするには、GitHub CLIを作成する代わりに [] (/github-cli/github-cli/about-github-cli) または personal access token を使用できます。
- personal access token ワークフローでGitHub Actionsを使用する場合は、代わりに組み込みの
GITHUB_TOKENを使用できるかどうかを検討してください。 詳しくは、「ワークフローでの認証に GITHUB_TOKEN を使用する」をご覧ください。
これらのオプションが不可能で、 personal access tokenを作成する必要がある場合は、別の CLI サービスを使用してトークンを安全に格納することを検討してください。
スクリプトで personal access token を使用する場合は、トークンをシークレットとして格納し、 GitHub Actionsを使用してスクリプトを実行できます。 詳細については、 AUTOTITLE を参照してください。
ベスト プラクティスの詳細については、「API 資格情報をセキュリティで保護する」を参照してください。
fine-grained personal access token の作成
メモ
作成できる fine-grained personal access tokens は 50 個に制限されています。 より多くのトークンが必要な場合、または自動化を構築している場合は、スケーラビリティと管理を向上するために GitHub App を使用することを検討してください。 詳しくは、「GitHub アプリをビルドするタイミングを決定する」をご覧ください。
-
GitHub の任意のページの右上隅にあるプロフィール写真をクリックし、[ Settings] をクリックします。
-
左側のサイドバーの [Developer settings] をクリックします。
-
左側のサイドバーの [Personal access token] で、[きめ細かなトークン] をクリックします。
-
[ 新しいトークンの生成] をクリックします。
-
**[トークン名]** にトークンの名前を入力します。 -
**[有効期限]** で、トークンの有効期限を選びます。 無限の有効期間は許可されますが、組織または企業の所有者によって設定された最長の有効期間ポリシーによってブロックされる可能性があります。 詳細については、「personal access tokensの[最長有効期間ポリシーの適用](/organizations/managing-programmatic-access-to-your-organization/setting-a-personal-access-token-policy-for-your-organization#enforcing-a-maximum-lifetime-policy-for-personal-access-tokens)」を参照してください。 -
必要に応じて、 [説明] で、トークンの目的を説明するメモを追加します。
-
**[リソース所有者]** で、リソース所有者を選びます。 トークンは、選んだリソース所有者が所有するリソースにのみアクセスできます。 所属している組織は、組織が fine-grained personal access tokenの使用をブロックしている場合は表示されません。 詳細については、 [AUTOTITLE を](/organizations/managing-programmatic-access-to-your-organization/setting-a-personal-access-token-policy-for-your-organization)参照してください。 -
必要に応じて、リソース所有者が fine-grained personal access tokenの承認を必要とする組織である場合は、リソース所有者の下のボックスに、要求の正当な理由を入力します。
-
**[リポジトリ アクセス]** で、トークンでアクセスするリポジトリを選びます。 ニーズを満たす最小限のリポジトリ アクセスを選ぶ必要があります。 トークンには常に、 GitHub上のすべてのパブリック リポジトリへの読み取り専用アクセスが含まれます。 -
前の手順で [リポジトリの選択のみ] を選んだ場合は、 [選択されたリポジトリ] ドロップダウンで、トークンでアクセスするリポジトリを選びます。
-
**[アクセス許可]** で、トークンに付与するアクセス許可を選びます。 指定したリソース所有者とリポジトリ アクセスに応じて、リポジトリ、Organization、アカウントのアクセス許可があります。 ニーズに必要な最小限のアクセス許可を選ぶ必要があります。各エンドポイントの REST API リファレンス ドキュメントでは、エンドポイントが fine-grained personal access tokenで動作するかどうかを示し、トークンがエンドポイントを使用するために必要なアクセス許可を示します。 一部のエンドポイントでは複数のアクセス許可が必要な場合があり、一部のエンドポイントでは複数のアクセス許可のうちの 1 つが必要な場合があります。 各アクセス許可で fine-grained personal access token がアクセスできる REST API エンドポイントの概要については、 詳細に制御された個人用アクセス トークンに必要なアクセス許可 を参照してください。
-
**[トークンの生成]** をクリックします。
リソース所有者として組織を選択し、組織が fine-grained personal access tokenの承認を必要とする場合、トークンは組織管理者によってレビューされるまで pending としてマークされます。 トークンは、承認されるまでパブリック リソースの読み取りのみを実行できます。 Organization のオーナーである場合、要求は自動的に承認されます。 詳しくは、「組織内での個人用アクセス トークンの確認と取り消し」をご覧ください。
URL パラメーターを使用して fine-grained personal access token の詳細を事前入力する
リンクを使用して、 fine-grained personal access token のテンプレートを共有できます。 この方法でトークンの詳細を格納し、関連フィールドが既に設定されているトークンの作成にユーザーを誘導すると、ワークフローの自動化がいっそう簡単になり、開発者のエクスペリエンスが向上します。
サポートされている各フィールドは、特定のクエリ パラメーターを使って設定できます。 すべてのパラメーターは省略可能であり、トークン生成フォームによって検証されて、アクセス許可とリソース所有者の組み合わせが適切であることが確認されます。
ここで示す URL テンプレートの例は、読みやすくするために改行されています。
https://github.com/settings/personal-access-tokens/new ?name=Repo-reading+token &description=Just+contents:read &target_name=octodemo &expires_in=45 &contents=read
https://github.com/settings/personal-access-tokens/new
?name=Repo-reading+token
&description=Just+contents:read
&target_name=octodemo
&expires_in=45
&contents=read
この URL を使用して、contents:read および metadata:read、指定された名前と説明を入力し、有効期限が45日後に設定されたトークンを作成してみてください。 あなたは Cannot find the specified resource owner: octodemo 組織のメンバーではないため、octodemo を示すエラーメッセージが表示されます。
最もよく見られるトークンを生成する URL の例を次に示します。
- リポジトリの内容を読み取る
- リポジトリへのプッシュ アクセス
- GitHub モデルのアクセス
- コードを更新して PR を開く
- 組織内のCopilotライセンスを管理する
- Copilotへのリクエストを行う
サポートされているクエリ パラメーター
独自のトークン テンプレートの作成は、次の表で示すクエリ パラメーターの詳細に従って行います。
| パラメーター | タイプ | サンプル値 | 有効な値 | 説明 |
|---|---|---|---|---|
name | 文字列 | Deploy%20Bot | 40 文字以下、URL エンコード | トークンの表示名を事前入力します。 |
description | 文字列 | Used+for+deployments | 1,024 文字以下、URL エンコード | トークンの説明を事前入力します。 |
target_name | 文字列 | octodemo | ユーザーまたは組織のスラッグ | トークンのリソース ターゲットを設定します。 これは、トークンがアクセスできるリポジトリの所有者です。 指定しないと、既定で現在のユーザーのアカウントになります。 |
expires_in | 整数 |
`30` または `none` | 1 から 366 の間の整数、または `none` | 有効期限切れまでの日数。または、期限が切れないようにするには `none`。 指定しない場合の既定値は 30 日で、ターゲットにトークンの有効期間ポリシーが設定されている場合はそれ未満です。 |
| <permission> | 文字列 | contents=read | さまざまなアクセス許可とアクセスレベル。 | トークンに必要なアクセス許可。 アクセス許可は read、write、または admin に設定できますが、すべてのアクセス許可でそれらの各レベルがサポートされているわけではありません。 |
アクセス許可
サポートされる各アクセス許可は、クエリ パラメーターとしてその名前を使って設定し、値で目的のアクセス レベルを指定します。 有効なアクセス レベルは read、write、admin です。 一部のアクセス許可は read のみをサポートし、一部は write のみをサポートし、admin をサポートするのはほんのわずかです。
&contents=read&pull_requests=write&... の形式で、必要なだけいくつでもアクセス許可を使用します。
URL のアクセス許可に read と write の両方を含める必要はありません。write には read が常に含まれ、admin には write が常に含まれます。
アカウントのアクセス許可
アカウントのアクセス許可は、現在のユーザーがリソース所有者として設定されている場合にのみ使われます。
| パラメーター名 | [表示名] | アクセス レベル |
|---|---|---|
blocking | 別のユーザーをブロックする |
`read`、`write` |
| codespaces_user_secrets | Codespaces ユーザー シークレット |
read、write |
| copilot_messages | Copilot チャット | read |
| copilot_editor_context | Copilot エディター コンテキスト | read |
| copilot_requests | Copilotの要求 | write |
| emails | 電子メール アドレス |
read、write |
| user_events | イベント | read |
| followers | フォロワー |
read、write |
| gpg_keys | GPG キー |
read、write |
| gists | Gists | write |
| keys | Git SSH キー |
read、write |
| interaction_limits | インタラクションの制限 |
read、write |
| knowledge_bases | ナレッジ ベース |
read、write |
| user_models | モデル | read |
| plan | プラン | read |
| private_repository_invitations | プライベート リポジトリの招待 | read |
| profile | プロファイル | write |
| git_signing_ssh_public_keys | SSH 署名キー |
read、write |
| starring | 主演 |
read、write |
| watching | 視聴中 |
read、write |
リポジトリのアクセス許可
リポジトリのアクセス許可は、ユーザーと organization の両方のリソース所有者に対して機能します。
| パラメーター名 | [表示名] | アクセス レベル |
|---|---|---|
actions | アクション |
`read`、`write` |
| administration | 管理 |
read、write |
| |
| attestations | 認証 |
read、write |
| |
| security_events | コード スキャンのアラート |
read、write |
| codespaces | Codespaces |
read、write |
| codespaces_lifecycle_admin | Codespaces のライフサイクル管理者 |
read、write |
| codespaces_metadata | Codespaces メタデータ | read |
| codespaces_secrets | Codespaces シークレット | write |
| statuses | コミットのステータス |
read、write |
| contents | 目次 |
read、write |
| repository_custom_properties | カスタム プロパティ |
read、write |
| vulnerability_alerts | Dependabot アラート |
read、write |
| dependabot_secrets | Dependabot シークレット |
read、write |
| deployments | デプロイメント |
read、write |
| discussions | ディスカッション |
read、write |
| environments | 環境 |
read、write |
| issues | 問題 |
read、write |
| merge_queues | キューのマージ |
read、write |
| metadata | メタデータ | read |
| pages | ページ |
read、write |
| pull_requests | Pull Request |
read、write |
| repository_advisories | リポジトリ セキュリティ アドバイザリ |
read、write |
| secret_scanning_alerts | シークレット スキャンニング アラート |
read、write |
| secrets | シークレット |
read、write |
| actions_variables | 変数 |
read、write |
| repository_hooks | ウェブフック |
read、write |
| workflows | ワークフロー | write |
組織の権限
Organization のアクセス許可は、リソース所有者が organization である場合にのみ使用できます。
| パラメーター名 | [表示名] | アクセス レベル |
|---|---|---|
organization_api_insights | API Insights | read |
organization_administration | 管理 |
`read`、`write` |
| organization_user_blocking | ユーザのブロック |
read、write |
| organization_campaigns | Campaigns |
read、write |
| organization_custom_org_roles | カスタム組織ロール |
read、write |
| organization_custom_properties | カスタム リポジトリのプロパティ |
read、write、admin |
| organization_custom_roles | カスタム リポジトリ ロール |
read、write |
| organization_events | イベント | read |
| organization_copilot_seat_management | GitHub Copilot ビジネス |
read、write |
| issue_types | 問題の種類 |
read、write |
| organization_knowledge_bases | ナレッジ ベース |
read、write |
| members | メンバー |
read、write |
| organization_models | モデル | read |
| organization_network_configurations | ネットワーク構成 |
read、write |
| organization_announcement_banners | 組織のお知らせバナー |
read、write |
| organization_codespaces | 組織コードスペース |
read、write |
| organization_codespaces_secrets | Organization の codespace シークレット |
read、write |
| organization_codespaces_settings | 組織のコードスペース設定 |
read、write |
| organization_dependabot_secrets | Organization の dependabot シークレット |
read、write |
| organization_code_scanning_dismissal_requests | コードスキャンの無視リクエスト |
read、write |
| organization_private_registries | プライベート レジストリ |
read、write |
| organization_plan | プラン | read |
| organization_projects | プロジェクト |
read、write、admin |
| organization_secrets | シークレット |
read、write |
| organization_self_hosted_runners | セルフホステッド・ランナー |
read、write |
| team_discussions | チーム会議 |
read、write |
| organization_actions_variables | 変数 |
read、write |
| organization_hooks | ウェブフック |
read、write |
personal access token (classic) の作成
メモ
組織の所有者は、 personal access token (classic) のアクセスを組織に制限できます。 personal access token (classic)を使用して、personal access token (classic)アクセスを無効にした組織内のリソースにアクセスしようとすると、要求は 403 応答で失敗します。 代わりに、 GitHub App、 OAuth app、または fine-grained personal access tokenを使用する必要があります。
警告
personal access token (classic)は、アクセスできるすべてのリポジトリにアクセスできます。 GitHub では、代わりに fine-grained personal access tokenを使用することをお勧めします。これは、特定のリポジトリに制限できます。 Fine-grained personal access tokenまた、広範なスコープではなく、きめ細かいアクセス許可を指定することもできます。
-
GitHub の任意のページの右上隅にあるプロフィール写真をクリックし、[ Settings] をクリックします。
-
左側のサイドバーの [Developer settings] をクリックします。
-
左側のサイドバーの [Personal access token] の [トークン (クラシック)] をクリックします。
-
**[新しいトークンの生成]** を選択し、**[新しいトークンの生成 (クラシック)]** をクリックします。 -
[メモ] フィールドで、トークンにわかりやすい名前を付けます。
-
トークンに有効期限を設定するには、 [有効期限] を選び、既定オプションをクリックするか、 [カスタム] をクリックして日付を入力します。
-
このトークンに付与するスコープを選びます。 トークンを使用してコマンドラインからリポジトリにアクセスするには、 [リポジトリ] を選択します。 スコープが割り当てられていないトークンでは、パブリック情報にのみアクセスできます。 詳しくは、「OAuth アプリのスコープ」をご覧ください。
-
**[トークンの生成]** をクリックします。 -
必要に応じて、新しいトークンをクリップボードにコピーするには、[ ] をクリックします。
![[Personal access tokens] ページのスクリーンショット。 ぼかしのあるトークンの横に、2 つの重なり合う四角形のアイコンがオレンジ色で囲まれています](/assets/images/help/settings/personal-access-tokens-ghes.png)
personal access token を削除する
personal access tokenが不要になった場合は、削除する必要があります。 デプロイ キーの作成に使用された personal access token を削除すると、デプロイ キーも削除されます。
-
GitHub の任意のページの右上隅にあるプロフィール写真をクリックし、[ Settings] をクリックします。
-
左側のサイドバーの [Developer settings] をクリックします。
-
左側のサイドバーのPersonal access token で、削除する**** の種類に応じて、きめ細かいトークンまたはpersonal access token をクリックします。
-
削除する personal access token の右側にある [ 削除] をクリックします。
コマンド ラインでの personal access token の使用
personal access tokenを作成したら、HTTPS 経由で Git 操作を実行するときに、パスワードの代わりにパスワードを入力できます。
たとえば、コマンド ラインでリポジトリをクローンするには、次の git clone コマンドを入力します。 その後、ユーザー名とパスワードの入力を求められます。 パスワードの入力を求められたら、パスワードではなく personal access token を入力します。
$ git clone https://HOSTNAME/USERNAME/REPO.git
Username: YOUR-USERNAME
Password: YOUR-PERSONAL-ACCESS-TOKEN
personal access tokenと共にユーザー名を入力する必要がありますが、ユーザー名は認証には使用されません。 代わりに、 personal access token が認証に使用されます。 ユーザー名を入力しないと、資格情報が無効であるというエラー メッセージが表示されます。
Personal access tokenは、HTTPS Git 操作にのみ使用できます。 リポジトリで SSH リモート URL が使用されている場合は、[リモートを SSH から HTTPS に切り替える](/get-started/git-basics/managing-remote-repositories#switching-remote-urls-from-ssh-to-https)必要があります。
ユーザ名とパスワードの入力を求められない場合、資格情報がコンピュータにキャッシュされている可能性があります。 キーチェーンの資格情報を更新して、古いパスワードをトークンに置き換えることができます。
HTTPS Git 操作ごとに personal access token を手動で入力する代わりに、Git クライアントを使用して personal access token をキャッシュできます。 Git では、有効期限が経過するまで、資格情報をメモリに一時的に格納します。 また、Git ですべての要求の前に読み取ることができるプレーンテキスト ファイルにトークンを格納することもできます。 詳しくは、「Git でGitHub資格情報をキャッシュする」をご覧ください。