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 in Cloud Storage zu übertragen und aus Cloud Storage herunterzuladen.
Auf übergeordneter Ebene sind folgende Schritte erforderlich, um einem SFTP-Server einen Nutzer hinzuzufügen:
- Konfigurieren Sie die Berechtigungen für den Nutzer.
- 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
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.
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, können Sie mit den folgenden Schritten eines 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
-
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_NAMEdurch einen Namen für das Schlüsselpaar, z. B.sftp_user_key. -
Extrahieren Sie den öffentlichen Schlüssel:
cat ~/.ssh/KEY_PAIR_NAME.pub
PPK-Format
-
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_NAMEdurch einen Namen für das Schlüsselpaar, z. B.sftp_user_key. -
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
-
Installieren Sie die Google Cloud CLI. Initialisieren Sie die Google Cloud CLI nach der Installation mit dem folgenden Befehl:
gcloud initWenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
Projekt festlegen:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch die ID des Projekts, das den SFTP-Server enthält.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
USERNAMEdurch 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.Weisen Sie dem Administrator, der den SFTP-Nutzer erstellt, IAM-Rollen zu:
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_EMAILdurch 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: 1Weisen 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_NAMEdurch den Namen des Buckets:Wiederholen Sie diesen Schritt für jeden Bucket, auf den der Nutzer zugreifen muss.
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.
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
ROLEdurch 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.
- Verwenden Sie für den schreibgeschützten Zugriff die Rolle
Autorisieren Sie den Cloud FTP-Dienst-Agent, Tokens für das Dienstkonto des Nutzers zu generieren:
Rufen Sie die E‑Mail-Adresse des Dienst-Agents des Servers ab. Eine Anleitung finden Sie unter Details zu einem Server abrufen.
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_EMAILdurch 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
Führen Sie den
gcloud alpha storage ftp users createBefehl 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 Hauptteil 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 diegs://weg. - (Optional) BUCKET_PREFIX: Der Pfad eines Ordners im Bucket, der als Stammverzeichnis für diese Verzeichniszuordnung festgelegt werden soll.
Wenn Sie die Property
bucket_prefixweglassen, 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
/dir1und/dir2anstelle von/dir1und/dir1/dir2. - SFTP_PERMISSION: die Zugriffsebene für das Verzeichnis. Für den Lesezugriff legen Sie diesen Wert auf
READ_ONLYfest. Für Lese- und Schreibzugriff legen Sie diesen Wert aufREAD_WRITEfest.
Wichtige Hinweise:
- Wenn Sie einem Nutzer Zugriff auf mehrere Buckets gewähren möchten, geben Sie das Flag
--storage-directory-mappingmehrmals 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.jsonan.
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
Es dauert einige Sekunden, bis der Nutzer erstellt ist.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
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üssel-Fingerabdruck des Servers.
REST
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 diegs://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 Pfad des Zielverzeichnisses, der dem SFTP-Nutzer angezeigt wird. Beispiel:
/home/uploads. Wenn Sie diesen Wert weglassen, wird das Zielverzeichnis in Cloud FTP auf/festgelegt.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
/dir1und/dir2anstelle von/dir1und/dir1/dir2. - SFTP_PERMISSION: die Zugriffsebene für das Verzeichnis. Für den Lesezugriff legen Sie diesen Wert auf
READ_ONLYfest. Für Lese- und Schreibzugriff legen Sie diesen Wert aufREAD_WRITEfest. - 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 Hauptteil 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
storageDirectoryMappingsan. - Wenn Sie mehrere öffentliche Schlüssel für einen Nutzer konfigurieren möchten, geben Sie mehrere Anmeldedaten in der Liste
userCredentialsan.
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. Das Erstellen des Nutzers dauert einige Sekunden.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üssel-Fingerabdruck des Servers.
Nächste Schritte
- Verbindung zu einem externen SFTP-Server herstellen
- Verbindung zu einem internen SFTP-Server herstellen
- Daten mit SFTP-Befehlen übertragen
- Optionen für Datenschutz, Back-up und Wiederherstellung für Cloud Storage-Buckets