Configurazione di un metodo Amazon API Gateway come provider di identità personalizzato - AWS Transfer Family

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurazione di un metodo Amazon API Gateway come provider di identità personalizzato

Questo tutorial illustra come configurare un metodo Amazon API Gateway e utilizzarlo come provider di identità personalizzato per caricare file su un AWS Transfer Family server. Questo tutorial utilizza il modello di stack Basic e altre funzionalità di base solo come esempio.

Prerequisiti

Prima di creare le risorse Transfer Family in AWS CloudFormation, crea lo spazio di archiviazione e il ruolo utente.

Per specificare lo spazio di archiviazione e creare un ruolo utente
  1. A seconda dello storage in uso, consulta la seguente documentazione:

  2. Per creare un ruolo utente, vedi Crea un IAM ruolo e una politica

I dettagli relativi allo spazio di archiviazione e al ruolo utente vengono immessi quando si crea AWS CloudFormation lo stack nella sezione successiva.

Fase 1: Creare uno stack CloudFormation

Per creare uno AWS CloudFormation stack dal modello fornito
  1. Apri la AWS CloudFormation console in https://console.aws.amazon.com/cloudformation.

  2. Seleziona Crea stack e scegli Con nuove risorse (standard).

  3. Nel riquadro Prerequisito - Prepara il modello, scegli Il modello è pronto.

  4. Copia questo link, Basic stack template, e incollalo nel campo Amazon URL S3.

  5. Fai clic su Next (Successivo).

  6. Specificate i parametri, incluso un nome per lo stack. Assicurati di fare quanto segue:

    • Sostituite i valori predefiniti per UserNamee UserPassword.

    • Per UserHomeDirectory, inserisci i dettagli dello storage (un bucket Amazon S3 o un EFS file system Amazon) che hai creato in precedenza.

    • Sostituisci l'impostazione predefinita UserRoleArncon il ruolo utente creato in precedenza. Il ruolo AWS Identity and Access Management (IAM) deve disporre delle autorizzazioni appropriate. Per un esempio di policy relativa al IAM ruolo e al bucket, vedi. Passaggio 6: Limita l'accesso al bucket

    • Se desideri autenticarti utilizzando una chiave pubblica anziché una password, inserisci la tua chiave pubblica nel campo UserPublicKey1. La prima volta che ti connetti al server utilizzandoSFTP, fornisci quindi la chiave privata anziché una password.

  7. Scegli Avanti, quindi scegli nuovamente Avanti nella pagina Configura le opzioni dello stack.

  8. Esamina i dettagli dello stack che stai creando, quindi scegli Crea pila.

    Nota

    Nella parte inferiore della pagina, sotto Capacità, devi riconoscere che AWS CloudFormation potrebbe creare IAM risorse.

Passaggio 2: Verifica la configurazione del metodo API Gateway per il tuo server

Nota

Per migliorare la sicurezza, puoi configurare un firewall per applicazioni Web. AWS WAF è un firewall per applicazioni Web che consente di monitorare le HTTPS richieste HTTP e inoltrate a un Amazon API Gateway. Per informazioni dettagliate, consultare Aggiungi un firewall per applicazioni Web.

Per verificare la configurazione del metodo API Gateway per il tuo server e distribuirlo
  1. Apri la console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway/.

  2. Scegli il modello API di base di Transfer Custom Identity Provider generato dal AWS CloudFormation modello.

  3. Nel riquadro Risorse, scegliete GET, quindi scegliete Method Request.

  4. Per Azioni, scegli Distribuisci. API Per la fase di distribuzione, scegli prod, quindi scegli Deploy.

    Dopo aver distribuito correttamente il metodo API Gateway, visualizzane le prestazioni nella sezione Stage Editor.

    Nota

    Copia l'URLindirizzo Invoke visualizzato nella parte superiore della pagina. Ti servirà per il passaggio successivo.

Fase 3: Visualizzare i dettagli del server Transfer Family

Quando si utilizza il modello per creare uno AWS CloudFormation stack, viene creato automaticamente un server Transfer Family.

Per visualizzare i dettagli del server Transfer Family
  1. Apri la AWS CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation.

  2. Scegli lo stack che hai creato.

  3. Scegliere la scheda Resources (Risorse).

    Schermata che mostra l'elenco delle risorse create durante la creazione dello AWS CloudFormation stack, con i dettagli per il server Transfer Family evidenziati.

    Il server ARN viene visualizzato nella colonna Physical ID della TransferServerriga. L'ID del server è contenuto, ad esempioARN, in s-11112222333344445.

  4. Apri la AWS Transfer Family console all'indirizzo https://console.aws.amazon.com/transfer/e nella pagina Server scegli il nuovo server.

    L'ID del server corrisponde all'ID visualizzato per la TransferServerrisorsa in AWS CloudFormation.

Fase 4: Verifica che l'utente sia in grado di connettersi al server

