Nutzer einem SFTP-Server hinzufügen

In diesem Dokument wird beschrieben, wie Sie einem Cloud FTP-Server Nutzer hinzufügen. Nutzer wie externe Partner und interne Stakeholder können den Server verwenden, um Dateien sicher zu und von Cloud Storage zu übertragen.

Auf übergeordneter Ebene sind folgende Schritte erforderlich, um einem SFTP-Server einen Nutzer hinzuzufügen:

  1. Konfigurieren Sie die Berechtigungen für den Nutzer.
  2. Erstellen Sie einen SFTP-Nutzer und ordnen Sie seine Verzeichnisse Cloud Storage-Buckets zu.

Eine Anleitung zum Erstellen eines Servers finden Sie unter Externen SFTP-Server erstellen und Internen SFTP-Server erstellen.

Hinweise

  • Sie können einem Nutzer Zugriff auf maximal 10 Buckets gewähren.

  • Ein Nutzer kann maximal 10 öffentliche Schlüssel haben.

Hinweis

  1. Erstellen Sie einen oder mehrere Cloud Storage-Buckets, um die Daten zu speichern, mit denen der Nutzer arbeiten wird, falls die Buckets noch nicht vorhanden sind.

  2. Rufen Sie den öffentlichen Schlüssel des Nutzers aus jedem SSH-Schlüsselpaar ab, das er für die Verbindung zum Server verwenden wird.

    Wenn der Nutzer kein SSH-Schlüsselpaar hat, führen Sie die folgenden Schritte aus, um eines zu generieren.

    SSH-Schlüsselpaar generieren

    Welches Schlüsselformat benötigen Sie?

    Das benötigte Schlüsselformat hängt davon ab, welchen Client Sie für die Verbindung zum SFTP-Server verwenden. Weitere Informationen finden Sie unter Unterstützte SFTP-Clients.

    PEM-Format

    1. Verwenden Sie zum Erstellen eines OpenSSH-Schlüsselpaars (PEM-Format) das ssh-keygen-Dienstprogramm.

      Führen Sie auf dem Clientcomputer, der eine Verbindung zum SFTP-Server herstellt, den folgenden Befehl aus:

      ssh-keygen -t rsa -b 4096 -f ~/.ssh/KEY_PAIR_NAME

      Ersetzen Sie KEY_PAIR_NAME durch einen Namen für das Schlüsselpaar, z. B. sftp_user_key.

    2. Extrahieren Sie den öffentlichen Schlüssel:

      cat ~/.ssh/KEY_PAIR_NAME.pub

    PPK-Format

    1. Verwenden Sie zum Erstellen eines PuTTY-Schlüsselpaars (PPK-Format) das Tool PuTTYgen.

      Führen Sie auf dem Clientcomputer, der eine Verbindung zum SFTP-Server herstellt, den folgenden Befehl aus:

      puttygen -t rsa -b 4096 -o KEY_PAIR_NAME.ppk

      Ersetzen Sie KEY_PAIR_NAME durch einen Namen für das Schlüsselpaar, z. B. sftp_user_key.

    2. Extrahieren Sie den öffentlichen Schlüssel:

      puttygen -L KEY_PAIR_NAME.ppk

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle FTP-Administrator (roles/ftp.admin) für Ihr Projekt zuzuweisen, um die Berechtigung zu erhalten, die Sie zum Hinzufügen von SFTP-Nutzern benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierte Rolle enthält die Berechtigung ftp.users.create, die zum Hinzufügen von SFTP-Nutzern erforderlich ist.

Sie können diese Berechtigung auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Berechtigungen für einen Nutzer konfigurieren

  1. Installieren Sie die Google Cloud CLI. Initialisieren Sie die Google Cloud CLI nach der Installation mit dem folgenden Befehl:

    gcloud init

    Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  2. Projekt festlegen:

    gcloud config set project PROJECT_ID

    Ersetzen Sie PROJECT_ID durch die ID des Projekts, das den SFTP-Server enthält.

  3. Erstellen Sie ein Dienstkonto für den Nutzer, falls noch keines vorhanden ist. Das Dienstkonto greift im Namen des Nutzers auf Cloud Storage-Ressourcen zu.

    gcloud iam service-accounts create USERNAME-sa \
        --description="USERNAME SFTP Service Account" \
        --display-name="USERNAME SFTP Service Account"

    Ersetzen Sie USERNAME durch einen eindeutigen Nutzernamen für den SFTP-Nutzer. Der Nutzername muss mit einem Kleinbuchstaben beginnen und darf Kleinbuchstaben, Ziffern oder Bindestriche enthalten. Die maximale Länge beträgt 32 Zeichen.

    Bei Erfolg wird eine Meldung wie Created service account [example-userid-sa] angezeigt.

  4. Weisen Sie dem Administrator, der den SFTP-Nutzer erstellt, IAM-Rollen zu:

    1. Weisen Sie sich selbst die Rolle „Dienstkontonutzer“ (roles/iam.serviceAccountUser) zu:

      gcloud iam service-accounts add-iam-policy-binding USERNAME-sa@PROJECT_ID.iam.gserviceaccount.com \
          --member="user:ADMINISTRATOR_EMAIL" \
          --role="roles/iam.serviceAccountUser"

      Ersetzen Sie ADMINISTRATOR_EMAIL durch die E-Mail-Adresse des Principals, der den SFTP-Nutzer erstellt. Wenn Sie den Nutzer erstellen (im Gegensatz zu einer Anwendung), ist dieser Wert die E-Mail-Adresse, mit der Sie auf Google Cloudzugreifen.

      Bei Erfolg wird eine Meldung wie die folgende angezeigt:

      Updated IAM policy for serviceAccount [example-userid-sa@example-project.iam.gserviceaccount.com].
      bindings:
      - members:
      - user:admin@example.com
      role: roles/iam.serviceAccountUser
      etag: BwZJk7OiSzw=
      version: 1
      
    2. Weisen Sie sich die Rolle „Storage Bucket Viewer“ (roles/storage.bucketViewer) für den Bucket zu:

      gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
          --member="user:ADMINISTRATOR_EMAIL" \
          --role="roles/storage.bucketViewer"

      Ersetzen Sie BUCKET_NAME durch den Namen des Buckets:

      Wiederholen Sie diesen Schritt für jeden Bucket, auf den der Nutzer zugreifen muss.

    3. Weisen Sie sich selbst die Rolle „Storage-Objekt-Betrachter“ (roles/storage.objectViewer) für den Bucket zu:

      gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
          --member="user:ADMINISTRATOR_EMAIL" \
          --role="roles/storage.objectViewer"

      Wiederholen Sie diesen Schritt für jeden Bucket, auf den der Nutzer zugreifen muss.

  5. Weisen Sie dem Dienstkonto des Nutzers die IAM-Rolle zu, die für den Zugriff auf den Bucket erforderlich ist:

    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
        --member="serviceAccount:USERNAME-sa@PROJECT_ID.iam.gserviceaccount.com" \
        --role="ROLE"

    Ersetzen Sie ROLE durch eine der folgenden IAM-Rollen:

    • Verwenden Sie für den Lesezugriff die Rolle roles/storage.objectViewer.
    • Verwenden Sie für Lese- und Schreibzugriff die Rolle roles/storage.objectAdmin.

    Wiederholen Sie diesen Schritt für jeden Bucket, auf den der Nutzer zugreifen muss.

  6. Autorisieren Sie den Cloud FTP Service Agent, Tokens für das Dienstkonto des Nutzers zu generieren:

    1. Rufen Sie die E‑Mail-Adresse des Dienst-Agents des Servers ab. Eine Anleitung finden Sie unter Details zu einem Server abrufen.

    2. Cloud FTP-Dienst-Agent autorisieren:

      gcloud iam service-accounts add-iam-policy-binding USERNAME-sa@PROJECT_ID.iam.gserviceaccount.com \
          --member="serviceAccount:SERVICE_AGENT_EMAIL" \
          --role="roles/iam.serviceAccountTokenCreator"

      Ersetzen Sie SERVICE_AGENT_EMAIL durch die E-Mail-Adresse des Dienst-Agents.

Erstellen Sie als Nächstes einen Nutzer.

SFTP-Servernutzer erstellen

Nachdem Sie Berechtigungen für einen Nutzer konfiguriert haben, erstellen Sie den Nutzer und ordnen seine Verzeichnisse einem oder mehreren Cloud Storage-Buckets zu.

