Esta página foi traduzida pela API Cloud Translation.
Switch to English

Como configurar a autenticação do NPM

É necessário se autenticar no Artifact Registry ao usar um aplicativo de terceiros para se conectar a um repositório.

A integração com os serviços do Google Cloud, como o Cloud Build ou o Google Kubernetes Engine, não requer autenticação. No entanto, é necessário verificar se as identidades que atuam em nome desses serviços têm as permissões necessárias para acessar repositórios.

O gerenciamento de pacotes está em Alfa. Ele só está disponível para usuários Alfa e pode não incluir todos os recursos disponíveis para o gerenciamento de contêineres. Para se inscrever no Alfa, preencha o formulário de inscrição. Para mais informações, consulte Requisitos para acessar recursos Alfa.

Antes de começar

  1. Se não existir um repositório de destino, crie um novo repositório.
  2. Se você estiver se conectando a repositórios a partir do Windows, instale o PowerShell.
  3. (Opcional) Configure padrões para comandos gcloud. Se quiser se conectar a um repositório npm do Windows.
  4. Crie uma conta de serviço para agir em nome do seu aplicativo.
  5. Se você não conhece o npm, leia a visão geral para saber mais sobre pacotes com escopo e o arquivo de configuração para suas configurações de autenticação.

Visão geral

O Artifact Registry é compatível com os seguintes métodos de autenticação.

usar um auxiliar de credenciais;
Essa opção oferece a maior flexibilidade. Quando você inclui o auxiliar na configuração do npm, o Artifact Registry busca credenciais da conta de serviço no ambiente.
Como especificar uma chave de conta de serviço como uma credencial
Use esta opção quando um aplicativo não for compatível com credenciais de aplicativo padrão, mas for compatível com autenticação com nome de usuário e senha.

Como autenticar com um auxiliar de credenciais

Quando você usa o auxiliar de credenciais npm, suas credenciais não são armazenadas no projeto Node.js. Em vez disso, o Artifact Registry busca credenciais na seguinte ordem:

  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 pelo SDK do Cloud, incluindo credenciais de usuário do comando gcloud auth application-default login.

A variável GOOGLE_APPLICATION_CREDENTIALS torna a conta explícita para autenticação, 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, a conta de serviço padrão para VMs do Compute Engine, os nós do Google Kubernetes Engine e as revisões do Cloud Run têm acesso somente leitura aos repositórios. Se você pretende fazer upload para esses ambientes usando a conta de serviço padrão, modifique as permissões.

Para criar uma conta de serviço e definir a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS:

  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 sua automação de CI/CD.

  2. Conceda o papel apropriado do Artifact Registry à conta de serviço para fornecer acesso ao repositório.

  3. Atribua o local do arquivo de chave da conta de serviço à variável GOOGLE_APPLICATION_CREDENTIALS para que o auxiliar de credenciais do Artifact Registry possa conseguir sua chave ao se conectar com os repositórios.

    export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
    

    Em que KEY-FILE é o caminho para o arquivo de chave da conta de serviço.

Para configurar a autenticação:

  1. Execute o comando a seguir para imprimir a configuração do repositório para adicioná-la ao projeto Node.js. Se quiser armazenar as configurações no arquivo de configuração global ou por usuário do npm, inclua um escopo.

    gcloud artifacts print-settings npm [--project=PROJECT] \
    [--repository=REPOSITORY] [--location=LOCATION]
    --scope=@SCOPE-NAME
    

    Onde

    • PROJECT é o ID do projeto; Se essa sinalização for omitida, o projeto atual ou padrão será usado.
    • REPOSITORY é o ID do repositório. Se você tiver configurado um repositório do Artifact Registry padrão, ele será usado quando essa sinalização for omitida no comando.
    • LOCATION é o local regional ou multirregional do repositório.
    • SCOPE-NAME é o nome do escopo do npm a ser associado ao repositório.

      Você especifica esse escopo para publicar ou instalar pacotes usando este repositório. Pacotes sem escopo estão associados ao seu registro npm padrão.

      Se você não especificar um escopo, a configuração retornada definirá o repositório como seu registro npm padrão.

  2. Adicione as definições de configuração retornadas ao arquivo de configuração .npmrc do projeto, que está no mesmo diretório que package.json.

  3. Se você tiver outros repositórios npm aos quais se conectar, repita as etapas anteriores para conseguir as configurações e adicioná-las ao arquivo .npmrc.

