Skip to main content

Sobre permissões para o GitHub Packages

Saiba como gerenciar as permissões dos seus pacotes.

Quem pode usar esse recurso?

O GitHub Packages está disponível com GitHub Free, GitHub Pro, GitHub Free para organizações, GitHub Team, GitHub Enterprise Cloud e GitHub Enterprise Server 3.0 ou superior.
O GitHub Packages não está disponível para repositórios privados de contas que utilizam planos antigos por-repositório. Além disso, as contas que usam planos herdados por repositório não podem acessar registros que oferecem suporte a permissões granulares, pois essas contas são cobradas por repositório. Enterprise Managed Users não têm alocação de armazenamento individual para publicar pacotes no namespace da conta, mas podem publicar no namespace de uma organização. Para obter informações adicionais sobre Enterprise Managed Users, confira “Sobre os Enterprise Managed Users”. Para obter a lista de registros que oferecem suporte a permissões granulares, confira “Sobre permissões para o GitHub Packages”. Para mais informações, confira "Planos do GitHub".

As permissões para pacotes podem ter como escopo um usuário, uma organização ou um repositório.

Permissões granulares para pacotes com escopo de usuário/organização

Pacotes com permissões granulares são escopos para uma conta pessoal ou organização. Você pode alterar o controle de acesso e a visibilidade do pacote separadamente de um repositório que está conectado (ou vinculado) a um pacote.

O GitHub Packages a seguir registra permissões granulares de suporte.

  • Container registry
  • Registro npm - Registro NuGet - Registro RubyGems

Permissões para pacotes com escopo do repositório

Um pacote com escopo de repositório herda as permissões e a visibilidade do repositório no qual ele foi publicado. Encontre um pacote com escopo para um repositório acessando a página principal do repositório e clicando no link Pacotes à direita da página. Para mais informações, confira "Conectar um repositório a um pacote".

Os registros GitHub Packages a seguir têm suporte apenas para permissões com escopo de repositório.

  • Registro do Docker (docker.pkg.github.com)
  • Registro do Apache Maven
  • Registro Gradle

Para outros registros, você pode optar por permitir que os pacotes tenham como escopo um usuário ou uma organização ou sejam vinculados a um repositório.

Visibilidade e permissões de acesso para pacotes

Se um pacote pertencer a um registro que dá suporte a permissões granulares, qualquer pessoa com permissões de administrador para o pacote poderá defini-lo como privado ou público e conceder permissões de acesso separadas das permissões definidas nos níveis de organização e repositório. Para ver a lista dos registros que dão suporte a permissões granulares, confira "Sobre permissões para o GitHub Packages".

Na maioria dos registros, para efetuar pull de um pacote, você deve autenticá-lo com um personal access token ou GITHUB_TOKEN, independentemente de o pacote ser público ou privado. No entanto, no Container registry, os pacotes públicos permitem acesso anônimo e podem ser extraídos sem autenticação ou logon por meio da CLI.

Observação: se você publicar um pacote vinculado a um repositório, o pacote herdará as permissões do repositório vinculado por padrão. Para acessar as configurações de permissões granulares do pacote, você precisa remover as permissões herdadas do pacote. Se você for o proprietário de uma organização, poderá desabilitar a herança automática de permissões para todos os novos pacotes que têm como escopo a sua organização. Para obter mais informações, confira "Configurando o controle de acesso e visibilidade de um pacote" e "Configurando o controle de acesso e visibilidade de um pacote."

Ao publicar um pacote, você obtém automaticamente permissões de administrador para ele. Se você publicar um pacote em uma organização, qualquer pessoa com a função owner na organização também obterá permissões de administrador para o pacote.

Para pacotes com escopo definido para uma conta pessoal, você pode dar uma função de acesso a qualquer pessoa. Para pacotes com escopo definido para uma organização, você pode dar uma função de acesso a qualquer pessoa ou equipe na organização.

Se você estiver usando um fluxo de trabalho do GitHub Actions para gerenciar seus pacotes, poderá conceder uma função de acesso ao repositório no qual o fluxo de trabalho está armazenado no usando o botão Adicionar Repositório em "Gerenciar acesso a Ações" nas configurações do pacote. Para obter mais informações, confira "Configurando o controle de acesso e visibilidade de um pacote".

PermissãoDescrição do acesso
LerPode fazer o download do pacote.
Pode ler metadados do pacote.
GravarPode fazer upload e download deste pacote.
Pode ler e gravar metadados do pacote.
AdministradorPode fazer upload, download, excluir e gerenciar este pacote.
Pode ler e gravar metadados do pacote.
Pode conceder permissões de pacote.

Observação: a capacidade dos fluxos de trabalho do GitHub Actions de excluir e restaurar pacotes usando a API REST está atualmente em beta e sujeita a alterações.

