Contrôle des accès avec IAM

Cette page explique comment contrôler les autorisations et l'accès aux projets Memorystore pour Redis à l'aide de la gestion de l'authentification et des accès (IAM).

Présentation

Google Cloud propose IAM, qui vous permet d'attribuer un accès précis à des ressources spécifiques de Google Cloud et empêche tout accès non souhaité à d'autres ressources. Cette page décrit les rôles et les autorisations IAM de Memorystore pour Redis. Pour une description détaillée des rôles et des autorisations, consultez la documentation IAM.

Memorystore pour Redis fournit un ensemble de rôles prédéfinis conçus pour vous aider à contrôler facilement l'accès à vos ressources Redis. Si les rôles prédéfinis n'offrent pas les autorisations dont vous avez besoin, vous pouvez également créer vos propres rôles personnalisés. En outre, les anciens rôles de base (editeur, lecteur et propriétaire) restent disponibles, même s'ils ne permettent pas un contrôle aussi précis que les rôles Memorystore pour Redis. En particulier, les rôles de base fournissent un accès aux ressources pour l'ensemble des services Google Cloud, et pas seulement à Memorystore pour Redis. Pour en savoir plus sur les rôles de base, consultez la section Rôles de base.

Autorisations et rôles

Cette section récapitule les autorisations et les rôles associés à Memorystore pour Redis.

Rôles prédéfinis

Memorystore pour Redis fournit des rôles prédéfinis que vous pouvez utiliser pour attribuer des autorisations plus précises aux comptes principaux. Le rôle que vous attribuez à une entité principale définit les actions qu'elle peut entreprendre. Les entités principales peuvent être des individus, des groupes ou des comptes de service.

Vous pouvez attribuer plusieurs rôles à un même compte principal et, si vous disposez des autorisations nécessaires pour le faire, vous pouvez modifier à tout moment les rôles attribués à un compte principal.

Les rôles généraux incluent les rôles plus précis. Par exemple, le rôle d'éditeur Redis dispose non seulement de toutes les autorisations du rôle de lecteur Redis, mais également de ses autorisations spécifiques. De même, le rôle d'administrateur Redis inclut toutes les autorisations du rôle d'éditeur Redis ainsi que ses propres autorisations.

Les rôles de base (propriétaire, éditeur, lecteur) fournissent des autorisations pour l'ensemble des services Google Cloud. Les rôles propres à Memorystore pour Redis n'incluent que des autorisations Memorystore pour Redis, à l'exception des autorisations Google Cloud suivantes, nécessaires pour l'utilisation générale de Google Cloud :

resourcemanager.projects.get
resourcemanager.projects.list

Le tableau suivant répertorie les rôles prédéfinis disponibles pour Memorystore pour Redis, ainsi que les autorisations Memorystore pour Redis :

Rôle Nom Autorisations Redis Description

roles/owner

Propriétaire

redis.*

Accès complet à toutes les ressources Google Cloud, contrôle total sur ces ressources et gestion de l'accès des utilisateurs

roles/editor

Éditeur Toutes les autorisations redis , à l'exception de *.getIamPolicy et .setIamPolicy Accès en lecture/écriture à toutes les ressources Google Cloud et Redis (contrôle total, hormis la possibilité de modifier les autorisations)

roles/viewer

Lecteur

redis.*.get redis.*.list

Accès en lecture seule à toutes les ressources Google Cloud, y compris les ressources Redis

roles/redis.admin

Administrateur Redis

redis.*

Contrôle total sur toutes les ressources Memorystore pour Redis

roles/redis.editor

Éditeur Redis Toutes les autorisations redis, sauf

redis.instances.create redis.instances.delete redis.instances.upgrade redis.instances.import redis.instances.export redis.instances.updateAuth redis.instances.getAuthString redis.operations.delete

Gérer les instances Memorystore pour Redis création ou suppression d'instances impossible

roles/redis.viewer

Lecteur Redis Toutes les autorisations redis, sauf

redis.instances.create redis.instances.delete redis.instances.update redis.instances.upgrade redis.instances.import redis.instances.export redis.instances.updateAuth redis.instances.getAuthString redis.operations.delete

Accès en lecture seule à toutes les ressources Memorystore pour Redis.

Autorisations et rôles associés

Le tableau suivant répertorie toutes les autorisations disponibles pour Memorystore pour Redis et les rôles Memorystore pour Redis qui les incluent :

Autorisation Rôle Redis Rôle de base

redis.instances.list

Administrateur Redis
Éditeur Redis
Lecteur Redis
Reader

redis.instances.get

Administrateur Redis
Éditeur Redis
Lecteur Redis
Reader

redis.instances.create

Administrateur Redis Auteur

redis.instances.update

Administrateur Redis
Éditeur Redis
Auteur

redis.instances.updateAuth

Administrateur Redis Rédacteur

redis.instances.getAuthString

