Contrôle des accès

Cette page explique comment contrôler l'accès aux instances Filestore.

  • Avec le protocole NFSv4.1, vous pouvez utiliser Kerberos pour sécuriser l'accès aux instances Filestore. Pour en savoir plus, consultez la section À propos des protocoles compatibles.

  • Vous pouvez également utiliser les options Linux pour contrôler l'accès NFS et Identity and Access Management (IAM) pour contrôler l'accès aux opérations d'instance, telles que la création, la modification, l'affichage et la suppression d'instances. Le guide suivant vous explique comment effectuer chacune de ces tâches.

Paramètres d'exportation du partage de fichiers

Un partage de fichiers Filestore se voit attribuer les paramètres /etc/exports par défaut suivants :

  • La liste de clients, qui identifie les clients autorisés à se connecter au partage de fichiers, contient toutes les adresses IP internes du réseau VPC que vous avez sélectionné pour l'instance Filestore. Toutes les adresses IP internes peuvent être comprises dans la plage des plages de sous-réseaux. Toutefois, si vous avez des clients sur des plages de sous-réseaux non RFC 1918, vous devez explicitement leur accorder l'accès à l'instance Filestore à l'aide du contrôle des accès basé sur les adresses IP.
  • L'option rw étant utilisée, le partage de fichiers permet les opérations de lecture et d'écriture.
  • L'option de mappage d'ID utilisateur no_root_squash est utilisée, de sorte que tous les utilisateurs et groupes, y compris l'utilisateur racine, devraient être identiques sur l'instance Filestore et sur le client.
  • Toutes les autres options utilisent les valeurs par défaut /etc/exports.

Instances de niveau de base

Les instances de SSD et de HDD de base créent un partage exporté intitulé /config/google-prober, qui permet de prendre en charge les processus de sondage internes, qui à leur tour vérifient l'accès, la durabilité ou les performances. Le partage est exporté vers une liste de clients accessible uniquement à l'adresse IP de l'instance, à l'aide des mêmes paramètres que ceux indiqués dans la section précédente. Le partage est accessible uniquement aux sondes hébergées sur l'instance ou provenant de celle-ci, et est inaccessible en dehors de l'instance. L'instance exporte le partage, que le contrôle des accès basé sur les adresses IP soit appliqué ou non. Les utilisateurs peuvent voir le partage exporté à l'aide de la commande showmount -e.

Contrôle des accès basé sur les adresses IP

Vous pouvez modifier ces paramètres d'exportation en créant des règles de contrôle des accès à l'aide de la console Google Cloud ou en spécifiant un fichier de configuration JSON lors de la création de l'instance à l'aide de gcloud CLI. Pour en savoir plus, consultez la section Configurer le contrôle des accès basé sur les adresses IP.

Vous pouvez également ajouter de nouvelles règles de contrôle d'accès ou modifier les règles existantes après la création d'une instance. Pour en savoir plus, consultez la section Modifier des instances.

Autorisations de partage de fichiers

Lorsque vous créez une instance Filestore, le partage de fichiers pour cette instance dispose des autorisations de fichier POSIX par défaut rwxr-xr-x. Ces autorisations signifient que sur une instance Filestore, seuls les utilisateurs racine sur les clients connectés ont un accès en lecture et en écriture au partage de fichiers. Les autres utilisateurs ont uniquement un accès en lecture par défaut. Les utilisateurs racine du client peuvent modifier les autorisations et les propriétaires.

Configurer l'accès sur un partage de fichiers

Lors de l'installation d'un partage de fichiers, vous pouvez utiliser les options d'installation et les paramètres /etc/fstab pour déterminer si le partage de fichiers est accessible en écriture et si fichiers peuvent y être exécutés. Après avoir installé le partage de fichiers, vous pouvez utiliser les commandes Linux standards telles que chmod et setfacl pour définir les autorisations associées aux fichiers et au partage de fichiers. Seuls les niveaux de base sont compatibles avec setfacl.

Définir des autorisations cohérentes

Nous vous recommandons vivement de définir des autorisations cohérentes pour chaque utilisateur sur tous les clients qui se connectent à la même instance Filestore afin d'éviter toute élévation des privilèges. Si un partage de fichiers est installé sur plusieurs clients et qu'un utilisateur dispose de privilèges racine sur un client mais pas sur les autres, le scénario d'élévation des privilèges suivant est possible:

  • Un utilisateur définit l'attribut setuid sur un fichier exécutable à partir du client où il a un accès racine.
  • L'utilisateur importe ensuite le fichier exécutable dans le partage de fichiers.
  • L'utilisateur exécute le fichier importé en tant qu'utilisateur racine sur tout client pour lequel il dispose au moins d'une autorisation de lecture.

Ce scénario est possible, car le bit setuid permet à l'utilisateur d'exécuter un fichier en utilisant les autorisations du propriétaire du fichier, qui est dans ce cas racine.

Autorisations qui se chevauchent

Les instances zonales, régionales et d'entreprise sont désormais compatibles avec les autorisations qui se chevauchent.

Si deux règles de contrôle des accès distinctes sont définies pour des sous-réseaux d'adresses IP qui se chevauchent, la règle définie pour le sous-réseau le plus petit est prioritaire.

Par exemple, si un fichier de configuration JSON contient une règle accordant un accès en lecture et en écriture au sous-réseau d'adresses IPv4 10.0.0.0/24 et qu'une règle distincte accorde un accès en lecture seule au sous-réseau d'adresses IPv4 10.0.0.0/28, Filestore reconnaît et applique d'abord la règle pour le sous-réseau plus petit. L'autre règle est ensuite appliquée aux parties restantes du sous-réseau d'adresses IP défini. Dans cet exemple, un client utilisant l'adresse IPv4 10.0.0.20 se voit accorder des autorisations de lecture et d'écriture, tandis qu'un client utilisant 10.0.0.12 se voit accorder des autorisations en lecture seule:

   {
  "--file-share":
    {
      "capacity": "2048",
      "name": "my_vol",
      "nfs-export-options": [
        {
          "access-mode": "READ_WRITE",
          "ip-ranges": [
            "10.0.0.0/24"
          ],
          "squash-mode": "ROOT_SQUASH",
          "anon_uid": 1003,
          "anon_gid": 1003
        },
         {
          "access-mode": "READ_ONLY",
          "ip-ranges": [
            "10.0.0.0/28"
          ],
          "squash-mode": "NO_ROOT_SQUASH"
        }
      ]
    }
}

Certaines restrictions s'appliquent:

  • Les autorisations qui se chevauchent pour des sous-réseaux IPv4 identiques ne sont pas acceptées et renvoient une erreur.

  • Les autorisations qui se chevauchent ne sont pas acceptées pour les instances SSD de base ni pour les instances HDD de base.

Étape suivante