Configuration d'une méthode Amazon API Gateway en tant que fournisseur d'identité personnalisé - AWS Transfer Family

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 et d'autres fonctionnalités de base uniquement à titre d'exemple.

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
  1. En fonction du stockage que vous utilisez, consultez la documentation suivante :

  2. 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
  1. Ouvrez la AWS CloudFormation console à l'adresse https://console.aws.amazon.com/cloudformation.

  2. Sélectionnez Créer une pile, puis choisissez Avec de nouvelles ressources (standard).

  3. Dans le volet Prérequis - Préparer le modèle, sélectionnez Le modèle est prêt.

  4. Copiez ce lien, modèle de pile de base, et collez-le dans le URL champ Amazon S3.

  5. Cliquez sur Next (Suivant).

  6. 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.

  7. Choisissez Next, puis de nouveau Next sur la page Configurer les options de pile.

  8. 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
  1. Ouvrez la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway/.

  2. Choisissez le modèle API de base Transfer Custom Identity Provider généré par le AWS CloudFormation modèle.

  3. Dans le volet Ressources, choisissez GET, puis Method Request.

  4. 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
  1. Ouvrez la AWS CloudFormation console à l'adresse https://console.aws.amazon.com/cloudformation.

  2. Choisissez la pile que vous avez créée.

  3. Sélectionnez l'onglet Ressources.

    Écran qui affiche la liste des ressources créées lors de la création de la AWS CloudFormation pile, avec les détails du serveur Transfer Family surlignés.

    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.

  4. 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
  1. Ouvrez la AWS Transfer Family console à l'adresse https://console.aws.amazon.com/transfer/.

  2. Sur la page Serveurs, choisissez votre nouveau serveur, sélectionnez Actions, puis sélectionnez Test.

  3. 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.

  4. Pour le protocole serveur, sélectionnez SFTP, et pour l'adresse IP source, entrez127.0.0.1.

  5. 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
  1. Sur un appareil Linux ou macOS, ouvrez un terminal de commande.

  2. 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

      Lorsque 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.

  3. À l'sftp>invite, assurez-vous que vous pouvez charger (put), télécharger (get) et afficher les répertoires et les fichiers (pwdetls).

É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 role-id est propre au rôle d'utilisateur que vous créez. La politique qui y est rattachée 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

    Lorsque 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'sftpinvite, 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
  1. Ouvrez la console Lambda à l'adresse. https://console.aws.amazon.com/lambda/

  2. 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 et lambda-identifier est l'identifiant de la fonction.

  3. Dans l'onglet Code, sélectionnez index.js pour afficher le code de la fonction.

  4. Dans leresponse, ajoutez la ligne suivante entre Policy et HomeDirectory :

    PosixProfile: {"Uid": uid-value, "Gid": gid-value},

    Où le uid-value and gid-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 '/' };