Sécuriser l'accès à vos clusters à l'aide de l'authentification de base basée sur des jetons

En plus de l'authentification IAM (Identity and Access Management), vous pouvez utiliser l'authentification de base basée sur des jetons pour sécuriser l'accès à vos clusters dans Memorystore for Redis Cluster. Solution légère, l'authentification de base basée sur des jetons permet aux clients de valider leur identité dans vos applications à l'aide de leurs jetons.

L'authentification de base basée sur des jetons nécessite un minimum de ressources et une faible surcharge de ressources. De plus, si vos charges de travail actuelles sur Memorystore pour Redis ou vos applications sur site utilisent déjà l'authentification de base basée sur des jetons, cette fonctionnalité facilite la transition lorsque vous migrez vers Memorystore for Redis Cluster.

Avantages

L'authentification de base basée sur des jetons présente les avantages suivants :

  • Flexibilité : pour les clusters nouveaux et existants, activez l'authentification à tout moment. Lorsque vous activez l'authentification de base basée sur des jetons, vos clusters sont sécurisés. Pour toutes les nouvelles connexions, les utilisateurs doivent fournir un jeton pour s'authentifier auprès de vos clusters.
  • Rotation sans temps d'arrêt : faites pivoter les jetons utilisateur sans provoquer de temps d'arrêt pour vos applications.
  • Compatibilité : le super-utilisateur default conserve les mêmes droits que ceux qui lui sont accordés. L'authentification de base basée sur des jetons ajoute une couche de protection supplémentaire. Cela garantit la rétrocompatibilité lorsque vous migrez vos charges de travail de Memorystore pour Redis vers Memorystore for Redis Cluster.

Modes d'authentification

L'authentification de base basée sur des jetons est compatible avec deux modes d'authentification principaux :

  • Authentification simple : méthode simple dans laquelle un utilisateur envoie un jeton d'authentification pour s'authentifier en tant qu'utilisateur default
  • Authentification multi-utilisateur : gérez plusieurs utilisateurs pour authentifier l'accès à vos clusters

Bonnes pratiques

Pour des raisons de sécurité, nous vous recommandons de suivre les bonnes pratiques suivantes pour l'authentification de base basée sur des jetons :

  • Faites pivoter les jetons utilisateur : utilisez une stratégie de rotation pour les jetons utilisateur.
  • Utilisez Secret Manager : ne codez pas en dur les identifiants d'authentification de base basés sur des jetons d'un utilisateur dans le code de votre application. Stockez-les plutôt dans Secret Manager et récupérez-les au moment de l'exécution.

    Secret Manager fournit un coffre-fort chiffré et centralisé pour les identifiants utilisateur, ce qui élimine la prolifération des secrets et réduit la surcharge opérationnelle liée à la gestion manuelle des identifiants. Il applique des contrôles d'accès à l'aide d'IAM et génère automatiquement des journaux d'audit. Cela garantit la conformité et empêche l'exposition des identifiants.

  • Associez l'authentification de base basée sur des jetons à TLS (Transport Layer Security): lorsque vous utilisez l'authentification de base basée sur des jetons, nous vous recommandons d'activer le chiffrement en transit. Cela garantit que les noms d'utilisateur et les jetons ne sont pas envoyés en texte brut sur le réseau.

Avant de commencer

Avant de commencer à sécuriser vos clusters à l'aide de l'authentification de base basée sur des jetons, remplissez les conditions préalables décrites dans cette section.

Vérifier la compatibilité du client avec l'authentification de base basée sur des jetons

Pour vérifier que vos applications clientes sont compatibles avec l'authentification de base basée sur des jetons, assurez-vous qu'elles peuvent utiliser la commande AUTH.

L'utilisateur default s'authentifie auprès de vos applications clientes à l'aide de la commande suivante :

AUTH TOKEN

Pour cette commande, TOKEN est le jeton d'authentification de l'utilisateur par défaut.

Tous les autres utilisateurs s'authentifient à l'aide de la commande suivante :

AUTH USERNAME TOKEN

Pour cette commande, USERNAME et TOKEN sont le nom d'utilisateur et le jeton d'authentification de l'utilisateur.

Pour en savoir plus sur la commande AUTH, consultez AUTH dans la documentation Redis.

Utiliser la Google Cloud console, la Google Cloud CLI et les API

