Cette page a été traduite par l'API Cloud Translation.
Switch to English

Configurer l'authentification pour npm

Vous devez vous authentifier auprès d'Artifact Registry lorsque vous utilisez une application tierce pour vous connecter à un dépôt.

L'intégration aux services Google Cloud, tels que Cloud Build ou Google Kubernetes Engine, ne nécessite pas d'authentification. Toutefois, vous devez vérifier que les identités qui agissent pour le compte de ces services disposent des autorisations requises pour accéder aux dépôts.

La gestion des packages est disponible en version alpha. Elle n'est disponible que pour les utilisateurs alpha et peut ne pas inclure toutes les fonctionnalités disponibles pour la gestion des conteneurs. Pour demander à participer à la version alpha, remplissez le formulaire d'inscription. Pour en savoir plus, consultez la page Conditions d'accès aux fonctionnalités alpha.

Avant de commencer

  1. Si le dépôt cible n'existe pas, créez un dépôt.
  2. Si vous vous connectez aux dépôts à partir de Windows, installez PowerShell,
  3. (Facultatif) Configurez des valeurs par défaut pour les commandes gcloud si vous souhaitez vous connecter à un dépôt npm à partir de Windows.
  4. Créez un compte de service pour agir au nom de votre application.
  5. Si vous débutez avec npm, lisez la présentation pour en savoir plus sur les packages concernés et le fichier de configuration pour vos paramètres d'authentification.

Présentation

Artifact Registry est compatible avec les méthodes d'authentification suivantes.

Utiliser un assistant d'identification
Cette option offre la plus grande flexibilité. Lorsque vous incluez l'assistant dans votre configuration npm, Artifact Registry recherche les identifiants de compte de service dans l'environnement.
Spécifier une clé de compte de service en tant qu'identifiant
Utilisez cette option lorsqu'une application n'est pas compatible avec Identifiants par défaut de l'application, mais permet l'authentification avec un nom d'utilisateur et un mot de passe.

S'authentifier à l'aide d'un assistant d'identification

Lorsque vous utilisez l'assistant d'identification, vos identifiants ne sont pas stockés dans votre projet Node.js. À la place, Artifact Registry recherche les identifiants dans l'ordre suivant :

  1. Identifiants par défaut de l'application (ADC), stratégie qui recherche les identifiants dans l'ordre suivant :

    1. Identifiants définis dans la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS.

    2. Identifiants fournis par le compte de service par défaut pour Compute Engine, Google Kubernetes Engine, Cloud Run, App Engine ou Cloud Functions.

  2. Identifiants fournis par le SDK Cloud, y compris les identifiants utilisateur de la commande gcloud auth application-default login.

La variable GOOGLE_APPLICATION_CREDENTIALS rend le compte pour l'authentification explicite, ce qui facilite le dépannage. Si vous n'utilisez pas la variable, vérifiez que tous les comptes que l'ADC peut utiliser sont dotés des autorisations requises. Par exemple, le compte de service par défaut pour les VM Compute Engine, les nœuds Google Kubernetes Engine et les révisions Cloud Run disposent d'un accès en lecture seule aux dépôts. Si vous avez l'intention d'effectuer l'importation depuis ces environnements à l'aide du compte de service par défaut, vous devez modifier les autorisations.

Pour créer un compte de service et définir la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS, procédez comme suit:

  1. Créez un compte de service pour agir au nom de votre application ou sélectionnez un compte de service existant que vous utilisez pour l'automatisation CI/CD.

  2. Accordez le rôle Artifact Registry approprié au compte de service afin de fournir l'accès au dépôt.

  3. Attribuez l'emplacement du fichier de clé du compte de service à la variable GOOGLE_APPLICATION_CREDENTIALS afin que l'assistant d'identification Artifact Registry puisse obtenir votre clé lors de la connexion aux dépôts.

    export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
    

    KEY-FILE est le chemin d'accès au fichier de clé du compte de service.

Pour configurer l'authentification :

  1. Exécutez la commande suivante pour imprimer la configuration du dépôt à ajouter à votre projet Node.js. Si vous souhaitez stocker les paramètres dans le fichier de configuration global npm ou par utilisateur, vous devez inclure un champ d'application.

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

    Où :

    • PROJECT est l'ID de projet. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
    • REPOSITORY est l'ID du dépôt. Si vous avez configuré un dépôt Artifact Registry par défaut, il est utilisé lorsque cette option est omise dans la commande.
    • LOCATION est l'emplacement régional ou multirégional du dépôt.
    • SCOPE-NAME est le nom du champ d'application npm à associer au dépôt.

      Spécifiez ce champ d'application pour publier ou installer des packages à l'aide de ce dépôt. Les packages sans champ d'application sont associés à votre registre npm par défaut.

      Si vous ne spécifiez pas de champ d'application, la configuration renvoyée définit le dépôt en tant que registre npm par défaut.

  2. Ajoutez les paramètres de configuration renvoyés au fichier de configuration .npmrc du projet, qui se trouve dans le même répertoire que package.json.

  3. Si vous avez d'autres dépôts npm auxquels vous connecter, répétez les étapes précédentes pour obtenir les paramètres et les ajouter au fichier .npmrc.

