Esta página descreve como configurar a autenticação com um repositório de pacotes Python do Artifact Registry.
Tem de autenticar-se no Artifact Registry quando usa uma aplicação de terceiros para se ligar a um repositório.
Não precisa de configurar a autenticação para o Cloud Build nem para os ambientes de execução, como o Google Kubernetes Engine e o Cloud Run, mas deve verificar se as autorizações necessárias estão configuradas. Google Cloud
Antes de começar
- Se o repositório de destino não existir, crie um novo repositório de pacotes Python.
- Confirme se o Python 3 está instalado. Para ver instruções de instalação, consulte o Google Cloud tutorial de configuração do Python.
- Verifique se a conta de utilizador ou a conta de serviço que está a usar tem as autorizações necessárias para aceder ao repositório.
-
Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:
gcloud init
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.
- (Opcional) Configure as predefinições para os comandos da CLI gcloud.
Vista geral
O Artifact Registry suporta os seguintes métodos de autenticação.
- Biblioteca Python keyring (recomendado)
- O Artifact Registry fornece um back-end de conjunto de chaves para armazenar as credenciais de ligação aos repositórios do Artifact Registry.
- Autenticação por palavra-passe
- Use esta opção quando não puder usar o conjunto de chaves e precisar de uma opção que suporte a autenticação básica de palavra-passe.
As instruções nesta documentação descrevem a configuração do pip como o único índice de pacotes que o pip procura. Recomendamos que use repositórios virtuais para pesquisar pacotes nos seus pacotes privados no Artifact Registry e pacotes públicos do PyPI, em vez de configurar vários índices de pacotes no ficheiro de configuração do pip. A ferramenta pip não pesquisa os índices de pacotes por nenhuma ordem específica, pelo que os seus consumidores podem transferir ou instalar por engano um pacote público com o mesmo nome de um dos seus pacotes privados. Os repositórios virtuais permitem-lhe configurar prioridades para origens a montante de forma a mitigar este risco de confusão de dependências.
A autenticar com o conjunto de chaves
A biblioteca keyring do Python oferece às aplicações uma forma de aceder aos backends do keyring, ou seja, aos sistemas operativos e às lojas de credenciais de terceiros.
O Artifact Registry fornece o backend do porta-chaves keyrings.google-artifactregistry-auth para processar a autenticação com repositórios do Artifact Registry.
Ordem de pesquisa de credenciais
Quando usa o back-end do conjunto de chaves do Artifact Registry, as suas credenciais não são armazenadas no seu projeto Python. Em alternativa, o Artifact Registry procura credenciais pela seguinte ordem:
Credenciais padrão da aplicação (ADC), uma estratégia que procura credenciais pela seguinte ordem:
Credenciais definidas na variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
.Credenciais fornecidas pela conta de serviço predefinida do Compute Engine, do Google Kubernetes Engine, do Cloud Run, do App Engine ou das funções do Cloud Run.
Credenciais fornecidas pela CLI do Google Cloud, incluindo credenciais de utilizador do comando
gcloud auth application-default login
.
A variável GOOGLE_APPLICATION_CREDENTIALS
torna a conta para autenticação explícita, o que facilita a resolução de problemas. Se não usar a variável, verifique se todas as contas que o ADC possa usar têm as autorizações necessárias. Por exemplo, a conta de serviço predefinida para VMs do Compute Engine, nós do Google Kubernetes Engine e revisões do Cloud Run tem acesso apenas de leitura aos repositórios. Se
pretende fazer o carregamento a partir destes ambientes através da conta de serviço predefinida,
tem de modificar as autorizações.
Configurar porta-chaves
Para configurar a autenticação com o back-end do conjunto de chaves do Artifact Registry:
Instale a biblioteca 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 deve incluir
ChainerBackend(priority:10)
GooglePythonAuth(priority: 9)
Execute o seguinte comando para imprimir a configuração do repositório a 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 esta flag for omitida, é usado o projeto predefinido atual.
- REPOSITORY é o ID do repositório. Se configurou um repositório do Artifact Registry predefinido, este é usado quando esta flag é omitida do comando.
- LOCATION é a localização regional ou multirregional do repositório.
Adicione as seguintes definições ao ficheiro
.pypirc
. A localização predefinida é:- 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 referenciar com ferramentas como o Twine.
- PROJECT é o ID do projeto. Se esta flag for omitida, é usado o projeto predefinido atual.
- REPOSITORY é o ID do repositório. Se configurou um repositório do Artifact Registry predefinido, este é usado quando esta flag é omitida do comando.
- LOCATION é a localização regional ou multirregional do repositório.
- Linux e macOS:
Adicione o seu repositório ao ficheiro de configuração do pip. A localização do ficheiro depende de querer atualizar o ficheiro por utilizador ou o ficheiro específico de um ambiente virtual que está a usar.
Para o ficheiro associado ao utilizador do sistema operativo:
- 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 no seu repositório, use a definição
index-url
e certifique-se de que não existem outros índices de pacotes configurados com a definiçã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:
O seu ambiente Python está agora configurado para autenticar com o Artifact Registry.
Autenticação da base de dados de chaves com credenciais de utilizador
Depois de configurar o conjunto de chaves, pode usar o conjunto de chaves com as suas credenciais de utilizador na CLI gcloud. Inicie sessão na CLI do Google Cloud antes de se ligar a um repositório de pacotes Python.
Execute o seguinte comando:
gcloud auth login
Autenticação de Keyring com credenciais da conta de serviço
Depois de configurar o conjunto de chaves, pode configurar uma conta de serviço para autenticação.
- Crie uma conta de serviço ou escolha uma conta de serviço existente que use para automatização.
- Conceda a função do Artifact Registry específica à conta de serviço para fornecer acesso ao repositório.
Use uma das seguintes opções para fazer a autenticação com a sua conta de serviço:
Credenciais padrão da aplicação (recomendado)
Atribua a localização do ficheiro de chave da conta de serviço à variável
GOOGLE_APPLICATION_CREDENTIALS
para que o auxiliar de credenciais do Artifact Registry possa obter a sua chave quando se ligar a repositórios.export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
Credenciais da CLI gcloud
Antes de se ligar a um repositório, inicie sessão como conta de serviço. Evite esta opção se estiver a estabelecer ligação a repositórios a partir de VMs do Compute Engine, uma vez que o Artifact Registry encontra as credenciais da conta de serviço da VM antes das credenciais na CLI gcloud.
gcloud auth activate-service-account --key-file=KEY-FILE
Substitua KEY-FILE pelo caminho para o ficheiro de chave da conta de serviço.
Autenticação com uma chave de conta de serviço
Use esta abordagem quando precisar de autenticação com um nome de utilizador e uma palavra-passe.
As chaves de contas 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 a função do Artifact Registry mínima exigida pela conta de serviço. Por exemplo, atribua a função Leitor do Artifact Registry a uma conta de serviço que apenas transfere artefactos.
- Se os grupos na sua organização precisarem de diferentes níveis de acesso a repositórios específicos, conceda acesso ao nível do repositório e não ao nível do projeto.
- Siga as práticas recomendadas para gerir credenciais.
Para configurar a autenticação:
Crie uma conta de serviço para agir em nome da sua aplicação ou escolha uma conta de serviço existente que use para automatização.
Precisa da localização do ficheiro de chave da conta de serviço para configurar a autenticação com o Artifact Registry. Para contas existentes, pode ver as chaves e criar novas chaves na página Contas de serviço.
Conceda a função do Artifact Registry adequada à conta de serviço para fornecer acesso ao repositório.
Execute o seguinte comando para imprimir a configuração do repositório a adicionar ao seu 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 esta flag for omitida, é usado o projeto predefinido atual.
- REPOSITORY é o ID do repositório. Se configurou um repositório do Artifact Registry predefinido, este é usado quando esta flag é omitida do comando.
- LOCATION é a localização regional ou multirregional do repositório.
- KEY-FILE é o caminho para o ficheiro de chave JSON da conta de serviço.
Adicione as seguintes definições ao ficheiro
.pypirc
. A localização predefinida do ficheiro de configuração do pip por utilizador é:- 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 referenciar com ferramentas como o Twine.
- PROJECT é o ID do projeto. Se esta flag for omitida, é usado o projeto predefinido atual.
- REPOSITORY é o ID do repositório. Se configurou um repositório do Artifact Registry predefinido, este é usado quando esta flag é omitida do comando.
- LOCATION é a localização regional ou multirregional do repositório.
- KEY é a chave codificada em base64 no ficheiro de chave da conta de serviço.
- Linux e macOS:
Adicione o seu repositório ao ficheiro de configuração do pip. A localização do ficheiro de configuração do pip depende de querer atualizar o ficheiro por utilizador ou o ficheiro específico de um ambiente virtual que está a usar.
Para o ficheiro associado ao utilizador do sistema operativo:
- 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 seguinte linha ao ficheiro 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 ficheiro de chave da conta de serviço.
- A string
/simple/
no final do caminho do repositório indica que o repositório implementa a API Python Simple Repository.
- Unix: