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 Cloud Storage zu übertragen und von dort herunterzuladen.

Im Allgemeinen sind die folgenden Schritte erforderlich, um einem SFTP-Server einen Nutzer hinzuzufügen:

  1. Berechtigungen für den Nutzer konfigurieren.
  2. SFTP-Nutzer erstellen und seine Verzeichnisse Cloud Storage-Buckets zuordnen.

Informationen 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 zum Speichern der Daten, 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

    Verwenden Sie das Dienstprogramm ssh-keygen, um ein SSH-Schlüsselpaar zu generieren. Führen Sie auf dem Clientcomputer , der eine Verbindung zum SFTP-Server herstellen soll, 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.

    Der öffentliche Schlüssel wird in der ~/.ssh/KEY_PAIR_NAME.pub Datei gespeichert.

Erforderliche Rollen

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

Diese vordefinierte Rolle enthält die ftp.users.create Berechtigung, 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 und melden Sie sich dann mit Ihrer föderierten Identität in der gcloud CLI an. Nach der Anmeldung, initialisieren Sie die Google Cloud CLI mit dem folgenden Befehl:

    gcloud init
  2. Legen Sie das Projekt fest:

    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 kann Kleinbuchstaben, Ziffern oder Bindestriche enthalten.

    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. \
          --member="user:ADMINISTRATOR_EMAIL" \
          --role="roles/iam.serviceAccountUser"

      Ersetzen Sie ADMINISTRATOR_EMAIL durch die E-Mail-Adresse des Hauptkontos, das 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 zugreifen Google Cloud.

      Bei Erfolg wird eine Meldung wie die folgende angezeigt:

      Updated IAM policy for serviceAccount [example-userid-sa@example-project.].
      bindings:
      - members:
      - user:admin@example.com
      role: roles/iam.serviceAccountUser
      etag: BwZJk7OiSzw=
      version: 1
      
    2. Weisen Sie sich selbst 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 Object Viewer“ (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." \
        --role="ROLE"

    Ersetzen Sie ROLE durch eine der folgenden IAM-Rollen:

    • Verwenden Sie für den schreibgeschützten Zugriff 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-Dienst-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. Autorisieren Sie den Cloud FTP-Dienst-Agent:

      gcloud iam service-accounts add-iam-policy-binding USERNAME-sa@PROJECT_ID. \
          --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 die 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 gcloud alpha storage ftp users create Befehl 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 Text 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..
    • 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:// weg.
    • Optional: BUCKET_PREFIX: Der Pfad eines Ordners im Bucket, der als Stammverzeichnis für diese Verzeichniszuordnung festgelegt werden soll. Wenn Sie die bucket_prefix Property weglassen, verwendet Cloud FTP das Bucket-Stammverzeichnis.
    • DIRECTORY: Der logische Zielverzeichnispfad, 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, geben Sie die Verzeichnisse in einer flachen Struktur an, nicht in einer verschachtelten Struktur. Verwenden Sie beispielsweise /dir1 und /dir2 anstelle von /dir1 und /dir1/dir2.

    • SFTP_PERMISSION: Die Zugriffsebene für das Verzeichnis. Setzen Sie diesen Wert für den schreibgeschützten Zugriff auf READ_ONLY. Setzen Sie diesen Wert für Lese- und Schreibzugriff auf READ_WRITE.

    Wichtige Hinweise:

    • Wenn Sie einem Nutzer Zugriff auf mehrere Buckets gewähren möchten, geben Sie das --storage-directory-mapping Flag 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 credentials.json Datei 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

  2. Geben Sie 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:

      • Für einen 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üsselfingerabdruck des Servers.

REST

  1. Verwenden Sie die servers.users.create Methode, um einen Nutzer für einen SFTP-Server zu erstellen.

    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:// weg.
    • 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 Zielverzeichnispfad, 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, geben Sie die Verzeichnisse in einer flachen Struktur an, nicht in einer verschachtelten Struktur. Verwenden Sie beispielsweise /dir1 und /dir2 anstelle von /dir1 und /dir1/dir2.

    • SFTP_PERMISSION: Die Zugriffsebene für das Verzeichnis. Setzen Sie diesen Wert für den schreibgeschützten Zugriff auf READ_ONLY. Setzen Sie diesen Wert für Lese- und Schreibzugriff auf READ_WRITE.
    • SERVICE_ACCOUNT: Das Dienstkonto des Nutzers. Beispiel: username-sa@example-project..
    • CREDENTIAL_NAME: Ein eindeutiger Name zur Identifizierung der Nutzeranmeldedaten.
    • SSH_PUBLIC_KEY: Der Text 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 storageDirectoryMappings Liste an.
    • Wenn Sie mehrere öffentliche Schlüssel für einen Nutzer konfigurieren möchten, geben Sie mehrere Anmeldedaten in der userCredentials Liste 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 der Anfrage:

    {
      "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. Geben Sie 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:

      • Für einen 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üsselfingerabdruck des Servers.

Nächste Schritte