パッケージに対する権限のスコープは、ユーザーまたは Organization に、あるいはリポジトリに設定できます。
ユーザ/Organizationスコープのパッケージの詳細な権限
詳細な権限を持つパッケージは、個人ユーザもしくはOrganizationアカウントをスコープとします。 パッケージのアクセス制御と可視性は、パッケージに接続された(あるいはリンクされた)リポジトリは別個に変更できます。
次の GitHub Packages レジストリでは、細かな権限がサポートされています。
- Container registry
リポジトリスコープのパッケージに対する権限
リポジトリスコープのパッケージでは、そのパッケージを所有するリポジトリの権限と可視性を継承します。 リポジトリをスコープとするパッケージは、リポジトリのメインページにアクセスし、ページ右にあるパッケージリンクをクリックすれば見つかります。
次の GitHub Packages レジストリでは、リポジトリ スコープの権限のみがサポートされています。
- Docker レジストリ (
docker.pkg.github.com
) - npm レジストリ - Apache Mavenレジストリ
- Gradle レジストリ - NuGet レジストリ - RubyGems レジストリ
Container registryの場合、パッケージのスコープをユーザーまたは Organization に限定することも、パッケージをリポジトリにリンクさせることも選べます。
コンテナイメージの可視性とアクセス権限
コンテナイメージへの管理権限を持っているなら、そのコンテナイメージへのアクセス権限をプライベートもしくはパブリックに設定できます。 パブリックイメージは匿名でアクセスでき、認証や CLI 経由でサインインすることなくプルできます。
あなたが管理者であれば、Organization レベルおよびリポジトリレベルに設定した権限とは別に、コンテナイメージに対してアクセス権限を付与することもできます。
個人アカウントによって公開および所有されているコンテナー イメージの場合、任意のユーザーにアクセス ロールを付与できます。 Organization が所有し公開しているコンテナイメージには、Organization 内の任意の Team にアクセスロールを付与できます。
アクセス許可 | アクセス権の内容 |
---|---|
Read | パッケージをダウンロードできます。 パッケージのメタデータを読み取ることができます。 |
Write | このパッケージをアップロードおよびダウンロードできます。 パッケージ メタデータの読み取りと書き込みを行うことができます。 |
[Admin] | このパッケージをアップロード、ダウンロード、削除、管理できます。 パッケージ メタデータの読み取りと書き込みを行うことができます。 パッケージにアクセス許可を付与できます。 |
詳細については、「パッケージのアクセス制御と可視性の設定」を参照してください。
パッケージの管理
パッケージ レジストリでホストされているパッケージを使用もしくは管理するためには、適切なスコープを持つpersonal access tokenを使わなければならず、個人用アカウントが適切な権限を持っていなければなりません。
たとえば、次のように入力します。
- リポジトリからパッケージをダウンロードしてインストールするには、personal access tokenに
read:packages
スコープが設定されていなければならず、ユーザー アカウントには読み取り権限が設定されていなければなりません。 - GitHub Enterprise Server 上のパッケージを削除するには、ご利用のpersonal access tokenに少なくとも
delete:packages
およびread:packages
スコープが設定されている必要があります。 リポジトリをスコープとするパッケージには、repo
スコープも必要です。 詳しくは、「パッケージを削除および復元する」を参照してください。
Scope | 説明 | 必要な権限 |
---|---|---|
read:packages | GitHub Packagesからのパッケージのダウンロードとインストール | 読み取り |
write:packages | GitHub Packagesへのパッケージのアップロードと公開 | 書き込み |
delete:packages | GitHub Packagesからのパッケージの削除 | admin |
repo | パッケージをアップロードおよび削除する (write:packages または delete:packages と一緒に) | 書き込みもしくは読み取り |
GitHub Actions ワークフローを作成する場合、GITHUB_TOKEN
を使って GitHub Packages でパッケージを発行およびインストールでき、personal access token を保存して管理する必要はありません。
詳細については、以下を参照してください:
リポジトリの移譲について
リポジトリを別のユーザーまたは組織アカウントに転送できます。 詳細については、「リポジトリを移譲する」を参照してください。
リポジトリを転送する場合、GitHub は、パッケージが属するレジストリに応じて、リポジトリに関連付けられているパッケージを転送できます。
- 詳細なアクセス許可をサポートするレジストリの場合、パッケージのスコープはユーザーまたは組織のアカウントに設定され、リポジトリを転送してもパッケージに関連付けられているアカウントは変更されません。 パッケージをリポジトリにリンクした場合、リポジトリを別のユーザーに転送するとリンクが削除され、リポジトリに関連付けられている codespace または GitHub Actions ワークフローはパッケージにアクセスできなくなります。 これらのレジストリの一覧については、「ユーザー/組織スコープのパッケージの詳細なアクセス許可」を参照してください。
- リポジトリ スコープのアクセス許可のみをサポートするレジストリの場合、パッケージはリポジトリに直接発行され、GitHub によって、リポジトリ転送の一環としてリポジトリに関連付けられているパッケージが転送されます。 パッケージに関連付けられているすべての課金対象使用量は、その後、新しい所有者に課金されます。 以前のリポジトリ所有者がリポジトリのコラボレーターとして削除された場合、リポジトリに関連付けられているパッケージにアクセスできなくなる可能性があります。これらのレジストリの一覧については、「リポジトリ スコープのパッケージに対するアクセス許可」を参照してください。
GitHub Actionsワークフローでのパッケージへのアクセスのメンテナンス
ワークフローがパッケージへのアクセスを確実に維持するためには、確実にワークフローで正しいアクセストークンを使用し、パッケージへのGitHub Actionsアクセスを有効化してください。
GitHub Actions の概念的背景や、ワークフローでパッケージを使用する例については、「GitHub Actions ワークフローを利用した GitHub Packages の管理」を参照してください。
アクセス トークン
- ワークフロー リポジトリに関連付けられているパッケージを発行およびインストールするには、
GITHUB_TOKEN
を使います。 GITHUB_TOKEN
がアクセスできない他のプライベート リポジトリに関連するパッケージをインストールするには、personal access tokenを使用してください
GitHub Actions ワークフローで使用される GITHUB_TOKEN
の詳細については、「ワークフローで認証する」を参照してください。