IP-basierte Zugriffssteuerung

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-mode ist ROOT_SQUASH.
  • Mit --default-squash-uid und --default-squash-gid werden 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:

  • defaultSquashMode ist ROOT_SQUASH.
  • defaultSquashUid und defaultSquashGid sind 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-mode ist ROOT_SQUASH.
  • Mit --default-squash-uid und --default-squash-gid werden 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:

  • defaultSquashMode ist ROOT_SQUASH.
  • defaultSquashUid und defaultSquashGid sind 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-mode ist ROOT_SQUASH.
  • Mit --default-squash-uid und --default-squash-gid werden die Standard-IDs angegeben, auf die Root-Nutzer reduziert werden sollen.
  • --access-rules gibt die Ausnahmen für „root squash“ an. Die folgenden Werte müssen angegeben werden:
    • name ist der Name dieser Zugriffsregel.
    • ipAddressRanges ist 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.
    • squashMode muss NO_SQUASH lauten.

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:

  • name ist ein benutzerdefinierter Name für diese Regel. Er darf nur alphanumerische Zeichen und Unterstriche (_) enthalten und muss 16 Zeichen oder weniger umfassen.

  • ipAddressRanges ist 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.

  • squashMode ist immer NO_SQUASH.

  • defaultSquashMode ist ROOT_SQUASH.

  • defaultSquashUid und defaultSquashGid sind 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-mode ist ROOT_SQUASH.
  • Mit --default-squash-uid und --default-squash-gid werden die Standard-IDs angegeben, auf die Root-Nutzer reduziert werden sollen.
  • --access-rules gibt die Ausnahmen für „root squash“ an. Die folgenden Werte müssen angegeben werden:
    • name ist der Name dieser Zugriffsregel.
    • ipAddressRanges ist 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.
    • squashMode muss NO_SQUASH lauten.

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.