Die Berechtigungen für Pakete können entweder auf einen Benutzer/eine Organisation oder auf ein Repository ausgerichtet werden.
Differenzierte Berechtigungen für benutzer-/organisationsbezogene Pakete
Für Pakete mit differenzierten Berechtigungen wird ein persönliches Konto oder eine Organisation als Gültigkeitsbereich festgelegt. Du kannst die Zugriffssteuerung und Sichtbarkeit eines Pakets getrennt von einem Repository ändern, mit dem es verbunden (oder verknüpft) ist.
Die folgenden GitHub Packages-Registrierungen unterstützen differenzierte Berechtigungen:
- Container registry
- npm-Registrierung - NuGet-Registrierung - RubyGems-Registrierung
Berechtigungen für repositorybezogene Pakete
Ein Repository-bezogenes Paket erbt die Berechtigungen und Sichtbarkeit von dem Repository, in dem das Paket veröffentlicht wird. Du kannst ein auf ein Repository ausgerichtetes Paket finden, indem du zur Hauptseite des Repositorys wechselst und rechts auf der Seite auf den Link Pakete klickst. Weitere Informationen findest du unter Verbinden eines Repositorys mit einem Paket.
Die folgenden GitHub Packages-Registrierungen unterstützen nur repositorybezogene Berechtigungen.
- Docker-Registrierung (
docker.pkg.github.com
)
- Apache Maven-Registrierung
- Gradle-Registrierung
Für andere Registrierungen kannst du festlegen, dass Pakete auf einen Benutzer oder eine Organisation ausgerichtet oder mit einem Repository verknüpft werden sollen.
Sichtbarkeit und Zugriffsberechtigungen für Pakete
Wenn ein Paket zu einer Registrierung gehört, die differenzierte Berechtigungen unterstützt, kann jede Person, die Administratorberechtigungen für das Paket hat, das Paket auf „privat“ oder „öffentlich“ festlegen und Zugriffsberechtigungen für das Paket erteilen. Diese sind unabhängig von den Berechtigungen, die auf Organisations- und Repositoryebene festgelegt sind. Eine Liste dieser Registrierungen, die differenzierte Berechtigungen unterstützen, findest du unter Informationen zu Berechtigungen für GitHub-Pakete.
In den meisten Registrierungen musst du dich zum Pullen eines Pakets authentifizieren – personal access token oder GITHUB_TOKEN
–, unabhängig davon, ob das Paket öffentlich oder privat ist. In der Container registry erlauben öffentliche Pakete jedoch anonymen Zugriff und können ohne Authentifizierung oder Anmeldung über die CLI gepullt werden.
Hinweis: Wenn du ein Paket veröffentlichst, das mit einem Repository verknüpft ist, erbt das Paket standardmäßig seine Berechtigungen vom verknüpften Repository. Um auf die detaillierten Berechtigungseinstellungen des Pakets zuzugreifen, musst du die geerbten Berechtigungen des Pakets entfernen. Wenn du Besitzer*in einer Organisation bist, kannst du die automatische Vererbung von Berechtigungen für alle neuen Pakete deaktivieren, die auf deine Organisation ausgerichtet sind. Weitere Informationen finden Sie unter Konfigurieren der Zugriffssteuerung und Sichtbarkeit von Paketen und unter Konfigurieren der Zugriffssteuerung und Sichtbarkeit von Paketen.
Wenn du ein Paket veröffentlichst, erhältst du automatisch Administratorberechtigungen für dieses. Wenn du ein Paket in einer Organisation veröffentlichst, erhält jeder mit der Rolle owner
in der Organisation auch Administratorberechtigungen für das Paket.
Für Pakete, die auf ein persönliches Konto ausgerichtet sind, kannst du jeder Person eine Zugriffsrolle zuweisen. Für Pakete, die auf eine Organisation ausgerichtet sind, kannst du jeder Person oder jedem Team in der Organisation eine Zugriffsrolle zuweisen.
Wenn Sie zum Verwalten Ihrer Pakete einen GitHub Actions-Workflow verwenden, können Sie mit mithilfe der Schaltfläche Repository hinzufügen unter „Actions-Zugriff verwalten“ in den Einstellungen des Pakets dem Repository, in dem der Workflow gespeichert ist, eine Zugriffsrolle zuweisen. Weitere Informationen findest du unter Konfigurieren der Zugriffssteuerung und Sichtbarkeit von Paketen.
Berechtigung | Zugriffsbeschreibung |
---|---|
Lesen | Kann Paket herunterladen. Kann Paketmetadaten lesen. |
Schreiben | Kann dieses Paket hochladen und herunterladen. Kann Paketmetadaten lesen und schreiben. |
Administrator | Kann dieses Paket hochladen, herunterladen, löschen und verwalten. Kann Paketmetadaten lesen und schreiben. Kann Paketberechtigungen erteilen. |
Hinweis: Die Möglichkeit für GitHub Actions-Workflows, Pakete mithilfe der REST-API zu löschen und wiederherzustellen, befindet sich derzeit in der beta und kann noch geändert werden.
Weitere Informationen findest du unter Konfigurieren der Zugriffssteuerung und Sichtbarkeit von Paketen.
Informationen zu Bereichen und Berechtigungen für Paketregistrierungen
GitHub Packages unterstützt nur die Authentifizierung mit einem personal access token (classic). Weitere Informationen findest du unter Verwalten deiner persönlichen Zugriffstoken.
Wenn du ein von einer Paketregistrierung gehostetes Paket verwenden oder verwalten möchtest, musst du ein personal access token (classic) mit dem entsprechenden Gültigkeitsbereich verwenden, und dein persönliches Konto muss über entsprechende Berechtigungen verfügen.
Beispiel:
- Um Pakete aus einem Repository herunterladen und installieren zu können, muss dein personal access token (classic) den Gültigkeitsbereich
read:packages
aufweisen, und dein Benutzerkonto muss über eine Leseberechtigung verfügen. - Um ein Paket in GitHub Enterprise Cloud löschen zu können, muss dein personal access token (classic) mindestens über die Gültigkeitsbereiche
delete:packages
undread:packages
verfügen. Derrepo
-Umfang ist auch für repositorybezogene Pakete erforderlich. Weitere Informationen findest du unter Löschen und Wiederherstellen eines Pakets.
Bereich | BESCHREIBUNG | Erforderliche Berechtigung |
---|---|---|
read:packages | Herunterladen und Installieren von Paketen aus GitHub Packages | Lesen |
write:packages | Hochladen und Veröffentlichen von Paketen in GitHub Packages | Schreiben |
delete:packages | Löschen von Paketen in GitHub Packages | admin |
repo | Hochladen und Löschen von Paketen (zusammen mit write:packages oder delete:packages ) | Schreib- oder Administratorberechtigung |
Hinweis: Die Möglichkeit für GitHub Actions-Workflows, Pakete mithilfe der REST-API zu löschen und wiederherzustellen, befindet sich derzeit in der beta und kann noch geändert werden.
Wenn Sie einen GitHub Actions-Workflow erstellen, können Sie GITHUB_TOKEN
zum Veröffentlichen, Installieren, Löschen und Wiederherstellen von Paketen in GitHub Packages verwenden, ohne ein personal access token zu speichern und zu verwalten.
Weitere Informationen findest du hier:
- Konfigurieren der Zugriffssteuerung und Sichtbarkeit von Paketen
- Veröffentlichen und Installieren eines Pakets mit GitHub Actions
- Verwalten deiner persönlichen Zugriffstoken
- Bereiche für OAuth-Apps
Informationen zur Übertragung von Repositorys
Du kannst ein Repository in ein anderes persönliches Konto oder eine Organisation übertragen. Weitere Informationen findest du unter Repository übertragen.
Wenn du ein Repository überträgst, kann GitHub auch die Pakete übertragen, die dem Repository zugeordnet sind. Dies hängt von der Registrierung ab, zu der die Pakete gehören.
- Für Registrierungen, die differenzierte Berechtigungen unterstützen, sind Pakete auf ein persönliches Konto oder eine Organisation beschränkt, und das dem Paket zugeordnete Konto ändert sich nicht, wenn du ein Repository überträgst. Wenn du ein Paket mit einem Repository verknüpft hast, wird die Verknüpfung aufgehoben, wenn du das Repository an andere Benutzerinnen überträgst. Codespaces oder GitHub Actions-Workflows, die dem Repository zugeordnet sind, verlieren den Zugriff auf das Paket. Wenn das Paket seine Zugriffsberechtigungen vom verknüpften Repository geerbt hat, verlieren Benutzerinnen den Zugriff auf das Paket. Eine Liste dieser Registrierungen findest du oben unter Differenzierte Berechtigungen für benutzer-/organisationsbezogene Pakete.
- Bei Registrierungen, die nur repositorybezogene Berechtigungen unterstützen, werden Pakete direkt in Repositorys veröffentlicht, und GitHub überträgt die Pakete, die einem Repository zugeordnet sind, bei der Repositoryübertragung. Der gesamte abrechenbare Verbrauch, der den Paketen zugeordnet ist, wird anschließend dem/der neuen Besitzer*in des Repositorys in Rechnung gestellt. Wenn der vorherige Repository-Besitzer als Mitarbeiter des Repositorys entfernt wird, kann er möglicherweise nicht mehr auf die Pakete zugreifen, die dem Repository zugeordnet sind. Eine Liste dieser Registrierungen findest du oben unter „Berechtigungen für Repository-bezogene Pakete“.
Verwalten des Zugriffs auf Pakete in GitHub Actions-Workflows
Um sicherzustellen, dass deine Workflows Zugriff auf deine Pakete erhalten, stelle sicher, dass du das richtige Zugriffstoken in deinem Workflow verwendest und dass du den GitHub Actions-Zugriff auf dein Paket aktiviert hast.
Weitere konzeptionelle Hintergründe zu GitHub Actions sowie Beispiele für die Verwendung von Paketen in Workflows findest du unter Verwalten von GitHub-Paketen mithilfe von GitHub Actions Workflows.
Zugriffstoken
Hinweis: Die Möglichkeit für GitHub Actions-Workflows, Pakete mithilfe der REST-API zu löschen und wiederherzustellen, befindet sich derzeit in der beta und kann noch geändert werden.
- Um Pakete, die dem Workflow-Repository zugeordnet sind, zu veröffentlichen, zu installieren, zu löschen und wiederherzustellen, verwenden Sie bitte
GITHUB_TOKEN
. - Um Pakete zu installieren, die anderen privaten Repositorys zugeordnet sind, auf die
GITHUB_TOKEN
nicht zugreifen kann, muss ein personal access token (classic) verwendet werden.
Weitere Informationen zum GITHUB_TOKEN
, das in GitHub Actions-Workflows verwendet wird, findest du unter Automatische Tokenauthentifizierung.
GitHub Actions-Zugriff für Pakete mit präzisen Berechtigungen
Um sicherzustellen, dass deine Workflows Zugriff auf Pakete haben, die in Registrierungen gespeichert sind, die differenzierte Berechtigungen unterstützen, musst du GitHub Actions Zugriff auf die Repositorys gewähren, in denen dein Workflow ausgeführt wird. Du kannst diese Einstellung auf der Seite mit den Einstellungen für dein Paket finden. Weitere Informationen findest du unter Konfigurieren der Zugriffssteuerung und Sichtbarkeit von Paketen.