Para obter mais informações, confira "Configurando o controle de acesso e visibilidade de um pacote".

Sobre escopos e permissões para registros de pacotes

O GitHub Packages dá suporte apenas à autenticação que usa um personal access token (classic). Para obter mais informações, confira "Gerenciar seus tokens de acesso pessoal".

Para usar ou gerenciar um pacote hospedado por um registro de pacote, você deve usar um personal access token (classic) com o escopo apropriado e sua conta pessoal deve ter as permissões apropriadas.

Por exemplo:

  • Para baixar e instalar pacotes de um repositório, seu personal access token (classic) deve ter o escopo read:packages e sua conta de usuário deve ter permissão de leitura.
  • Para excluir um pacote no GitHub Enterprise Cloud, seu personal access token (classic) deve ter no mínimo os escopos delete:packages e read:packages. O escopo repo também é necessário para os pacotes com escopo no repositório. Para obter mais informações, confira "Excluir e restaurar um pacote".
EscopoDescriçãoPermissão necessária
read:packagesFaça o download e instale pacotes do GitHub Packagesler
write:packagesFaça o upload e publique os pacotes em GitHub Packagesgravação
delete:packagesExcluir pacotes do GitHub Packagesadmin
repoCarregar e excluir pacotes (junto com write:packages ou delete:packages)gravação ou admin

Observação: a capacidade dos fluxos de trabalho do GitHub Actions de excluir e restaurar pacotes usando a API REST está atualmente em beta e sujeita a alterações.

Quando você cria um fluxo de trabalho do GitHub Actions, pode usar o GITHUB_TOKEN para publicar e instalar pacotes no GitHub Packages sem a necessidade de armazenar e gerenciar um personal access token.

Para mais informações, consulte:

Sobre transferências de repositório

Você pode transferir um repositório para outra conta pessoal ou organização. Para obter mais informações, confira "Transferir um repositório".

Quando você transfere um repositórioo GitHub pode transferir os pacotes associados a ele dependendo do registro ao qual os pacotes pertencem.

  • Para Registros que dão suporte a permissões granulares, os pacotes têm como escopo uma conta pessoal ou uma organização, e a conta associada ao pacote não é alterada quando você transfere um repositório. Se você tiver vinculado um pacote a um repositório, o link será removido quando você transferir o repositório para outro usuário. Qualquer codespace ou fluxo de trabalho do GitHub Actions associado ao repositório perderá o acesso ao pacote. Se o pacote herdou as permissões de acesso do repositório vinculado, os usuários perderão o acesso ao pacote. Para ver a lista desses registros, confira "Permissões granulares para pacotes com escopo de usuário/organização" acima.
  • Para registros que dão suporte apenas a permissões no escopo do repositório, os pacotes são publicados diretamente em repositórios e o GitHub transfere os pacotes associados a um repositório como parte da transferência do repositório. Todo o uso faturável associado aos pacotes será cobrado do novo proprietário do repositório. Se o proprietário do repositório anterior for removido como colaborador no repositório, talvez ele não consiga mais acessar os pacotes associados ao repositório. Para obter a lista desses registros, consulte "Permissões para pacotes com escopo de repositório" acima.

Mantendo acesso a pacotes nos fluxos de trabalho de GitHub Actions

Para garantir que seus workflows mantenham o acesso aos seus pacotes, certifique-se de que você esteja usando o token de acesso correto do seu fluxo de trabalho e que você habilitou o acesso do GitHub Actions para o seu pacote.

Para obter mais informações conceituais sobre o GitHub Actions ou exemplos de uso de pacotes em fluxos de trabalho, confira "Gerenciar pacotes do GitHub usando fluxos de trabalho do GitHub Actions".

Tokens de acesso

Observação: a capacidade dos fluxos de trabalho do GitHub Actions de excluir e restaurar pacotes usando a API REST está atualmente em beta e sujeita a alterações.

  • Para publicar, instalar, excluir e restaurar pacotes associados ao repositório de fluxo de trabalho, use o GITHUB_TOKEN.
  • Para instalar pacotes associados a outros repositórios privados que o GITHUB_TOKEN não pode acessar, use um personal access token (classic)

Para obter mais informações sobre o GITHUB_TOKEN usado em fluxos de trabalho do GitHub Actions, confira "Autenticação automática de token".

Acesso do GitHub Actions para pacotes com permissões granulares

Para garantir que seus fluxos de trabalho tenham acesso a pacotes armazenados em Registros que dão suporte a permissões granulares, você deve conceder a GitHub Actions acesso aos repositórios em que o fluxo de trabalho é executado. Você pode encontrar essa configuração na página de configurações do seu pacote. Para obter mais informações, confira "Configurando o controle de acesso e visibilidade de um pacote".