Pour utiliser la Google Cloud console, la gcloud CLI et les API, procédez comme suit :

  1. Dans la Google Cloud console, sur la page de sélection du projet, sélectionnez ou créez un Google Cloud projet.

    Accéder au sélecteur de projet

  2. Assurez-vous que la facturation est activée pour votre projet. Découvrez comment vérifier si la facturation est activée sur un projet.
  3. Installez et initialisez la Google Cloud CLI (gcloud CLI).

    Remarque : Si vous avez installé la gcloud CLI, assurez-vous que vous disposez de la dernière version en exécutant gcloud components update. Pour accéder aux commandes gcloud CLI de Memorystore for Redis Cluster, vous devez disposer au moins de la version 489.0.0 de la gcloud CLI.

  4. Activez l'API Memorystore for Redis Cluster.
    API Memorystore for Redis Cluster
  5. Activez l'API Network Connectivity.
    API Network Connectivity
  6. Activez l'API Service Consumer Management.
    API Service Consumer Management

Attribuer des rôles

Pour configurer l'authentification de base basée sur des jetons pour vos clusters, vous devez disposer de l'un des rôles IAM suivants dans votre Google Cloud projet :

  • roles/redis.admin (rôle Administrateur Redis)
  • roles/owner (rôle Propriétaire)
  • roles/editor (rôle Éditeur)

Gérer l'authentification de base basée sur des jetons pour les clusters

Memorystore for Redis Cluster est compatible avec les actions suivantes pour gérer l'authentification de base basée sur des jetons pour les clusters :

Créer un cluster avec l'authentification de base basée sur des jetons

En créant un cluster avec l'authentification de base basée sur des jetons, vous disposez d'une méthode légère et largement compatible pour limiter l'accès d'un utilisateur au cluster.

Vous pouvez créer le cluster à l'aide de la gcloud CLI.

Pour créer un cluster avec l'authentification de base basée sur des jetons activée, utilisez la gcloud beta redis clusters create commande.

gcloud beta redis clusters create CLUSTER_ID \
--region=REGION \
--auth-mode=token-auth

Effectuez les remplacements suivants :

  • CLUSTER_ID : ID du cluster que vous souhaitez créer pour utiliser l'authentification de base basée sur des jetons
  • REGION : région dans laquelle vous souhaitez que le cluster soit situé

Activer l'authentification de base basée sur des jetons pour un cluster

En activant l'authentification de base basée sur des jetons pour un cluster, vous disposez d'une méthode légère et largement compatible pour limiter l'accès d'un utilisateur au cluster.

L'utilisateur default peut s'authentifier auprès du cluster en utilisant uniquement son jeton. Tous les autres utilisateurs s'authentifient à l'aide d'un nom d'utilisateur et d'un jeton standards. Pour en savoir plus, consultez Vérifier la compatibilité du client avec l'authentification de base basée sur des jetons.

L'activation de l'authentification de base basée sur des jetons peut entraîner des temps d'arrêt pour les applications qui tentent de créer des connexions, car Memorystore for Redis Cluster nécessite des requêtes authentifiées. Bien que les connexions existantes ne soient pas affectées, vous devez mettre à jour vos applications pour utiliser l'authentification de base basée sur des jetons pour toute tentative de connexion ultérieure au cluster. Pour en savoir plus, consultez Se connecter à un cluster à l'aide de l'authentification de base basée sur des jetons.

Vous pouvez activer l'authentification de base basée sur des jetons pour un cluster à l'aide de la gcloud CLI.

Pour activer l'authentification de base basée sur des jetons, utilisez la gcloud beta redis clusters update commande.

gcloud beta redis clusters update CLUSTER_ID \
--region=REGION \
--auth-mode=token-auth

Effectuez les remplacements suivants :

  • CLUSTER_ID : ID du cluster pour lequel vous souhaitez activer l'authentification de base basée sur des jetons
  • REGION : région dans laquelle se trouve le cluster

Créer un utilisateur d'authentification de base basée sur des jetons pour un cluster

En créant un utilisateur d'authentification de base basée sur des jetons pour un cluster, vous configurez le cluster pour autoriser l'authentification multi-utilisateur. Une fois que l'utilisateur s'est connecté initialement, ce mode d'authentification sert d'identifiant sécurisé et révocable pour les nouvelles connexions. L'utilisateur peut continuer à utiliser le jeton d'authentification jusqu'à ce qu'il le supprime ou qu'il soit supprimé.

Vous pouvez créer un utilisateur d'authentification de base basée sur des jetons à l'aide de la gcloud CLI.

Pour créer l'utilisateur, utilisez la gcloud beta redis clusters create-token-auth-user commande.

gcloud beta redis clusters create-token-auth-user CLUSTER_ID \
--region=REGION \
--token-auth-user=USERNAME

Effectuez les remplacements suivants :

  • CLUSTER_ID : ID du cluster pour lequel vous souhaitez créer un utilisateur d'authentification de base basée sur des jetons
  • REGION : région dans laquelle se trouve le cluster
  • USERNAME : nom d'utilisateur de l'utilisateur

Répertorier les utilisateurs d'authentification de base basée sur des jetons pour un cluster

