# GitHub Packagesの権限について

パッケージの権限の管理方法を学んでください。

パッケージに対するアクセス許可のスコープを、ユーザーまたは organization に、あるいはリポジトリに設定できます。

## ユーザー/組織単位のパッケージに対する細分化された権限

詳細なアクセス許可を持つパッケージは、個人アカウントまたは Organization にスコープ設定されます。 パッケージのアクセス制御と可視性は、パッケージに接続（またはリンク）されたリポジトリとは別に変更できます。

次の GitHub Packages レジストリでは、詳細なアクセス許可がサポートされています。

* Container registry

## リポジトリスコープのパッケージの権限

リポジトリ スコープ パッケージは、パッケージが公開されているリポジトリのアクセス許可と可視性を継承します。 リポジトリをスコープとするパッケージは、リポジトリのメインページにアクセスし、ページ右にある**パッケージ**リンクをクリックすれば見つかります。

次の GitHub Packages レジストリでは、リポジトリ スコープのアクセス許可 **のみが** サポートされます。

* Docker レジストリ (`docker.pkg.github.com`)
* npm レジストリ <!-- markdownlint-disable-line GHD034 -->
* Apache Mavenレジストリ
* Gradle レジストリ
* NuGet レジストリ
* RubyGems レジストリ

その他のレジストリContainer registryでは、パッケージのスコープをユーザーまたは組織に許可するか、リポジトリにリンクすることを選択できます。

Container registryへの移行の詳細については、[Dockeerレジストリからコンテナレジストリへの移行](/ja/enterprise-server@3.22/packages/working-with-a-github-packages-registry/migrating-to-the-container-registry-from-the-docker-registry) を参照してください。

## パッケージの可視性とアクセス許可

パッケージが詳細なアクセス許可をサポートするレジストリに属している場合、パッケージに対する管理者アクセス許可を持つすべてのユーザーは、パッケージをプライベートまたは公開用に設定でき、組織レベルとリポジトリ レベルで設定されたアクセス許可とは別のアクセス許可をパッケージに付与できます。 詳細なアクセス許可をサポートするレジストリの一覧については、「[GitHub Packagesの権限について](/ja/enterprise-server@3.22/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)」を参照してください。

ほとんどのレジストリでは、パッケージをプルするには、パッケージが公開用かプライベートかに関係なく、personal access token または `GITHUB_TOKEN` で認証する必要があります。 ただし、Container registry では、公開用 パッケージは匿名アクセスを許可し、認証や CLI 経由でのサインインなしでプルできます。

パッケージを発行すると、パッケージへの管理者アクセス許可を自動的に取得します。 Organization にパッケージを発行する場合、Organization 内の `owner` ロールを持つすべてのユーザーも、そのパッケージへの管理者アクセス許可を取得します。

個人アカウントにスコープ指定されたパッケージの場合は、任意のユーザーにアクセス ロールを付与できます。 Organization にスコープ指定されたパッケージの場合は、Organization 内の任意のユーザーまたは team にアクセス ロールを付与できます。