gcloud

  1. Führen Sie den Befehl gcloud alpha storage ftp users create aus, um einen Nutzer für einen SFTP-Server zu erstellen.

    Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

    • CREDENTIAL_NAME: Ein eindeutiger Name zur Identifizierung der Nutzeranmeldedaten.
    • SSH_PUBLIC_KEY: Der Inhalt des öffentlichen SSH-Schlüssels des Nutzers im OpenSSH-Format. Beispiel: ssh-rsa AAAAB3NzaC1ycRexample....
    • USERNAME: Der Nutzername des SFTP-Nutzers.
    • SERVICE_ACCOUNT: Das Dienstkonto des Nutzers. Beispiel: username-sa@example-project.iam.gserviceaccount.com.
    • LOCATION_ID: der Standort des Servers, z. B. us-west1.
    • SERVER_ID: die Server-ID.
    • BUCKET_NAME: Der Name eines Buckets, auf den der SFTP-Nutzer Zugriff hat, z. B. example-bucket. Lassen Sie gs:// aus.
    • Optional: BUCKET_PREFIX: Der Pfad eines Ordners im Bucket, der als Stammverzeichnis für diese Verzeichniszuordnung festgelegt werden soll. Wenn Sie die Property bucket_prefix weglassen, verwendet Cloud FTP das Bucket-Stammverzeichnis.
    • DIRECTORY: der logische Pfad des Zielverzeichnisses, der dem SFTP-Nutzer angezeigt wird. Beispiel: /home/uploads.

      Wenn Sie mehrere Buckets oder Ordner zuordnen, geben Sie für jede Zuordnung einen eindeutigen Verzeichnispfad an.

      Verschachtelte logische Verzeichnisse werden nicht unterstützt. Wenn Sie mehrere Zuordnungen für ein Verzeichnis angeben, sollten Sie die Verzeichnisse in einer flachen Struktur anstelle einer verschachtelten Struktur angeben. Verwenden Sie beispielsweise /dir1 und /dir2 statt /dir1 und /dir1/dir2.

    • SFTP_PERMISSION: die Zugriffsebene für das Verzeichnis. Für den schreibgeschützten Zugriff legen Sie diesen Wert auf READ_ONLY fest. Legen Sie diesen Wert für Lese- und Schreibzugriff auf READ_WRITE fest.

    Wichtige Hinweise:

    • Wenn Sie einem Nutzer Zugriff auf mehrere Buckets gewähren möchten, geben Sie das Flag --storage-directory-mapping mehrmals an, mit einer Verzeichniszuordnung für jeden Bucket.
    • Wenn Sie mehrere öffentliche Schlüssel für einen Nutzer konfigurieren möchten, geben Sie mehrere Anmeldedaten in der Datei credentials.json an.

    Speichern Sie den folgenden Inhalt in einer Datei mit dem Namen credentials.json:

    [
      {
        "credentialName": "CREDENTIAL_NAME",
        "credentialType": "PUBLIC_KEY",
        "sshPublicKeyBody": "SSH_PUBLIC_KEY"
      }
    ]

    Führen Sie folgenden Befehl aus:

    Linux, macOS oder Cloud Shell

    gcloud alpha storage ftp users create USERNAME \
        --customer-service-account=SERVICE_ACCOUNT --location=LOCATION_ID \
        --server=SERVER_ID \
        --storage-directory-mapping=bucket=BUCKET_NAME,bucket_prefix=BUCKET_PREFIX,directory=DIRECTORY,permission=SFTP_PERMISSION \
        --user-credentials-from-file=credentials.json

    Windows (PowerShell)

    gcloud alpha storage ftp users create USERNAME `
        --customer-service-account=SERVICE_ACCOUNT --location=LOCATION_ID `
        --server=SERVER_ID `
        --storage-directory-mapping=bucket=BUCKET_NAME,bucket_prefix=BUCKET_PREFIX,directory=DIRECTORY,permission=SFTP_PERMISSION `
        --user-credentials-from-file=credentials.json

    Windows (cmd.exe)

    gcloud alpha storage ftp users create USERNAME ^
        --customer-service-account=SERVICE_ACCOUNT --location=LOCATION_ID ^
        --server=SERVER_ID ^
        --storage-directory-mapping=bucket=BUCKET_NAME,bucket_prefix=BUCKET_PREFIX,directory=DIRECTORY,permission=SFTP_PERMISSION ^
        --user-credentials-from-file=credentials.json
    Es dauert einige Sekunden, bis der Nutzer erstellt ist.

  2. Gib dem Nutzer die folgenden Informationen, die er für die Verbindung zum Server benötigt:

    • Der SFTP-Nutzername des Nutzers.

    • Die Zugriffskonfiguration des Servers, die vom Servertyp abhängt:

      • Bei einem externen Server die IP-Adresse des Servers.

      • Für einen internen Server der URI des Dienstanhangs des Servers.

      Eine Anleitung zum Abrufen der Zugriffskonfiguration des Servers finden Sie unter Details zu einem Server abrufen.

    • Optional: Der Schlüssel-Fingerabdruck des Servers.

