Managed Lustre fornisce controllo dell'accesso basato su IP tramite la funzionalità root squash.
Root squash è una funzionalità di sicurezza che impedisce a un utente root su una VM client di avere privilegi root su un file system Managed Lustre. Quando un utente root accede al file system Managed Lustre, i suoi privilegi vengono "compressi" a quelli di un utente con meno privilegi.
Root squash può essere configurato per una nuova istanza Managed Lustre o per una esistente. Puoi applicare un'impostazione di root squash predefinita a tutti i client o specificare regole personalizzate per determinati client.
Per impostazione predefinita, root squash non è configurato in un'istanza Managed Lustre.
Limitazioni e consigli per la sicurezza
Limitare l'accesso root sulle VM client
Il meccanismo migliore per limitare l'accesso root è impedire agli utenti di essere root. La concessione agli utenti dei privilegi di root su una VM può esporre a rischi di persistenza: gli utenti potrebbero abusare di questi privilegi per creare nuovi account utente o installare backdoor per mantenere l'accesso permanente alla VM. Per istruzioni su come limitare l'accesso root, vedi Best practice per il controllo dell'accesso al login SSH.
Se non riesci a impedire agli utenti di avere privilegi root sulle VM, la funzionalitàcontrollo dell'accessoo dell'accesso basato su IP di Managed Lustre può limitare i privilegi dell'utente root quando accede alle istanze Managed Lustre. Tuttavia, questi controlli di accesso sono di tipo best effort e questa funzionalità non è pensata per essere una garanzia di sicurezza. Devi fare affidamento sulle regole firewall VPC come perimetro di sicurezza principale e assicurarti che solo le VM client attendibili che utilizzano immagini VM attendibili abbiano accesso alla rete alle tue istanze Managed Lustre. Per saperne di più, consulta le best practice per la sicurezza di Google Cloud.
Disattiva l'inoltro degli IP
La configurazione predefinita di Compute Engine consente alle istanze di attivare
l'inoltro IP. Per impedire agli utenti di aggirare le policy di root squash
imitando un indirizzo IP di origine diverso, devi disattivare l'inoltro IP
utilizzando il criterio dell'organizzazione constraints/compute.vmCanIpForward. Per istruzioni, consulta la pagina Creazione e gestione delle policy dell'organizzazione.
Configurare lo squash root predefinito
Per applicare root squash a tutti i client che si connettono all'istanza, specifica un UID e un GID di squash predefiniti e imposta la modalità di squash su ROOT_SQUASH. Un valore
comunemente utilizzato per UID e GID è 65534, che corrisponde all'utente
nobody.
Tieni presente che per impostazione predefinita un utente nobody è limitato all'accesso in lettura ed esecuzione.
Solo gli utenti root e i membri del gruppo Owner hanno accesso in scrittura al
file system.
Crea istanza
Per creare un'istanza con la compressione della radice predefinita:
gcloud
Utilizza i flag --default-squash-mode, --default-squash-uid e
--default-squash-gid per impostare i valori predefiniti:
gcloud lustre instances create INSTANCE_NAME \
--project=PROJECT_ID \
--location=LOCATION \
--network=NETWORK_NAME \
--per-unit-storage-throughput=PER_UNIT_STORAGE_THROUGHPUT \
--capacity-gib=CAPACITY \
--filesystem=FS_NAME \
--default-squash-mode=ROOT_SQUASH \
--default-squash-uid=UID \
--default-squash-gid=GID
Dove:
--default-squash-modeè pari aROOT_SQUASH.--default-squash-uide--default-squash-gidspecificano gli ID predefiniti a cui convertire gli utenti root.
Per un elenco completo e una descrizione dei campi disponibili durante la creazione di un'istanza,
consulta la documentazione di riferimento di gcloud lustre instances create.
REST
Per creare un'istanza utilizzando l'API REST, invia una richiesta al seguente endpoint e includi un oggetto accessRulesOptions:
POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/instances?instanceId=INSTANCE_NAME
Authorization: Bearer AUTH_TOKEN
{
"filesystem": "FS_NAME",
"perUnitStorageThroughput": "PER_UNIT_STORAGE_THROUGHPUT",
"capacityGib": "CAPACITY_GIB",
"network": "NETWORK",
"accessRulesOptions": {
"defaultSquashMode": "SQUASH_MODE",
"defaultSquashUid": UID,
"defaultSquashGid": GID
}
}
Dove:
defaultSquashModeè pari aROOT_SQUASH.defaultSquashUidedefaultSquashGidsono i valori ID utente e gruppo a cui convertire gli utenti root.
Per informazioni dettagliate sulla creazione di un'istanza utilizzando l'API REST, consulta il
riferimento API projects.locations.instances.create.
Console Google Cloud
Root squash non può essere configurato utilizzando la console Google Cloud .
Aggiorna istanza
Per aggiornare un'istanza esistente in modo che utilizzi la compressione della radice predefinita:
gcloud
Utilizza i flag --default-squash-mode, --default-squash-uid e
--default-squash-gid per impostare i valori predefiniti:
gcloud lustre instances update INSTANCE_NAME \
--project=PROJECT_ID \
--location=LOCATION \
--default-squash-mode=ROOT_SQUASH \
--default-squash-uid=UID \
--default-squash-gid=GID
Dove:
--default-squash-modeè pari aROOT_SQUASH.--default-squash-uide--default-squash-gidspecificano gli ID predefiniti a cui comprimere gli utenti root.
REST
Per aggiornare un'istanza utilizzando l'API REST, invia una richiesta PATCH al relativo endpoint specifico. Devi specificare accessRulesOptions in updateMask:
PATCH https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/instances/INSTANCE_NAME?updateMask=accessRulesOptions
Authorization: Bearer AUTH_TOKEN
{
"accessRulesOptions": {
"defaultSquashMode": "ROOT_SQUASH",
"defaultSquashUid": UID,
"defaultSquashGid": GID
}
}
Dove:
defaultSquashModeè pari aROOT_SQUASH.defaultSquashUidedefaultSquashGidsono i valori ID utente e gruppo a cui convertire gli utenti root.
Per ulteriori informazioni sull'aggiornamento di un'istanza, consulta Gestire le istanze.
Console Google Cloud
Root squash non può essere configurato utilizzando la console Google Cloud .
Configura root squash con eccezioni
Per applicare root squash a tutti i client tranne a un insieme specifico di client attendibili, specifica una regola di accesso. Questa regola specifica l'UID e il GID predefiniti a cui comprimere gli utenti root, oltre a una regola che esenta determinati client dalla compressione in base al loro indirizzo IP o intervalli di indirizzi.
Un valore comunemente utilizzato per l'UID e il GID di compressione è 65534, che corrisponde all'utente nobody.
Tieni presente che l'utente nobody non ha accesso in scrittura al file system. Solo
gli utenti root e i membri del gruppo Owner hanno accesso in lettura, scrittura ed esecuzione.
Gli altri utenti sono limitati all'accesso di lettura ed esecuzione.
Crea un'istanza
gcloud
Per creare un'istanza:
gcloud lustre instances create INSTANCE_NAME \
--project=PROJECT_ID \
--location=LOCATION \
--network=NETWORK_NAME \
--per-unit-storage-throughput=PER_UNIT_STORAGE_THROUGHPUT \
--capacity-gib=CAPACITY \
--filesystem=FS_NAME \
--default-squash-mode=ROOT_SQUASH \
--default-squash-uid=UID \
--default-squash-gid=GID \
--access-rules=name="ACCESS_RULE_NAME",ipAddressRanges="IP_ADDRESS_OR_CIDR_RANGE",squashMode=NO_SQUASH
Dove:
--default-squash-modeè pari aROOT_SQUASH.--default-squash-uide--default-squash-gidspecificano gli ID predefiniti a cui comprimere gli utenti root.--access-rulesspecifica le eccezioni alla compressione della radice. Devono essere specificati i seguenti valori:nameè il nome di questa regola di accesso.ipAddressRangesè un elenco separato da virgole di uno o più indirizzi IP o intervalli CIDR che non si sovrappongono. Gli intervalli sono specificati nel seguente formato:192.168.0.0/24.squashModedeve essereNO_SQUASH.
Per un elenco completo e una descrizione dei campi disponibili, consulta Crea un'istanza Managed Lustre.
REST
Per creare un'istanza utilizzando l'API REST, invia una richiesta al seguente endpoint e includi un oggetto accessRulesOptions:
POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/instances?instanceId=INSTANCE_NAME
Authorization: Bearer AUTH_TOKEN
{
"filesystem": "FS_NAME",
"perUnitStorageThroughput": "PER_UNIT_STORAGE_THROUGHPUT",
"capacityGib": "CAPACITY_GIB",
"network": "NETWORK",
"accessRulesOptions": {
"accessRules": [
{
"name": "ACCESS_RULE_NAME",
"ipAddressRanges": [
"IP_ADDRESS_OR_CIDR_RANGE_1",
"IP_ADDRESS_OR_CIDR_RANGE_2"
],
"squashMode": "NO_SQUASH"
}
],
"defaultSquashMode": "SQUASH_MODE",
"defaultSquashUid": UID,
"defaultSquashGid": GID
}
}
Quando imposti una regola di accesso specifica, sono necessari i seguenti campi:
nameè un nome definito dall'utente per questa regola. Deve utilizzare solo caratteri alfanumerici e trattini bassi (_) e non deve superare i 16 caratteri.ipAddressRangesè un elenco di uno o più indirizzi IP o intervalli CIDR che non si sovrappongono. Gli intervalli sono specificati nel seguente formato:192.168.0.0/24.squashModeè sempreNO_SQUASH.defaultSquashModeè pari aROOT_SQUASH.defaultSquashUidedefaultSquashGidsono i valori ID utente e gruppo a cui convertire gli utenti root che non corrispondono a regole di accesso specifiche.
Ad esempio, per impostare una compressione della radice predefinita con un'eccezione per gli utenti root
di un intervallo specifico di indirizzi IP e un indirizzo IP particolare, l'oggetto
accessRulesOptions ha il seguente aspetto:
{
"accessRulesOptions": {
"accessRules": [
{
"name": "dont_squash",
"ipAddressRanges": [
"192.100.1.10",
"192.168.0.0/24"
],
"squashMode": "NO_SQUASH"
}
],
"defaultSquashMode": "ROOT_SQUASH",
"defaultSquashUid": 65534,
"defaultSquashGid": 65534
}
}
Per informazioni dettagliate sulla creazione di un'istanza utilizzando l'API REST, vedi Crea un'istanza Managed Lustre.
Console Google Cloud
Root squash non può essere configurato utilizzando la console Google Cloud .
Aggiorna un'istanza
gcloud
Per aggiornare un'istanza:
gcloud lustre instances update INSTANCE_NAME \
--project=PROJECT_ID \
--location=LOCATION \
--default-squash-mode=ROOT_SQUASH \
--default-squash-uid=UID \
--default-squash-gid=GID \
--access-rules=name="ACCESS_RULE_NAME",ipAddressRanges="IP_ADDRESS_OR_CIDR_RANGE",squashMode=NO_SQUASH
Dove:
--default-squash-modeè pari aROOT_SQUASH.--default-squash-uide--default-squash-gidspecificano gli ID predefiniti a cui comprimere gli utenti root.--access-rulesspecifica le eccezioni alla compressione della radice. Devono essere specificati i seguenti valori:nameè il nome di questa regola di accesso.ipAddressRangesè un elenco separato da virgole di uno o più indirizzi IP o intervalli CIDR che non si sovrappongono. Gli intervalli sono specificati nel seguente formato:192.168.0.0/24.squashModedeve essereNO_SQUASH.
Per ulteriori informazioni sull'aggiornamento di un'istanza, consulta Gestire le istanze.
REST
Per aggiornare un'istanza utilizzando l'API REST, invia una richiesta PATCH al relativo endpoint specifico. Devi specificare accessRulesOptions come valore di updateMask
nell'URL dell'endpoint:
PATCH https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/instances/INSTANCE_NAME?updateMask=accessRulesOptions
Authorization: Bearer AUTH_TOKEN
{
"accessRulesOptions": {
"accessRules": [
{
"name": "ACCESS_RULE_NAME",
"ipAddressRanges": [
"IP_ADDRESS_OR_CIDR_RANGE_1",
"IP_ADDRESS_OR_CIDR_RANGE_2"
],
"squashMode": "NO_SQUASH"
}
],
"defaultSquashMode": "SQUASH_MODE",
"defaultSquashUid": UID,
"defaultSquashGid": GID
}
}
Per ulteriori informazioni sull'aggiornamento di un'istanza, consulta Gestire le istanze.
Console Google Cloud
Root squash non può essere configurato utilizzando la console Google Cloud .
Rimuovere root squash da un'istanza
Per rimuovere tutte le impostazioni di root squash da un'istanza, aggiornala per
cancellare le regole di accesso e impostare la modalità predefinita su NO_SQUASH.
gcloud
gcloud lustre instances update INSTANCE_NAME \
--project=PROJECT_ID \
--location=LOCATION \
--default-squash-mode=NO_SQUASH \
--clear-access-rules \
--default-squash-uid=0 --default-squash-gid=0
REST
PATCH https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/instances/INSTANCE_NAME?updateMask=accessRulesOptions
Authorization: Bearer AUTH_TOKEN
{
"accessRulesOptions": {
"defaultSquashMode": "NO_SQUASH"
}
}
Console Google Cloud
Root squash non può essere configurato utilizzando la console Google Cloud .