Administrateur Redis Rédacteur

redis.instances.delete

Administrateur Redis Rédacteur

redis.instances.upgrade

Administrateur Redis Rédacteur

redis.instances.import

Administrateur Redis Rédacteur

redis.instances.export

Administrateur Redis Auteur

redis.locations.list

Administrateur Redis
Éditeur Redis
Lecteur Redis
Reader

redis.locations.get

Administrateur Redis
Éditeur Redis
Lecteur Redis
Reader

redis.operations.list

Administrateur Redis
Éditeur Redis
Lecteur Redis
Reader

redis.operations.get

Administrateur Redis
Éditeur Redis
Lecteur Redis
Reader

redis.operations.delete

Administrateur Redis Auteur

Rôles personnalisés

Si les rôles prédéfinis ne répondent pas à vos exigences commerciales, vous pouvez définir des rôles personnalisés avec des autorisations que vous spécifiez. Pour ce faire, utilisez les rôles personnalisés dans IAM. Lorsque vous créez des rôles personnalisés pour Memorystore pour Redis, veillez à inclure à la fois resourcemanager.projects.get et resourcemanager.projects.list. Sinon, la console Google Cloud ne fonctionnera pas correctement pour Memorystore pour Redis. Pour en savoir plus, consultez la section Dépendances d'autorisation. Pour savoir comment créer un rôle personnalisé, consultez la page Créer un rôle personnalisé.

Autorisations requises pour effectuer des tâches courantes dans la console Google Cloud

Pour qu'un utilisateur puisse travailler avec Memorystore pour Redis à l'aide de la console Google Cloud, son rôle doit inclure les autorisations resourcemanager.projects.get et resourcemanager.projects.list.

Le tableau suivant fournit les autres autorisations requises pour certaines tâches courantes dans la console Google Cloud:

Tâche Autorisations supplémentaires requises
Afficher la page contenant la liste des instances

redis.instances.get
redis.instances.list

Créer et modifier une instance

redis.instances.create
redis.instances.get
redis.instances.list
compute.networks.list

Supprimer une instance

redis.instances.delete
redis.instances.get
redis.instances.list

Se connecter à une instance à partir de Cloud Shell

redis.instances.get
redis.instances.list
redis.instances.update

Afficher les informations sur les instances

redis.instances.get
monitoring.timeSeries.list

Importer et exporter des fichiers de sauvegarde au format RDB

redis.instances.import
redis.instances.export

Mettre à jour la version de Redis d'une instance

redis.instances.upgrade

Autorisations requises pour les commandes gcloud

Pour permettre à un utilisateur de travailler avec Memorystore pour Redis à l'aide des commandes gcloud, son rôle doit inclure les autorisations resourcemanager.projects.get et resourcemanager.projects.list.

Le tableau suivant répertorie les autorisations dont l'utilisateur appelant une commande gcloud doit disposer pour chaque sous-commande gcloud redis :

Command Autorisations requises
gcloud redis instances auth

redis.instances.updateAuth
redis.instances.getAuthString

gcloud redis instances create

redis.instances.get
redis.instances.create

gcloud redis instances delete

redis.instances.delete

gcloud redis instances update

redis.instances.get
redis.instances.update

gcloud redis instances list

redis.instances.list

gcloud redis instances describe

redis.instances.get

gcloud redis instances import

redis.instances.import

gcloud redis instances export

redis.instances.export

gcloud redis instances upgrade

redis.instances.upgrade

gcloud redis operations list

redis.operations.list

gcloud redis operations describe

redis.operations.get

gcloud redis regions list

redis.locations.list

gcloud redis regions describe

redis.locations.get

gcloud redis zones list

redis.locations.list

Autorisations requises pour les méthodes API

Le tableau suivant répertorie les autorisations dont l'appelant doit disposer pour appeler chaque méthode dans l'API Memorystore pour Redis ou pour effectuer des tâches à l'aide des outils Google Cloud qui exploitent cette API (tels que la console Google Cloud ou l'outil de ligne de commande gcloud):

Méthode Autorisations requises

locations.get

redis.locations.get

locations.list

redis.locations.list

instances.create

redis.instances.create

instances.delete

redis.instances.delete

instances.get

redis.instances.get

instances.list

redis.instances.list

instances.patch

redis.instances.update

instances.import

redis.instances.import

instances.export

redis.instances.export

instances.upgrade

redis.instances.upgrade

operations.get

redis.operations.get

operations.list

redis.operations.list

Compte de service Memorystore pour Redis

Chaque instance Memorystore pour Redis possède un compte de service qui lui permet de communiquer avec d'autres ressources Google Cloud.

Parfois (comme lors de l'exporting ou de l'utilisation de clés CMEK), vous devez parfois accorder des rôles ou des autorisations spécifiques au compte de service.

Format de compte de service Memorystore pour Redis