Lorsque vous souhaitez vous connecter à un dépôt, actualisez le jeton d'accès pour l'authentification dans les 60 minutes suivant la connexion. google-artifactregistry-auth est une bibliothèque cliente qui met à jour les identifiants pour les dépôts Artifact Registry.

Pour actualiser les identifiants, utilisez l'une des options suivantes :

  • Utilisez npx directement pour actualiser le jeton d'accès. Si vous utilisez npm 5.2.0 ou une version ultérieure, il est inclus dans npm.

    1. Assurez-vous que les identifiants de connexion au registre npm public se trouvent dans votre fichier de configuration npm d'utilisateur ~/.npmrc.

    2. Exécutez la commande suivante dans le dossier situé au-dessus de votre projet Node.js.

      npx google-artifactregistry-auth PROJECT-NPMRC
      

      PROJECT-NPMRC est le chemin d'accès au fichier .npmrc dans le répertoire de votre projet.

      Vous devez exécuter la commande en dehors du répertoire de votre projet pour que npx utilise vos identifiants de registre npm public dans ~/.npmrc pour télécharger google-artifactregistry-auth.

  • Ajoutez un script au fichier package.json dans votre projet.

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

    Exécutez le script :

    npm run artifactregistry-login PROJECT-NPMRC
    

    PROJECT-NPMRC est le chemin d'accès au fichier .npmrc dans le répertoire de votre projet.

  • Pour les versions de npm antérieures à 5.2.0, procédez comme suit :

    1. Exécutez la commande suivante :

      npm install google-artifactregistry-auth --save-dev --registry https://registry.npmjs.org/
      
    2. Ajoutez-la à un script d'authentification :

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

    Exécutez le script :

    npm run artifactregistry-login PROJECT-NPMRC
    

    PROJECT-NPMRC est le chemin d'accès au fichier .npmrc dans le répertoire de votre projet.

Si vous n'avez pas spécifié de champ d'application avec la commande print-settings, vous pouvez exécuter la commande suivante pour associer un champ d'application à un dépôt Artifact Registry.

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

Configurer l'authentification par mot de passe

Utilisez cette approche lorsque votre application Node.js nécessite une authentification avec un nom d'utilisateur et un mot de passe donnés.

Les clés de compte de service sont des identifiants de longue durée. Suivez les instructions ci-dessous pour limiter l'accès à vos dépôts :

  • Envisagez d'utiliser un compte de service dédié pour interagir avec les dépôts.
  • Attribuez le rôle Artifact Registry minimal requis par le compte de service. Par exemple, attribuez le lecteur Artifact Registry à un compte de service qui télécharge les artefacts uniquement.
  • Si les groupes de votre organisation nécessitent différents niveaux d'accès à des dépôts spécifiques, accordez l'accès au niveau du dépôt plutôt qu'au niveau du projet.
  • Suivez les bonnes pratiques de gestion des identifiants.

Pour créer un compte de service et configurer l'authentification :

  1. Créez un compte de service pour agir au nom de votre application ou sélectionnez un compte de service existant que vous utilisez pour l'automatisation.

    Vous aurez besoin de l'emplacement du fichier de clé de compte de service pour configurer l'authentification avec Artifact Registry. Pour les comptes existants, vous pouvez afficher les clés et en créer sur la page "Comptes de service".

    Accéder à la page "Comptes de service"

  2. Accordez le rôle Artifact Registry approprié au compte de service afin de fournir l'accès au dépôt.

  3. Si vous souhaitez activer le compte de service dans la session du SDK Cloud actuelle, exécutez la commande suivante :

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

    Où :

    • ACCOUNT est l'utilisateur ou le compte de service.
    • KEY-FILE est le chemin d'accès au fichier de clé JSON du compte de service.
  4. Exécutez la commande suivante pour imprimer la configuration du dépôt à ajouter à votre projet Node.js. Si vous souhaitez stocker les paramètres dans le fichier de configuration global npm ou par utilisateur, vous devez inclure un champ d'application.

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

    Où :

    • PROJECT est l'ID de projet. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
    • REPOSITORY est l'ID du dépôt. Si vous avez configuré un dépôt Artifact Registry par défaut, il est utilisé lorsque cette option est omise dans la commande.
    • LOCATION est l'emplacement régional ou multirégional du dépôt.
    • SCOPE-NAME est le nom du champ d'application npm à associer au dépôt.

      Spécifiez ce champ d'application pour publier ou installer des packages à l'aide de ce dépôt. Les packages sans champ d'application sont associés à votre registre npm par défaut.

      Si vous ne spécifiez pas de champ d'application, la configuration renvoyée définit le dépôt en tant que registre npm par défaut.

    • KEY-FILE est le chemin d'accès au fichier de clé JSON du compte de service.

  5. Ajoutez les paramètres de configuration renvoyés au fichier de configuration .npmrc du projet, qui se trouve dans le même répertoire que package.json.

  6. Si vous avez d'autres dépôts npm auxquels vous connecter, répétez les étapes précédentes pour obtenir les paramètres et les ajouter au fichier .npmrc.

Étape suivante