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:
- Berechtigungen für den Nutzer konfigurieren.
- 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
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, 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_NAMEdurch einen Namen für das Schlüsselpaar, z. B.sftp_user_key.Der öffentliche Schlüssel wird in der
~/.ssh/KEY_PAIR_NAME.pubDatei 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
-
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.
Legen Sie das Projekt fest:
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 kann Kleinbuchstaben, Ziffern oder Bindestriche enthalten.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 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.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.
Autorisieren Sie den Cloud FTP-Dienst-Agent:
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 die 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 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.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://weg. - Optional: BUCKET_PREFIX: Der Pfad eines Ordners im Bucket, der als
Stammverzeichnis für diese Verzeichniszuordnung festgelegt werden soll.
Wenn Sie die
bucket_prefixProperty 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
/dir1und/dir2anstelle von/dir1und/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 aufREAD_WRITE.
Wichtige Hinweise:
- Wenn Sie einem Nutzer Zugriff auf mehrere Buckets gewähren möchten, geben Sie das
--storage-directory-mappingFlag 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.jsonDatei 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
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
Verwenden Sie die
servers.users.createMethode, 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 Siegs://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
/dir1und/dir2anstelle von/dir1und/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 aufREAD_WRITE. - 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 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
storageDirectoryMappingsListe an. - Wenn Sie mehrere öffentliche Schlüssel für einen Nutzer konfigurieren möchten, geben Sie mehrere Anmeldedaten in der
userCredentialsListe 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.
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
- Verbindung zu einem externen SFTP-Server herstellen.
- Verbindung zu einem internen SFTP-Server herstellen.
- Daten mit SFTP-Befehlen übertragen.
- Informationen zu Optionen für Datenschutz, Back-up und Wiederherstellung für Cloud Storage-Buckets.