Le compte de service de votre instance utilise l'un des deux formats suivants, selon la date de création.

  • Le premier format est le suivant:

    [PROJECT_NUMBER]-compute@developer.gserviceaccount.com

  • Le second format est:

    service-[PROJECT_NUMBER]@cloud-redis.iam.gserviceaccount.com

Pour savoir quel compte de service utilise votre instance, consultez la section Afficher le compte de service de votre instance.

Problèmes connus

Parfois, un compte de service au format [PROJECT_NUMBER]-compute@developer.gserviceaccount.com peut entrer en conflit avec votre règle d'administration. Pour en savoir plus et connaître la procédure à suivre pour résoudre ces problèmes, consultez Problèmes liés à la règle d'administration du partage restreint de domaine.

Affichez le compte de service de votre instance:

Pour afficher le compte de service de votre instance, exécutez la commande suivante et notez le compte de service indiqué sous persistenceIamIdentity:

gcloud redis instances describe [INSTANCE_ID] --region=[REGION]

Autorisations de Redis AUTH

Le tableau suivant indique le nombre minimal d'autorisations dont un utilisateur a besoin pour effectuer certaines tâches de base Memorystore pour Redis AUTH.

Autorisations nécessaires Créer une instance Memorystore avec Redis AUTH activé Activer/Désactiver AUTH sur une instance Redis existante Afficher la chaîne AUTH Afficher si AUTH est activée/désactivée pour une instance Redis
redis.instances.create X X X
redis.instances.update X X X
redis.instances.get X X X
redis.instances.updateAuth X X
redis.instances.getAuthString X X X

Autorisations pour le chiffrement en transit

Le tableau ci-dessous présente les autorisations requises pour activer et gérer le chiffrement en transit pour Memorystore pour Redis.

Autorisations nécessaires Créer une instance Memorystore avec chiffrement en transit Télécharger l'autorité de certification
redis.instances.create X
redis.instances.get X

Autorisations liées aux stratégies de maintenance

Le tableau ci-dessous présente les autorisations requises pour gérer la stratégie de maintenance de Memorystore pour Redis.

Autorisations nécessaires Créer une instance Memorystore avec une stratégie de maintenance activée Créer ou modifier des stratégies de maintenance sur une instance Memorystore existante Afficher les paramètres des stratégies de maintenance Replanifier la maintenance
redis.instances.create X X X
redis.instances.update X X X
redis.instances.get X X X
redis.instances.rescheduleMaintenance X X X

Autorisations requises pour l'importation et l'exportation

L'utilisation de rôles personnalisés pour l'importation et l'exportation nécessite deux rôles personnalisés distincts. Un rôle personnalisé pour l'utilisateur et un rôle personnalisé supplémentaire pour le compte de service de l'instance Redis. Le rôle personnalisé du compte de service utilise des autorisations au niveau du bucket Cloud Storage.

Pour trouver le compte de service de votre instance, consultez Afficher le compte de service de votre instance.

Autorisations pour le compte de service

Notez que vous devez seulement accorder au compte de service des autorisations de stockage au niveau du bucket, et non au niveau de l'ensemble du projet. Pour obtenir des instructions, consultez la section Ajouter un compte principal à une stratégie au niveau du bucket.

Une fois que vous avez accordé des autorisations au niveau du bucket à votre compte de service, vous pouvez ignorer le message indiquant que "Memorystore ne peut pas vérifier si le compte de service xxxx@xxxx.gserviceaccount.com dispose des autorisations nécessaires pour importer/exporter. Pour obtenir de l'aide sur la vérification ou la mise à jour des autorisations, contactez l'administrateur de votre projet. Pour découvrir la liste des autorisations requises, consultez la documentation concernant les autorisations d'importation et d'exportation." Si vous appliquez les autorisations répertoriées ci-dessous aux rôles personnalisés du compte utilisateur et du compte de service, l'importation/exportation réussira.

Autorisations pour un rôle personnalisé pour le compte de service Importer avec gcloud Exporter avec gcloud Importer avec la console Google Cloud Exporter avec la console Google Cloud
storage.buckets.get
storage.objects.get X X
storage.objects.create X X
storage.objects.delete X Facultatif.
(accorde l'autorisation d'écraser le fichier RDB existant).
X Facultatif.
(accorde l'autorisation d'écraser le fichier RDB existant).

Autorisations pour le compte utilisateur

Autorisations pour un rôle personnalisé pour le compte utilisateur Importer avec gcloud Exporter avec gcloud Importer avec la console Google Cloud Exporter avec la console Google Cloud
resourcemanager.projects.get X X
redis.instances.get
redis.instances.list X X X X
redis.instances.import X X
redis.instances.export X X
redis.operations.get X
redis.operations.list X X
redis.operations.cancel
storage.buckets.list X X
storage.buckets.get X X
storage.objects.list X X
storage.objects.get X X

Étapes suivantes