As permissões para pacotes podem ter como escopo um usuário, uma organização ou um repositório.
Permissões granulares para pacotes destinados a usuários/organizações
Pacotes com permissões granulares são atribuídos a 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.
GitHub Packages Os registros a seguir dão suporte a permissões granulares.
- Container registry
- registro npm
- Registro do 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 obter mais informações, consulte Conectar um repositório a um pacote.
Os registros a seguir GitHub Packagesdão suporte apenas a permissões com escopo de repositório.
- Registro do Apache Maven
- Registro Gradle
Para outros registros, você pode optar por permitir que os pacotes sejam definidos como escopo para um usuário ou uma organização ou 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 saber mais, 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 saber mais, confira Configurando o controle de acesso e visibilidade de um pacote.
| Permissão | Descrição do acesso |
|---|---|
| Ler | Pode fazer o download do pacote. Pode ler metadados do pacote. |
| Gravar | Pode fazer upload e download deste pacote. Pode ler e gravar metadados do pacote. |
| Admin | Pode 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á em prévia pública e está sujeita a alterações.
Para saber mais, confira Configurando o controle de acesso e visibilidade de um pacote.
Sobre escopos e permissões para registros de pacotes
Observação
O GitHub Packages dá suporte apenas à autenticação que usa um personal access token (classic). Para saber mais, 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 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, seu personal access token (classic) deve ter pelo menos o escopo
delete:packageseread:packages. Para saber mais, confira Excluir e restaurar um pacote.
| Scope | Descrição | Permissão necessária |
|---|---|---|
read:packages | Baixar e instalar pacotes de GitHub Packages | leitura |
write:packages | Carregar e publicar pacotes para GitHub Packages | gravação |
delete:packages | Excluir pacotes de GitHub Packages | administrador |
Observação
A capacidade dos fluxos de trabalho do GitHub Actions de excluir e restaurar pacotes usando a API REST está em prévia pública e está sujeita a alterações.
Ao criar um fluxo de trabalho GitHub Actions, você pode usar o GITHUB_TOKEN para publicar, instalar, excluir e restaurar pacotes no GitHub Packages sem precisar armazenar e gerenciar um personal access token.
Para obter mais informações, consulte:
- Configurando o controle de acesso e visibilidade de um pacote
- Publicar e instalar um pacote no GitHub Actions
- Gerenciar seus tokens de acesso pessoal
- Escopos para aplicativos OAuth
Sobre transferências de repositório
Você pode transferir um repositório para outra conta pessoal ou organização. Para saber mais, confira Transferir um repositório.
Quando você transfere um repositório, GitHub pode transferir os pacotes associados ao repositório, 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. Todos os codespaces ou GitHub Actions fluxos de trabalho associados 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 com escopo de repositório, os pacotes são publicados diretamente em repositórios e GitHub transferem os pacotes associados a um repositório como parte da transferência do repositório. Todo o uso faturável associado aos pacotes de software 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, confira Permissões para pacotes com escopo de repositório acima.
Mantendo o acesso a pacotes nos GitHub Actions fluxos de trabalho
Para garantir que seus fluxos de trabalho mantenham o acesso aos pacotes, verifique se você está usando o token de acesso certo no fluxo de trabalho e se você habilitou GitHub Actions o acesso ao pacote.
Para obter mais informações conceituais sobre GitHub Actions ou exemplos de como usar pacotes em fluxos de trabalho, consulte 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á em prévia pública e está 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
GITHUB_TOKENnão podem ser acessados, use um personal access token (classic)
Para obter mais informações sobre GITHUB_TOKEN usado em fluxos de trabalho de GitHub Actions, consulte Usar GITHUB_TOKEN para autenticação em fluxos de trabalho.
GitHub Actions acesso a 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 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 saber mais, confira Configurando o controle de acesso e visibilidade de um pacote.