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
- Fase 1: Creare uno stack CloudFormation
- Passaggio 2: Verifica la configurazione del metodo API Gateway per il tuo server
- Fase 3: Visualizzare i dettagli del server Transfer Family
- Fase 4: Verifica che l'utente sia in grado di connettersi al server
- Passaggio 5: Verifica la SFTP connessione e il trasferimento dei file
- Passaggio 6: Limita l'accesso al bucket
- Aggiorna Lambda se usi Amazon EFS
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
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 EFS file system Amazon, consultaConfigurazione di un EFS file system Amazon.
-
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
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 il modello, scegli Il modello è pronto.
-
Copia questo link, Basic stack template
, e incollalo nel campo Amazon URL S3. -
Fai clic su Next (Successivo).
-
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.
-
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 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
-
Apri la console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway/
. -
Scegli il modello API di base di Transfer Custom Identity Provider generato dal AWS CloudFormation modello.
-
Nel riquadro Risorse, scegliete GET, quindi scegliete Method Request.
-
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
Apri la AWS CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation.
Scegli lo stack che hai creato.
Scegliere la scheda Resources (Risorse).
Il server ARN viene visualizzato nella colonna Physical ID della TransferServerriga. L'ID del server è contenuto, ad esempioARN, in s-11112222333344445.
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
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 SFTP, seleziona 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
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
-
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=no
myuser
@server-ID
.server.transfer.region-code
.amazonaws.com.rproxy.goskope.comSpecifica 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
. -
-
Quando
sftp>
richiesto, assicuratevi di poter caricare (put
), scaricare (get
) e visualizzare cartelle e file (pwd
e).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.
È unico per il ruolo utente che crei. La politica allegata a role-id
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.rproxy.goskope.comSpecifica 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
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 di
stack-name
-GetUserConfigLambda-lambda-identifier
, dovestack-name
è il nome CloudFormation dello stack elambda-identifier
è l'identificatore della funzione. -
Nella scheda Codice, selezionate index.js per visualizzare il codice della funzione.
-
Nella
response
, aggiungi la seguente riga traPolicy
eHomeDirectory
:PosixProfile: {"Uid":
uid-value
, "Gid":gid-value
},Dove il
uid-value
egid-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 '/' };