Configurer l'authentification pour Helm

Cette page explique comment configurer Helm pour l'authentification auprès des dépôts Artifact Registry.

La compatibilité de Helm 3 avec les graphiques enregistrés en tant qu'images de conteneurs OCI est expérimentale. Pour en savoir plus sur les plans de Helm concernant la disponibilité générale de l'assistance OCI, consultez la page Proposition d'amélioration de la gestion de l'OMI par l'OCI.

Avant de commencer

  1. S'il n'existe pas de dépôt pour vos graphiques, créez un dépôt. Choisissez Docker comme format du dépôt.
  2. Installez et initialisez le SDK Cloud.
  3. (Facultatif) Configurez des valeurs par défaut pour les commandes gcloud.
  4. Installer Helm 3.7.1 ou version ultérieure

    Exécutez helm version pour vérifier votre version.

    Helm 3.7.0 a apporté des modifications qui ne sont pas rétrocompatibles avec les anciennes versions de Helm. Helm 3.7.1 peut extraire des graphiques OCI empaquetés avec des versions précédentes de Helm 3 et utiliser les commandes de chart qui ont été introduites dans Helm 3.7.0.

  5. Activez la compatibilité expérimentale de Helm pour les images OCI à l'aide de la variable HELM_EXPERIMENTAL_OCI. Ajoutez la ligne suivante à ~/.bashrc (ou à ~/.zshrc sous macOS, ou dans tout fichier où votre interface système stocke les variables d'environnement):

    export HELM_EXPERIMENTAL_OCI=1
    
  6. Exécutez la commande suivante pour charger vos paramètres mis à jour:

    • Basse: source ~/.bashrc
    • Interface système Z: source ~/.zshrc

Choisir une méthode d'authentification

Dans la plupart des situations, nous vous recommandons d'utiliser un compte de service pour vous authentifier auprès d'Artifact Registry.

Les comptes de service ne sont pas associés à un utilisateur spécifique. Les applications Google Cloud peuvent utiliser la stratégie des identifiants par défaut de l'application pour obtenir automatiquement des identifiants.

Les comptes de service des applications qui s'intègrent généralement à Artifact Registry, tels que Cloud Build ou Cloud Run, sont configurés par défaut avec des autorisations pour les dépôts d'un même projet. Vous n'avez pas besoin de configurer l'authentification Docker pour ces applications.

Les méthodes d'authentification suivantes sont disponibles :

Jeton d'accès
Les identifiants par défaut de l'application fournissent des jetons d'accès de courte durée qu'un compte de service utilise pour accéder à vos ressources Google Cloud. La méthode la plus sûre consiste à utiliser gcloud comme assistant d'identification.
Fichier de clé JSON

Une paire de clés gérée par l'utilisateur que vous pouvez utiliser comme identifiant pour un compte de service. Les identifiants étant de longue durée, il s'agit de l'option la moins sécurisée de toutes les méthodes d'authentification disponibles.

Dans la mesure du possible, utilisez un jeton d'accès pour réduire le risque d'accès non autorisé à vos artefacts.

Un jeton d'accès

Les jetons d'accès sont des jetons de courte durée qui permettent d'accéder à vos ressources Google Cloud. Comme le jeton est de courte durée, vous devez le demander moins d'une heure avant de l'utiliser pour vous connecter aux dépôts Artifact Registry.

Google Cloud obtient un jeton d'accès à l'aide des identifiants par défaut de l'application.

Pour utiliser un jeton d'accès :

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

  4. Obtenez un jeton d'accès en tant qu'identifiant lorsque vous vous authentifiez auprès d'Artifact Registry avec Docker.

    Linux/macOS

    Exécutez la commande suivante :

    gcloud auth application-default print-access-token | helm registry login -u oauth2accesstoken \
    --password-stdin https://LOCATION-docker.pkg.dev
    

    Windows

    Exécutez la commande suivante :

    gcloud auth application-default print-access-token
    ya29.8QEQIfY_...
    
    helm registry login -u oauth2accesstoken -p "ya29.8QEQIfY_..." \
    https://LOCATION-docker.pkg.dev
    

    Où :

    • oauth2accesstoken est le nom d'utilisateur à utiliser lors de l'authentification avec un jeton d'accès.
    • gcloud auth application-default print-access-token est la commande gcloud permettant d'obtenir le jeton d'accès associé au compte de service. Votre jeton d'accès est le mot de passe pour l'authentification.
    • LOCATION est l'emplacement régional ou multirégional du dépôt où l'image est stockée.

Helm est désormais authentifié auprès d'Artifact Registry.

Un fichier de clé JSON

Une clé de compte de service est une paire de clés à longue durée de vie que vous pouvez utiliser comme identifiant de compte de service. Vous êtes responsable de la sécurité de la clé privée et des autres opérations de gestion des clés, par exemple leur rotation.

Toute personne ayant accès à une clé privée valide pour un compte de service peut accéder aux ressources via le compte de service. Notez que le cycle de vie de l'accès de la clé au compte de service (et par conséquent, aux données auxquelles le compte de service a accès) est indépendant du cycle de vie de l'utilisateur ayant téléchargé la clé.

Suivez les instructions ci-dessous pour limiter l'accès à vos dépôts :

  • Créer des comptes de service dédiés permettant uniquement d'interagir avec les dépôts.
  • Accordez le rôle Artifact Registry spécifique à l'accès requis par le compte de service. Par exemple, un compte de service qui ne télécharge que des artefacts ne nécessite que le rôle de lecteur Artifact Registry.
  • Configurez les autorisations de vos comptes de service dédiés sur chaque dépôt plutôt qu'au niveau du projet. Vous pouvez ensuite spécifier l'accès en fonction du contexte du dépôt. Par exemple, un compte de service pour les compilations de développement peut avoir le rôle de lecteur Artifact Registry pour un dépôt de production et le rôle de rédacteur Artifact Registry pour un dépôt de préproduction.
  • Suivez les bonnes pratiques de gestion des identifiants.

Pour créer un nouveau compte de service et une clé de compte de service à n'utiliser qu'avec les dépôts Artifact Registry, 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.

    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. Vous avez la possibilité d'encoder tous les contenus du fichier de clé en base64.

    Linux

    base64 FILE-NAME > NEW-FILE-NAME
    

    macOS

    base64 -i FILE-NAME -o NEW-FILE-NAME
    

    Windows

    Base64.exe -e FILE-NAME > NEW-FILE-NAME
    

    FILE-NAME est le nom du fichier de clé d'origine et NEW-FILE-NAME est votre fichier de clé encodé en base64.

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

  4. Utilisez la clé de compte de service pour vous authentifier:

    Linux/macOS

    Exécutez la commande suivante :

    cat KEY-FILE | helm registry login -u KEY-TYPE --password-stdin \
    https://LOCATION-docker.pkg.dev
    

    Windows

    Exécutez la commande suivante :

    helm registry login -u KEY-TYPE --password-stdin https://LOCATION-docker.pkg.dev < KEY-FILE
    

    Où :

    • KEY-TYPE est l'un des éléments suivants :
      • _json_key si vous utilisez la clé du compte de service au format JSON tel qu'il a été fourni lors de la création du fichier.
      • _json_key_base64 si vous avez codé en base64 l'ensemble du contenu du fichier.
    • KEY-FILE est le nom du fichier de clé du compte de service au format JSON.
    • LOCATION est l'emplacement régional ou multirégional du dépôt où l'image est stockée.

Helm est désormais authentifié auprès d'Artifact Registry.

Étape suivante