Neste documento, descrevemos como configurar a autenticação em repositórios upstream do índice de pacotes Python (PyPI) para repositórios remotos do Artifact Registry.
Neste documento, presumimos que você já tenha criado um repositório remoto do Python do Artifact Registry e uma conta de PyPI.
Para mais informações sobre repositórios remotos, consulte a Visão geral de repositórios remotos.
Funções exigidas
Para receber as permissões necessárias para configurar a autenticação no PyPI para repositórios remotos, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:
-
Administrador do Artifact Registry (
roles/artifactregistry.admin
) -
Administrador do Secret Manager (
roles/secretmanager.admin
)
Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
Criar um token da API PyPI
- Faça login no PyPI.
- Crie um token de API.
Salvar o token da API em uma versão do secret
- Crie um secret no Secret Manager.
- Salve o token da API PyPI como uma versão secreta.
Conceda à conta de serviço do Artifact Registry acesso ao secret
O agente de serviço do Artifact Registry é uma conta serviço gerenciado pelo Google que atua em nome do Artifact Registry ao interagir com os serviços do Google Cloud. Para permitir que o agente de serviço use secrets armazenados no Secret Manager, conceda ao agente de serviço permissão para visualizar sua versão do secret.
O identificador do agente de serviço é:
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
PROJECT-NUMBER é o número do projeto do Google Cloud em que o Artifact Registry está em execução.
Para conceder ao agente de serviço do Artifact Registry o papel Acessador de secrets do Secret Manager:
Console
-
Acesse a página do Secret Manager no console do Google Cloud:
-
Na página do Gerenciador de secrets, clique na caixa de seleção ao lado do nome do secret.
-
Se ela ainda não estiver aberta, clique em Mostrar painel de informações para abrir o painel.
-
No painel de informações, clique em Adicionar participante.
-
Na área de texto Novos principais, digite os endereços de e-mail dos membros que você quer adicionar.
-
Na lista suspensa Selecionar um papel, escolha Secret Manager e depois Acessador de secrets do Secret Manager.
gcloud
$ gcloud secrets add-iam-policy-binding secret-id \
--member="member" \
--role="roles/secretmanager.secretAccessor"
Em que member é um membro do IAM, como um usuário, grupo ou conta de serviço.
C#
Para autenticar no Artifact Registry, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para autenticar no Artifact Registry, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para autenticar no Artifact Registry, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para autenticar no Artifact Registry, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
PHP
Para autenticar no Artifact Registry, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para autenticar no Artifact Registry, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Ruby
Para autenticar no Artifact Registry, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
API
Observação: diferentemente dos outros exemplos, isso substitui toda a política do IAM.
$ curl "https://secretmanager.googleapis.com/v1/projects/project-id/secrets/secret-id:setIamPolicy" \
--request "POST" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json" \
--data "{\"policy\": {\"bindings\": [{\"members\": [\"member\"], \"role\": \"roles/secretmanager.secretAccessor\"}]}}"
Para mais informações sobre como conceder ou revogar o acesso aos secrets, consulte Gerenciar o acesso aos secrets.
Adicionar credenciais PyPI ao repositório remoto
Para atualizar o repositório remoto com as credenciais PyPI:
Console
Abra a página Repositórios no console do Google Cloud.
Na lista de repositórios, selecione o repositório e clique em Editar repositório.
Na seção Modo de autenticação do repositório remoto, atualize ou adicione o nome de usuário PYPI
__token__
e a versão do secret que contém o token da API PyPI.
CLI da gcloud
Para atualizar o repositório remoto com as credenciais PyPI, execute o seguinte comando:
gcloud artifacts repositories update REPOSITORY \
--project=PROJECT_ID \
--location=LOCATION \
--remote-username=__token__ \
--remote-password-secret-version=projects/SECRET_PROJECT_ID/secrets/SECRET_ID/versions/SECRET_VERSION
Substitua:
REPOSITORY
pelo nome do repositório remoto do Artifact Registry.PROJECT_ID
pelo ID de projeto do Google Cloud;LOCATION
pelo local regional ou multirregional para o repositório. É possível omitir essa sinalização se você definir um padrão. Para ver uma lista de locais compatíveis, execute o comandogcloud artifacts locations list
.USERNAME
pelo nome de usuário do PyPI.SECRET_PROJECT_ID
pelo ID do projeto em que você criou o secret.SECRET_ID
pelo nome que você deu ao secret.SECRET_VERSION
pela versão do secret em que você salvou o token da API PyPI.
Suas credenciais serão usadas na próxima vez que o repositório remoto enviar uma solicitação para um artefato da origem upstream.