Managed Lustre bietet IP-basierte Zugriffssteuerung über die Funktion „Root Squash“.
Root Squash ist eine Sicherheitsfunktion, die verhindert, dass ein Root-Nutzer auf einer Client-VM Root-Berechtigungen für ein verwaltetes Lustre-Dateisystem hat. Wenn ein Root-Nutzer auf das verwaltete Lustre-Dateisystem zugreift, werden seine Berechtigungen auf die eines Nutzers mit weniger Berechtigungen reduziert.
Root Squash kann für eine neue oder eine vorhandene Managed Lustre-Instanz konfiguriert werden. Sie können eine Standardeinstellung für „root squash“ auf alle Clients anwenden oder benutzerdefinierte Regeln für bestimmte Clients angeben.
Standardmäßig ist „root squash“ für eine verwaltete Lustre-Instanz nicht konfiguriert.
Sicherheitseinschränkungen und ‑empfehlungen
Root-Zugriff auf Client-VMs einschränken
Der beste Mechanismus zum Einschränken des Root-Zugriffs besteht darin, Nutzern von vornherein keine Root-Berechtigungen zu gewähren. Wenn Sie Nutzern Root-Berechtigungen auf einer VM gewähren, können Sie Persistenzrisiken verursachen: Nutzer können diese Berechtigungen missbrauchen, um neue Nutzerkonten zu erstellen oder Backdoors zu installieren, um den persistenten Zugriff auf die VM beizubehalten. Eine Anleitung zum Einschränken des Root-Zugriffs finden Sie unter Best Practices für die Steuerung des SSH-Anmeldezugriffs.
Wenn Sie nicht verhindern können, dass Nutzer Root-Berechtigungen für VMs haben, können Sie mit der IP-basierten Zugriffssteuerungsfunktion von Managed Lustre die Root-Nutzerberechtigungen beim Zugriff auf Managed Lustre-Instanzen einschränken. Diese Zugriffsprüfungen erfolgen jedoch nach dem Best-Effort-Prinzip und diese Funktion ist nicht als Sicherheitsgarantie gedacht. Sie sollten sich auf VPC-Firewallregeln als primären Sicherheitsbereich verlassen und dafür sorgen, dass nur vertrauenswürdige Client-VMs mit vertrauenswürdigen VM-Images Netzwerkzugriff auf Ihre Managed Lustre-Instanzen haben. Weitere Informationen finden Sie unter Best Practices für die Google Cloud-Sicherheit.
IP-Weiterleitung deaktivieren
Die Standardkonfiguration von Compute Engine ermöglicht es Instanzen, die IP-Weiterleitung zu aktivieren. Damit Nutzer Root-Squash-Richtlinien nicht umgehen können, indem sie eine andere Quell-IP-Adresse verwenden, sollten Sie die IP-Weiterleitung mit der Organisationsrichtlinie constraints/compute.vmCanIpForward deaktivieren. Eine Anleitung finden Sie unter Organisationsrichtlinien erstellen und verwalten.
Standard-Root-Squash konfigurieren
Wenn Sie Root Squash auf alle Clients anwenden möchten, die eine Verbindung zur Instanz herstellen, geben Sie eine Standard-Squash-UID und ‑GID an und legen Sie den Squash-Modus auf ROOT_SQUASH fest. Ein häufig verwendeter Wert für UID und GID ist 65534, was dem Nutzer nobody entspricht.
Standardmäßig hat ein nobody-Nutzer nur Lese- und Ausführungszugriff.
Nur Root-Nutzer und Mitglieder der Gruppe Owner haben Schreibzugriff auf das Dateisystem.
Instanz erstellen
So erstellen Sie eine Instanz mit dem Standard-Root-Squash:
gcloud
Verwenden Sie die Flags --default-squash-mode, --default-squash-uid und --default-squash-gid, um die Standardwerte festzulegen:
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
Wobei:
--default-squash-modeistROOT_SQUASH.- Mit
--default-squash-uidund--default-squash-gidwerden die Standard-IDs angegeben, in die Root-Nutzer konvertiert werden sollen.
Eine vollständige Liste und Beschreibung der verfügbaren Felder beim Erstellen einer Instanz finden Sie in der gcloud lustre instances create-Referenz.
REST
Wenn Sie eine Instanz mit der REST API erstellen möchten, senden Sie eine Anfrage an den folgenden Endpunkt und fügen Sie ein accessRulesOptions-Objekt ein:
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
}
}
Wobei:
defaultSquashModeistROOT_SQUASH.defaultSquashUidunddefaultSquashGidsind die Nutzer- und Gruppen-ID-Werte, in die Root-Nutzer konvertiert werden sollen.
Weitere Informationen zum Erstellen einer Instanz mit der REST API finden Sie in der projects.locations.instances.create API-Referenz.
Google Cloud Console
Root Squash kann nicht über die Google Cloud Console konfiguriert werden.
Instanz aktualisieren
So aktualisieren Sie eine vorhandene Instanz, damit sie die Standard-Root-Squash-Funktion verwendet:
gcloud
Verwenden Sie die Flags --default-squash-mode, --default-squash-uid und --default-squash-gid, um die Standardwerte festzulegen:
gcloud lustre instances update INSTANCE_NAME \
--project=PROJECT_ID \
--location=LOCATION \
--default-squash-mode=ROOT_SQUASH \
--default-squash-uid=UID \
--default-squash-gid=GID
Wobei:
--default-squash-modeistROOT_SQUASH.- Mit
--default-squash-uidund--default-squash-gidwerden die Standard-IDs angegeben, auf die Root-Nutzer reduziert werden sollen.
REST
Wenn Sie eine Instanz mit der REST API aktualisieren möchten, senden Sie eine PATCH-Anfrage an den zugehörigen Endpunkt. Sie müssen accessRulesOptions im updateMask angeben:
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
}
}
Wobei:
defaultSquashModeistROOT_SQUASH.defaultSquashUidunddefaultSquashGidsind die Nutzer- und Gruppen-ID-Werte, in die Root-Nutzer konvertiert werden sollen.
Weitere Informationen zum Aktualisieren einer Instanz finden Sie unter Instanzen verwalten.
Google Cloud Console
Root Squash kann nicht über die Google Cloud Console konfiguriert werden.
Root-Squash mit Ausnahmen konfigurieren
Wenn Sie Root Squash auf alle Clients mit Ausnahme einer bestimmten Gruppe vertrauenswürdiger Clients anwenden möchten, geben Sie eine Zugriffsregel an. Diese Regel gibt die Standard-UID und ‑GID an, auf die Root-Nutzer reduziert werden sollen, sowie eine Regel, die bestimmte Clients basierend auf ihrer IP-Adresse oder ihren Adressbereichen von der Reduzierung ausnimmt.
Ein häufig verwendeter Wert für die Squash-UID und -GID ist 65534, was dem Nutzer nobody entspricht.
Der Nutzer nobody hat keinen Schreibzugriff auf das Dateisystem. Nur Root-Nutzer und Mitglieder der Gruppe Owner haben Lese‑, Schreib- und Ausführungszugriff.
Andere Nutzer haben nur Lese- und Ausführungszugriff.
Instanz erstellen
gcloud
Zum Erstellen einer Instanz
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
Wobei:
--default-squash-modeistROOT_SQUASH.- Mit
--default-squash-uidund--default-squash-gidwerden die Standard-IDs angegeben, auf die Root-Nutzer reduziert werden sollen. --access-rulesgibt die Ausnahmen für „root squash“ an. Die folgenden Werte müssen angegeben werden:nameist der Name dieser Zugriffsregel.ipAddressRangesist eine durch Kommas getrennte Liste mit einer oder mehreren IP-Adressen oder nicht überlappenden CIDR-Bereichen. Bereiche werden im folgenden Format angegeben:192.168.0.0/24.squashModemussNO_SQUASHlauten.
Eine vollständige Liste und Beschreibung der verfügbaren Felder finden Sie unter Managed Lustre-Instanz erstellen.
REST
Wenn Sie eine Instanz mit der REST API erstellen möchten, senden Sie eine Anfrage an den folgenden Endpunkt und fügen Sie ein accessRulesOptions-Objekt ein:
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
}
}
Wenn Sie eine bestimmte Zugriffsregel festlegen, sind die folgenden Felder erforderlich:
nameist ein benutzerdefinierter Name für diese Regel. Er darf nur alphanumerische Zeichen und Unterstriche (_) enthalten und muss 16 Zeichen oder weniger umfassen.ipAddressRangesist eine Liste mit einer oder mehreren IP-Adressen oder CIDR-Bereichen, die sich nicht überschneiden. Bereiche werden im folgenden Format angegeben:192.168.0.0/24.squashModeist immerNO_SQUASH.defaultSquashModeistROOT_SQUASH.defaultSquashUidunddefaultSquashGidsind die Nutzer- und Gruppen-ID-Werte, in die Root-Nutzer konvertiert werden sollen, die nicht mit bestimmten Zugriffsregeln übereinstimmen.
Wenn Sie beispielsweise eine Standard-Root-Squash mit einer Ausnahme für Root-Nutzer aus einem bestimmten IP-Adressbereich und einer bestimmten IP-Adresse festlegen möchten, sieht das accessRulesOptions-Objekt so aus:
{
"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
}
}
Weitere Informationen zum Erstellen einer Instanz mit der REST API finden Sie unter Managed Lustre-Instanz erstellen.
Google Cloud Console
Root Squash kann nicht über die Google Cloud Console konfiguriert werden.
Instanz aktualisieren
gcloud
So aktualisieren Sie eine Instanz:
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
Wobei:
--default-squash-modeistROOT_SQUASH.- Mit
--default-squash-uidund--default-squash-gidwerden die Standard-IDs angegeben, auf die Root-Nutzer reduziert werden sollen. --access-rulesgibt die Ausnahmen für „root squash“ an. Die folgenden Werte müssen angegeben werden:nameist der Name dieser Zugriffsregel.ipAddressRangesist eine durch Kommas getrennte Liste mit einer oder mehreren IP-Adressen oder nicht überlappenden CIDR-Bereichen. Bereiche werden im folgenden Format angegeben:192.168.0.0/24.squashModemussNO_SQUASHlauten.
Weitere Informationen zum Aktualisieren einer Instanz finden Sie unter Instanzen verwalten.
REST
Wenn Sie eine Instanz mit der REST API aktualisieren möchten, senden Sie eine PATCH-Anfrage an den zugehörigen Endpunkt. Sie müssen accessRulesOptions als Wert von updateMask in der Endpunkt-URL angeben:
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
}
}
Weitere Informationen zum Aktualisieren einer Instanz finden Sie unter Instanzen verwalten.
Google Cloud Console
Root Squash kann nicht über die Google Cloud Console konfiguriert werden.
Root-Squash aus einer Instanz entfernen
Wenn Sie alle Root Squash-Einstellungen aus einer Instanz entfernen möchten, aktualisieren Sie die Instanz, um die Zugriffsregeln zu löschen und den Standardmodus auf NO_SQUASH festzulegen.
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"
}
}
Google Cloud Console
Root Squash kann nicht über die Google Cloud Console konfiguriert werden.