Contrôle des accès

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

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 chaque adresse IP interne du réseau VPC que vous avez sélectionné pour l'instance Filestore. Les adresses IP internes peuvent correspondre à n'importe quelle plage répertoriée dans les plages de sous-réseaux. Toutefois, si vous avez des clients sur des plages de sous-réseaux non-RFC 1918, vous devez leur accorder explicitement l'accès à l'instance Filestore à l'aide du contrôle des accès basé sur les adresses IP.
  • Comme l'option rw est utilisée, le partage de fichiers autorise 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 SSD de base et les instances HDD de base créent un partage exporté nommé /config/google-prober, qui sert à faciliter les processus de vérification internes, qui vérifient l'accès, la durabilité ou les performances. Le partage est exporté vers une liste de clients rendue accessible uniquement à l'adresse IP de l'instance, avec les mêmes paramètres que ceux indiqués dans la section précédente. Le partage est accessible uniquement aux vérificateurs hébergés sur l'instance ou en provenance de celle-ci, et il est inaccessible en dehors de celle-ci. 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 la gcloud CLI. Pour en savoir plus, consultez la page 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/é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 de partage de fichiers et 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.

Chevauchement d'autorisations

Les instances zonales (anciennement SSD à grande échelle) 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 les sous-réseaux d'adresses IP qui se chevauchent, la règle définie pour le sous-réseau 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 pour le sous-réseau d'adresses IPv4 10.0.0.0/24, et qu'une autre règle 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 compatibles avec les instances SSD de base ou HDD de base.

Étapes suivantes