Skip to main content

GitHub Packagesの権限について

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

GitHub Packages は、GitHub Free、GitHub Pro、Organization の GitHub Free、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Server 3.0 以降、GitHub AE で利用できます。
GitHub Packagesは、レガシーのリポジトリごとのプランを使っているアカウントが所有しているプライベートリポジトリでは利用できません。 また、レガシーのリポジトリごとのプランを使っているアカウントは、リポジトリごとに課金される Container registry にはアクセスできません。 詳細については、「GitHub's products」を参照してください。

パッケージに対する権限のスコープは、ユーザーまたは Organization に、あるいはリポジトリに設定できます。

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

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

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

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

リポジトリスコープのパッケージに対する権限

リポジトリスコープのパッケージでは、そのパッケージを所有するリポジトリの権限と可視性を継承します。 リポジトリをスコープとするパッケージは、リポジトリのメインページにアクセスし、ページ右にある パッケージ リンクをクリックすれば見つかります。 詳細については、「リポジトリのパッケージへの接続」を参照してください。

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

  • RubyGemsレジストリ
  • Apache Mavenレジストリ
  • Gradle レジストリ

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

コンテナイメージの可視性とアクセス権限

コンテナイメージへの管理権限を持っているなら、そのコンテナイメージへのアクセス権限をプライベートもしくはパブリックに設定できます。 パブリックイメージは匿名でアクセスでき、認証や CLI 経由でサインインすることなくプルできます。

あなたが管理者であれば、Organization レベルおよびリポジトリレベルに設定した権限とは別に、コンテナイメージに対してアクセス権限を付与することもできます。

個人アカウントによって公開および所有されているコンテナー イメージの場合、任意のユーザーにアクセス ロールを付与できます。 Organization が所有し公開しているコンテナイメージには、Organization 内の任意の Team にアクセスロールを付与できます。

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

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

パッケージの管理

GitHub Packages では、personal access token (classic)を使用した認証のみがサポートされています。 詳しい情報については、「personal access tokenの作成」を参照してください。

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

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

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

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

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

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

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

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

アクセス トークン

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

GitHub Actions ワークフローで使用される GITHUB_TOKEN の詳細については、「ワークフローで認証する」を参照してください。

コンテナイメージに対するGitHub Actionsアクセス

ワークフローがコンテナイメージに確実にアクセスできるようにするには、ワークフローが実行されるリポジトリへのGitHub Actionsアクセスを有効化しなければなりません。 この設定は、パッケージの設定ページにあります。 詳細については、「パッケージへのワークフローのアクセスの確保」を参照してください。