Vous pouvez récupérer la liste des utilisateurs d'authentification de base basée sur des jetons pour un cluster à l'aide de la gcloud CLI.

Pour répertorier les utilisateurs, utilisez la gcloud beta redis clusters token-auth-users list commande.

gcloud beta redis clusters token-auth-users list \
--cluster=CLUSTER_ID \
--region=REGION

Effectuez les remplacements suivants :

  • CLUSTER_ID : ID du cluster pour lequel vous souhaitez récupérer une liste des utilisateurs d'authentification de base basée sur des jetons.
  • REGION : région dans laquelle se trouve le cluster

Afficher des informations sur un utilisateur d'authentification de base basée sur des jetons

Vous pouvez afficher des informations sur un utilisateur d'authentification de base basée sur des jetons à l'aide de la gcloud CLI.

Pour afficher des informations sur l'utilisateur, utilisez la gcloud beta redis clusters token-auth-users describe commande.

gcloud beta redis clusters token-auth-users describe USERNAME \
--cluster=CLUSTER_ID \
--region=REGION

Effectuez les remplacements suivants :

  • USERNAME : nom d'utilisateur de l'utilisateur d'authentification de base basée sur des jetons pour lequel vous souhaitez afficher des informations
  • CLUSTER_ID : ID du cluster auprès duquel l'utilisateur peut s'authentifier
  • REGION : région dans laquelle se trouve le cluster

Supprimer un utilisateur d'authentification de base basée sur des jetons d'un cluster

En supprimant un utilisateur d'authentification de base basée sur des jetons d'un cluster, vous révoquez les droits d'accès de l'utilisateur au cluster.

Vous pouvez supprimer un utilisateur d'authentification de base basée sur des jetons d'un cluster à l'aide de la gcloud CLI.

Pour supprimer l'utilisateur, utilisez la gcloud beta redis clusters token-auth-users delete commande.

gcloud beta redis clusters token-auth-users delete USERNAME \
--cluster=CLUSTER_ID \
--region=REGION

Effectuez les remplacements suivants :

  • USERNAME : nom d'utilisateur de l'utilisateur d'authentification de base basée sur des jetons
  • CLUSTER_ID : ID du cluster à partir duquel vous souhaitez supprimer l' utilisateur
  • REGION : région dans laquelle se trouve le cluster

Pour l'utilisateur que vous supprimez, Memorystore for Redis Cluster ne met pas fin aux connexions existantes. Pour mettre fin à ces connexions, exécutez la commande suivante sur tous les nœuds du cluster :

CLIENT KILL USER USERNAME

Gérer l'authentification de base basée sur des jetons pour les utilisateurs

Memorystore for Redis Cluster est compatible avec les actions suivantes pour gérer l'authentification de base basée sur des jetons pour les utilisateurs :

Créer un jeton d'authentification pour un utilisateur

En créant un jeton d'authentification pour un utilisateur, vous pouvez faire pivoter le jeton existant de l'utilisateur sans provoquer de temps d'arrêt pour vos applications.

Vous pouvez créer un jeton d'authentification pour un utilisateur à l'aide de la gcloud CLI.

Pour créer l'utilisateur, utilisez la gcloud beta redis clusters token-auth-users create-auth-token commande.

gcloud beta redis clusters token-auth-users create-auth-token USERNAME \
--cluster=CLUSTER_ID \
--region=REGION

Effectuez les remplacements suivants :

  • USERNAME : nom d'utilisateur pour lequel vous souhaitez créer un jeton d'authentification
  • CLUSTER_ID : ID du cluster auquel l'utilisateur peut accéder à l'aide du jeton
  • REGION : région dans laquelle se trouve le cluster

Répertorier les jetons d'authentification pour un utilisateur

Vous pouvez récupérer la liste des jetons d'authentification pour un utilisateur à l'aide de la gcloud CLI.

Pour répertorier les jetons, utilisez la gcloud beta redis clusters token-auth-users auth-tokens list commande.

gcloud beta redis clusters token-auth-users auth-tokens list \
--token-auth-user=USERNAME \
--cluster=CLUSTER_ID \
--region=REGION

Effectuez les remplacements suivants :

  • USERNAME : nom d'utilisateur auquel appartiennent les jetons d'authentification
  • CLUSTER_ID : ID du cluster auquel l'utilisateur peut accéder à l'aide des jetons d'authentification
  • REGION : région dans laquelle se trouve le cluster

Afficher des informations sur un jeton d'authentification pour un utilisateur

Vous pouvez afficher des informations sur un jeton d'authentification pour un utilisateur à l'aide de la gcloud CLI.

Pour afficher les informations, utilisez la gcloud beta redis clusters token-auth-users auth-tokens describe commande.

