Connetti i client NFS

Questa pagina descrive come connettere i client NFS.

Prima di iniziare

Installa gli strumenti client NFS in base al tipo di distribuzione Linux per preparare il client:

Red Hat

Esegui questo comando:

sudo yum install -y nfs-utils

SuSe

Esegui questo comando:

sudo yum install -y nfs-utils

Debian

Esegui questo comando:

sudo apt-get install nfs-common

Ubuntu

Esegui questo comando:

sudo apt-get install nfs-common

Controllo dell'accesso al volume mediante criteri di esportazione

Controllo dell'accesso ai volumi in NFSv3 e NFSv4.1 si basa sull'indirizzo IP del client. La policy di esportazione del volume contiene fino a 20 regole di esportazione. Ogni regola è un elenco separato da virgole di indirizzi IP o CIDR di rete che definiscono i client consentiti abilitati a montare il volume. Una regola definisce anche il tipo di accesso dei client, ad esempio Lettura e scrittura o Sola lettura.

Utilizza le seguenti schede per esaminare le norme in base alle versioni NFS:

NFS senza Kerberos

Tutte le versioni NFS senza Kerberos utilizzano il tipo di sicurezza AUTH_SYS. In questa modalità, devi gestire attentamente le regole di esportazione per consentire solo ai client di cui ti fidi e che possono garantire l'integrità dell'ID utente e dell'ID gruppo.

Come misura di sicurezza, i server NFS mappano automaticamente le chiamate NFS con UID=0 (root) a UID=65534 (anonimo), che dispone di autorizzazioni limitate sul file system. Per ulteriori informazioni, vedi Compressione degli ID utente.

NFSv4.1 con Kerberos

NFSv4.1 con Kerberos utilizza criteri di esportazione e autenticazione aggiuntiva tramite Kerberos per accedere ai volumi. Puoi configurare le regole di esportazione da applicare a:

  • Solo Kerberos (krb5)

  • Firma Kerberos (krb5i)

  • Privacy di Kerberos (krb5p)

Best practice per le norme sull'esportazione

Consigliamo le seguenti best practice per le norme di esportazione:

  • Ordina le regole di esportazione dalla più specifica alla meno specifica.

  • Esporta solo nei client attendibili, ad esempio client o CIDR specifici con i client attendibili.

  • Limita l'accesso root a un piccolo gruppo di client di amministrazione attendibili.

Regola Client consentiti Accesso Accesso root Descrizione
1 10.10.5.3,
10.10.5.9
Lettura e scrittura On Client di amministrazione. L'utente root rimane root e può gestire
tutte le autorizzazioni dei file.
2 10.10.5.0/24 Lettura e scrittura Off Tutti gli altri client della rete 10.10.5.0/24 sono autorizzati a eseguire il montaggio,
ma l'accesso root viene mappato a nessuno.
3 10.10.6.0/24 Sola lettura Off Un'altra rete è autorizzata a leggere i dati dal volume, ma
non a scrivere.

Una volta che un client monta un volume, l'accesso a livello di file determina cosa può fare un utente. Per maggiori informazioni, vedi Controllo dell'controllo dell'accesso a livello di file NFS per volumi in stile UNIX.

Compressione dell'ID utente

Le policy di esportazione NFS forniscono controlli per la compressione di ID utente e gruppo, che consente di rimappare gli ID utente e gruppo a un ID utente anonimo per motivi di sicurezza.

Compressione della radice

I server NFS migliorano la sicurezza rimappando l'utente root (UID=0) su nessuno (UID=65534), il che rende root un utente senza privilegi per l'accesso ai file sul volume. Questa funzionalità è nota come compressione della radice. L'opzione per disattivarlo e mantenere i privilegi di root è chiamata no_root_squash sui server NFS.

Per impostazione predefinita, i volumi senza un criterio di esportazione definito non sono accessibili agli indirizzi IP client. Quando crei una regola di policy di esportazione nella console Google Cloud , le impostazioni predefinite includono l'accesso Lettura e scrittura e root squash. L'API Google Cloud , Google Cloud CLI e Terraform supportavano in precedenza il controllo della compressione della radice utilizzando il parametro has-root-access. Anche se has-root-access è ancora accettato, è stato sostituito dal parametro squash-mode.

Come best practice, crea una regola di esportazione dedicata che consenta l'accesso root per gli host amministratore attendibili e disabiliti l'accesso root per altri client. Inserisci questa regola per prima, prima delle regole più generiche.

Compressione degli ID utente e gruppo

Il parametro squash-mode consente di comprimere gli ID utente e gruppo in un UID anonimo, il che può essere utile per le directory dropbox SFTP pubbliche. Questo parametro sostituisce anche il parametro has-root-access ed è supportato nell'API, in Google Cloud CLI e in Terraform.

Il parametro squash-mode accetta i seguenti valori:

  • no-root-squash: in questa modalità, l'utente root rimane root e non viene rimappato a nessuno (UID=65534).

  • root-squash: questa impostazione rimappa l'utente root su nessuno.

  • all-squash: questa opzione fornisce l'accesso anonimo a tutti gli utenti, incluso root. Tutti gli utenti vengono rimappati all'UID e al GID specificati dal parametro anon-uid. Quando utilizzi all-squash, devi specificare anche anon-uid e impostare access-type su READ_WRITE.