REST

  1. Verwenden Sie zum Erstellen eines Nutzers für einen SFTP-Server die Methode servers.users.create.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT_ID: die Google Cloud Projekt-ID des Servers.
    • LOCATION_ID: der Standort des Servers, z. B. us-west1.
    • SERVER_ID: die Server-ID.
    • USERNAME: Der Nutzername des SFTP-Nutzers.
    • BUCKET_NAME: Der Name eines Buckets, auf den der SFTP-Nutzer Zugriff hat, z. B. example-bucket. Lassen Sie gs:// aus.
    • Optional: BUCKET_PREFIX: Der Pfad eines Ordners im Bucket, der als Stammverzeichnis für diese Verzeichniszuordnung festgelegt werden soll. Wenn Sie diesen Wert weglassen, verwendet Cloud FTP das Bucket-Stammverzeichnis.
    • DIRECTORY: der logische Pfad des Zielverzeichnisses, der dem SFTP-Nutzer angezeigt wird. Beispiel: /home/uploads. Wenn Sie diesen Wert weglassen, legt Cloud FTP das Zielverzeichnis auf / fest.

      Wenn Sie mehrere Buckets oder Ordner zuordnen, geben Sie für jede Zuordnung einen eindeutigen Verzeichnispfad an.

      Verschachtelte logische Verzeichnisse werden nicht unterstützt. Wenn Sie mehrere Zuordnungen für ein Verzeichnis angeben, sollten Sie die Verzeichnisse in einer flachen Struktur anstelle einer verschachtelten Struktur angeben. Verwenden Sie beispielsweise /dir1 und /dir2 statt /dir1 und /dir1/dir2.

    • SFTP_PERMISSION: die Zugriffsebene für das Verzeichnis. Für den schreibgeschützten Zugriff legen Sie diesen Wert auf READ_ONLY fest. Legen Sie diesen Wert für Lese- und Schreibzugriff auf READ_WRITE fest.
    • SERVICE_ACCOUNT: Das Dienstkonto des Nutzers. Beispiel: username-sa@example-project.iam.gserviceaccount.com.
    • CREDENTIAL_NAME: Ein eindeutiger Name zur Identifizierung der Nutzeranmeldedaten.
    • SSH_PUBLIC_KEY: Der Inhalt des öffentlichen SSH-Schlüssels des Nutzers im OpenSSH-Format. Beispiel: ssh-rsa AAAAB3NzaC1ycRexample....

    Wichtige Hinweise:

    • Wenn Sie einem Nutzer Zugriff auf mehrere Buckets gewähren möchten, geben Sie mehrere Bucket-Zuordnungen in der Liste storageDirectoryMappings an.
    • Wenn Sie mehrere öffentliche Schlüssel für einen Nutzer konfigurieren möchten, geben Sie mehrere Anmeldedaten in der Liste userCredentials an.

    HTTP-Methode und URL:

    POST https://ftp.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/servers/SERVER_ID/users?userId=USERNAME

    JSON-Text anfordern:

    {
      "storageDirectoryMappings": [
        {
          "bucket": "BUCKET_NAME",
          "bucketPrefix": "BUCKET_PREFIX",
          "directory": "DIRECTORY",
          "permission": "SFTP_PERMISSION"
        }
      ],
      "customerServiceAccount": "SERVICE_ACCOUNT",
      "userCredentials": [
        {
          "credentialName": "CREDENTIAL_NAME",
          "credentialType": "PUBLIC_KEY",
          "sshPublicKeyBody": "SSH_PUBLIC_KEY"
        }
      ]
    }
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Die Antwort identifiziert einen Vorgang mit langer Ausführungszeit. Es dauert einige Sekunden, bis der Nutzer erstellt ist.

  2. Gib dem Nutzer die folgenden Informationen, die er für die Verbindung zum Server benötigt:

    • Der SFTP-Nutzername des Nutzers.

    • Die Zugriffskonfiguration des Servers, die vom Servertyp abhängt:

      • Bei einem externen Server die IP-Adresse des Servers.

      • Für einen internen Server der URI des Dienstanhangs des Servers.

      Eine Anleitung zum Abrufen der Zugriffskonfiguration des Servers finden Sie unter Details zu einem Server abrufen.

    • Optional: Der Schlüssel-Fingerabdruck des Servers.

Nächste Schritte