gcloud beta redis clusters token-auth-users auth-tokens describe AUTH_TOKEN \
--cluster=CLUSTER_ID \
--region=REGION \
--token-auth-user=USERNAME

Effectuez les remplacements suivants :

  • AUTH_TOKEN : nom du jeton d'authentification pour lequel vous souhaitez afficher des informations
  • CLUSTER_ID : ID du cluster auquel l'utilisateur peut accéder à l'aide du jeton
  • REGION : région dans laquelle se trouve le cluster
  • USERNAME : nom d'utilisateur auquel appartient le jeton d'authentification

Supprimer un jeton d'authentification d'un utilisateur

La suppression d'un jeton d'authentification d'un utilisateur est une action de sécurité essentielle qui invalide le jeton.

Vous pouvez supprimer un jeton d'authentification d'un utilisateur à l'aide de la gcloud CLI.

Pour supprimer le jeton, utilisez la gcloud beta redis clusters token-auth-users auth-tokens delete commande.

gcloud beta redis clusters token-auth-users auth-tokens delete AUTH_TOKEN \
--cluster=CLUSTER_ID \
--region=REGION \
--token-auth-user=USERNAME

Effectuez les remplacements suivants :

  • AUTH_TOKEN : nom du jeton d'authentification que vous souhaitez supprimer de l'utilisateur
  • CLUSTER_ID : ID du cluster auquel vous souhaitez empêcher l'utilisateur d'accéder en supprimant le jeton
  • REGION : région dans laquelle se trouve le cluster
  • USERNAME : nom d'utilisateur dont vous souhaitez supprimer le jeton

Se connecter à un cluster à l'aide de l'authentification de base basée sur des jetons

Vous pouvez utiliser les méthodes suivantes pour vous connecter à un cluster à l'aide de l'authentification de base basée sur des jetons :

  • Chaîne d'URI (Uniform Resource Identifier) : cette chaîne unique et formatée est utilisée par souci de commodité, car toutes les informations de connexion nécessaires (par exemple, le nom d'utilisateur et le jeton de l'utilisateur, ainsi que l'adresse IP et le nom d'hôte du cluster) sont contenues dans une seule chaîne.
  • Indicateurs : cette méthode est plus adaptée à l'utilisation d'outils de ligne de commande individuels usage, aux scripts ou aux environnements dans lesquels la configuration est divisée en variables d'environnement distinctes à l'aide de plusieurs arguments distincts.

Les sections suivantes expliquent chaque méthode de connexion.

Utiliser une chaîne d'URI

Pour vous connecter à partir d'une VM Compute Engine ou d'un environnement compatible à l'aide d'une chaîne d'URI, utilisez la commande suivante :

redis-cli -u
redis://USERNAME:TOKEN@IP_ADDRESS:PORT

Effectuez les remplacements suivants :

  • USERNAME : nom d'utilisateur de l'utilisateur qui tente de se connecter au cluster
  • TOKEN : jeton d'authentification de l'utilisateur
  • IP_ADDRESS : adresse IP du cluster
  • PORT : numéro de port réservé au cluster

Utiliser des indicateurs

Pour vous connecter à partir d'une VM Compute Engine ou d'un environnement compatible à l'aide d'indicateurs, utilisez la commande suivante :

redis-cli --user USERNAME -a TOKEN -h IP_ADDRESS -p PORT

Effectuez les remplacements suivants :

  • USERNAME : nom d'utilisateur de l'utilisateur qui tente de se connecter au cluster
  • TOKEN : jeton d'authentification de l'utilisateur
  • IP_ADDRESS : adresse IP du cluster
  • PORT : numéro de port réservé au cluster

Faire pivoter le jeton d'authentification d'un utilisateur sans temps d'arrêt

Pour faire pivoter le jeton d'authentification d'un utilisateur sans provoquer de temps d'arrêt pour vos applications, procédez comme suit :

  1. Créez un jeton d'authentification supplémentaire pour l'utilisateur: Memorystore for Redis Cluster génère un deuxième jeton valide. Les deux jetons sont valides.
  2. Mettez à jour vos applications : mettez à jour vos applications pour qu'elles utilisent le nouveau jeton.
  3. Supprimez le jeton d'authentification de l'utilisateur: Memorystore for Redis Cluster supprime le premier jeton. L'utilisateur ne peut utiliser que le deuxième jeton pour s'authentifier auprès de vos applications.

Accéder aux journaux pour l'authentification de base basée sur des jetons

Memorystore for Redis Cluster génère des journaux d'audit pour les activités d'administration et pour les accès aux données pour les opérations associées aux jetons d'authentification et aux utilisateurs. Pour en savoir plus sur ces journaux d'audit, consultez Surveiller l'accès à l'aide des journaux d'audit.