GitHub Actions ワークフローを使ってパッケージを管理している場合は、**\[Actions のアクセス]** メニュー オプションを使用して で、ワークフローが格納されているリポジトリへのアクセス ロールを付与できます。 詳しくは、「[パッケージのアクセス制御と可視性の設定](/ja/enterprise-server@3.22/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility#ensuring-workflow-access-to-your-package)」をご覧ください。

| アクセス許可 | アクセスの説明                                                                                           |
| ------ | ------------------------------------------------------------------------------------------------- |
| Read   | パッケージをダウンロードできます。 <br> パッケージのメタデータを読み取ることができます。                                                   |
| Write  | このパッケージをアップロードおよびダウンロードできます。 <br> パッケージ メタデータの読み取りと書き込みを行うことができます。                                |
| 管理者    | このパッケージのアップロード、ダウンロード、削除、管理ができます。 <br> パッケージ メタデータの読み取りと書き込みを行うことができます。 <br> パッケージのアクセス許可を付与できます。 |

> \[!NOTE]
> REST API を使ってパッケージを削除および復元する GitHub Actions ワークフローの機能は、現在 パブリック プレビュー 段階であり、変更される可能性があります。

詳しくは、「[パッケージのアクセス制御と可視性の設定](/ja/enterprise-server@3.22/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility)」をご覧ください。

## パッケージレジストリのスコープとパーミッションに関して

> \[!NOTE]
> GitHub Packages では、 personal access token (classic)を使用した認証のみがサポートされます。 詳しくは、「[個人用アクセス トークンを管理する](/ja/enterprise-server@3.22/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)」をご覧ください。

パッケージ レジストリによってホストされているパッケージを使用または管理するには、適切なスコープを持つ personal access token (classic) を使用する必要があり、個人アカウントには適切なアクセス許可が必要です。

たとえば、次のように入力します。

* リポジトリからパッケージをダウンロードしてインストールするには、 personal access token (classic) に `read:packages` スコープがあり、ユーザー アカウントに読み取りアクセス許可が必要です。
* パッケージを削除するには、 personal access token (classic) に少なくとも `delete:packages` と `read:packages` スコープが必要です。 詳しくは、「[パッケージを削除および復元する](/ja/enterprise-server@3.22/packages/learn-github-packages/deleting-and-restoring-a-package)」をご覧ください。

| Scope                                  | 説明                           | 必要な権限 |
| -------------------------------------- | ---------------------------- | ----- |
| `read:packages`                        |                              |       |
| GitHub Packages からパッケージをダウンロードしてインストール | 読み取り                         |       |
| `write:packages`                       |                              |       |
| GitHub Packages にパッケージをアップロードして公開する    | 書き込み                         |       |
| `delete:packages`                      | からパッケージを削除する GitHub Packages | 管理者   |

> \[!NOTE]
> REST API を使ってパッケージを削除および復元する GitHub Actions ワークフローの機能は、現在 パブリック プレビュー 段階であり、変更される可能性があります。

GitHub Actions ワークフローを作成するときに、`GITHUB_TOKEN`を使用して、GitHub Packagesを格納および管理することなく、personal access tokenでパッケージを発行、インストール、削除、および復元できます。

詳細については、以下を参照してください。

* [GitHub Actionsでのパッケージの公開とインストール](/ja/enterprise-server@3.22/packages/managing-github-packages-using-github-actions-workflows/publishing-and-installing-a-package-with-github-actions)
* [個人用アクセス トークンを管理する](/ja/enterprise-server@3.22/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)
* [OAuth アプリのスコープ](/ja/enterprise-server@3.22/apps/oauth-apps/building-oauth-apps/scopes-for-oauth-apps#available-scopes)

## リポジトリの移譲について

リポジトリを別の個人アカウントまたは Organization に移譲できます。 詳しくは、「[リポジトリを移譲する](/ja/enterprise-server@3.22/repositories/creating-and-managing-repositories/transferring-a-repository)」をご覧ください。

リポジトリを転送する場合、 GitHub は、パッケージが属するレジストリに応じて、リポジトリに関連付けられているパッケージを転送できます。

* 詳細なアクセス許可をサポートするレジストリの場合、パッケージのスコープは個人アカウントまたは Organization に設定され、リポジトリを移譲してもパッケージに関連付けられているアカウントは変更されません。 パッケージをリポジトリにリンクした場合、リポジトリを別のユーザーに転送するとリンクが削除されます。 リポジトリに関連付けられている GitHub Actions ワークフローは、パッケージにアクセスできなくなります。 リンクされたリポジトリからパッケージがアクセス許可を継承する場合、ユーザーはパッケージにアクセスできなくなります。 これらのレジストリの一覧については、前述の「[ユーザーや組織スコープのパッケージの詳細な権限](#granular-permissions-for-userorganization-scoped-packages)」を参照してください。
* リポジトリ スコープのアクセス許可のみをサポートするレジストリの場合、パッケージはリポジトリに直接発行され、リポジトリ転送の一環としてリポジトリに関連付けられているパッケージを転送 GitHub 。 パッケージに関連付けられているすべての課金対象使用量は、その後、リポジトリの新しい所有者に課金されます。 以前のリポジトリ所有者がリポジトリのコラボレーターとして削除された場合、そのリポジトリに関連付けられているパッケージにアクセスできなくなる可能性があります。 これらのレジストリの一覧については、前述の「[リポジトリ スコープ パッケージのアクセス許可](#permissions-for-repository-scoped-packages)」を参照してください。

## GitHub Actions ワークフローでのパッケージへのアクセスの維持

ワークフローがパッケージへのアクセスを維持できるようにするには、ワークフローで適切なアクセス トークンを使用していること、およびパッケージへのアクセス GitHub Actions 有効になっていることを確認します。

GitHub Actionsの概念的背景やワークフローでのパッケージの使用例については、[GitHub Actionsワークフローを利用したGitHub Packagesの管理](/ja/enterprise-server@3.22/packages/managing-github-packages-using-github-actions-workflows) を参照してください。

### アクセス トークン

> \[!NOTE]
> REST API を使ってパッケージを削除および復元する GitHub Actions ワークフローの機能は、現在 パブリック プレビュー 段階であり、変更される可能性があります。

* ワークフロー リポジトリに関連付けられているパッケージを発行、インストール、削除、および復元するには、`GITHUB_TOKEN` を使用します。
* `GITHUB_TOKEN` がアクセスできない他のプライベート リポジトリに関連するパッケージをインストールするには、personal access token (classic) を使用します

`GITHUB_TOKEN`ワークフローで使用GitHub Actionsの詳細については、「[ワークフローでの認証に GITHUB\_TOKEN を使用する](/ja/enterprise-server@3.22/actions/tutorials/authenticate-with-github_token#using-the-github_token-in-a-workflow)」を参照してください。