A autenticação no Artifact Registry é diferente para o carregamento e o
download de módulos Go em pacote. Quando cria um pacote e carrega um módulo Go para o Artifact Registry, a ferramenta CLI gcloud procura credenciais no seu ambiente para configurar a autenticação pela seguinte ordem, a menos que a flag --json_key
seja transmitida para usar uma chave de conta de serviço.
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.
Quando transfere módulos Go compactados para usar como dependências do Artifact Registry, o binário Go usa as credenciais no seu ficheiro netrc para autenticar no Artifact Registry. Para simplificar o processo de autenticação, pode usar o auxiliar de credenciais do Go para atualizar os tokens no ficheiro netrc para autenticação no Artifact Registry.
A localização do ficheiro netrc pode ser definida com a variável de ambiente netrc.
Se a variável NETRC
não estiver definida, o comando go
lê
$HOME/.netrc
em plataformas semelhantes ao UNIX ou %USERPROFILE%\_netrc
no Windows.
O Artifact Registry suporta os seguintes métodos de autenticação quando usa credenciais no seu ficheiro 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 seu ficheiro netrc com as credenciais no seu ambiente ou adicione manualmente as suas credenciais do Artifact Registry ao ficheiro netrc.
- Use uma chave de conta de serviço
- Use esta opção quando não puder usar credenciais no seu ambiente para autenticação. Pode usar a ferramenta auxiliar de credenciais do Go do Artifact Registry para adicionar a chave da conta de serviço não encriptada ao seu ficheiro netrc ou adicioná-la manualmente ao ficheiro.
Antes de começar
- Instale o Go 1.15 ou posterior.
Instale o suplemento da CLI gcloud package-go-module:
gcloud components install package-go-module
Configure o ambiente Go
Indique ao Go para transferir módulos do Artifact Registry, do proxy de módulos Go público e, em seguida, da origem nessa ordem:
export GOPROXY=https://LOCATION-go.pkg.dev/PROJECT/REPOSITORY,https://proxy.golang.org,direct
Substitua o seguinte:
- LOCATION é a localização regional ou multirregional do repositório.
- PROJECT é o seu Google Cloud ID do projeto.
- REPOSITORY é o nome do repositório onde o pacote está armazenado.
Exclua o seu módulo da verificação através da base de dados de checksums pública:
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 excluir o módulo
example.com/foo
da verificação através da base de dados de somas de verificação públicas, execute o seguinte comando:export GONOSUMDB=example.com/foo
O comando seguinte exclui todos os módulos com caminhos de módulos que começam em
example.com
da verificação através da base de dados de somas de verificação públicas:export GONOSUMDB=example.com/*
Adicione credenciais do Artifact Registry ao seu ficheiro netrc
Execute o seguinte comando para adicionar as suas credenciais do Artifact Registry ao ficheiro netrc com o auxiliar de credenciais do Go:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.4.0 \ add-locations --locations=LOCATION \ --json_key=PATH_TO_JSON_KEY
Onde:
- LOCATION é a localização regional ou multirregional do seu repositório. Para adicionar várias localizações, introduza-as como uma lista separada por vírgulas.
PATH_TO_JSON_KEY Opcional. O caminho para a chave da conta de serviço.
O auxiliar de credenciais do Go adiciona definições ao seu ficheiro netrc para autenticação no Artifact Registry. Se passar o comando
--json_key
, a chave é adicionada ao seu ficheiro netrc para autenticação de palavra-passe.
Se estiver a usar credenciais de curta duração para autenticar no Artifact Registry, tem de atualizar o seu token OAuth executando o seguinte comando antes de usar o seu módulo como uma dependência:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.4.0 refresh
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 adicionar as credenciais da sua conta de serviço ao ficheiro netrc com o auxiliar de credenciais do Go:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.4.0 \ add-locations --locations=LOCATION \ --json_key=PATH_TO_JSON_KEY
Onde:
- LOCATION é a localização regional ou multirregional do seu repositório. Para adicionar várias localizações, introduza-as como uma lista separada por vírgulas.
PATH_TO_JSON_KEY é o caminho para o ficheiro de chave JSON da conta de serviço.
O auxiliar de credenciais do Go adiciona a chave da conta de serviço ao ficheiro netrc para a autenticação por palavra-passe.
Também é possível adicionar manualmente a chave da conta de serviço ao ficheiro netrc no seguinte formato:
machine LOCATION.pkg.dev
login _json_key_base64
password KEY
Substitua o seguinte:
- LOCATION com a localização regional ou multirregional do seu repositório.
- KEY com a chave codificada em base64 no ficheiro de chave da conta de serviço.
Adicione o auxiliar de credenciais do Go a GONOPROXY
Antes de usar o auxiliar de credenciais do Go, tem de o adicionar à lista GONOPROXY
para forçar o Go a transferi-lo diretamente do GitHub. Se tiver outros módulos que queira transferir diretamente da origem, pode adicioná-los numa lista separada por vírgulas, conforme mostrado no exemplo seguinte:
export GONOPROXY=MODULE_PATH1, MODULE_PATH2
Onde MODULE_PATH1 e MODULE_PATH2 são caminhos de módulos a transferir da origem.
Para adicionar o auxiliar de credenciais do Go à sua lista GONOPROXY
e executá-lo para configurar as suas credenciais:
Adicione o auxiliar de credenciais do Go ao seu
GONOPROXY
export GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
Execute o seguinte comando para adicionar as suas credenciais do Artifact Registry ao ficheiro netrc com a ferramenta de pacotes de módulos Go:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.4.0 \ add-locations --locations=LOCATION \ [--json_key=path/to/service/account/key.json]
Onde LOCATION é a localização regional ou multirregional do seu repositório. Para adicionar várias localizações, introduza-as como uma lista separada por vírgulas.
O auxiliar de credenciais do Go adiciona definições ao seu ficheiro netrc para autenticação no Artifact Registry. Se passar a flag
--json_key
, a chave é adicionada ao seu ficheiro netrc para autenticação por palavra-passe.
O que se segue?
- Experimente o início rápido.
- Faça a gestão dos módulos Go.