Skip to main content

GitHub Packagesの権限について

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

この機能を使用できるユーザーについて

GitHub Packagesは、GitHub Free、GitHub Pro、組織用GitHub Free、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Server 3.0以降で利用できます。
GitHub Packagesは、レガシーのリポジトリごとのプランを使っているアカウントが所有しているプライベートリポジトリでは利用できません。 また、従来のリポジトリごとのプランを使用しているアカウントは、詳細なアクセス許可をサポートするレジストリにアクセスできません。これらのアカウントはリポジトリによって課金されるためです。Enterprise Managed Users には、アカウントの名前空間内でパッケージを発行するための個別のストレージ割り当てはありませんが、organizationの名前空間に発行できます。 Enterprise Managed Users の詳細については、「Enterprise Managed Users について」を参照してください。詳細なアクセス許可をサポートするレジストリの一覧については、「GitHub Packagesの権限について」を参照してください。 詳しくは、「GitHub のプラン」をご覧ください。

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

ユーザ/Organizationスコープのパッケージの詳細な権限

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

次の GitHub Packages レジストリでは、細かな権限がサポートされています。

  • Container registry
  • npm レジストリ - NuGet レジストリ - RubyGems レジストリ

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

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

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

  • Docker レジストリ (docker.pkg.github.com)
  • Apache Mavenレジストリ
  • Gradle レジストリ

他のレジストリの場合、パッケージのスコープをユーザーまたは Organization に限定することも、パッケージをリポジトリにリンクさせることも選べます。

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

パッケージが詳細なアクセス許可をサポートするレジストリに属している場合、パッケージに対する管理者アクセス許可を持つすべてのユーザーは、パッケージをプライベートまたは公開用に設定でき、組織レベルとリポジトリ レベルで設定されたアクセス許可とは別のアクセス許可をパッケージに付与できます。 詳細なアクセス許可をサポートするレジストリの一覧については、「GitHub Packagesの権限について」をご覧ください。

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

注: リポジトリにリンクされたパッケージを公開する場合、パッケージは既定でリンクされたリポジトリからアクセス許可を継承します。 パッケージの詳細なアクセス許可の設定にアクセスするには、パッケージの継承されたアクセス許可を削除する必要があります。 Organization の所有者は、自分の Organization を対象とするすべての新しいパッケージで、アクセス許可の自動継承を無効にできます。 詳細については、「パッケージのアクセス制御と可視性の設定」および「パッケージのアクセス制御と可視性の設定」を参照してください。

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

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

GitHub Actions ワークフローを使ってパッケージを管理している場合は、パッケージの設定の [Actions のアクセスの管理] の [リポジトリの追加] ボタンを使用して で、ワークフローが格納されているリポジトリへのアクセス ロールを付与できます。 詳しくは、「パッケージのアクセス制御と可視性の設定」を参照してください。

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

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

詳しくは、「パッケージのアクセス制御と可視性の設定」を参照してください。

パッケージの管理

GitHub Packages では、personal access token (classic)を使用した認証のみがサポートされています。 詳しくは、「個人用アクセス トークンを管理する」を参照してください。

パッケージ レジストリでホストされているパッケージを使用もしくは管理するためには、適切なスコープを持つpersonal access token (classic)を使わなければならず、個人用アカウントが適切な権限を持っていなければなりません。

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

  • リポジトリからパッケージをダウンロードしてインストールするには、personal access token (classic)に read:packages スコープが設定されていなければならず、ユーザー アカウントには読み取り権限が設定されていなければなりません。
  • GitHub Enterprise Cloud 上のパッケージを削除するには、ご利用の personal access token (classic) に少なくとも delete:packages および read:packages スコープが設定されている必要があります。 リポジトリをスコープとするパッケージには、repo スコープも必要です。 詳しくは、「パッケージを削除および復元する」を参照してください。
Scope説明必要な権限
read:packagesGitHub Packagesからのパッケージのダウンロードとインストール読み取り
write:packagesGitHub Packagesへのパッケージのアップロードと公開write
delete:packagesGitHub Packages からパッケージを削除するadmin
repoパッケージをアップロードおよび削除する (write:packages または delete:packages と一緒に)書き込みもしくは読み取り

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

GitHub Actions ワークフローを作成する際に、GitHub Packages で GITHUB_TOKEN を使って、パッケージを公開、インストール、削除、および復元できます。personal access token を格納したり、管理したりする必要はありません。

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

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

リポジトリを別の個人アカウントまたは Organization に移譲できます。 詳しくは、「リポジトリを移譲する」を参照してください。

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

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

GitHub Actionsワークフローでのパッケージへのアクセスのメンテナンス

ワークフローがパッケージへのアクセスを確実に維持するためには、確実にワークフローで正しいアクセストークンを使用し、パッケージへのGitHub Actionsアクセスを有効化してください。

GitHub Actions の概念的背景や、ワークフローでパッケージを使う例については、「GitHub Actionsワークフローを利用したGitHub Packagesの管理」をご覧ください。

アクセス トークン

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

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

GitHub Actions ワークフローで使用される GITHUB_TOKEN について詳しくは、「自動トークン認証」をご覧ください。

詳細なアクセス許可を持つパッケージに対する GitHub Actions アクセス

詳細なアクセス許可をサポートするレジストリに格納されているパッケージにワークフローがアクセスできるようにするには、ワークフローが実行されるリポジトリに GitHub Actions アクセス権を付与する必要があります。 この設定は、パッケージの設定ページにあります。 詳しくは、「パッケージのアクセス制御と可視性の設定」を参照してください。