NFS
NFS est un protocole de système de fichiers distribué qui est une norme IETF ouverte définie dans la norme RFC (Request for Comments) qui permet à quiconque d'implémenter le protocole.
Les volumes dans Google Cloud NetApp volumes sont partagés aux clients NFS en exportant un chemin accessible à un client ou à un ensemble de clients. Les autorisations de montage de ces exportations sont définies par des règles et des règles d'exportation qui sont configurables par les administrateurs Google Cloud NetApp volumes.
L'implémentation NFS de NetApp est considérée comme une norme Gold pour le protocole et elle est utilisée dans d'innombrables environnements NAS d'entreprise. Ces sections couvrent NFS ainsi que des fonctionnalités de sécurité spécifiques disponibles dans Google Cloud NetApp volumes et expliquent comment elles sont implémentées.
Utilisateurs et groupes UNIX locaux par défaut
Google Cloud NetApp volumes contient plusieurs utilisateurs et groupes UNIX par défaut pour diverses fonctionnalités de base. Ces utilisateurs et ces groupes ne peuvent actuellement pas être modifiés ou supprimés. Actuellement, les nouveaux utilisateurs et groupes locaux ne peuvent pas être ajoutés aux volumes Google Cloud NetApp. Les utilisateurs et groupes UNIX hors des utilisateurs et des groupes par défaut doivent être fournis par un service de noms LDAP externe.
Le tableau suivant indique les utilisateurs et groupes par défaut et leurs ID numériques correspondants. NetApp recommande de ne pas créer de nouveaux utilisateurs ou groupes dans LDAP ou sur les clients locaux qui utilisent à nouveau ces ID numériques.
Utilisateurs par défaut : ID numériques | Groupes par défaut : ID numériques |
---|---|
|
|
Lors de l'utilisation de NFSv4.1, l'utilisateur root peut s'afficher comme personne lors de l'exécution des commandes de liste de répertoires sur les clients NFS. Ceci est dû à la configuration du mappage de domaine d'ID du client. Voir la section appelée NFSv4.1 et personne utilisateur/groupe pour plus de détails sur ce problème et sur la façon de le résoudre. |
L'utilisateur root
Sous Linux, le compte racine a accès à toutes les commandes, fichiers et dossiers d'un système de fichiers Linux. En raison de la puissance de ce compte, les bonnes pratiques en matière de sécurité exigent souvent que l'utilisateur root soit désactivé ou restreint d'une façon ou d'une autre. Dans les exportations NFS, le pouvoir qu'un utilisateur root possède sur les fichiers et les dossiers peut être contrôlé dans Google Cloud NetApp volumes par le biais de règles et de règles d'export, ainsi que par le concept de « squash racine ».
L'écrasement des racines garantit que l'utilisateur root qui accède à un montage NFS est écrasé par l'utilisateur numérique anonyme 65534 (voir la section «L'utilisateur anonyme») et n'est actuellement disponible que si vous utilisez NetApp volumes-Performance en sélectionnant Désactivé pour l'accès racine lors de la création de la règle d'export-policy. Si l'utilisateur root est écrasé par l'utilisateur anonyme, il n'a plus accès à l'exécution de chown ou "commandes setuid/setgid (le bit collant)" sur des fichiers ou dossiers dans le montage NFS, et les fichiers ou dossiers créés par l'utilisateur root affichent l'UID anon comme propriétaire/groupe. En outre, les ACL NFSv4 ne peuvent pas être modifiés par l'utilisateur root. Cependant, l'utilisateur root a toujours accès aux fichiers chmod et supprimés pour lesquels il n'a pas d'autorisations explicites. Si vous souhaitez limiter l'accès aux autorisations de fichiers et de dossiers d'un utilisateur root, envisagez d'utiliser un volume avec des ACL NTFS, de créer un utilisateur Windows nommé root
et d'appliquer les autorisations souhaitées aux fichiers ou dossiers.
L'utilisateur anonyme
L'ID utilisateur anonyme (anon) spécifie un ID utilisateur UNIX ou un nom d'utilisateur qui est mappé aux requêtes client qui arrivent sans identifiants NFS valides. Cela peut inclure l'utilisateur racine lorsque le squaing racine est utilisé. L'utilisateur anon dans Google Cloud NetApp volumes est 65534.
Cet UID est généralement associé au nom d'utilisateur nobody
ou nfsnobody
dans les environnements Linux. Les volumes Google Cloud NetApp utilisent également la version 65534 en tant qu'utilisateur local UNIX` pcuser` (voir la section «Utilisateurs et groupes UNIX locaux par défaut»), qui est également l'utilisateur de secours par défaut pour les mappages de noms Windows à UNIX lorsqu'aucun utilisateur UNIX valide ne peut être trouvé dans LDAP.
En raison des différences de noms d'utilisateurs entre Linux et Google Cloud NetApp volumes pour UID 65534, la chaîne de nom des utilisateurs mappée sur 65534 peut ne pas correspondre avec NFSv4.1. Par conséquent, vous pouvez voir nobody
en tant qu'utilisateur sur certains fichiers et dossiers. Reportez-vous à la section «NFSv4.1 et personne utilisateur/groupe» pour plus d'informations sur ce problème et pour savoir comment le résoudre.
Contrôle d'accès/exportations
L'accès initial aux exportations/partages pour les montages NFS est contrôlé par le biais de règles d'export policy basées sur les hôtes, figurant dans une export policy. Une adresse IP hôte, un nom d'hôte, un sous-réseau, un groupe réseau ou un domaine sont définis pour permettre l'accès au montage du partage NFS et le niveau d'accès autorisé à l'hôte. Les options de configuration des règles d'export dépendent du niveau de Google Cloud NetApp volumes.
Pour NetApp volumes-SW, les options suivantes sont disponibles pour la configuration export-policy :
-
Correspondance client. liste d'adresses IP séparées par des virgules, liste de noms d'hôte séparés par des virgules, sous-réseaux, groupes réseau, noms de domaine.
-
Règles d'accès RO/RW. Sélectionnez lecture/écriture ou lecture seule pour contrôler le niveau d'accès à l'exportation.NetApp volumes-Performance propose les options suivantes :
-
Correspondance client. liste d'adresses IP séparées par des virgules, liste de noms d'hôte séparés par des virgules, sous-réseaux, groupes réseau, noms de domaine.
-
Règles d'accès RO/RW. sélectionnez lecture/écriture ou lecture seulement pour contrôler le niveau d'accès à l'exportation.
-
Accès racine (activé/désactivé). configure le squash racine (voir la section «L'utilisateur root« pour plus de détails).
-
Type de protocole. cette option limite l'accès au montage NFS à une version de protocole spécifique. Lorsque vous spécifiez à la fois NFS v3 et NFS v4.1 pour le volume, laissez les deux vides ou cochez les deux cases.
-
Niveau de sécurité Kerberos (lorsque l'option Activer Kerberos est sélectionnée). fournit les options de krb5, krb5i et/ou krb5p pour l'accès en lecture seule ou en lecture/écriture.
Changer la propriété (chown) et le groupe de changement (chgrp)
NFS sur Google Cloud NetApp volumes permet uniquement à l'utilisateur root d'exécuter chown/chgrp sur des fichiers et des dossiers. Les autres utilisateurs voient une Operation not permitted
erreur, même sur les fichiers qu'ils possèdent. Si vous utilisez la racine de squash (comme couvert dans la section «L'utilisateur root»), la racine est écrasée à un utilisateur non root et n'est pas autorisé à accéder à chown et chgrp. Il n'existe actuellement aucune solution de contournement dans Google Cloud NetApp volumes pour autoriser chown et chgrp pour les utilisateurs non root. Si des modifications de propriété sont requises, envisagez d'utiliser des volumes à double protocole et définissez le style de sécurité sur NTFS pour contrôler les autorisations du côté Windows.
Gestion des autorisations
Google Cloud NetApp volumes prend en charge les deux bits de mode (par exemple, 644, 777, etc. Pour rwx) et les listes de contrôle d'accès NFSv4.1 pour contrôler les autorisations sur les clients NFS pour les volumes qui utilisent le style de sécurité UNIX. La gestion des autorisations standard est utilisée pour ces clients (tels que chmod, chown ou nfs4_setfacl) et avec n'importe quel client Linux qui les prend en charge.
En outre, lors de l'utilisation de volumes à double protocole définis sur NTFS, les clients NFS peuvent utiliser le mappage des noms de Google Cloud NetApp volumes vers les utilisateurs Windows, qui sont ensuite utilisés pour résoudre les autorisations NTFS. Pour cela, une connexion LDAP à Google Cloud NetApp volumes doit fournir une traduction entre ID numérique et nom d'utilisateur, car Google Cloud NetApp volumes nécessite un nom d'utilisateur UNIX valide pour être mappé correctement à un nom d'utilisateur Windows.
Fournissant des listes de contrôle d'accès granulaires pour NFSv3
Les autorisations bits du mode couvrent uniquement le propriétaire, le groupe et tous les autres éléments de la sémantique, ce qui signifie qu'aucun contrôle granulaire des accès utilisateur n'est mis en place pour les données NFSv3 de base. Google Cloud NetApp volumes ne prend pas en charge les listes de contrôle d'accès POSIX ni les attributs étendus (tels que chattr). Les listes de contrôle d'accès granulaires ne sont donc possibles que dans les scénarios suivants avec NFSv3 :
-
Volumes de style de sécurité NTFS (serveur CIFS requis) avec des mappages utilisateur UNIX vers Windows valides.
-
NFS v4.1 a été appliqué à l'aide d'un client admin montage NFSv4.1 pour appliquer les ACL.
Les deux méthodes requièrent une connexion LDAP pour la gestion des identités UNIX et des informations valides sur les utilisateurs et les groupes UNIX (voir la section "« LDAP »") et sont disponibles uniquement avec les instances NetApp volumes-Performance. Pour utiliser des volumes de style de sécurité NTFS avec le protocole NFS, vous devez utiliser le protocole double (SMB et NFS v3) ou le double protocole (SMB et NFS v4.1), même si aucune connexion SMB n'est établie. Pour utiliser les listes de contrôle d'accès NFSv4.1 avec montages NFSv3, vous devez sélectionner Both (NFSv3/NFSv4.1)
comme type de protocole.
Les bits standard en mode UNIX ne fournissent pas le même niveau de granularité dans les autorisations que les ACL NTFS ou NFSv4.x fournissent. Le tableau suivant compare la granularité des autorisations entre les bits en mode NFS v3 et les ACL NFSv4.1. Pour plus d'informations sur les listes de contrôle d'accès NFSv4.1, voir "Nfs4_acl - listes de contrôle d'accès NFSv4".
Bits de mode NFSv3 | Listes de contrôle d'accès NFSv4.1 |
---|---|
|
Types d'entrée de contrôle d'accès (ACE) (Allow/Deny/Audit) * indicateurs d'héritage * Directory-Hériter * fichier-Hériter * no-Propagate-Hériter * hériter-only Autorisations * lecture-données (fichiers) / répertoire-liste (répertoires) * écriture-données (fichiers) / création-fichier (répertoires) * ajout-données (fichiers) / création-sous-répertoire (répertoires) * exécution (fichiers) / changement-répertoire (répertoires) * suppression * suppression-enfant * lecture-attributs * écriture-attributs * liste de contrôle d'accès * lecture-écriture * liste de contrôle d'accès * |
Enfin, l'appartenance au groupe NFS (dans NFSv3 et NFSV4.x) est limitée à un maximum par défaut de 16 pour AUTH_SYS selon les limites de paquets RPC. NFS Kerberos fournit jusqu'à 32 groupes et les ACL NFSv4 suppriment la limite par le biais de listes de contrôle d'accès granulaires des utilisateurs et des groupes (jusqu'à 1024 entrées par ACE).
De plus, Google Cloud NetApp volumes offre une prise en charge de groupe étendue pour étendre le nombre maximal de groupes pris en charge jusqu'à 32. Pour ce faire, une connexion LDAP à un serveur LDAP qui contient des identités d'utilisateur et de groupe UNIX valides est nécessaire. Pour plus d'informations sur cette configuration, reportez-vous à la section "Création et gestion des volumes NFS" de la documentation Google.
ID d'utilisateur et de groupe NFSv3
Les ID utilisateur et groupe NFSv3 sont répartis sur le fil sous forme d'ID numériques plutôt que de noms. Google Cloud NetApp volumes ne résout pas le nom d'utilisateur pour ces ID numériques avec NFSv3, les volumes de style de sécurité UNIX utilisant uniquement des bits de mode. Lorsque des listes de contrôle d'accès NFSv4.1 sont présentes, une recherche d'ID numérique et/ou une recherche de chaîne de nom est nécessaire pour résoudre correctement la liste de contrôle d'accès, même en cas d'utilisation de NFS v3. Avec les volumes de style de sécurité NTFS, Google Cloud NetApp volumes doit résoudre un ID numérique pour un utilisateur UNIX valide, puis le mapper sur un utilisateur Windows valide pour négocier les droits d'accès.
Limitations de sécurité des ID d'utilisateur et de groupe NFSv3
Avec NFSv3, le client et le serveur n'ont jamais à confirmer que l'utilisateur qui tente de lire ou d'écrire avec un ID numérique est un utilisateur valide ; il est simplement implicitement approuvé. Cela ouvre le système de fichiers jusqu'à des failles potentielles simplement en usurper n'importe quel ID numérique. Pour éviter des failles de sécurité de ce type, Google Cloud NetApp volumes propose plusieurs options.
-
L'implémentation de Kerberos pour NFS oblige les utilisateurs à s'authentifier avec un nom d'utilisateur et un mot de passe ou un fichier keytab afin d'obtenir un ticket Kerberos pour autoriser l'accès à un montage. Kerberos est disponible avec les instances NetApp volumes-Performance et uniquement avec NFSv4.1.
-
La limitation de la liste d'hôtes dans vos règles d'export permet de limiter les accès des clients NFSv3 au volume Google Cloud NetApp volumes.
-
L'utilisation de volumes à double protocole et l'application de listes de contrôle d'accès NTFS au volume oblige les clients NFSv3 à résoudre des ID numériques à des noms d'utilisateur UNIX valides afin de s'authentifier correctement pour accéder aux montages. Pour cela, il est nécessaire d'activer LDAP et de configurer les identités d'utilisateur et de groupe UNIX.
-
L'affaissement de l'utilisateur root limite les dommages qu'un utilisateur root peut faire sur un montage NFS, mais ne élimine pas complètement les risques. Pour plus d'informations, reportez-vous à la section «L'utilisateur root. »
En fin de compte, la sécurité NFS est limitée à la version de protocole que vous utilisez. NFS v3, bien que plus performant que NFSv4.1, n'offre pas le même niveau de sécurité.
NFSv4.1
NFSv4.1 offre une sécurité et une fiabilité supérieures par rapport à NFS v3, pour les raisons suivantes :
-
Verrouillage intégré grâce à un mécanisme de location
-
Sessions avec état
-
Toutes les fonctionnalités NFS sur un seul port (2049)
-
TCP uniquement
-
Mappage du domaine d'ID
-
Intégration Kerberos (NFSv3 peut utiliser Kerberos, mais uniquement pour NFS, pas pour les protocoles auxiliaires tels que NLM)
Dépendances NFSv4.1
En raison des fonctions de sécurité ajoutées dans NFSv4.1, certaines dépendances externes étaient impliquées dans l'utilisation de NFSv3 (semblable au mode d'utilisation requis par SMB, comme Active Directory).
Listes de contrôle d'accès NFSv4.1
Google Cloud NetApp volumes prend en charge les listes de contrôle d'accès NFSv4.x, qui offrent des avantages distincts par rapport aux autorisations de type POSIX normales, mais aussi les options suivantes :
-
Contrôle granulaire de l'accès des utilisateurs aux fichiers et aux répertoires
-
Sécurité NFS renforcée
-
Interopérabilité améliorée avec CIFS/SMB
-
Suppression de la limitation NFS de 16 groupes par utilisateur avec sécurité AUTH_SYS
-
Les listes de contrôle d'accès contournent le besoin de résolution d'ID de groupe (GID), ce qui supprime efficacement les listes de contrôle d'accès NFSv4.1 sont contrôlées par les clients NFS, et non par Google Cloud NetApp volumes. Pour utiliser les listes de contrôle d’accès NFS NFSv4.1, assurez-vous que la version logicielle de votre client les prend en charge et que les utilitaires NFS appropriés sont installés.
Compatibilité entre les listes de contrôle d'accès NFSv4.1 et les clients SMB
Les ACL NFSv4 ne sont pas plus les ACL de niveau fichier (ACL NTFS) de Windows, mais possèdent une fonctionnalité similaire. Cependant, dans les environnements NAS multiprotocoles, si vous disposez de listes de contrôle d'accès NFSv4.1 et que vous utilisez un accès double protocole (NFS et SMB sur les mêmes datasets), les clients qui utilisent SMB2.0 et versions ultérieures ne pourront pas afficher ni gérer les listes de contrôle d'accès à partir des onglets de sécurité Windows.
Fonctionnement des listes de contrôle d'accès NFSv4.1
Pour référence, les termes suivants sont définis :
-
Liste de contrôle d'accès (ACL). liste des entrées d'autorisations.
-
Entrée de contrôle d'accès (ACE). Entrée d'autorisation dans la liste.
Lorsqu'un client définit une liste de contrôle d'accès NFSv4.1 sur un fichier lors d'une opération SETATTR, Google Cloud NetApp volumes définit cette liste de contrôle d'accès sur l'objet, en remplacement de toute liste de contrôle d'accès existante. S'il n'y a pas de liste de contrôle d'accès sur un fichier, les autorisations de mode sur ce fichier sont calculées à partir DE OWNER@, GROUP@ et EVERYONE@. S'il existe des SUID/SGID/bits COLLANTS sur le fichier, ils ne sont pas affectés.
Lorsqu'un client obtient une liste de contrôle d'accès NFSv4.1 sur un fichier au cours d'une opération GETATTR, Google Cloud NetApp volumes lit la liste de contrôle d'accès NFSv4.1 associée à l'objet, construit une liste d'ACE et renvoie la liste au client. Si le fichier possède une liste de contrôle d’accès NT ou des bits de mode, une liste de contrôle d’accès est construite à partir de bits de mode et renvoyée au client.
L'accès est refusé si une ACE DE REFUS est présente dans la liste de contrôle d'accès ; l'accès est accordé si une ACE D'AUTORISATION existe. Toutefois, l'accès est également refusé si aucun des ACE n'est présent dans l'ACL.
Un descripteur de sécurité se compose d'une liste de contrôle d'accès (SACL) et d'une liste de contrôle d'accès discrétionnaire (DACL). Lorsque NFSv4.1 interagit avec CIFS/SMB, le DACL est mappé à NFSv4 et CIFS. La DACL se compose des ACCE AUTORISER et REFUSER.
Si un niveau de base chmod
Est exécuté sur un fichier ou un dossier avec les ACL NFSv4.1 définies, les listes de contrôle d'accès utilisateur et groupe existantes sont conservées, mais le PROPRIÉTAIRE par défaut@, GROUPE@, EVERYONE@ ACL sont modifiés.
Un client utilisant des listes de contrôle d’accès NFSv4.1 peut définir et afficher des listes de contrôle d’accès pour les fichiers et les répertoires du système. Lorsqu'un nouveau fichier ou sous-répertoire est créé dans un répertoire comportant une liste de contrôle d'accès, cet objet hérite de tous les ACE de la liste de contrôle d'accès qui ont été marqués avec le nom approprié "indicateurs d'héritage".
Si un fichier ou un répertoire possède une liste de contrôle d'accès NFSv4.1, cette liste de contrôle d'accès est utilisée pour contrôler l'accès, quel que soit le protocole utilisé pour accéder au fichier ou au répertoire.
Les fichiers et les répertoires héritent des ACE des listes de contrôle d'accès NFSv4 sur les répertoires parents (éventuellement avec les modifications appropriées) tant que les ACE ont été balisés avec les indicateurs d'héritage corrects.
Lorsqu'un fichier ou un répertoire est créé à la suite d'une requête NFSv4, la liste de contrôle d'accès du fichier ou répertoire résultant dépend du fait que la demande de création de fichier inclut une liste de contrôle d'accès ou uniquement les autorisations d'accès aux fichiers UNIX standard. La liste de contrôle d’accès dépend également de la présence ou non d’une liste de contrôle d’accès dans le répertoire parent.
-
Si la requête inclut une liste de contrôle d’accès, cette liste de contrôle d’accès est utilisée.
-
Si la requête inclut uniquement les autorisations d'accès aux fichiers UNIX standard et que le répertoire parent ne dispose pas d'ACL, le mode fichier client est utilisé pour définir les autorisations d'accès aux fichiers UNIX standard.
-
Si la requête inclut uniquement les autorisations d'accès aux fichiers UNIX standard et que le répertoire parent dispose d'une liste de contrôle d'accès non héritable, une liste de contrôle d'accès par défaut basée sur les bits de mode transmis à la requête est définie sur le nouvel objet.
-
Si la demande comprend uniquement des autorisations d'accès aux fichiers UNIX standard mais que le répertoire parent possède une ACL, les ACE de l'ACL du répertoire parent sont hérités par le nouveau fichier ou répertoire tant que les ACE ont été balisés avec les indicateurs d'héritage appropriés.
Autorisations ACE
Les autorisations de listes de contrôle d'accès NFSv4.1 utilisent une série de valeurs de lettres majuscules et minuscules (par exemple rxtncy
) pour contrôler l'accès. Pour plus d'informations sur ces valeurs de lettre, reportez-vous à la section "COMMENT : utiliser NFSv4 ACL".
Comportement ACL NFSv4.1 avec umask et héritage ACL
"Les ACL NFSv4 permettent d'offrir l'héritage ACL". L'héritage ACL signifie que les fichiers ou les dossiers créés sous des objets avec des listes de contrôle d'accès NFSv4.1 peuvent hériter des listes de contrôle d'accès basées sur la configuration du "Indicateur d'héritage ACL".
"Umask" est utilisé pour contrôler le niveau d'autorisation auquel les fichiers et dossiers sont créés dans un répertoire sans intervention de l'administrateur. Par défaut, Google Cloud NetApp volumes permet à umask de remplacer les listes de contrôle d'accès héritées, ce qui correspond au comportement attendu par "RFC 5661".
Formatage ACL
Les ACL NFSv4.1 ont un formatage spécifique. L'exemple suivant est un ensemble ACE sur un fichier :
A::ldapuser@domain.netapp.com:rwatTnNcCy
L'exemple précédent suit les directives de format ACL de :
type:flags:principal:permissions
Un type de A
signifie « autoriser ». Les indicateurs hériter ne sont pas définis dans ce cas, car le principal n'est pas un groupe et n'inclut pas l'héritage. De plus, comme l'ACE n'est pas une entrée D'AUDIT, il n'est pas nécessaire de définir les indicateurs d'audit. Pour plus d'informations sur les listes de contrôle d'accès NFSv4.1, voir "http://linux.die.net/man/5/nfs4_acl".
Si la liste de contrôle d’accès NFSv4.1 n’est pas définie correctement (ou si une chaîne de nom ne peut pas être résolue par le client et le serveur), la liste de contrôle d’accès peut ne pas se comporter comme prévu, ou si la modification de la liste de contrôle d’accès échoue à s’appliquer et générer une erreur.
Les exemples d'erreurs sont les suivants :
Failed setxattr operation: Invalid argument Scanning ACE string 'A:: user@rwaDxtTnNcCy' failed.
REFUS explicite
Les autorisations NFSv4.1 peuvent inclure des attributs DE REFUS explicites pour LE PROPRIÉTAIRE, LE GROUPE et TOUT LE MONDE. En effet, les listes de contrôle d’accès NFSv4.1 étant des listes de contrôle d’accès par défaut, ce qui signifie que si une liste de contrôle d’accès n’est pas explicitement accordée par une ACE, elle est alors refusée. Les attributs DE REFUS explicite remplacent les ACE D'ACCÈS, explicites ou non.
LES ACE DE REFUS sont définis avec une balise d'attribut de D
.
Dans l'exemple ci-dessous, GROUP@ est autorisé à toutes les autorisations de lecture et d'exécution, mais a refusé tout accès en écriture.
sh-4.1$ nfs4_getfacl /mixed A::ldapuser@domain.netapp.com:ratTnNcCy A::OWNER@:rwaDxtTnNcCy D::OWNER@: A:g:GROUP@:rxtncy D:g:GROUP@:waDTC A::EVERYONE@:rxtncy D::EVERYONE@:waDTC
DANS la mesure du possible, LES ACE DE REFUS doivent être évités parce qu'ils peuvent être confus et compliqués ; AUTORISER les listes de contrôle d'accès qui ne sont pas explicitement définies sont refusées implicitement. Lorsque LES ACE DE REFUS sont définis, les utilisateurs peuvent se voir refuser l'accès lorsqu'ils s'attendent à bénéficier de l'accès.
L'ensemble précédent d'ACE est équivalent à 755 bits de mode, ce qui signifie :
-
Le propriétaire a tous les droits.
-
Les groupes ont lecture seule.
-
D'autres ont lecture seule.
Cependant, même si les autorisations sont ajustées à l'équivalent 775, l'accès peut être refusé en raison du REFUS explicite défini sur TOUT LE MONDE.
Dépendances de mappage de domaine ID NFSv4.1
NFSv4.1 s'appuie sur la logique de mappage de domaine d'ID en tant que couche de sécurité pour garantir qu'un utilisateur qui tente d'accéder à un montage NFSv4.1 est en effet celui qu'il prétend être. Dans ce cas, le nom d'utilisateur et le nom de groupe provenant du client NFSv4.1 ajoute une chaîne de nom et l'envoie à l'instance Google Cloud NetApp volumes. Si cette combinaison nom d'utilisateur/groupe et chaîne d'ID ne correspond pas, l'utilisateur et/ou le groupe sont écrasés par l'utilisateur par défaut spécifié dans le /etc/idmapd.conf
fichier sur le client.
Cette chaîne d'ID est une exigence pour le respect correct des autorisations, en particulier lorsque des ACL NFSv4.1 et/ou Kerberos sont utilisés. Par conséquent, des dépendances au serveur de service de noms, telles que les serveurs LDAP, sont nécessaires pour assurer la cohérence entre les clients et Google Cloud NetApp volumes afin de garantir une résolution correcte des identités de nom d'utilisateur et de groupe.
Google Cloud NetApp volumes utilise une valeur de nom de domaine à ID statique par défaut de defaultv4iddomain.com
. Les clients NFS utilisent par défaut le nom de domaine DNS pour ses paramètres de nom de domaine ID, mais vous pouvez ajuster manuellement l'ID nom de domaine dans /etc/idmapd.conf
.
Si LDAP est activé dans Google Cloud NetApp volumes, Google Cloud NetApp volumes automatise le domaine d'ID NFS afin de modifier ce qui est configuré pour le domaine de recherche dans DNS. Il n'est donc pas nécessaire de modifier les clients sauf s'ils utilisent des noms de recherche de domaine DNS différents.
Lorsque Google Cloud NetApp volumes peut résoudre un nom d'utilisateur ou de groupe dans des fichiers locaux ou LDAP, la chaîne de domaine est utilisée et les ID de domaine non correspondants sont mis à jour avec personne. Si Google Cloud NetApp volumes ne trouve pas de nom d'utilisateur ou de groupe dans les fichiers locaux ou LDAP, la valeur de l'ID numérique est utilisée et le client NFS résout le nom correctement (fonctionnalité similaire à celle de NFSv3).
Sans modifier le domaine d'ID NFSv4.1 du client pour correspondre à ce que le volume Google Cloud NetApp volumes utilise, vous observez le comportement suivant :
-
Les utilisateurs et groupes UNIX dotés d'entrées locales dans les volumes Google Cloud NetApp (comme root, comme défini dans les utilisateurs et groupes UNIX locaux) sont écrasés par la valeur no.
-
Les utilisateurs et groupes UNIX avec des entrées dans LDAP (si Google Cloud NetApp volumes est configuré pour utiliser LDAP) squace à personne si les domaines DNS sont différents entre les clients NFS et les volumes Google Cloud NetApp.
-
Les utilisateurs et groupes UNIX sans entrées locales ou LDAP utilisent la valeur d'ID numérique et résolvez le nom spécifié sur le client NFS. Si aucun nom n'existe sur le client, seul l'ID numérique est affiché.
Voici les résultats du scénario précédent :
# ls -la /mnt/home/prof1/nfs4/ total 8 drwxr-xr-x 2 nobody nobody 4096 Feb 3 12:07 . drwxrwxrwx 7 root root 4096 Feb 3 12:06 .. -rw-r--r-- 1 9835 9835 0 Feb 3 12:07 client-user-no-name -rw-r--r-- 1 nobody nobody 0 Feb 3 12:07 ldap-user-file -rw-r--r-- 1 nobody nobody 0 Feb 3 12:06 root-user-file
Lorsque les domaines d'ID client et serveur correspondent, voici l'apparence de la même liste de fichiers :
# ls -la total 8 drwxr-xr-x 2 root root 4096 Feb 3 12:07 . drwxrwxrwx 7 root root 4096 Feb 3 12:06 .. -rw-r--r-- 1 9835 9835 0 Feb 3 12:07 client-user-no-name -rw-r--r-- 1 apache apache-group 0 Feb 3 12:07 ldap-user-file -rw-r--r-- 1 root root 0 Feb 3 12:06 root-user-file
Pour plus d'informations sur ce problème et sur la façon de le résoudre, reportez-vous à la section «NFSv4.1 et personne utilisateur/groupe. »
Les dépendances Kerberos
Si vous prévoyez d'utiliser Kerberos avec NFS, vous devez disposer des éléments suivants avec Google Cloud NetApp volumes :
-
Domaine Active Directory pour les services du centre de distribution Kerberos (KDC)
-
Domaine Active Directory avec attributs d'utilisateur et de groupe renseignés avec les informations UNIX pour la fonctionnalité LDAP (NFS Kerberos dans Google Cloud NetApp volumes nécessite un mappage utilisateur SPN vers UNIX pour que les fonctionnalités soient correctes.)
-
LDAP activé sur l'instance Google Cloud NetApp volumes
-
Domaine Active Directory pour les services DNS
NFSv4.1 et personne utilisateur/groupe
L'un des problèmes les plus courants rencontrés avec une configuration NFSv4.1 est lorsqu'un fichier ou un dossier est affiché dans une liste à l'aide de ls
appartenant au user:group
combinaison de nobody:nobody
.
Par exemple :
sh-4.2$ ls -la | grep prof1-file -rw-r--r-- 1 nobody nobody 0 Apr 24 13:25 prof1-file
Et l'ID numérique est 99
.
sh-4.2$ ls -lan | grep prof1-file -rw-r--r-- 1 99 99 0 Apr 24 13:25 prof1-file
Dans certains cas, le fichier peut indiquer le propriétaire correct, mais nobody
en tant que groupe.
sh-4.2$ ls -la | grep newfile1 -rw-r--r-- 1 prof1 nobody 0 Oct 9 2019 newfile1
Qui n'est personne?
Le nobody
L'utilisateur dans NFSv4.1 est différent de nfsnobody
utilisateur. Vous pouvez afficher la manière dont un client NFS voit chaque utilisateur en exécutant le id
commande :
# id nobody uid=99(nobody) gid=99(nobody) groups=99(nobody) # id nfsnobody uid=65534(nfsnobody) gid=65534(nfsnobody) groups=65534(nfsnobody)
Avec NFSv4.1, le nobody
l'utilisateur est l'utilisateur par défaut défini par le idmapd.conf
et peut être défini comme n'importe quel utilisateur que vous voulez utiliser.
# cat /etc/idmapd.conf | grep nobody #Nobody-User = nobody #Nobody-Group = nobody
Pourquoi cela se produit-il ?
Étant donné que la sécurité par mappage de chaînes de noms est un principe clé des opérations NFSv4.1, le comportement par défaut lorsqu'une chaîne de noms ne correspond pas correctement est de court-courser cet utilisateur à un utilisateur qui n'aura normalement pas accès aux fichiers et dossiers appartenant aux utilisateurs et aux groupes.
Lorsque vous voyez nobody
Pour l'utilisateur et/ou le groupe dans les listes de fichiers, cela signifie généralement que quelque chose dans NFSv4.1 est mal configuré. La sensibilité de la casse peut être ici en jeu.
Par exemple, si utilisateur1@CVSDEMO.LOMEDRY (uid 1234, gid 1234) accède à une exportation, Google Cloud NetApp volumes doit être en mesure de trouver utilisateur1@CVSDEMO.LO2L (uid 1234, gid 1234). Si l'utilisateur des volumes Google Cloud NetApp est USER1@CVSDEMO.LOMEDERL, il ne correspond pas (UTILISATEUR1 en majuscules contre UTILISATEUR1 en minuscules). Dans de nombreux cas, vous pouvez voir ce qui suit dans le fichier de messages sur le client :
May 19 13:14:29 centos7 nfsidmap[17481]: nss_getpwnam: name 'root@defaultv4iddomain.com' does not map into domain 'CVSDEMO.LOCAL' May 19 13:15:05 centos7 nfsidmap[17534]: nss_getpwnam: name 'nobody' does not map into domain 'CVSDEMO.LOCAL'
Le client et le serveur doivent accepter que l'utilisateur soit effectivement ce qu'il prétend être. Vous devez donc vérifier les points suivants pour vous assurer que l'utilisateur voit bien les mêmes informations que l'utilisateur voit dans Google Cloud NetApp volumes.
-
Domaine d'ID NFSv4.x. Client :
idmapd.conf
fichier ; Google Cloud NetApp volumes utilisedefaultv4iddomain.com
et ne peut pas être modifié manuellement. Si vous utilisez LDAP avec NFSv4.1, Google Cloud NetApp volumes modifie le domaine d'ID en fonction duquel le domaine de recherche DNS utilise, ce qui est identique au domaine AD. -
Nom d'utilisateur et ID numériques. Cela détermine où le client recherche les noms d'utilisateur et exploite la configuration du switch de service de noms (client:
nsswitch.conf
Et/ou fichiers locaux passwd et de groupe) ; les volumes Google Cloud NetApp ne permettent pas de modifier ce nom, mais ajoute automatiquement LDAP à la configuration lorsqu'il est activé. -
Nom de groupe et ID numériques. Cela détermine où le client recherche les noms de groupe et tire parti de la configuration du switch de service de noms (client :
nsswitch.conf
et/ou fichiers locaux passwd et de groupe) ; les volumes Google Cloud NetApp ne permettent pas de modifier cette configuration, mais ajoute automatiquement LDAP à la configuration lorsqu'elle est activée.
Dans la plupart des cas, si vous voyez nobody
dans les listes d'utilisateurs et de groupes de clients, le problème est la traduction de l'ID de domaine du nom d'utilisateur ou de groupe entre Google Cloud NetApp volumes et le client NFS. Pour éviter ce scénario, utilisez LDAP pour résoudre les informations d'utilisateur et de groupe entre les clients et Google Cloud NetApp volumes.
Affichage des chaînes d'ID de nom pour NFSv4.1 sur les clients
Si vous utilisez NFSv4.1, un mappage de chaîne de nom a lieu lors des opérations NFS, comme décrit précédemment.
En plus de l'utilisation /var/log/messages
Pour trouver un problème avec les ID NFSv4, vous pouvez utiliser le "nfsidmap -l" Commande sur le client NFS pour afficher les noms d'utilisateur qui sont correctement mappés au domaine NFSv4.
Par exemple, il s'agit du résultat de la commande lorsqu'un utilisateur trouvé par le client et que Google Cloud NetApp volumes accède à un montage NFSv4.x :
# nfsidmap -l 4 .id_resolver keys found: gid:daemon@CVSDEMO.LOCAL uid:nfs4@CVSDEMO.LOCAL gid:root@CVSDEMO.LOCAL uid:root@CVSDEMO.LOCAL
Lorsqu'un utilisateur qui ne se mappe pas correctement dans le domaine ID NFSv4.1 (dans ce cas, netapp-user
) essaie d'accéder au même montage et touche un fichier, ils sont affectés nobody:nobody
, comme prévu.
# su netapp-user sh-4.2$ id uid=482600012(netapp-user), 2000(secondary) sh-4.2$ cd /mnt/nfs4/ sh-4.2$ touch newfile sh-4.2$ ls -la total 16 drwxrwxrwx 5 root root 4096 Jan 14 17:13 . drwxr-xr-x. 8 root root 81 Jan 14 10:02 .. -rw-r--r-- 1 nobody nobody 0 Jan 14 17:13 newfile drwxrwxrwx 2 root root 4096 Jan 13 13:20 qtree1 drwxrwxrwx 2 root root 4096 Jan 13 13:13 qtree2 drwxr-xr-x 2 nfs4 daemon 4096 Jan 11 14:30 testdir
Le nfsidmap -l
la sortie affiche l'utilisateur pcuser
à l'écran, mais pas netapp-user
; il s'agit de l'utilisateur anonyme dans notre règle d'export-policy (65534
).
# nfsidmap -l 6 .id_resolver keys found: gid:pcuser@CVSDEMO.LOCAL uid:pcuser@CVSDEMO.LOCAL gid:daemon@CVSDEMO.LOCAL uid:nfs4@CVSDEMO.LOCAL gid:root@CVSDEMO.LOCAL uid:root@CVSDEMO.LOCAL