Per verificare che l'utente sia in grado di connettersi al server, utilizzando la console Transfer Family
  1. Apri la AWS Transfer Family console all'indirizzo https://console.aws.amazon.com/transfer/.

  2. Nella pagina Server, scegli il tuo nuovo server, scegli Azioni, quindi scegli Test.

  3. Inserisci il testo delle tue credenziali di accesso nel campo Nome utente e nel campo Password. Questi sono i valori che hai impostato quando hai distribuito lo stack. AWS CloudFormation

  4. Per Server Protocol SFTP, seleziona e per Source IP, inserisci. 127.0.0.1

  5. Scegli Test (Esegui test).

    Se l'autenticazione dell'utente ha esito positivo, il test restituisce una StatusCode: 200 HTML risposta e un JSON oggetto contenente i dettagli dei ruoli e delle autorizzazioni dell'utente. Per esempio:

    { "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" }

    Se il test fallisce, aggiungi una delle politiche AWS gestite da API Gateway al ruolo che stai utilizzando per il tuo. API

Passaggio 5: Verifica la SFTP connessione e il trasferimento dei file

Per testare la SFTP connessione
  1. Su un dispositivo Linux o macOS, apri un terminale di comando.

  2. Inserisci uno dei seguenti comandi, a seconda che tu stia utilizzando una password o una key pair per l'autenticazione.

    • Se stai usando una password, inserisci questo comando:

      sftp -o PubkeyAuthentication=no myuser@server-ID.server.transfer.region-code.amazonaws.com

      Specifica la password, quando richiesto.

    • Se stai usando una key pair, inserisci questo comando:

      sftp -i private-key-file myuser@server-ID.server.transfer.region-code.amazonaws.com

    Nota

    Per questi sftp comandi, inserisci il codice relativo al Regione AWS luogo in cui si trova il tuo server Transfer Family. Ad esempio, se il tuo server si trova negli Stati Uniti orientali (Ohio), inseriscius-east-2.

  3. Quando sftp> richiesto, assicuratevi di poter caricare (put), scaricare (get) e visualizzare cartelle e file (pwde). ls

Passaggio 6: Limita l'accesso al bucket

Puoi limitare chi può accedere a uno specifico bucket Amazon S3. L'esempio seguente mostra le impostazioni da utilizzare nello CloudFormation stack e nella politica selezionata per l'utente.

In questo esempio, impostiamo i seguenti parametri per lo AWS CloudFormation stack:

  • CreateServer: true

  • UserHomeDirectory: /myuser-bucket

  • UserName: myuser

  • UserPassword: MySuperSecretPassword

    Importante

    Questa è una password di esempio. Quando configurate il metodo API Gateway, assicuratevi di inserire una password sicura.

  • UserPublicKey1: your-public-key

  • UserRoleArn: arn:aws:iam::role-id:role/myuser-api-gateway-role

L'UserPublicKey1 è una chiave pubblica che hai generato come parte di una coppia di chiavi pubblica/privata.

role-idÈ unico per il ruolo utente che crei. La politica allegata a myuser-api-gateway-role è la seguente:

{ "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/*" } ] }

Per connetterti al server utilizzandoSFTP, inserisci uno dei seguenti comandi al prompt.

  • Se utilizzi una password per l'autenticazione, esegui il seguente comando:

    sftp -o PubkeyAuthentication=no myuser@transfer-server-ID.server.transfer.region-id.amazonaws.com

    Specifica la password, quando richiesto.

  • Se stai usando una key pair per l'autenticazione, esegui il seguente comando:

    sftp -i private-key-file myuser@transfer-server-ID.server.transfer.region-id.amazonaws.com

Nota

Per questi sftp comandi, usa l'ID del Regione AWS luogo in cui si trova il tuo server Transfer Family. Ad esempio, se il tuo server si trova negli Stati Uniti orientali (Ohio), usaus-east-2.

Al sftp prompt, verrete indirizzati alla vostra home directory, che potete visualizzare eseguendo il pwd comando. Per esempio:

sftp> pwd Remote working directory: /myuser-bucket

L'utente non può visualizzare alcuna directory al di sopra della home directory. Per esempio:

sftp> pwd Remote working directory: /myuser-bucket sftp> cd .. sftp> ls Couldn't read directory: Permission denied

Aggiorna Lambda se usi Amazon EFS

Se hai selezionato Amazon EFS come opzione di archiviazione per il tuo server Transfer Family, devi modificare la funzione lambda per il tuo stack.

Per aggiungere un profilo posix alla tua funzione Lambda
  1. Apri la console Lambda all'indirizzo. https://console.aws.amazon.com/lambda/

  2. Seleziona la funzione Lambda che hai creato in precedenza. La funzione Lambda ha il formato di stack-name-GetUserConfigLambda-lambda-identifier, dove stack-name è il nome CloudFormation dello stack e lambda-identifier è l'identificatore della funzione.

  3. Nella scheda Codice, selezionate index.js per visualizzare il codice della funzione.

  4. Nellaresponse, aggiungi la seguente riga tra Policy eHomeDirectory:

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

    Dove il uid-value e gid-value sono numeri interi, pari o superiori a 0, che rappresentano rispettivamente l'ID utente e l'ID del gruppo.

    Ad esempio, dopo aver aggiunto il profilo Posix, il campo di risposta potrebbe essere simile al seguente:

    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 '/' };