Ce document explique comment ajouter des utilisateurs à un serveur Cloud FTP. Les utilisateurs, tels que les partenaires externes et les parties prenantes internes, peuvent utiliser le serveur pour transférer des fichiers de manière sécurisée vers et depuis Cloud Storage.
Voici les étapes générales à suivre pour ajouter un utilisateur à un serveur SFTP :
- Configurez les autorisations de l'utilisateur.
- Créez un utilisateur SFTP et mappez ses répertoires à des buckets Cloud Storage.
Pour savoir comment créer un serveur, consultez Créer un serveur SFTP externe et Créer un serveur SFTP interne.
Remarques
Vous pouvez accorder à un utilisateur l'accès à un maximum de 10 buckets.
Un utilisateur peut disposer d'un maximum de 10 clés publiques.
Avant de commencer
Créez un ou plusieurs buckets Cloud Storage pour stocker les données avec lesquelles l'utilisateur travaillera, si les buckets n'existent pas déjà exist.
Obtenez la clé publique de l'utilisateur à partir de chaque paire de clés SSH qu'il utilisera pour se connecter au serveur.
Si l'utilisateur ne dispose pas d'une paire de clés SSH, procédez comme suit pour en générer une.
Générer une paire de clés SSH
Pour générer une paire de clés SSH, utilisez l'utilitaire
ssh-keygen. Sur la machine cliente qui se connectera au serveur SFTP, exécutez la commande suivante :ssh-keygen -t rsa -b 4096 -f ~/.ssh/KEY_PAIR_NAME
Remplacez
KEY_PAIR_NAMEpar un nom pour la paire de clés, tel quesftp_user_key.La clé publique est enregistrée dans le fichier
~/.ssh/KEY_PAIR_NAME.pub.
Rôles requis
Pour obtenir l'autorisation nécessaire pour ajouter des utilisateurs SFTP, demandez à votre administrateur de vous accorder le rôle IAM Administrateur FTP (roles/ftp.admin) sur votre projet.
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Ce rôle prédéfini contient l'
ftp.users.create
autorisation,
qui est requise pour
ajouter des utilisateurs SFTP.
Vous pouvez également obtenir cette autorisation avec des rôles personnalisés ou d'autres rôles prédéfinis.
Configurer les autorisations d'un utilisateur
-
Installez la Google Cloud CLI, puis connectez-vous à la gcloud CLI avec votre identité fédérée. Après vous être connecté, initialisez la Google Cloud CLI en exécutant la commande suivante :
gcloud init Définissez le projet :
gcloud config set project PROJECT_ID
Remplacez
PROJECT_IDpar l'ID du projet contenant le serveur SFTP.Créez un compte de service pour l'utilisateur, s'il n'en existe pas déjà un. Le compte de service accède aux ressources Cloud Storage au nom de l'utilisateur.
gcloud iam service-accounts create USERNAME-sa \ --description="USERNAME SFTP Service Account" \ --display-name="USERNAME SFTP Service Account"
Remplacez
USERNAMEpar un nom d'utilisateur unique pour l'utilisateur SFTP. Le nom d'utilisateur doit commencer par une lettre minuscule et peut inclure des lettres minuscules, des chiffres ou des traits d'union.En cas de réussite, un message semblable à
Created service account [example-userid-sa]s'affiche.Attribuez des rôles IAM à l'administrateur qui crée l'utilisateur SFTP :
Attribuez-vous le rôle Utilisateur du compte de service (
roles/iam.serviceAccountUser) :gcloud iam service-accounts add-iam-policy-binding USERNAME-sa@PROJECT_ID. \ --member="user:ADMINISTRATOR_EMAIL" \ --role="roles/iam.serviceAccountUser"
Remplacez
ADMINISTRATOR_EMAILpar l'adresse e-mail du principal qui crée l'utilisateur SFTP. Si vous créez l'utilisateur (par opposition à une application), cette valeur correspond à l'adresse e-mail que vous utilisez pour accéder à Google Cloud.En cas de réussite, un message semblable à celui-ci s'affiche :
Updated IAM policy for serviceAccount [example-userid-sa@example-project.]. bindings: - members: - user:admin@example.com role: roles/iam.serviceAccountUser etag: BwZJk7OiSzw= version: 1Attribuez-vous le rôle Lecteur de buckets Storage (
roles/storage.bucketViewer) sur le bucket :gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member="user:ADMINISTRATOR_EMAIL" \ --role="roles/storage.bucketViewer"
Remplacez
BUCKET_NAMEpar le nom du bucket.Répétez cette étape pour chaque bucket auquel l'utilisateur doit accéder.
Attribuez-vous le rôle Lecteur d'objets Storage (
roles/storage.objectViewer) sur le bucket :gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member="user:ADMINISTRATOR_EMAIL" \ --role="roles/storage.objectViewer"
Répétez cette étape pour chaque bucket auquel l'utilisateur doit accéder.
Attribuez au compte de service de l'utilisateur le rôle IAM nécessaire pour accéder au bucket :
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member="serviceAccount:USERNAME-sa@PROJECT_ID." \ --role="ROLE"
Remplacez
ROLEpar l'un des rôles IAM suivants :- Pour un accès en lecture seule, utilisez le rôle
roles/storage.objectViewer. - Pour un accès en lecture et en écriture, utilisez le rôle
roles/storage.objectAdmin.
Répétez cette étape pour chaque bucket auquel l'utilisateur doit accéder.
- Pour un accès en lecture seule, utilisez le rôle
Autorisez l'agent de service Cloud FTP à générer des jetons pour le compte de service de l'utilisateur :
Obtenez l'adresse e-mail de l'agent de service du serveur. Pour savoir comment procéder, consultez Obtenir des informations sur un serveur.
Autorisez l'agent de service Cloud FTP :
gcloud iam service-accounts add-iam-policy-binding USERNAME-sa@PROJECT_ID. \ --member="serviceAccount:SERVICE_AGENT_EMAIL" \ --role="roles/iam.serviceAccountTokenCreator"
Remplacez
SERVICE_AGENT_EMAILpar l'adresse e-mail de l'agent de service.
Ensuite, créez un utilisateur.
Créer un utilisateur de serveur SFTP
Une fois que vous avez configuré les autorisations d'un utilisateur, créez-le et mappez ses répertoires à un ou plusieurs buckets Cloud Storage.
gcloud
Pour créer un utilisateur pour un serveur SFTP, exécutez la
gcloud alpha storage ftp users createcommande.Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- CREDENTIAL_NAME : nom unique permettant d'identifier les identifiants de l'utilisateur.
- SSH_PUBLIC_KEY : corps de la clé publique SSH de l'utilisateur, au format OpenSSH. Exemple :
ssh-rsa AAAAB3NzaC1ycRexample.... - USERNAME : nom d'utilisateur SFTP.
- SERVICE_ACCOUNT : compte de service de l'utilisateur. Exemple :
username-sa@example-project.. - LOCATION_ID : l'emplacement du serveur, tel
que
us-west1. - SERVER_ID : ID du serveur.
- BUCKET_NAME : nom d'un bucket auquel l'utilisateur SFTP a accès, tel que
example-bucket. Omettezgs://. - (Facultatif) BUCKET_PREFIX : chemin d'accès à un dossier dans le bucket à définir comme
répertoire racine pour ce mappage de répertoire.
Si vous omettez la propriété
bucket_prefix, Cloud FTP utilise la racine du bucket. -
DIRECTORY : chemin d'accès au répertoire de destination logique présenté à l'utilisateur SFTP. Exemple :
/home/uploads.Si vous mappez plusieurs buckets ou dossiers, fournissez un chemin d'accès unique pour chaque mappage.
Les répertoires logiques imbriqués ne sont pas acceptés. Si vous fournissez plusieurs mappages pour un répertoire, fournissez les répertoires dans une structure plate plutôt qu'imbriquée. Par exemple, utilisez
/dir1et/dir2au lieu de/dir1et/dir1/dir2. - SFTP_PERMISSION : niveau d'accès au répertoire. Pour un accès en lecture seule, définissez cette
valeur sur
READ_ONLY. Pour un accès en lecture et en écriture, définissez cette valeur surREAD_WRITE.
Veuillez noter les points suivants :
- Pour accorder à un utilisateur l'accès à plusieurs buckets, fournissez l'option
--storage-directory-mappingplusieurs fois, avec un mappage de répertoire pour chaque bucket. - Pour configurer plusieurs clés publiques pour un utilisateur, fournissez plusieurs identifiants dans le
credentials.jsonfichier.
Enregistrez le code suivant dans un fichier nommé
credentials.json:[ { "credentialName": "CREDENTIAL_NAME", "credentialType": "PUBLIC_KEY", "sshPublicKeyBody": "SSH_PUBLIC_KEY" } ]
Exécutez la commande suivante :
Linux, macOS ou 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
Fournissez à l'utilisateur les informations suivantes, dont il a besoin pour se connecter au serveur :
Nom d'utilisateur SFTP.
Configuration d'accès du serveur, qui dépend du type de serveur :
Pour un serveur externe, adresse IP du serveur.
Pour un serveur interne, URI du rattachement de service du serveur.
Pour savoir comment obtenir la configuration d'accès du serveur, consultez Obtenir des informations sur un serveur.
(Facultatif) Empreinte numérique de la clé du serveur.
REST
Pour créer un utilisateur pour un serveur SFTP, utilisez la
servers.users.createméthode.Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_ID : ID du Google Cloud projet du serveur.
- LOCATION_ID : l'emplacement du serveur, tel
que
us-west1. - SERVER_ID : ID du serveur.
- USERNAME : nom d'utilisateur SFTP.
- BUCKET_NAME : nom d'un bucket auquel l'utilisateur SFTP a accès, tel que
example-bucket. Omettezgs://. - (Facultatif) BUCKET_PREFIX : chemin d'accès à un dossier dans le bucket à définir comme répertoire racine pour ce mappage de répertoire. Si vous omettez cette valeur, Cloud FTP utilise la racine du bucket root.
-
DIRECTORY : chemin d'accès au répertoire de destination logique présenté à l'utilisateur SFTP. Exemple :
/home/uploads. Si vous omettez cette valeur, Cloud FTP définit le répertoire de destination sur/.Si vous mappez plusieurs buckets ou dossiers, fournissez un chemin d'accès unique pour chaque mappage.
Les répertoires logiques imbriqués ne sont pas acceptés. Si vous fournissez plusieurs mappages pour un répertoire, fournissez les répertoires dans une structure plate plutôt qu'imbriquée. Par exemple, utilisez
/dir1et/dir2au lieu de/dir1et/dir1/dir2. - SFTP_PERMISSION : niveau d'accès au répertoire. Pour un accès en lecture seule, définissez cette
valeur sur
READ_ONLY. Pour un accès en lecture et en écriture, définissez cette valeur surREAD_WRITE. - SERVICE_ACCOUNT : compte de service de l'utilisateur. Exemple :
username-sa@example-project.. - CREDENTIAL_NAME : nom unique permettant d'identifier les identifiants de l'utilisateur.
- SSH_PUBLIC_KEY : corps de la clé publique SSH de l'utilisateur, au format OpenSSH. Exemple :
ssh-rsa AAAAB3NzaC1ycRexample....
Veuillez noter les points suivants :
- Pour accorder à un utilisateur l'accès à plusieurs buckets, fournissez plusieurs mappages de buckets dans la
storageDirectoryMappingsliste. - Pour configurer plusieurs clés publiques pour un utilisateur, fournissez plusieurs identifiants dans la
userCredentialsliste.
Méthode HTTP et URL :
POST https://ftp.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/servers/SERVER_ID/users?userId=USERNAME
Corps JSON de la requête :
{ "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" } ] }Pour envoyer votre requête, développez l'une des options suivantes :
La réponse identifie une opération de longue durée. La création de l'utilisateur prend quelques secondes.
Fournissez à l'utilisateur les informations suivantes, dont il a besoin pour se connecter au serveur :
Nom d'utilisateur SFTP.
Configuration d'accès du serveur, qui dépend du type de serveur :
Pour un serveur externe, adresse IP du serveur.
Pour un serveur interne, URI du rattachement de service du serveur.
Pour savoir comment obtenir la configuration d'accès du serveur, consultez Obtenir des informations sur un serveur.
(Facultatif) Empreinte numérique de la clé du serveur.
Étape suivante
- Se connecter à un serveur SFTP externe.
- Se connecter à un serveur SFTP interne.
- Transférer des données à l'aide de commandes SFTP.
- En savoir plus sur les options de protection, de sauvegarde et de récupération des données pour les buckets Cloud Storage