Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Configuration d'une méthode Amazon API Gateway en tant que fournisseur d'identité personnalisé
Ce didacticiel explique comment configurer une méthode Amazon API Gateway et comment l'utiliser en tant que fournisseur d'identité personnalisé pour télécharger des fichiers sur un AWS Transfer Family serveur. Ce didacticiel utilise le modèle de pile de base
Rubriques
Prérequis
Avant de créer les ressources Transfer Family dans AWS CloudFormation, créez votre espace de stockage et votre rôle d'utilisateur.
Pour spécifier le stockage et créer un rôle d'utilisateur
En fonction du stockage que vous utilisez, consultez la documentation suivante :
Pour créer un compartiment Amazon S3, consultez Comment créer un compartiment S3 ? dans le guide de l'utilisateur d'Amazon Simple Storage Service.
-
Pour créer un système de EFS fichiers Amazon, consultezConfiguration d'un système de EFS fichiers Amazon.
-
Pour créer un rôle d'utilisateur, voir Création d'un IAM rôle et d'une politique
Vous entrez les détails de votre espace de stockage et de votre rôle d'utilisateur lorsque vous créez votre AWS CloudFormation stack dans la section suivante.
Étape 1 : créer une CloudFormation pile
Pour créer une AWS CloudFormation pile à partir du modèle fourni
Ouvrez la AWS CloudFormation console à l'adresse https://console.aws.amazon.com/cloudformation.
-
Sélectionnez Créer une pile, puis choisissez Avec de nouvelles ressources (standard).
-
Dans le volet Prérequis - Préparer le modèle, sélectionnez Le modèle est prêt.
-
Copiez ce lien, modèle de pile de base
, et collez-le dans le URL champ Amazon S3. -
Cliquez sur Next (Suivant).
-
Spécifiez les paramètres, y compris le nom de votre pile. Veillez à effectuer les opérations suivantes :
Remplacez les valeurs par défaut pour UserNameet UserPassword.
-
Pour UserHomeDirectory, entrez les détails du stockage (un compartiment Amazon S3 ou un système de EFS fichiers Amazon) que vous avez créé précédemment.
-
Remplacez le rôle UserRoleArnpar défaut par le rôle utilisateur que vous avez créé précédemment. Le rôle AWS Identity and Access Management (IAM) doit disposer des autorisations appropriées. Pour un exemple de politique relative aux IAM rôles et aux compartiments, voirÉtape 6 : Limiter l'accès au bucket.
-
Si vous souhaitez vous authentifier à l'aide d'une clé publique plutôt que d'un mot de passe, entrez votre clé publique dans le champ UserPublicKey1. La première fois que vous vous connectez au serveur en utilisantSFTP, vous fournissez la clé privée au lieu d'un mot de passe.
-
Choisissez Next, puis de nouveau Next sur la page Configurer les options de pile.
-
Passez en revue les détails de la pile que vous créez, puis choisissez Create stack.
Note
Au bas de la page, sous Capacités, vous devez reconnaître que cela AWS CloudFormation peut créer IAM des ressources.
Étape 2 : Vérifiez la configuration de la méthode API Gateway pour votre serveur
Note
Pour améliorer la sécurité, vous pouvez configurer un pare-feu pour applications Web. AWS WAF est un pare-feu d'applications Web qui vous permet de surveiller les HTTPS demandes HTTP et les demandes qui sont transmises à Amazon API Gateway. Pour plus de détails, consultez Ajouter un pare-feu pour applications Web.
Pour vérifier la configuration de la méthode API Gateway pour votre serveur et la déployer
-
Ouvrez la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway/
. -
Choisissez le modèle API de base Transfer Custom Identity Provider généré par le AWS CloudFormation modèle.
-
Dans le volet Ressources, choisissez GET, puis Method Request.
-
Pour Actions, sélectionnez Déployer API. Pour l'étape de déploiement, choisissez prod, puis Deploy.
Une fois la méthode API Gateway déployée avec succès, consultez ses performances dans la section Stage Editor.
Note
Copiez l'URLadresse Invoke qui apparaît en haut de la page. Vous en aurez besoin pour la prochaine étape.
Étape 3 : Afficher les détails du serveur Transfer Family
Lorsque vous utilisez le modèle pour créer une AWS CloudFormation pile, un serveur Transfer Family est automatiquement créé.
Pour consulter les détails de votre serveur Transfer Family
Ouvrez la AWS CloudFormation console à l'adresse https://console.aws.amazon.com/cloudformation.
Choisissez la pile que vous avez créée.
Sélectionnez l'onglet Ressources.
Le serveur ARN est affiché dans la colonne Physical ID de la TransferServerligne. L'ID du serveur est contenu dans leARN, par exemple, s-11112222333344445.
Ouvrez la AWS Transfer Family console à https://console.aws.amazon.com/transfer/
, et sur la page Serveurs, choisissez le nouveau serveur. L'ID du serveur correspond à l'ID affiché pour la TransferServerressource dans AWS CloudFormation.
Étape 4 : vérifiez que votre utilisateur peut se connecter au serveur
Pour vérifier que votre utilisateur peut se connecter au serveur, à l'aide de la console Transfer Family
Ouvrez la AWS Transfer Family console à l'adresse https://console.aws.amazon.com/transfer/
. -
Sur la page Serveurs, choisissez votre nouveau serveur, sélectionnez Actions, puis sélectionnez Test.
-
Entrez le texte de vos informations de connexion dans le champ Nom d'utilisateur et dans le champ Mot de passe. Il s'agit des valeurs que vous avez définies lorsque vous avez déployé la AWS CloudFormation pile.
-
Pour le protocole serveur, sélectionnez SFTP, et pour l'adresse IP source, entrez
127.0.0.1
. -
Sélectionnez Tester).
Si l'authentification de l'utilisateur réussit, le test renvoie une
StatusCode: 200
HTML réponse et un JSON objet contenant les détails des rôles et des autorisations de l'utilisateur. Par exemple :{ "Response": "{\"Role\": \"arn:aws:iam::
123456789012
:role/my-user-role
\",\"HomeDirectory\": \"/${transfer:HomeBucket}/\"}", "StatusCode": 200, "Message": "", "Url": "https://1a2b3c4d5e
.execute-api.us-east-2
.amazonaws.com/prod/servers/s-1234abcd5678efgh0
/users/myuser
/config" }Si le test échoue, ajoutez l'une des politiques AWS gérées par API Gateway au rôle que vous utilisez pour votreAPI.
Étape 5 : tester la SFTP connexion et le transfert de fichiers
Pour tester la SFTP connexion
-
Sur un appareil Linux ou macOS, ouvrez un terminal de commande.
-
Entrez l'une des commandes suivantes, selon que vous utilisez un mot de passe ou une paire de clés pour l'authentification.
-
Si vous utilisez un mot de passe, entrez cette commande :
sftp -o PubkeyAuthentication=no
myuser
@server-ID
.server.transfer.region-code
.amazonaws.com.rproxy.goskope.comLorsque vous y êtes invité, saisissez votre mot de passe.
-
Si vous utilisez une paire de clés, entrez cette commande :
sftp -i
private-key-file
myuser
@server-ID
.server.transfer.region-code
.amazonaws.com
Note
Pour ces
sftp
commandes, insérez le code indiquant Région AWS où se trouve votre serveur Transfer Family. Par exemple, si votre serveur se trouve dans l'est des États-Unis (Ohio), entrezus-east-2
. -
-
À l'
sftp>
invite, assurez-vous que vous pouvez charger (put
), télécharger (get
) et afficher les répertoires et les fichiers (pwd
etls
).
Étape 6 : Limiter l'accès au bucket
Vous pouvez limiter les personnes autorisées à accéder à un compartiment Amazon S3 spécifique. L'exemple suivant montre les paramètres à utiliser dans votre CloudFormation pile et dans la politique que vous sélectionnez pour votre utilisateur.
Dans cet exemple, nous avons défini les paramètres suivants pour la AWS CloudFormation pile :
CreateServer:
true
UserHomeDirectory:
/myuser-bucket
UserName:
myuser
UserPassword:
MySuperSecretPassword
Important
Il s'agit d'un exemple de mot de passe. Lorsque vous configurez votre méthode API Gateway, assurez-vous de saisir un mot de passe fort.
UserPublicKey1 :
your-public-key
UserRoleArn:
arn:aws:iam::
role-id
:role/myuser-api-gateway-role
Le UserPublicKey1 est une clé publique que vous avez générée dans le cadre d'une paire de clés publique/privée.
Le
est propre au rôle d'utilisateur que vous créez. La politique qui y est rattachée role-id
myuser-api-gateway-role
est la suivante :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::myuser-bucket" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObjectAcl", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:PutObjectAcl", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::myuser-bucket/*" } ] }
Pour vous connecter au serveur en utilisantSFTP, entrez l'une des commandes suivantes à l'invite.
Si vous utilisez un mot de passe pour vous authentifier, exécutez la commande suivante :
sftp -o PubkeyAuthentication=no
myuser
@transfer-server-ID
.server.transfer.region-id
.amazonaws.com.rproxy.goskope.comLorsque vous y êtes invité, saisissez votre mot de passe.
-
Si vous utilisez une paire de clés pour vous authentifier, exécutez la commande suivante :
sftp -i
private-key-file
myuser@transfer-server-ID
.server.transfer.region-id
.amazonaws.com
Note
Pour ces sftp
commandes, utilisez l'ID correspondant à l' Région AWS emplacement de votre serveur Transfer Family. Par exemple, si votre serveur se trouve dans l'est des États-Unis (Ohio), utilisezus-east-2
.
À l'sftp
invite, vous êtes dirigé vers votre répertoire personnel, que vous pouvez consulter en exécutant la pwd
commande. Par exemple :
sftp> pwd Remote working directory: /myuser-bucket
L'utilisateur ne peut afficher aucun répertoire situé au-dessus du répertoire de base. Par exemple :
sftp> pwd Remote working directory: /myuser-bucket sftp> cd .. sftp> ls Couldn't read directory: Permission denied
Mettez à jour Lambda si vous utilisez Amazon EFS
Si vous avez sélectionné Amazon EFS comme option de stockage pour votre serveur Transfer Family, vous devez modifier la fonction lambda de votre stack.
Pour ajouter un profil posix à votre fonction Lambda
Ouvrez la console Lambda à l'adresse. https://console.aws.amazon.com/lambda/
-
Sélectionnez la fonction Lambda que vous avez créée précédemment. La fonction Lambda a le format suivant
stack-name
-GetUserConfigLambda-lambda-identifier
, oùstack-name
est le nom de la CloudFormation pile etlambda-identifier
est l'identifiant de la fonction. -
Dans l'onglet Code, sélectionnez index.js pour afficher le code de la fonction.
-
Dans le
response
, ajoutez la ligne suivante entrePolicy
etHomeDirectory
:PosixProfile: {"Uid":
uid-value
, "Gid":gid-value
},Où le
uid-value
andgid-value
sont des nombres entiers, supérieurs ou égaux à 0, qui représentent respectivement l'ID utilisateur et l'ID de groupe.Par exemple, après avoir ajouté le profil Posix, le champ de réponse peut ressembler à ce qui suit :
response = { Role: 'arn:aws:iam::123456789012:role/api-gateway-transfer-efs-role', // The user will be authenticated if and only if the Role field is not blank Policy: '', // Optional JSON blob to further restrict this user's permissions PosixProfile: {"Gid": 65534, "Uid": 65534}, HomeDirectory: '/fs-fab2c234' // Not required, defaults to '/' };