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 server. AWS Transfer Family Questo tutorial utilizza il modello https://s3.amazonaws.com/aws-transfer-resources/custom-idp-templates/aws-transfer-custom-idp-basic-apig.template.yml
Argomenti
Prerequisiti
Prima di creare le risorse di Transfer Family in CloudFormation, crea il tuo spazio di archiviazione e il tuo ruolo utente.
Per specificare l'archiviazione e creare un ruolo utente
A seconda dello storage in uso, consulta la seguente documentazione:
Per creare un bucket Amazon S3, consulta Come si crea un bucket S3? nella Guida per l'utente di Amazon Simple Storage Service.
-
Per creare un file system Amazon EFS, consultaConfigura un file system Amazon EFS.
-
Per creare un ruolo utente, consulta Crea un ruolo e una policy IAM
Nella sezione successiva, inserisci i dettagli relativi al tuo spazio di archiviazione e al tuo ruolo utente quando crei CloudFormation lo stack.
Fase 1: Creare uno CloudFormation stack
Per creare un AWS CloudFormation pila dal modello fornito
Apri la CloudFormation console all'indirizzo 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, Basic Stack Template
, e incollalo nel campo URL di Amazon S3. -
Fare clic su Avanti.
-
Specifica i parametri, incluso un nome per il tuo stack. Assicurati di fare quanto segue:
Sostituisci i valori predefiniti per UserName e UserPassword.
-
Per UserHomeDirectory, inserisci i dettagli dello storage (un bucket Amazon S3 o un file system Amazon EFS) che hai creato in precedenza.
-
Sostituisci il ruolo predefinito UserRoleArn con il ruolo utente che hai creato in precedenza. Il ruolo AWS Identity and Access Management (IAM) deve disporre delle autorizzazioni appropriate. Per un esempio di ruolo IAM e policy del 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 UserPublicKey1 campo. La prima volta che ti connetti al server tramite SFTP, fornisci la chiave privata anziché una password.
-
Scegliete Avanti, quindi scegliete nuovamente Avanti nella pagina Configura le opzioni dello stack.
-
Rivedi i dettagli dello stack che stai creando, quindi scegli Crea stack.
Nota
Nella parte inferiore della pagina, sotto Capacità, devi riconoscere che 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 di 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 alcun vantaggio poiché Transfer Family non invia mai richieste duplicate o ripetute all'API Gateway
L'attivazione 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 tuo server e implementarlo
-
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 CloudFormation modello.
-
Nel riquadro Risorse, scegli GET, quindi scegli Method Request.
-
Per Azioni, scegli Distribuisci API. Per la fase di distribuzione, scegli prod, quindi scegli Deploy.
Una volta implementato correttamente il metodo API Gateway, visualizzane le prestazioni nella sezione Stage Editor.
Nota
Copia l'indirizzo URL Invoke che appare nella parte superiore della pagina. Ti servirà per il passaggio successivo.
Fase 3: Visualizza i dettagli del server Transfer Family
Quando si utilizza il modello per creare uno CloudFormation stack, viene creato automaticamente un server Transfer Family.
Per visualizzare i dettagli del server Transfer Family
Apri la CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation
. Scegli lo stack che hai creato.
Scegli la scheda Risorse.
L'ARN del server è mostrato nella colonna Physical ID della TransferServer riga. 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 TransferServer risorsa in 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, utilizza 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. 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 ha esito negativo, 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 coppia di chiavi 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 coppia di chiavi, inserisci questo comando:
sftp -iprivate-key-filemyuser@server-ID.server.transfer.region-code.amazonaws.com
Nota
Per questi
sftpcomandi, inserisci il codice del Regione AWS luogo in cui si trova il server Transfer Family. Ad esempio, se il tuo server si trova negli Stati Uniti orientali (Ohio), inseriscius-east-2. -
-
Quando
sftp>richiesto, assicurati di poter caricare (put), scaricare (get) e visualizzare directory e file (pwdels).
Passaggio 6: limita l'accesso al bucket
Puoi limitare chi può accedere a un bucket Amazon S3 specifico. L'esempio seguente mostra le impostazioni da utilizzare nello CloudFormation stack e nella policy selezionata per l'utente.
In questo esempio, abbiamo impostato i seguenti parametri per lo CloudFormation stack:
CreateServer:
trueUserHomeDirectory:
/amzn-s3-demo-bucket1UserName:
myuserUserPassword:
MySuperSecretPasswordImportante
Questa è una password di esempio. Quando configuri il tuo metodo API Gateway, assicurati di inserire una password sicura.
UserPublicKey1:
your-public-keyUserRoleArn:
arn:aws:iam::role-id:role/myuser-api-gateway-role
UserPublicKey1È una chiave pubblica che hai generato come parte di una coppia di public/private chiavi.
È univoco 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 stai usando una password per l'autenticazione, esegui il comando seguente:
sftp -o PubkeyAuthentication=nomyuser@transfer-server-ID.server.transfer.region-id.amazonaws.comSpecifica la password, quando richiesto.
-
Se stai usando una coppia di chiavi per l'autenticazione, esegui il comando seguente:
sftp -iprivate-key-filemyuser@transfer-server-ID.server.transfer.region-id.amazonaws.com
Nota
Per questi sftp comandi, utilizzate l'ID del Regione AWS luogo in cui si trova il server Transfer Family. Ad esempio, se il tuo server si trova negli Stati Uniti orientali (Ohio), usaus-east-2.
Al sftp prompt, verrai indirizzato alla tua home directory, che puoi 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 CloudFormation dello stack elambda-identifierl'identificatore della funzione. -
Nella scheda Codice, seleziona index.js per visualizzare il codice della funzione.
-
Nel
response, aggiungi la riga seguente 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 '/' };