É necessário se autenticar no Artifact Registry ao usar um aplicativo de terceiros para se conectar a um repositório.
Não é necessário configurar a autenticação para o Cloud Build ou Google Cloud ambientes de execução, como o Google Kubernetes Engine e o Cloud Run, mas é preciso verificar se as permissões necessárias estão configuradas.
O Node.js oferece dois métodos para autenticar solicitações ao repositório do Artifact Registry:
- Tokens de acesso: Use tokens de acesso quando a autenticação no aplicativo for gerenciada por um usuário humano.
- Autenticação por senha: Use essa opção quando um aplicativo não for compatível com Application Default Credentials, mas for compatível com autenticação com nome de usuário e senha.
Antes de começar
-
Instale a Google Cloud CLI. Após a instalação, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud initAo usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
- (Opcional) Configure padrões para comandos da CLI gcloud.
- Se você estiver se conectando a repositórios a partir do Windows, instale PowerShell.
- Crie uma conta de serviço para agir em nome do seu aplicativo.
- 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.
Gerar tokens para autenticação
Para autenticar seu pacote no Artifact Registry, primeiro gere um token de autenticação. Em seguida, use esse token ao fazer solicitações do pacote para o Artifact Registry.
É possível gerar um token de acesso oauth2 usando Google Cloud ou um
oauth2l token fora de Google Cloud.
Os tokens de acesso são válidos por 60 minutos. Gere um token de acesso pouco antes de executar comandos que interagem com repositórios. Se o token de acesso expirar, gere um novo.
Gerar um token usando o gcloud
Para gerar um oauth2 token de acesso usando Google Cloud, execute o seguinte
comando:
export ACCESS_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
Agora é possível referenciar ACCESS_TOKEN ao fazer solicitações do pacote Node.js para o Artifact Registry.
Gerar um token sem usar o gcloud
Para gerar um token de acesso usando apenas a CLI oauth2l, faça o seguinte:
Instale a versão mais recente do
oauth2lexecutando o seguinte comando:go install github.com/google/oauth2l@latestExecute este comando:
export ACCESS_TOKEN="oauth2l fetch --scope cloud-platform"Google Cloud gera um token de hash SHA256 e o armazena na variável
ACCESS_TOKEN. Agora é possível referenciarACCESS_TOKENao fazer solicitações do pacote Node.js para o Artifact Registry.
Configurar a autenticação por senha com chaves de conta de serviço
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:
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 específico do Artifact Registry à conta de serviço para fornecer acesso ao repositório.
Se você quiser ativar a conta de serviço na sessão atual da CLI gcloud, execute o comando:
gcloud auth activate-service-account ACCOUNT --key-file=KEY-FILEOnde
Execute o comando a seguir para imprimir a configuração do repositório:
gcloud artifacts print-settings npm [--project=PROJECT] \ [--repository=REPOSITORY] [--location=LOCATION] --scope=@SCOPE-NAME --json-key=KEY-FILEOnde
- 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 location do repositório.
SCOPE-NAME é o nome do escopo do npm a ser associado ao repositório.
O uso de escopos garante que você sempre publique e instale pacotes do repositório correto.
Pacotes sem escopo estão associados ao seu registro npm padrão, normalmente o registro público do npm. Se você não especificar um escopo, a configuração retornada definirá o repositório do Artifact Registry como o registro padrão. Isso pode causar problemas se os projetos do Node.js precisarem instalar pacotes do registro público do npm e do repositório do Artifact Registry.
KEY-FILE é o caminho para o arquivo de chaves JSON da conta de serviço .
Adicione as definições de configuração retornadas ao .npmrc arquivo de configuração nos projetos do Node.js. Esse arquivo geralmente está no mesmo diretório que
package.json. Inclua essas configurações em projetos do Node.js para pacotes que você publica, bem como projetos que vão instalar dependências do seu repositório npm.Se você tiver outros repositórios Node.js aos quais se conectar, repita as etapas anteriores para conseguir as configurações e adicioná-las ao arquivo
.npmrc.
A seguir
- Configure o acesso aos repositórios
- Saiba mais sobre como gerenciar repositórios
- Saiba mais sobre como gerenciar pacotes