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 Managed Lustre-Dateisystem hat. Wenn ein Root-Nutzer auf das Managed Lustre-Dateisystem zugreift, werden seine Berechtigungen auf die eines weniger privilegierten Nutzers 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 festlegen.

Standardmäßig ist Root Squash für eine Managed 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, zu verhindern, dass Nutzer überhaupt Root-Berechtigungen haben. 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 auf VMs haben, kann die IP-basierte Zugriffssteuerung von Managed Lustre die Berechtigungen von Root-Nutzern beim Zugriff auf Managed Lustre-Instanzen einschränken. Diese Zugriffsprüfungen sind jedoch nicht garantiert und diese Funktion ist nicht als Sicherheitsgarantie gedacht. Sie sollten sich auf VPC-Firewallregeln als primären Sicherheits bereich 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 Sicherheit in Google Cloud.

IP-Weiterleitung deaktivieren

Die Standardkonfiguration von Compute Engine ermöglicht es Instanzen, die IP-Weiterleitung zu aktivieren. Um zu verhindern, dass Nutzer Root Squash-Richtlinien umgehen, 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 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.
  • --default-squash-uid und --default-squash-gid geben die Standard-IDs an, in die Root-Nutzer konvertiert werden sollen.

Eine vollständige Liste und Beschreibung der verfügbaren Felder beim Erstellen einer Instanz, siehe die 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, um Standard-Root Squash zu verwenden:

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.
  • --default-squash-uid und --default-squash-gid geben die Standard-IDs an, in 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 entsprechenden Endpunkt. Sie müssen accessRulesOptions in 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 außer einer bestimmten Gruppe vertrauenswürdiger Clients anwenden möchten, geben Sie eine Zugriffsregel an. Diese Regel gibt die Standard-UID und ‑GID an, in 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

So erstellen Sie eine 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.
  • --default-squash-uid und --default-squash-gid geben die Standard-IDs an, in 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 sein.

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
  }
}

Beim Festlegen einer bestimmten Zugriffsregel 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 nicht überlappenden CIDR-Bereichen. 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 mit keiner bestimmten Zugriffsregel übereinstimmen.

Wenn Sie beispielsweise einen 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.
  • --default-squash-uid und --default-squash-gid geben die Standard-IDs an, in 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 sein.

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 entsprechenden 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.