Quando você quiser se conectar a um repositório, atualize o token de acesso para autenticação dentro de 60 minutos após a conexão. google-artifactregistry-auth é uma biblioteca de cliente que atualiza credenciais para repositórios do Artifact Registry.

Para atualizar as credenciais, use uma destas opções:

  • Use npx diretamente para atualizar o token de acesso. Se você estiver usando o npm 5.2.0 ou mais recente, ele estará incluído no npm.

    1. Verifique se as credenciais para se conectar ao registro npm público estão no arquivo de configuração do npm do usuário, ~/.npmrc.

    2. Execute o seguinte comando na pasta acima do projeto Node.js.

      npx google-artifactregistry-auth PROJECT-NPMRC
      

      Em que PROJECT-NPMRC é o caminho para o arquivo .npmrc no diretório do projeto.

      Você precisa executar o comando fora do diretório do projeto para que npx use as credenciais públicas de registro npm em ~/.npmrc para fazer o download de google-artifactregistry-auth.

  • Adicione um script ao arquivo package.json no seu projeto.

    "scripts": {
     "artifactregistry-login": "npx google-artifactregistry-auth"
    }
    

    Execute o script:

    npm run artifactregistry-login PROJECT-NPMRC
    

    Em que PROJECT-NPMRC é o caminho para o arquivo .npmrc no diretório do projeto.

  • Para versões do NPM anteriores à 5.2.0, siga estas etapas:

    1. Execute o comando:

      npm install google-artifactregistry-auth --save-dev --registry https://registry.npmjs.org/
      
    2. Adicione-o a um script de autenticação:

    "scripts": {
        "artifactregistry-login": "./node_modules/.bin/artifactregistry-auth",
    }
    

    Execute o script:

    npm run artifactregistry-login PROJECT-NPMRC
    

    Em que PROJECT-NPMRC é o caminho para o arquivo .npmrc no diretório do projeto.

Se você não especificou um escopo com o comando print-settings, é possível executar o comando a seguir para associar um escopo a um repositório do Artifact Registry.

npm config set @SCOPE_NAME:registry https://LOCATION-npm.pkg.dev/PROJECT/REPOSITORY/

Como configurar a autenticação por senha

Use essa abordagem quando o aplicativo Node.js exigir autenticação com um nome de usuário e uma senha especificados.

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 criar uma conta de serviço e 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".

    Acessar a página "Contas de serviço"

  2. Conceda o papel apropriado do Artifact Registry à conta de serviço para fornecer acesso ao repositório.

  3. Se você quiser ativar a conta de serviço na sessão atual do SDK do Cloud, execute o comando:

    gcloud auth activate-service-account ACCOUNT --key-file=KEY-FILE
    

    Onde

    • ACCOUNT é a conta de usuário ou de serviço.
    • KEY-FILE é o caminho para o arquivo de chaves JSON da conta de serviço.
  4. Execute o comando a seguir para imprimir a configuração do repositório para adicioná-la ao projeto Node.js. Se quiser armazenar as configurações no arquivo de configuração global ou por usuário do npm, inclua um escopo.

    gcloud artifacts print-settings npm [--project=PROJECT] \
    [--repository=REPOSITORY] [--location=LOCATION] --scope=@SCOPE-NAME --json-key=KEY-FILE
    

    Onde

    • PROJECT é o ID do projeto; Se essa sinalização for omitida, o projeto atual ou padrão será usado.
    • REPOSITORY é o ID do repositório. Se você tiver configurado um repositório do Artifact Registry padrão, ele será usado quando essa sinalização for omitida no comando.
    • LOCATION é o local regional ou multirregional do repositório.
    • SCOPE-NAME é o nome do escopo do npm a ser associado ao repositório.

      Você especifica esse escopo para publicar ou instalar pacotes usando este repositório. Pacotes sem escopo estão associados ao seu registro npm padrão.

      Se você não especificar um escopo, a configuração retornada definirá o repositório como seu registro npm padrão.

    • KEY-FILE é o caminho para o arquivo de chaves JSON da conta de serviço.

  5. Adicione as definições de configuração retornadas ao arquivo de configuração .npmrc do projeto, que está no mesmo diretório que package.json.

  6. Se você tiver outros repositórios npm aos quais se conectar, repita as etapas anteriores para conseguir as configurações e adicioná-las ao arquivo .npmrc.

A seguir