View a markdown version of this page

Creazione di una policy di sessione per un bucket Amazon S3 - 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à.

Creazione di una policy di sessione per un bucket Amazon S3

Una policy di sessione è una policy AWS Identity and Access Management (IAM) che limita gli utenti a determinate porzioni di un bucket Amazon S3. valutando l'accesso in tempo reale.

Nota

Le policy di sessione vengono utilizzate solo con Amazon S3. Per Amazon EFS, utilizzi le autorizzazioni dei file POSIX per limitare l'accesso.

Puoi utilizzare una policy di sessione quando devi concedere lo stesso accesso a un gruppo di utenti a una porzione particolare del tuo bucket Amazon S3. Ad esempio, è possibile che un gruppo di utenti richieda l'accesso solo alla directory home. Questo gruppo di utenti condivide lo stesso ruolo IAM.

Nota

La lunghezza massima di una policy di sessione è di 2048 caratteri. Per maggiori dettagli, consulta il parametro di richiesta della policy per l'CreateUserazione nel riferimento API.

Per creare una policy di sessione, utilizza le seguenti variabili di policy nella tua policy IAM:

  • ${transfer:HomeBucket}

  • ${transfer:HomeDirectory}

  • ${transfer:HomeFolder}

  • ${transfer:UserName}

Importante

Non puoi utilizzare le variabili precedenti in Managed Policies. Né puoi usarle come variabili di policy nella definizione di un ruolo IAM. Crei queste variabili in una policy IAM e le fornisci direttamente durante la configurazione dell'utente. Inoltre, non puoi usare la ${aws:Username} variabile in questa policy di sessione. Questa variabile si riferisce a un nome utente IAM e non al nome utente richiesto da AWS Transfer Family.

Esempio di politica di sessione

Il codice seguente mostra un esempio di policy di sessione.

{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::${transfer:HomeBucket}" ], "Condition": { "StringLike": { "s3:prefix": [ "${transfer:HomeFolder}/*", "${transfer:HomeFolder}" ] } } }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": "arn:aws:s3:::${transfer:HomeDirectory}/*" } ] }
Nota

L'esempio di policy precedente presuppone che le directory home degli utenti siano impostate in modo da includere una barra finale, a indicare che si tratta di una directory. Se invece imposti quella di un utente HomeDirectory senza la barra finale, dovresti includerla come parte della tua politica.

Nel precedente esempio di policy, notate l'uso dei parametri transfer:HomeFoldertransfer:HomeBucket, e transfer:HomeDirectory policy. Questi parametri sono impostati per HomeDirectory i parametri configurati per l'utente, come descritto in HomeDirectory eImplementazione del metodo API Gateway. Questi parametri hanno le seguenti definizioni:

  • Il transfer:HomeBucket parametro viene sostituito con il primo componente diHomeDirectory.

  • Il transfer:HomeFolder parametro viene sostituito con le parti rimanenti del HomeDirectory parametro.

  • Al transfer:HomeDirectory parametro è stata rimossa la barra iniziale (/) in modo che possa essere utilizzato come parte di un Amazon Resource Name (ARN) di S3 in un'istruzione. Resource

Nota

Se utilizzi directory logiche, ovvero quelle dell'utente, LOGICAL questi parametri di policy (HomeBucket, e) homeDirectoryType non sono supportati. HomeDirectory HomeFolder

Ad esempio, supponiamo che il HomeDirectory parametro configurato per l'utente di Transfer Family sia. /home/bob/amazon/stuff/

  • transfer:HomeBucket è impostato su /home;

  • transfer:HomeFolder è impostato su /bob/amazon/stuff/;

  • transfer:HomeDirectorydiventahome/bob/amazon/stuff/.

La prima "Sid" consente all'utente di elencare tutte le directory a partire da/home/bob/amazon/stuff/.

Il secondo "Sid" limita l'getaccesso dell'utente put e dello stesso percorso,. /home/bob/amazon/stuff/

Con la politica precedente in vigore, quando un utente effettua il login, può accedere solo agli oggetti nella propria home directory. Al momento della connessione, AWS Transfer Family sostituisce queste variabili con i valori appropriati per l'utente. Questo rende più semplice applicare gli stessi documenti di policy a più utenti. Questo approccio riduce il sovraccarico della gestione dei ruoli e delle policy IAM per la gestione dell'accesso degli utenti al bucket Amazon S3.

Puoi anche utilizzare una policy di sessione per personalizzare l'accesso per ciascuno dei tuoi utenti in base ai tuoi requisiti aziendali. Per ulteriori informazioni, consulta Autorizzazioni per AssumeRole e AssumeRoleWithWebIdentity nella Guida per l'utente IAM. AssumeRoleWithSAML

Nota

AWS Transfer Family memorizza il JSON della policy, anziché l'Amazon Resource Name (ARN) della policy. Quindi, quando modifichi la policy nella console IAM, devi tornare alla AWS Transfer Family console e aggiornare i tuoi utenti con i contenuti più recenti della policy. Puoi aggiornare l'utente nella scheda Policy Info nella sezione Configurazione utente.

Se si utilizza il AWS CLI, è possibile utilizzare il seguente comando per aggiornare la politica.

aws transfer update-user --server-id server --user-name user --policy \ "$(aws iam get-policy-version --policy-arn policy --version-id version --output json)"

Sostituzioni annidate per le politiche di sessione

Le sostituzioni annidate non vengono eseguite nelle politiche di sessione di Transfer Family. Le policy di sessione possono utilizzare variabili annidate, ad esempio. ${transfer:HomeDirectory} Quando la policy viene elaborata, la variabile esterna (ad esempio${transfer:HomeDirectory}) potrebbe essere sostituita con un valore che contiene un'altra variabile (ad esempio, {amzn-s3-demo-bucket:/$(transfer:UserName}). Tuttavia, la variabile annidata non viene ulteriormente sostituita dal nome utente effettivo (ad esempio, johndoe).

Ciò significa che quando si creano policy di sessione per Transfer Family, è necessario tenere conto di questo comportamento e assicurarsi che la struttura delle politiche e l'utilizzo delle variabili siano progettati di conseguenza. Le variabili annidate potrebbero non essere risolte come previsto e la policy potrebbe non concedere le autorizzazioni previste. È importante testare e convalidare accuratamente le politiche di sessione per assicurarsi che funzionino come previsto. Questo comportamento è un fattore chiave da considerare quando si implementano il controllo degli accessi e le autorizzazioni per l'ambiente Transfer Family.

Una soluzione a questo problema consiste nell'utilizzare il nome effettivo del bucket Amazon S3 nella policy della sessione. Quindi, ad esempio, invece di specificare ${transfer:HomeDirectory} nella tua policy di sessione, usa quanto segue, dove amzn-s3-demo-bucket è il tuo bucket effettivo:. ${amzn-s3-demo-bucket/transfer:UserName}