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à.
Utilizzo di directory logiche per semplificare le strutture di directory Transfer Family
Per semplificare la struttura delle directory AWS Transfer Family del server, è possibile utilizzare le directory logiche. Con le directory logiche, puoi creare una struttura di directory virtuale che utilizza nomi intuitivi che gli utenti utilizzano quando si connettono al tuo bucket Amazon S3 o al file system Amazon. EFS Quando utilizzi le directory logiche, puoi evitare di divulgare percorsi di directory assoluti, nomi di bucket Amazon S3 EFS e nomi di file system agli utenti finali.
Nota
Sebbene dipenda dall'utilizzo delle politiche di sessione e da altri requisiti interni, in genere non sono necessarie sia le politiche di sessione che le directory logiche per garantire che gli utenti accedano solo ai file a cui sono destinati. Se state configurando directory logiche, non create anche politiche di sessione, poiché avere entrambe può causare errori di autorizzazione negata.
È possibile utilizzare le directory logiche per impostare la directory principale dell'utente nella posizione desiderata all'interno della gerarchia di archiviazione, eseguendo una cosiddetta operazione. chroot In questa modalità, gli utenti non sono in grado di accedere a una directory esterna alla home o alla directory principale configurata per loro.
Ad esempio, sebbene un utente Amazon S3 sia stato limitato al solo accesso/
, alcuni client consentono agli utenti di attraversare una cartella fino a. mybucket
/home
/${transfer:UserName
}/
In questa situazione, l'utente torna alla home directory desiderata solo dopo essersi disconnesso e aver nuovamente effettuato il login al server Transfer Family. L'esecuzione di un'chrootoperazione può impedire il verificarsi di questa situazione.mybucket
/home
È possibile creare una struttura di directory personalizzata tra bucket e prefissi. Questa funzionalità è utile se hai un flusso di lavoro che prevede una struttura di directory specifica che non puoi replicare tramite i prefissi dei bucket. Puoi anche collegarti a più posizioni non contigue all'interno di Amazon S3, in modo simile alla creazione di un collegamento simbolico in un file system Linux in cui il percorso della directory fa riferimento a una posizione diversa nel file system.
Mappature logiche delle directory FILE
Il tipo di HomeDirectoryMapEntry
dati ora include un Type
parametro. Prima che questo parametro esistesse, avresti potuto creare una mappatura logica di directory in cui la destinazione era un file. Se in precedenza è stato creato uno di questi tipi di mappature di directory logiche, è necessario Type
impostarlo in modo esplicito suFILE
, altrimenti tali mappature non funzioneranno correttamente in futuro.
Un modo per farlo è chiamare e impostare il to per UpdateUser
API la mappatura esistenteType
. FILE
Regole per l'utilizzo delle directory logiche
Prima di creare le mappature delle directory logiche, è necessario comprendere le seguenti regole:
-
In caso
Entry
"/"
affermativo, è possibile avere una sola mappatura perché non sono consentiti percorsi sovrapposti. -
Le directory logiche supportano mappature fino a 2,1 MB (per gli utenti gestiti dai servizi, questo limite è di 2.000 voci). Cioè, la struttura dati che contiene le mappature ha una dimensione massima di 2,1 MB. Se disponi di molte mappature, puoi calcolarne le dimensioni nel modo seguente:
-
Scrivi una mappatura tipica nel formato
{"Entry":"/
, doveentry-path
","Target":"/target-path
"}
e doveentry-path
sono i valori effettivi che utilizzerai.target-path
-
Conta i caratteri in quella stringa, quindi aggiungine uno (1).
-
Moltiplica quel numero per il numero approssimativo di mappature che hai per il tuo server.
Se il numero stimato nel passaggio 3 è inferiore a 2,1 MB, le mappature rientrano nel limite accettabile.
-
-
Le destinazioni possono utilizzare la
${transfer:UserName}
variabile se il percorso del bucket o del file system è stato parametrizzato in base al nome utente. -
Le destinazioni possono essere percorsi in diversi bucket o file system, ma è necessario assicurarsi che il ruolo mapped AWS Identity and Access Management (IAM) (il
Role
parametro nella risposta) fornisca l'accesso a tali bucket o file system. -
Non specificate il
HomeDirectory
parametro, perché questo valore è implicito nelleEntry
Target
coppie quando utilizzate ilLOGICAL
valore per il parametro.HomeDirectoryType
-
Le destinazioni devono iniziare con un carattere forward slash (
/
), ma non utilizzare la barra finale (/
) quando si specifica il.Target
Ad esempio,/
è accettabile, ma non loDOC-EXAMPLE-BUCKET
/images
è.DOC-EXAMPLE-BUCKET
/images/
DOC-EXAMPLE-BUCKET
/images/ -
Amazon S3 è un archivio di oggetti, il che significa che le cartelle sono un concetto virtuale e non esiste una vera gerarchia di directory. Se la tua applicazione esegue un'
stat
operazione da un client, tutto viene classificato come file quando utilizzi Amazon S3 per lo storage. Questo comportamento è descritto in Organizzazione degli oggetti nella console Amazon S3 utilizzando le cartelle nella Guida per l'utente di Amazon Simple Storage Service. Se la tua applicazione richiede che mostristat
con precisione se qualcosa è un file o una cartella, puoi utilizzare Amazon Elastic File System (AmazonEFS) come opzione di storage per i tuoi server Transfer Family. -
Se stai specificando valori di directory logica per il tuo utente, il parametro che usi dipende dal tipo di utente:
-
Per gli utenti gestiti dal servizio, fornisci i valori della directory logica in.
HomeDirectoryMappings
-
Per gli utenti di provider di identità personalizzati, fornisci i valori della directory logica in.
HomeDirectoryDetails
-
Importante
A meno che tu non scelga di ottimizzare le prestazioni per le tue directory Amazon S3 (quando crei o aggiorni un server), la directory principale deve esistere all'avvio. Per Amazon S3, ciò significa che devi aver già creato un oggetto a zero byte che termina con una barra (/
) per creare la cartella principale. Evitare questo problema è un motivo per prendere in considerazione l'ottimizzazione delle prestazioni di Amazon S3.
Implementazione di directory logiche e chroot
Per utilizzare le directory e le chroot funzionalità logiche, è necessario effettuare le seguenti operazioni:
Attiva le directory logiche per ogni utente. A tale scopo, imposta il HomeDirectoryType
parametro su LOGICAL
quando crei o aggiorni l'utente.
"HomeDirectoryType": "LOGICAL"
chroot
Perchroot, crea una struttura di directory composta da una singola Entry
Target
combinazione per ogni utente. La cartella principale è il Entry
punto e la Target
posizione nel bucket o nel file system a cui mappare.
È possibile utilizzare un percorso assoluto come nell'esempio precedente oppure utilizzare una sostituzione dinamica del nome utente con${transfer:UserName}
, come nell'esempio seguente.
[{"Entry": "/", "Target": "/mybucket/${transfer:UserName}"}]
Nell'esempio precedente, l'utente è bloccato nella propria directory principale e non può spostarsi più in alto nella gerarchia.
Struttura delle directory virtuali
Per una struttura di directory virtuale, puoi creare più Entry
Target
abbinamenti, con destinazioni ovunque nei bucket o nei file system S3, anche su più bucket o EFS file system, purché la mappatura dei IAM ruoli dell'utente disponga delle autorizzazioni per accedervi.
Nel seguente esempio di struttura virtuale, quando l'utente accede, si trova nella directory principale con le sottodirectory di AWS SFTP,, e. /pics
/doc
/reporting
/anotherpath/subpath/financials
Nota
A meno che tu non scelga di ottimizzare le prestazioni per le tue directory Amazon S3 (quando crei o aggiorni un server), l'utente o un amministratore devono creare le directory se non esistono già. Evitare questo problema è un motivo per prendere in considerazione l'ottimizzazione delle prestazioni di Amazon S3.
Per AmazonEFS, è comunque necessario che l'amministratore crei le mappature logiche o la /
directory.
[ {"Entry": "/pics", "Target": "/bucket1/pics"}, {"Entry": "/doc", "Target": "/bucket1/anotherpath/docs"}, {"Entry": "/reporting", "Target": "/reportingbucket/Q1"}, {"Entry": "/anotherpath/subpath/financials", "Target": "/reportingbucket/financials"}]
Nota
Puoi caricare file solo nelle cartelle specifiche che mappi. Ciò significa che nell'esempio precedente non è possibile caricare /anotherpath
solo anotherpath/subpath
anotherpath/subpath/financials
nelle nostre directory. Inoltre, non è possibile eseguire la mappatura diretta su tali percorsi, poiché non sono consentiti percorsi sovrapposti.
Ad esempio, si supponga di creare le seguenti mappature:
{ "Entry": "/pics", "Target": "/mybucket/pics" }, { "Entry": "/doc", "Target": "/mybucket/mydocs" }, { "Entry": "/temp", "Target": "/mybucket" }
Puoi caricare file solo in quei bucket. La prima volta che ti connettisftp
, verrai inserito nella directory principale,/
. Se tenti di caricare un file in quella directory, il caricamento non riesce. I comandi seguenti mostrano una sequenza di esempio:
sftp> pwd Remote working directory: / sftp> put file Uploading file to /file remote open("/file"): No such file or directory
Per eseguire il caricamento su qualsiasidirectory/sub-directory
, è necessario mappare in modo esplicito il percorso a. sub-directory
Per ulteriori informazioni sulla configurazione delle directory logiche e chroot per i vostri utenti, incluso un AWS CloudFormation modello che potete scaricare e utilizzare, vedete Simplify your AWS SFTP Structure with chroot and logical directories
Esempio di configurazione delle directory logiche
In questo esempio, creiamo un utente e assegniamo due directory logiche. Il comando seguente crea un nuovo utente (per un server Transfer Family esistente) con directory logiche pics
edoc
.
aws transfer create-user --user-name marymajor-logical --server-id s-11112222333344445 --role arn:aws:iam::1234abcd5678:role/marymajor-role --home-directory-type LOGICAL \ --home-directory-mappings "[{\"Entry\":\"/pics\", \"Target\":\"/
DOC-EXAMPLE-BUCKET1
/pics\"}, {\"Entry\":\"/doc\", \"Target\":\"/DOC-EXAMPLE-BUCKET2
/test/mydocs\"}]" \ --ssh-public-key-body file://~/.ssh/id_rsa.pub
Se marymajor
è un utente esistente e il suo tipo di home directory èPATH
, puoi cambiarlo LOGICAL
con un comando simile a quello precedente.
aws transfer update-user --user-name marymajor-logical \ --server-id s-11112222333344445 --role arn:aws:iam::1234abcd5678:role/marymajor-role \ --home-directory-type LOGICAL --home-directory-mappings "[{\"Entry\":\"/pics\", \"Target\":\"/
DOC-EXAMPLE-BUCKET1
/pics\"}, \ {\"Entry\":\"/doc\", \"Target\":\"/DOC-EXAMPLE-BUCKET2
/test/mydocs\"}]"
Tieni presente quanto segue:
-
Se le directory
/
eDOC-EXAMPLE-BUCKET1
/pics/
io non esistono già, l'utente (o un amministratore) deve crearle.DOC-EXAMPLE-BUCKET2
/test/mydocs -
Quando
marymajor
si connette al server ed esegue ills -l
comando, vede quanto segue:drwxr--r-- 1 - - 0 Mar 17 15:42 doc drwxr--r-- 1 - - 0 Mar 17 16:04 pics
-
marymajor
non può creare file o directory a questo livello. Tuttavia, all'interno dipics
anddoc
, può aggiungere sottodirectory. -
File che aggiunge
pics
e chedoc
vengono aggiunti rispettivamente ai percorsi/
di Amazon S3.DOC-EXAMPLE-BUCKET1
/pics/
DOC-EXAMPLE-BUCKET2
/test/mydocs -
In questo esempio, specifichiamo due diversi bucket per illustrare questa possibilità. Tuttavia, è possibile utilizzare lo stesso bucket per diverse o tutte le directory logiche specificate per l'utente.
Configura le directory logiche per Amazon EFS
Se il tuo server Transfer Family utilizza AmazonEFS, la home directory dell'utente deve essere creata con accesso in lettura e scrittura prima che l'utente possa lavorare nella sua home directory logica. L'utente non può creare questa directory da solo, poiché non avrebbe le autorizzazioni per la mkdir
sua home directory logica.
Se la directory home dell'utente non esiste e l'utente esegue un ls
comando, il sistema risponde come segue:
sftp> ls remote readdir ("/"): No such file or directory
Un utente con accesso amministrativo alla directory principale deve creare la home directory logica dell'utente.
AWS Lambda Risposta personalizzata
Puoi utilizzare le directory logiche con una funzione Lambda che si connette al tuo provider di identità personalizzato. A tale scopo, nella funzione Lambda, si specificano i Target
valori HomeDirectoryType
as LOGICAL
e add Entry
and per il HomeDirectoryDetails
parametro. Per esempio:
HomeDirectoryType: "LOGICAL" HomeDirectoryDetails: "[{\"Entry\": \"/\", \"Target\": \"/
DOC-EXAMPLE-BUCKET
/theRealFolder"}]"
Il codice seguente è un esempio di risposta riuscita da una chiamata di autenticazione Lambda personalizzata.
aws transfer test-identity-provider --server-id s-1234567890abcdef0 --user-name myuser { "Url": "https://a1b2c3d4e5.execute-api.us-east-2.amazonaws.com/prod/servers/s-1234567890abcdef0/users/myuser/config", "Message": "", "Response": "{\"Role\": \"arn:aws:iam::123456789012:role/bob-usa-role\",\"HomeDirectoryType\": \"LOGICAL\",\"HomeDirectoryDetails\": \"[{\\\"Entry\\\":\\\"/myhome\\\",\\\"Target\\\":\\\"/
DOC-EXAMPLE-BUCKET
/theRealFolder\\\"}]\",\"PublicKeys\": \"[ssh-rsa myrsapubkey]\"}", "StatusCode": 200 }
Nota
La "Url":
riga viene restituita solo se si utilizza un metodo API Gateway come provider di identità personalizzato.