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:
- 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, um die Daten zu speichern, 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, 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
-
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 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-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.
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 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.
- Verwenden Sie für den Lesezugriff die Rolle
Autorisieren Sie den Cloud FTP Service 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 Befehl
gcloud alpha storage ftp users createaus, 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 Siegs://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_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/dir2statt/dir1und/dir1/dir2. - SFTP_PERMISSION: die Zugriffsebene für das Verzeichnis. Für den schreibgeschützten Zugriff legen Sie diesen Wert auf
READ_ONLYfest. Legen Sie diesen Wert für Lese- und Schreibzugriff 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
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
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 Siegs://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
/dir1und/dir2statt/dir1und/dir1/dir2. - SFTP_PERMISSION: die Zugriffsebene für das Verzeichnis. Für den schreibgeschützten Zugriff legen Sie diesen Wert auf
READ_ONLYfest. Legen Sie diesen Wert für Lese- und Schreibzugriff 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 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
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. Es dauert einige Sekunden, bis der Nutzer erstellt ist.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
- 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