Considerazioni

Considera quanto segue per le regole dei criteri di esportazione con squash mode:

  • Un criterio di esportazione supporta una sola regola all-squash.

  • Quando all-squash è attivato, l'utente root viene compresso in anonimo. Questa impostazione può essere ignorata da una regola con priorità più alta che utilizza no-root-squash.

  • La replica del volume non è supportata per i volumi con una regola della policy di esportazione in stile squash-mode.

  • Per il livello di servizio Flex, all-squash non modifica automaticamente la proprietà dell'inode radice del volume. Per farlo, aggiungi una regola di esportazione no-root-squash che consenta all'utente root di utilizzare chown per modificare la proprietà dell'inode root nell'UID richiesto.

  • Il parametro has-root-access è supportato. Utilizza has-root-access o squash-mode; non utilizzare entrambi i parametri contemporaneamente.

Modificare un volume

Utilizza le seguenti istruzioni per aggiornare la policy di esportazione di un volume con squash-mode utilizzando Google Cloud CLI:

gcloud

Aggiorna un volume con una policy di esportazione utilizzando la modalità squash:

gcloud netapp volumes update VOLUME_ID \
  --project=PROJECT_ID \
  --location=LOCATION \
  --export-policy=access-type=ACCESS_TYPE,squash-mode=SQUASH_MODE,anon-uid=ANON_UID,allowed-clients=ALLOWED_CLIENTS_IP_ADDRESSES

Sostituisci le seguenti informazioni:

  • VOLUME_ID: l'ID del volume.

  • PROJECT_ID: il nome del progetto in cui si trova il volume.

  • LOCATION: la posizione del volume.

  • ACCESS_TYPE: il tipo di accesso deve essere uno tra READ_WRITE, READ_ONLY o READ_NONE.

  • SQUASH_MODE: la regola di esportazione deve essere una tra NO_ROOT_SQUASH, ROOT_SQUASH o ALL_SQUASH.

  • ANON_UID: il numero UID a cui eseguire lo squash.

  • ALLOWED_CLIENTS_IP_ADDRESSES: un elenco di indirizzi IP o intervalli di client consentiti separati da virgole.

I parametri delle norme di esportazione possono essere ripetuti per includere più regole.

L'esempio seguente mostra una policy di esportazione con regole root-squash e all-squash:

gcloud netapp volumes update my_volume --location=us-east4 \
--export-policy=allowed-clients=10.0.1.18,nfsv3=true,access-type=READ_WRITE,squash-mode=NO_ROOT_SQUASH \
--export-policy=allowed-clients=10.0.2.0/24,nfsv3=true,access-type=READ_WRITE,squash-mode=ALL_SQUASH,anon-uid=2000

Per ulteriori informazioni sui flag facoltativi aggiuntivi, consulta la documentazione di Google Cloud SDK sulla policy di esportazione dei volumi.

Istruzioni di montaggio per i client NFS

Utilizza le seguenti istruzioni per ottenere le istruzioni di montaggio per i client NFS utilizzando la console Google Cloud o Google Cloud CLI:

Console

  1. Vai alla pagina NetApp Volumes nella console Google Cloud .

    Vai a NetApp Volumes

  2. Fai clic su Volumi.

  3. Fai clic su Mostra altro.

  4. Seleziona Istruzioni di montaggio.

  5. Segui le istruzioni di montaggio mostrate nella console Google Cloud .

  6. Identifica il comando di montaggio e utilizza le opzioni di montaggio, a meno che il tuo workload non abbia requisiti specifici per le opzioni di montaggio.

    Solo NFSv3: se la tua applicazione non utilizza blocchi o non hai configurato i client per attivare la comunicazione NSM, ti consigliamo di aggiungere l'opzione di montaggio nolock.

gcloud

Per cercare le istruzioni di montaggio per un volume:

 gcloud netapp volumes describe VOLUME_NAME \
    --project=PROJECT_ID \
    --location=LOCATION \
    --format="value(mountOptions.instructions)"

Sostituisci le seguenti informazioni:

  • VOLUME_NAME: il nome del volume.

  • PROJECT_ID: il nome del progetto in cui si trova il volume.

  • LOCATION: la posizione del volume.

Per ulteriori informazioni sui flag facoltativi aggiuntivi, consulta la documentazione di Google Cloud SDK sui volumi.

Istruzioni NFSv4.1 aggiuntive

Quando abiliti NFSv4.1 per i volumi dei livelli di servizio Flex Unified, Standard, Premium ed Extreme, NFSv4.2 viene abilitato automaticamente per questi volumi. Il comando di montaggio Linux monta sempre la versione NFS più recente disponibile, a meno che tu non specifichi la versione da montare. Se vuoi eseguire il montaggio con NFSv4.1, utilizza il parametro -o vers=4.1 nel comando di montaggio.

