A autenticação no Artifact Registry é diferente para upload e
download de módulos Go empacotados. Ao empacotar e fazer upload de um módulo Go para
Artifact Registry, a ferramenta CLI gcloud procura credenciais em
seu ambiente para configurar a autenticação na seguinte ordem, a menos que o
--json_key
é transmitida para usar uma chave de conta de serviço.
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 Funções do Google Kubernetes Engine, Cloud Run, App Engine ou Cloud Run oferece.
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 para
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, o
conta de serviço padrão para VMs do Compute Engine, nós do Google Kubernetes Engine
e as revisões do Cloud Run têm acesso somente leitura aos repositórios. Se você
pretendem fazer upload desses ambientes usando a conta de serviço padrão,
é necessário modificar as permissões.
Ao fazer o download de módulos Go empacotados para usar como dependências do Artifact Registry, o binário Go usa as credenciais no arquivo netrc para autenticar no Artifact Registry. Para simplificar o processo de autenticação, use o auxiliar de credenciais do Go para atualizar os tokens no arquivo netrc para autenticação no Artifact Registry.
O local do arquivo netrc pode ser definido com a variável de ambiente netrc.
Se a variável NETRC
não estiver definida, o comando go
lerá
$HOME/.netrc
em plataformas do tipo UNIX ou %USERPROFILE%\_netrc
no Windows.
O Artifact Registry é compatível com os seguintes métodos de autenticação ao usar credenciais no arquivo netrc:
- Credenciais de curta duração (recomendado)
- Use a ferramenta auxiliar de credenciais do Go do Artifact Registry para atualizar os tokens de autenticação no arquivo netrc usando as credenciais no ambiente ou adicione manualmente as credenciais do Artifact Registry ao arquivo netrc.
- Usar uma chave de conta de serviço
- Use esta opção quando não for possível usar credenciais no seu ambiente para autenticação. É possível usar a ferramenta de assistente de credenciais Go do Artifact Registry para adicionar a chave da conta de serviço não criptografada ao arquivo netrc ou adicioná-la manualmente ao arquivo.
Antes de começar
- Instale Go 1.15 ou mais recente.
Instale o complemento package-go-module da CLI gcloud:
gcloud components install package-go-module
Configurar o ambiente Go
Instrua o Go a fazer o download de módulos do Artifact Registry, do proxy de módulo Go público e da origem nesta ordem:
export GOPROXY=https://LOCATION-go.pkg.dev/PROJECT/REPOSITORY,https://proxy.golang.org,direct
Substitua:
- LOCATION é o local regional ou multirregional do repositório.
- PROJECT é o ID do projeto do Google Cloud.
- REPOSITORY é o nome do repositório em que o pacote está armazenado.
Evite que seu módulo seja verificado usando o banco de dados de checksum público:
export GONOSUMDB=MODULE_PATH_REGEX
Substitua MODULE_PATH_REGEX pelo caminho do módulo ou por uma expressão regular se quiser excluir vários módulos.
Por exemplo, para impedir que o módulo
example.com/foo
seja verificado usando No banco de dados público de soma de verificação, execute o seguinte comando:export GONOSUMDB=example.com/foo
O comando a seguir exclui todos os módulos com caminhos de módulo começando em
example.com
sejam verificados usando o banco de dados de soma de verificação público:export GONOSUMDB=example.com/*
Adicione as credenciais do Artifact Registry ao arquivo netrc
Execute o comando a seguir para adicionar as credenciais do Artifact Registry ao arquivo netrc com o utilitário de ajuda de credenciais do Go:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \ add-locations --locations=LOCATION \ --json_key=PATH_TO_JSON_KEY
Em que:
- LOCATION é regional ou multirregional. local do seu repositório. Para adicionar vários locais, insira-os como uma lista separada por vírgulas.
PATH_TO_JSON_KEY opcional. O caminho para a chave da sua conta de serviço.
O auxiliar de credenciais Go adiciona configurações ao arquivo netrc para autenticação no Artifact Registry. Se você transmitir a sinalização
--json_key
, a chave será adicionada ao arquivo netrc para a autenticação por senha.
Se você estiver usando credenciais de curta duração para autenticação para o Artifact Registry, atualize seu token OAuth executando o seguinte comando antes de usar o módulo como dependência:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 refresh
Como autenticar com uma chave de conta de serviço
Use essa abordagem quando 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 adicionar as credenciais da conta de serviço ao arquivo netrc com o utilitário de ajuda de credenciais do Go:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \ add-locations --locations=LOCATION \ --json_key=PATH_TO_JSON_KEY
Em que:
- LOCATION é o local regional ou multirregional do repositório. Para adicionar vários locais, insira-os como uma lista separada por vírgulas.
PATH_TO_JSON_KEY é o caminho para o JSON da conta de serviço. arquivo de chave.
O assistente de credencial Go adiciona a chave da conta de serviço ao arquivo netrc para autenticação de senha.
Também é possível adicionar manualmente a chave da conta de serviço ao arquivo netrc no seguinte formato:
machine LOCATION.pkg.dev
login _json_key_base64
password KEY
Substitua:
- LOCATION com o modelo regional ou multirregional local do seu repositório.
- KEY pela chave codificada em Base64 no arquivo de chave da conta de serviço.
Adicionar o auxiliar de credenciais do Go a GONOPROXY
Antes de usar o auxiliar de credenciais do Go, ele precisa ser adicionado à lista GONOPROXY
para forçar o Go a fazer o download dele diretamente do GitHub. Se você tiver outros módulos
que quer fazer o download diretamente da fonte, adicione-os em uma lista separada por vírgulas,
conforme mostrado no exemplo abaixo:
export GONOPROXY=MODULE_PATH1, MODULE_PATH2
Em que MODULE_PATH1 e MODULE_PATH2 são caminhos de módulos dos quais você quer fazer o download da origem.
Para adicionar o assistente de credenciais do Go à lista GONOPROXY
e executá-lo para configurar
as credenciais:
Adicionar o auxiliar de credenciais do Go ao seu
GONOPROXY
export GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
Execute o comando a seguir para adicionar as credenciais do Artifact Registry ao seu netrc com a ferramenta de pacote do módulo Go:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \ add-locations --locations=LOCATION \ [--json_key=path/to/service/account/key.json]
Em que LOCATION é o local regional ou multirregional do repositório. Para adicionar vários locais, insira-os como uma lista separada por vírgulas.
O auxiliar de credenciais Go adiciona configurações ao arquivo netrc para autenticação no Artifact Registry. Se você transmitir a sinalização
--json_key
, a chave será adicionada seu arquivo netrc para autenticação por senha.
A seguir
- Confira o Início rápido.
- Gerenciar módulos Go.