Configurar a autenticação para Go

A autenticação no Artifact Registry é diferente para uploads 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.

  1. Application Default Credentials (ADC), uma estratégia que procura credenciais na seguinte ordem:

    1. Credenciais definidas na variável de ambiente GOOGLE_APPLICATION_CREDENTIALS.

    2. 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.

  2. Credenciais fornecidas pela Google Cloud CLI, incluindo credenciais de usuário de o 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 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 a autenticação você pode usar o auxiliar de credenciais do Go para atualizar os tokens em seu 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 oferece suporte aos seguintes métodos de autenticação ao usar no arquivo netrc:

Credenciais de curta duração (recomendado)
Usar a ferramenta auxiliar de credenciais do Go do Artifact Registry para atualizar os tokens de autenticação em seu arquivo netrc usando o método credenciais no seu ambiente ou adicionar manualmente as credenciais 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 o Artifact Registry Ferramenta auxiliar de credenciais do Go para adicionar o chave da conta de serviço não criptografada ao arquivo netrc ou adicioná-la manualmente ao o arquivo.
.

Antes de começar

  1. Instalar Ir versão 1.15 ou mais recente.
  2. Instale o complemento package-go-module da CLI gcloud:

    gcloud components install package-go-module

Configurar o ambiente Go

  1. Instrua Go para fazer o download de módulos do Artifact Registry, o aplicativo Go público proxy do módulo e, em seguida, source nessa ordem:

      export GOPROXY=https://LOCATION-go.pkg.dev/PROJECT/REPOSITORY,https://proxy.golang.org,direct
    

    Substitua:

    • LOCATION é regional ou multirregional. local do repositório.
    • PROJECT é seu Google Cloud ID do projeto.
    • REPOSITORY é o nome do repositório em que o é armazenado.
  2. 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 seu módulo ou por um 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

  1. Execute o comando a seguir para adicionar as credenciais do Artifact Registry ao seu netrc com o auxiliar 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 vírgula uma lista separada.
    • PATH_TO_JSON_KEY opcional. O caminho para sua conta de serviço de dados.

      O assistente de credenciais do Go adiciona configurações ao seu arquivo netrc para autenticação no Artifact Registry. Se você transmitir a sinalização --json_key, a chave será adicionada ao arquivo netrc para autenticação por senha.

  2. 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:

  1. 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".

    Acesse a página Contas de serviço

  2. Conceda o acesso papel do Artifact Registry para que a conta de serviço forneça o repositório acesso.

  3. Execute o comando a seguir para adicionar as credenciais da sua conta de serviço ao netrc com o auxiliar 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 vírgula uma lista separada.
    • PATH_TO_JSON_KEY é o caminho para o JSON da conta de serviço. arquivo de chave.

      O auxiliar de credenciais do Go adiciona a chave da conta de serviço ao seu netrc para autenticação por 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 ao arquivo 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 quiser fazer o download diretamente da fonte, adicione-os separados por vírgula. lista, conforme mostrado no exemplo a seguir:

  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.

Adicionar o auxiliar de credenciais do Go à sua lista GONOPROXY e executá-lo para configurar suas credenciais:

  1. Adicionar o auxiliar de credenciais do Go ao seu GONOPROXY

      export GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
    
  2. 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 regional ou multirregional local do seu repositório. Para adicionar vários locais, insira-os como um lista separada por vírgulas.

    O assistente de credenciais do Go adiciona configurações ao seu 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