Esta página descreve como configurar a autenticação com um repositório de pacotes Python do Artifact Registry.
É necessário se autenticar no Artifact Registry ao usar um aplicativo de terceiros para se conectar a um repositório.
Não é necessário configurar a autenticação para o Cloud Build ou o Google Cloud ambientes de execução, como o Google Kubernetes Engine e o Cloud Run, mas recomendamos Verifique se as permissões necessárias estão configurados.
Antes de começar
- Se o repositório de destino não existir, crie um novo repositório de pacotes Python.
- Verifique se o Python 3 está instalado. Para ver instruções de instalação, consulte o tutorial do Google Cloud para configurar o Python.
- Verifique se a conta de usuário ou de serviço que você está usando tem as permissões necessárias para acessar o repositório.
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- (Opcional) Configure padrões para comandos da CLI gcloud.
Visão geral
O Artifact Registry é compatível com os seguintes métodos de autenticação.
- Biblioteca keyring do Python (recomendado)
- O Artifact Registry oferece um back-end de chaveiro para armazenar as credenciais de conexão aos repositórios do Artifact Registry.
- Autenticação por senha
- Use esta opção quando não for possível usar o keyring e você precisar de uma opção compatível com autenticação básica por senha.
As instruções nesta documentação descrevem como configurar o pip como o único índice de pacotes que o pip pesquisa. Recomendamos usar repositórios virtuais para pesquisar pacotes nos seus pacotes particulares em Artifact Registry e pacotes públicos do PyPI em vez de configurar vários índices de pacotes no arquivo de configuração pip. A ferramenta pip não pesquisar índices de pacotes em qualquer ordem específica. Assim, seus clientes podem baixa ou instala por engano um pacote público com o mesmo nome de seus pacotes particulares. Os repositórios virtuais permitem configurar prioridades para fontes upstream para reduzir esse risco de confusão de dependência.
Autenticação com chaveiro
A biblioteca keyring do Python oferece aos aplicativos uma maneira de acessar back-ends de keyring, ou seja, armazenamentos de credenciais do sistema operacional e de terceiros.
O Artifact Registry oferece keyrings.google-artifactregistry-auth back-end do keyring para processar a autenticação repositórios do Artifact Registry.
Ordem de pesquisa de credenciais
Quando você usa o back-end do keyring do Artifact Registry, suas credenciais são que não são armazenados no projeto Python. Em vez disso, o Artifact Registry procura credenciais na seguinte ordem:
Application Default Credentials (ADC), uma estratégia que procura credenciais na seguinte ordem:
Credenciais definidas na variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
.Credenciais que a conta de serviço padrão do Compute Engine, do Google Kubernetes Engine, do Cloud Run, do App Engine ou do Cloud Functions fornece.
Credenciais fornecidas pela CLI do Google Cloud, incluindo credenciais de usuário do comando
gcloud auth application-default login
.
A variável GOOGLE_APPLICATION_CREDENTIALS
torna a conta
a autenticação explícita, o que facilita a solução de problemas. Se
se você não usar a variável, verifique se as contas usadas pelo ADC têm
as permissões necessárias. Por exemplo, a
conta de serviço padrão para VMs do Compute Engine, nós do Google Kubernetes Engine
e revisões do Cloud Run tem acesso somente leitura aos repositórios. Se você
pretende fazer o upload desses ambientes usando a conta de serviço padrão,
modifique as permissões.
Como configurar o keyring
Para configurar a autenticação com o back-end de chaveiro do Artifact Registry:
Instale a biblioteca do keyring.
pip install keyring
Instale o back-end do Artifact Registry.
pip install keyrings.google-artifactregistry-auth
Liste os back-ends para confirmar a instalação.
keyring --list-backends
A lista precisa incluir
ChainerBackend(priority:10)
GooglePythonAuth(priority: 9)
Execute o comando a seguir para imprimir a configuração do repositório no e adicionar ao seu projeto Python.
gcloud artifacts print-settings python --project=PROJECT \ --repository=REPOSITORY \ --location=LOCATION
Substitua os seguintes valores:
- PROJECT é o ID do projeto. Se essa sinalização for omitida, o projeto padrão ou atual é usado.
- REPOSITORY é o ID do repositório. Se você tiver configurado um repositório do Artifact Registry padrão, ele será usado quando essa sinalização for omitida no comando.
- LOCATION é o local regional ou multirregional do repositório.
Adicione as configurações abaixo ao arquivo
.pypirc
. O local padrão é:- Linux e macOS:
$HOME/.pypirc
- Windows:
%USERPROFILE%\.pypirc
[distutils] index-servers = PYTHON-REPO-ID [PYTHON-REPO-ID] repository = https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/
Substitua os seguintes valores:
- PYTHON-REPO-ID é um ID do repositório que pode ser referenciado. com ferramentas como o Twine.
- PROJECT é o ID do projeto. Se essa sinalização for omitida, o projeto padrão ou atual é usado.
- REPOSITORY é o ID do repositório. Se você tiver configurado um repositório do Artifact Registry padrão, ele será usado quando essa sinalização for omitida no comando.
- LOCATION é o local regional ou multirregional do repositório.
- Linux e macOS:
Adicione seu repositório ao arquivo de configuração do pip. O local do arquivo se você quer atualizar o arquivo por usuário para o ambiente virtual que você usa.
Para o arquivo associado ao usuário do sistema operacional:
- Unix:
$HOME/.config/pip/pip.conf
ou$HOME/.pip/pip.conf
- macOS:
/Library/Application Support/pip/pip.conf
ou$HOME/.config/pip/pip.conf
- Windows:
%APPDATA%\pip\pip.ini
ou%USERPROFILE%\pip\pip.ini
Para ambientes virtuais:
- Unix e macOS:
$VIRTUAL_ENV/pip.conf
- Windows:
%VIRTUAL_ENV%\pip.ini
Para configurar o pip para pesquisar apenas seu repositório, use o
index-url
e verifique se não há outros índices de pacote configurados com a configuraçãoextra-index-url
.[global] index-url = https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/simple/
A string
/simple/
no final do caminho do repositório indica que o repositório implementa a API Python Simple Repository.- Unix:
Agora, seu ambiente Python está configurado para autenticar com o Artifact Registry.
Autenticação de keyring com credenciais de usuário
Depois de configurar o keyring, você pode usá-lo com suas credenciais de usuário na CLI gcloud. Faça login na Google Cloud CLI antes de se conectar a um repositório de pacotes do Python.
Execute este comando:
gcloud auth login
Autenticação de chaveiro com credenciais da conta de serviço
Depois de configurar o keyring, você configura um serviço. para a autenticação.
- Crie uma conta de serviço ou escolha uma conta de serviço atual que você usa para automação.
- Conceda o papel específico do Artifact Registry à conta de serviço para dar acesso ao repositório.
Use uma das opções a seguir para fazer a autenticação com sua conta de serviço:
Application Default Credentials (recomendado)
Atribua o local do arquivo de chave da conta de serviço à variável
GOOGLE_APPLICATION_CREDENTIALS
para que o auxiliar de credenciais do Artifact Registry possa conseguir sua chave ao se conectar com os repositórios.export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
Credenciais da CLI gcloud
Antes de se conectar a um repositório, faça login como a conta de serviço. Evite esta opção se você estiver se conectando a repositórios de VMs do Compute Engine já que o Artifact Registry encontra as credenciais da conta de serviço antes das credenciais na CLI gcloud.
gcloud auth activate-service-account --key-file=KEY-FILE
Substitua KEY-FILE pelo caminho para o arquivo de chave da conta de serviço.
Como autenticar com uma chave de conta de serviço
Use essa abordagem quando você precisar de autenticação com um nome de usuário e uma senha.
As chaves da conta de serviço são credenciais de longa duração. Use as seguintes diretrizes para limitar o acesso aos seus repositórios:
- Considere usar uma conta de serviço dedicada para interagir com repositórios.
- Conceda o papel mínimo do Artifact Registry exigido pela conta de serviço. Por exemplo, atribua o leitor do Artifact Registry a uma conta de serviço que faz o download apenas de artefatos.
- Se os grupos na sua organização exigirem níveis diferentes de acesso a repositórios específicos, conceda acesso no nível do repositório em vez de no nível do projeto.
- Siga as práticas recomendadas para gerenciar as credenciais.
Para configurar a autenticação:
Crie uma conta de serviço para agir em nome do seu aplicativo ou escolha uma conta de serviço atual que você usa para automação.
Você precisará do local do arquivo de chave da conta de serviço para configurar a autenticação com o Artifact Registry. Para contas existentes, é possível ver as chaves e criar novas chaves na página "Contas de serviço".
Conceda o papel apropriado do Artifact Registry à conta de serviço para fornecer acesso ao repositório.
Execute o comando a seguir para imprimir a configuração do repositório para adicioná-la ao projeto Python.
gcloud artifacts print-settings python --project=PROJECT \ --repository=REPOSITORY \ --location=LOCATION \ --json-key=KEY-FILE
Substitua os seguintes valores:
- PROJECT é o ID do projeto. Se essa sinalização for omitida, o projeto padrão ou atual é usado.
- REPOSITORY é o ID do repositório. Se você tiver configurado um repositório do Artifact Registry padrão, ele será usado quando essa sinalização for omitida no comando.
- LOCATION é o local regional ou multirregional do repositório.
- KEY-FILE é o caminho para o arquivo de chaves JSON da conta de serviço.
Adicione as seguintes configurações ao arquivo
.pypirc
. O local padrão para o arquivo de configuração do pip por usuário é:- Linux e macOS:
$HOME/.pypirc
- Windows:
%USERPROFILE%\.pypirc
[distutils] index-servers = PYTHON-REPO-ID [PYTHON-REPO-ID] repository = https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/ username: _json_key_base64 password: KEY
Substitua os seguintes valores:
- PYTHON-REPO-ID é um ID do repositório que pode ser referenciado. com ferramentas como o Twine.
- PROJECT é o ID do projeto. Se essa sinalização for omitida, o projeto padrão ou atual é usado.
- REPOSITORY é o ID do repositório. Se você tiver configurado um repositório do Artifact Registry padrão, ele será usado quando essa sinalização for omitida no comando.
- LOCATION é o local regional ou multirregional do repositório.
- KEY é a chave codificada em base64 no arquivo de chave da conta de serviço.
- Linux e macOS:
Adicione seu repositório ao arquivo de configuração pip. O local do arquivo de configuração do pip depende se você quer atualizar o arquivo por usuário ou o arquivo específico para um ambiente virtual que você está usando.
Para o arquivo associado ao usuário do sistema operacional:
- Unix:
$HOME/.config/pip/pip.conf
ou$HOME/.pip/pip.conf
- macOS:
/Library/Application Support/pip/pip.conf
ou$HOME/.config/pip/pip.conf
- Windows:
%APPDATA%\pip\pip.ini
ou%USERPROFILE%\pip\pip.ini
Para ambientes virtuais:
- Unix e macOS:
$VIRTUAL_ENV/pip.conf
- Windows:
%VIRTUAL_ENV%\pip.ini
Adicione a linha a seguir ao arquivo de configuração do pip:
[global] index-url = https://_json_key_base64:KEY@LOCATION-python.pkg.dev/PROJECT/REPOSITORY/simple/
- KEY a chave privada no arquivo de chave da conta de serviço.
- A string
/simple/
no fim do caminho do repositório indica que o implementa a API Python Simple Repository (em inglês).
- Unix:
A seguir
- Configure o acesso aos repositórios
- Saiba mais sobre como gerenciar repositórios
- Saiba mais sobre como gerenciar pacotes