In NFSv3, utenti e gruppi vengono identificati da ID utente (UID) e ID gruppo (GID) inviati tramite il protocollo NFSv3. È importante assicurarsi che lo stesso UID e GID rappresentino lo stesso utente e lo stesso gruppo su tutti i client che accedono al volume. NFSv4 ha eliminato la necessità di una mappatura esplicita di UID e GID utilizzando gli identificatori di sicurezza. Gli identificatori di sicurezza sono stringhe formattate come <username|groupname>@<full_qualified_domain>. Un esempio di identificatore di sicurezza è bob@example.com. Il client deve tradurre gli UID e i GID utilizzati internamente in un identificatore di sicurezza prima di inviare una richiesta NFSv4 al server. Il server deve tradurre gli identificatori di sicurezza in UID e GID per una richiesta in entrata e viceversa per la risposta. Il vantaggio di utilizzare le traduzioni è che ogni client e il server possono utilizzare UID e GID interni diversi. Tuttavia, lo svantaggio è che tutti i client e il server devono mantenere un elenco di mapping tra UID e GID e nomi di utenti e gruppi. Le informazioni di mapping sui client possono provenire da file locali come /etc/passwd e /etc/groups o da una directory LDAP. La configurazione di questo mapping è gestita da rpc.idmapd, che deve essere eseguito sul client.

Su NetApp Volumes, LDAP deve fornire informazioni di mapping, mentre Active Directory è l'unico server LDAP compatibile con RFC2307bis supportato. Quando si utilizza Kerberos per NFSv4, l'identificatore di sicurezza memorizza le entità Kerberos nel formato username@DOMAINNAME, dove DOMAINNAME (in lettere maiuscole) diventa il nome del realm.

ID numerici

Per gli utenti che non vogliono configurare i mapping dei nomi e utilizzare NFSv4 in sostituzione di NFSv3, NFSv4 ha introdotto un'opzione chiamata numeric ID, che invia stringhe di testo codificate UID e GID come identificatori di sicurezza. In questo modo, la procedura di configurazione per gli utenti viene semplificata.

Puoi controllare l'impostazione del client utilizzando il seguente comando:

     cat /sys/module/nfs/parameters/nfs4_disable_idmapping
   

Il valore predefinito è Y, che attiva gli ID numerici. NetApp Volumes supporta l'utilizzo di ID numerici.

Configura rpc.idmapd sul client NFS

Indipendentemente dal tipo di ID o identificatori di sicurezza che utilizzi, è necessario configurare rpc.idmapd sul client NFS. Se hai seguito le istruzioni di installazione per le utilità client nella sezione Prima di iniziare, dovrebbe essere già installato, ma potrebbe non essere in esecuzione. Alcune distribuzioni lo avviano automaticamente utilizzando systemd quando monti i primi volumi NFS. La configurazione minima richiesta per rpc.idmapd consiste nell'impostazione del dominio. In caso contrario, la radice dell'utente verrà visualizzata come nessuno con UID=65534 or 4294967295.

Segui queste istruzioni per configurare rpc.idmapd sul client NFS:

  1. Sul client, apri il file /etc/idmapd.conf e modifica il parametro domain in uno dei seguenti:

    • Se il tuo volume non è abilitato per LDAP, domain = defaultv4iddomain.com.

    • Se il tuo volume è abilitato per LDAP, domain = <FDQN_of_Windows_Domain>.

  2. Attiva le modifiche a rpc.idmapd eseguendo il seguente comando:

     nfsidmap -c

Supporto di NFSv4.2

I livelli di servizio Flex Unified, Standard, Premium ed Extreme ora supportano il protocollo NFSv4.2 oltre a NFSv4.1 sui volumi su cui è già abilitato NFSv4.1.

Quando monti un volume NFS, il comando di montaggio Linux seleziona automaticamente la versione NFS più recente disponibile. Il montaggio automatico di un volume abilitato per NFSv4.1 utilizza NFSv4.2 per impostazione predefinita, a meno che non venga specificata esplicitamente l'opzione di montaggio vers=4.1.

NetApp Volumes supporta gli attributi estesi NFS xattrs con NFSv4.2. Si applicano anche l'utilizzo e le limitazioni di xattrs, come descritto in TR-4962.

Connettere Linux a LDAP

Se utilizzi gruppi estesi NFSv3 o NFSv4.1 con identificatori di sicurezza, hai configurato iNetApp Volumesp per utilizzare Active Directory come server LDAP utilizzando un Active Directory collegato a un pool di archiviazione.

Per mantenere informazioni utente coerenti tra il client e il server NFS, potresti dover configurare il client in modo che utilizzi Active Directory come servizio di nomi LDAP per le informazioni su utenti e gruppi.

Utilizza le seguenti risorse per configurare LDAP:

Quando utilizzi NFS con Kerberos, potresti dover utilizzare le guide al deployment menzionate in questa sezione per configurare LDAP e garantire la coerenza tra il client e il server.

Passaggi successivi

Connetti volumi di grande capacità con più endpoint di archiviazione.