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
Argomenti
Prerequisiti
Prima di creare le risorse Transfer Family in AWS CloudFormation, crea il tuo spazio di archiviazione e il tuo ruolo utente.
Per specificare lo spazio di archiviazione e creare un ruolo utente
A seconda dello storage in uso, consulta la seguente documentazione:
Per creare un bucket Amazon S3, vedi Come si crea un bucket S3? nella Guida per l'utente di Amazon Simple Storage Service.
-
Per creare un file system Amazon EFS, consultaConfigurazione di un file system Amazon EFS.
-
Per creare un ruolo utente, vedi Crea un ruolo e una policy IAM
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
Apri la AWS CloudFormation console in https://console.aws.amazon.com/cloudformation.
-
Seleziona Crea stack e scegli Con nuove risorse (standard).
-
Nel riquadro Prerequisito - Prepara modello, scegli Scegli un modello esistente.
-
Copia questo link, modello di stack Basic
, e incollalo nel campo URL di Amazon S3. -
Fare clic su Avanti.
-
Specificate i parametri, incluso un nome per lo stack. Assicuratevi di fare quanto segue:
Sostituite i valori predefiniti per UserNamee UserPassword.
-
Per UserHomeDirectory, inserisci i dettagli dello storage (un bucket Amazon S3 o un file system Amazon EFS) 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 politica del ruolo e del bucket di IAM, 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 tramite SFTP, fornisci la chiave privata anziché una password.
-
Scegli Avanti, quindi scegli nuovamente Avanti nella pagina Configura le opzioni dello stack.
-
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 risorse IAM.
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 richieste HTTP e HTTPS inoltrate a un Amazon API Gateway. Per informazioni dettagliate, vedi Aggiungi un firewall per applicazioni Web.
Non abilitare la memorizzazione nella cache dell'API Gateway
Non abilitate la memorizzazione nella cache per il metodo API Gateway quando lo utilizzate come provider di identità personalizzato per Transfer Family. La memorizzazione nella cache è inappropriata e non valida per le richieste di autenticazione perché:
Ogni richiesta di autenticazione è unica e richiede una risposta in tempo reale, non una risposta memorizzata nella cache
La memorizzazione nella cache non offre vantaggi poiché Transfer Family non invia mai richieste duplicate o ripetute all'API Gateway
L'abilitazione della memorizzazione nella cache farà sì che l'API Gateway risponda con dati non corrispondenti, con conseguenti risposte non valide alle richieste di autenticazione
Per verificare la configurazione del metodo API Gateway per il server e distribuirlo
-
Apri la console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway/
. -
Scegli l'API del modello di base di Transfer Custom Identity Provider generata dal AWS CloudFormation modello.
-
Nel riquadro Risorse, scegli GET, quindi scegli Method Request.
-
Per Azioni, scegli Deploy 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'indirizzo URL di 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
Apri la AWS CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation.
Scegli lo stack che hai creato.
Scegliere la scheda Resources (Risorse).
L'ARN del server viene visualizzato nella colonna ID fisico della TransferServerriga. L'ID del server è contenuto nell'ARN, ad esempio s-11112222333344445.
Apri la AWS Transfer Family console all'indirizzo e https://console.aws.amazon.com/transfer/
, 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
Apri la AWS Transfer Family console all'indirizzo https://console.aws.amazon.com/transfer/
. -
Nella pagina Server, scegli il tuo nuovo server, scegli Azioni, quindi scegli Test.
-
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
-
Per Server Protocol, seleziona SFTP e per Source IP, inserisci.
127.0.0.1 -
Scegli Test (Esegui test).
Se l'autenticazione dell'utente ha esito positivo, il test restituisce una risposta
StatusCode: 200HTML e un oggetto JSON contenente i dettagli dei ruoli e delle autorizzazioni dell'utente. Ad 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 policy AWS gestite da API Gateway al ruolo che stai utilizzando per la tua API.
Passaggio 5: verifica la connessione SFTP e il trasferimento dei file
Per testare la connessione SFTP
-
Su un dispositivo Linux o macOS, apri un terminale di comando.
-
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=nomyuser@server-ID.server.transfer.region-code.amazonaws.comSpecifica la password, quando richiesto.
-
Se stai usando una key pair, inserisci questo comando:
sftp -iprivate-key-filemyuser@server-ID.server.transfer.region-code.amazonaws.com
Nota
Per questi
sftpcomandi, 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. -
-
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:
trueUserHomeDirectory:
/amzn-s3-demo-bucket1UserName:
myuserUserPassword:
MySuperSecretPasswordImportante
Questa è una password di esempio. Quando configuri il metodo API Gateway, assicurati di inserire una password sicura.
UserPublicKey1:
your-public-keyUserRoleArn:
arn:aws:iam::role-id:role/myuser-api-gateway-role
L'UserPublicKey1 è una chiave pubblica che hai generato come parte di una coppia di public/private chiavi.
È unico per il ruolo utente che crei. La politica allegata a role-idmyuser-api-gateway-role è la seguente:
-
{ "Version":"2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObjectAcl", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:PutObjectAcl", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*" } ] }
Per connetterti al server tramite SFTP, inserisci uno dei seguenti comandi al prompt.
Se utilizzate una password per l'autenticazione, eseguite il comando seguente:
sftp -o PubkeyAuthentication=nomyuser@transfer-server-ID.server.transfer.region-id.amazonaws.comSpecifica la password, quando richiesto.
-
Se stai usando una key pair per l'autenticazione, esegui il seguente comando:
sftp -iprivate-key-filemyuser@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. Ad esempio:
sftp> pwd Remote working directory: /amzn-s3-demo-bucket1
L'utente non può visualizzare alcuna directory al di sopra della home directory. Ad esempio:
sftp> pwd Remote working directory: /amzn-s3-demo-bucket1 sftp> cd .. sftp> ls Couldn't read directory: Permission denied
Aggiorna Lambda se usi Amazon EFS
Se hai selezionato Amazon EFS come opzione di storage per il tuo server Transfer Family, devi modificare la funzione lambda per il tuo stack.
Per aggiungere un profilo Posix alla tua funzione Lambda
Apri la console Lambda all'indirizzo. https://console.aws.amazon.com/lambda/
-
Seleziona la funzione Lambda che hai creato in precedenza. La funzione Lambda ha il formato
stack-name- GetUserConfigLambda -lambda-identifier, dovestack-nameè il nome dello CloudFormation stack edlambda-identifierè l'identificatore della funzione. -
Nella scheda Codice, selezionate index.js per visualizzare il codice della funzione.
-
Nella
response, aggiungi la seguente riga traPolicyeHomeDirectory:PosixProfile: {"Uid":uid-value, "Gid":gid-value},Dove
uid-valueegid-valuesono 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 '/' };