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à.
Procedura guidata: controllo dell'accesso a un bucket con policy utente
Questa spiegazione passo per passo illustra il funzionamento delle autorizzazioni utente con Amazon S3. In questo esempio, viene creato un bucket con cartelle. Quindi crei AWS Identity and Access Management IAM utenti nel tuo bucket Amazon S3 Account AWS e concedi a tali utenti autorizzazioni incrementali sul tuo bucket Amazon S3 e sulle cartelle in esso contenute.
Argomenti
- Principi di base relativi a bucket e cartelle
- Riepilogo della spiegazione passo per passo
- Preparazione della procedura guidata
- Fase 1: creazione di un bucket
- Fase 2: Creare IAM utenti e un gruppo
- Passaggio 3: Verifica che IAM gli utenti non dispongano di autorizzazioni
- Fase 4: concessione di autorizzazioni a livello di gruppo
- Passaggio 5: concedere IAM all'utente Alice autorizzazioni specifiche
- Passo 6: Concedi all'utente Bob autorizzazioni specifiche IAM
- Fase 7: protezione della cartella Private (Privato)
- Fase 8: Pulizia
- Risorse correlate
Principi di base relativi a bucket e cartelle
Il modello di dati di Amazon S3 è una struttura flat: crei un bucket e il bucket archivia gli oggetti. Non c'è nessuna gerarchia di bucket secondari o sottocartelle, ma è possibile emulare una gerarchia delle cartelle. Strumenti come la console di Amazon S3 possono presentare una panoramica di queste cartelle e sottocartelle logiche nel bucket.
La console mostra che un bucket denominato companybucket
ha tre cartelle, Private
, Development
e Finance
e un oggetto, s3-dg.pdf
. La console utilizza i nomi oggetto (chiavi) per creare una gerarchia logica con cartelle e sottocartelle. Considerare i seguenti esempi:
-
Quando crei la cartella
Development
, la console crea un oggetto con la chiaveDevelopment/
. Nota il delimitatore finale '/' (/
). -
Quando carichi un oggetto denominato
Projects1.xls
nella cartellaDevelopment
, la console carica l'oggetto e gli assegna la chiaveDevelopment/Projects1.xls
.Nella chiave,
Development
è il prefisso e/
è il delimitatore. Amazon S3 API supporta prefissi e delimitatori nelle sue operazioni. Ad esempio, è possibile ottenere un elenco di tutti gli oggetti da un bucket con un prefisso e un delimitatore specifici. Nella console, quando apri la cartellaDevelopment
, viene visualizzato un elenco degli oggetti in essa contenuti. Nell'esempio seguente, la cartellaDevelopment
contiene un solo oggetto.Quando la console visualizza la cartella
Development
nel bucketcompanybucket
, invia una richiesta ad Amazon S3 in cui specifica un prefissoDevelopment
e un delimitatore/
. La risposta della console si presenta proprio come un elenco di cartelle nel file system del computer. L'esempio precedente mostra che il bucketcompanybucket
ha un oggetto con la chiaveDevelopment/Projects1.xls
.
La console utilizza le chiavi degli oggetti per dedurre una gerarchia logica. Amazon S3 non ha una gerarchia fisica. Amazon S3 dispone solo di bucket che contengono oggetti in una struttura di file piatta. Quando crei oggetti utilizzando Amazon S3API, puoi utilizzare chiavi oggetto che implicano una gerarchia logica. Quando viene creata una gerarchia logica di oggetti, è possibile gestire l'accesso alle singole cartelle, come dimostrato in questa procedura guidata.
Prima di iniziare, assicurarsi di acquisire familiarità con il concetto di contenuto di un bucket a livello di root. Si supponga che il bucket companybucket
abbia i seguenti oggetti:
-
Private/privDoc1.txt
-
Private/privDoc2.zip
-
Development/project1.xls
-
Development/project2.xls
-
Finance/Tax2011/document1.pdf
-
Finance/Tax2011/document2.pdf
-
s3-dg.pdf
Queste chiavi degli oggetti creano una gerarchia logica con Private
, Development
e Finance
come cartelle a livello root e s3-dg.pdf
come un oggetto a livello root. Quando si sceglie il nome di un bucket nella console di Amazon S3, le voci a livello di root vengono visualizzate. La console mostra i prefissi di livello superiore (Private/
, Development/
e Finance/
) come cartelle a livello di root. La chiave dell'oggetto s3-dg.pdf
non ha prefisso e quindi appare come voce a livello root.
Riepilogo della spiegazione passo per passo
In questa procedura guidata, creare un bucket con tre cartelle (Private
, Development
e Finance
) al suo interno.
Ci sono due utenti, Alice e Bob. Alice deve accedere solo alla cartella Development
, mentre Bob deve accedere solo alla cartella Finance
. Il contenuto della cartella Private
deve essere mantenuto privato. Nella procedura dettagliata, gestisci l'accesso creando IAM utenti (l'esempio utilizza i nomi utente Alice e Bob) e concedendo loro le autorizzazioni necessarie.
IAMsupporta anche la creazione di gruppi di utenti e la concessione di autorizzazioni a livello di gruppo valide per tutti gli utenti del gruppo. In questo modo è possibile gestire le autorizzazioni in modo più efficiente. Per questo esercizio sia Alice che Bob hanno bisogno di autorizzazioni comuni. Pertanto, verrà creato anche un gruppo denominato Consultants
e Alice e Bob saranno aggiunti al gruppo. Inizialmente, le autorizzazioni vengono assegnate collegando una policy di gruppo al gruppo stesso. Quindi, vengono aggiunte autorizzazioni specifiche per gli utenti collegando le policy agli utenti specifici.
Nota
La procedura dettagliata utilizza companybucket
come nome del bucket, Alice e Bob come IAM utenti e come nome del gruppo. Consultants
Poiché Amazon S3 richiede che i nomi di bucket siano univoci a livello globale, è necessario sostituire il nome del bucket con un nome personalizzato.
Preparazione della procedura guidata
In questo esempio, utilizzi le tue Account AWS credenziali per creare utenti. IAM Inizialmente, questi utenti non hanno autorizzazioni. Le autorizzazioni vengono concesse in modo incrementale per l'esecuzione di operazioni di Amazon S3 specifiche. Per testare queste autorizzazioni, viene effettuato l'accesso alla console con le credenziali di ciascun utente. Man mano che concedi in modo incrementale le autorizzazioni come Account AWS proprietario e le testi come IAM utente, devi accedere e disconnetterti, ogni volta utilizzando credenziali diverse. È possibile eseguire questo test con un browser, ma il processo sarà più rapido se è possibile utilizzare due browser diversi. Utilizza un browser per connetterti AWS Management Console con le tue Account AWS credenziali e un altro browser per connetterti con le credenziali dell'utente. IAM
Per accedere a AWS Management Console con le tue Account AWS
credenziali, vai a https://console.aws.amazon.com/
Per ulteriori informazioniIAM, consulta La pagina di AWS Management Console accesso nella Guida per l'IAMutente.
Per fornire un link di accesso agli utenti IAM
-
Accedi a AWS Management Console e apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/
. -
Nel riquadro di navigazione, scegli IAMDashboard.
-
Nota il link di accesso IAM degli utenti URL sotto:. Fornirai questo link agli IAM utenti per accedere alla console con il loro nome IAM utente e password.
Fase 1: creazione di un bucket
In questo passaggio, accedi alla console Amazon S3 con Account AWS le tue credenziali, crei un bucket, aggiungi cartelle al bucket e carichi uno o due documenti di esempio in ogni cartella.
Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
-
Creare un bucket.
Per step-by-step istruzioni, consultaCreazione di un bucket.
-
Caricare un documento nel bucket.
Questo esercizio presume che il documento
s3-dg.pdf
si trovi a livello root di questo bucket. Se viene caricato un documento differente, è necessario sostituire il nome file cons3-dg.pdf
. -
Aggiungere tre cartelle denominate
Private
,Finance
eDevelopment
al bucket.Per step-by-step istruzioni su come creare una cartella, consulta Organizzazione degli oggetti nella console di Amazon S3 utilizzando le cartelle > nella Guida per l'utente di Amazon Simple Storage Service.
-
Caricare uno o due documenti in ciascuna cartella.
Per questo esercizio, si presume che siano stati caricati un paio di documenti in ciascuna cartella, in modo che il bucket abbia oggetti con le seguenti chiavi:
-
Private/privDoc1.txt
-
Private/privDoc2.zip
-
Development/project1.xls
-
Development/project2.xls
-
Finance/Tax2011/document1.pdf
-
Finance/Tax2011/document2.pdf
-
s3-dg.pdf
Per step-by-step istruzioni, consultaCaricamento degli oggetti.
-
Fase 2: Creare IAM utenti e un gruppo
Ora usa la IAMconsole
Crea anche un gruppo amministrativo denominatoConsultants
. Quindi aggiungi entrambi gli utenti al gruppo. Per step-by-step istruzioni, consulta Creazione di gruppi di IAM utenti.
avvertimento
Quando si aggiungono utenti e un gruppo, non collegare alcuna policy che assegni autorizzazioni agli utenti. Inizialmente, questi utenti non dispongono di alcuna autorizzazione. Nelle sezioni seguenti, le autorizzazioni vengono concesse in modo incrementale. Per prima cosa devi assicurarti di aver assegnato delle password a questi IAM utenti. Queste credenziali utente vengono utilizzate per testare le operazioni di Amazon S3 e verificare che le autorizzazioni funzionino come previsto.
Per step-by-step istruzioni sulla creazione di un nuovo IAM utente, consulta la sezione Creazione di un IAM utente Account AWS nella Guida per l'IAMutente. Quando crei gli utenti per questa procedura guidata, seleziona Accesso alla AWS Management Console e deseleziona Accesso programmatico.
Per step-by-step istruzioni sulla creazione di un gruppo amministrativo, consulta Creazione del primo utente e gruppo IAM amministratore nella Guida per l'IAMutente.
Passaggio 3: Verifica che IAM gli utenti non dispongano di autorizzazioni
Se utilizzi due browser, ora puoi utilizzare il secondo browser per accedere alla console utilizzando una delle credenziali IAM utente.
-
Utilizzando il link di accesso IAM utente (vediPer fornire un link di accesso agli utenti IAM), accedi a AWS Management Console utilizzando una delle credenziali IAM utente.
-
Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
Verifica il messaggio della console che indica che l'accesso è negato.
Ora, è possibile iniziare a concedere le autorizzazioni incrementali agli utenti. Innanzitutto, collegare una policy di gruppo che concede le autorizzazioni necessarie per entrambi gli utenti.
Fase 4: concessione di autorizzazioni a livello di gruppo
Gli utenti devono essere in grado di effettuare quanto segue:
-
Elencare tutti i bucket di proprietà dell'account padre. A tale scopo, Bob e Alice devono avere l'autorizzazione per l'operazione
s3:ListAllMyBuckets
. -
Elencare le voci, le cartelle e gli oggetti a livello root nel bucket
companybucket
. A tale scopo, Bob e Alice devono avere l'autorizzazione per l'operaziones3:ListBucket
nel bucketcompanybucket
.
Innanzitutto, creare una policy che concede tali autorizzazioni e quindi collegarla al gruppo Consultants
.
Fase 4.1: concessione di autorizzazione per elencare tutti i bucket
In questa fase viene creata una policy gestita che concede agli utenti le autorizzazioni minime per consentire loro di elencare tutti i bucket di proprietà dell'account padre. Quindi, tale policy verrà collegata al gruppo Consultants
. Quando si collega la policy gestita a un utente o a un gruppo, si concede all'utente o al gruppo l'autorizzazione per ottenere un elenco dei bucket di proprietà dell' Account AWS parent.
-
Accedi a AWS Management Console e apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/
. Nota
Poiché stai concedendo le autorizzazioni utente, accedi utilizzando Account AWS le tue credenziali, non come utente. IAM
-
Creare la policy gestita.
-
Nel riquadro di navigazione sulla sinistra, selezionare Policies (Policy) e scegliere Create Policy (Crea policy).
-
Scegli la scheda. JSON
-
Copiare la policy di accesso seguente e incollarla nel campo di testo relativo alla policy.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGroupToSeeBucketListInTheConsole", "Action": ["s3:ListAllMyBuckets"], "Effect": "Allow", "Resource": ["arn:aws:s3:::*"] } ] }
Una politica è un JSON documento. Nel documento, uno
Statement
è una serie di oggetti, ognuno dei quali descrive un'autorizzazione utilizzando un insieme di coppie di nome-valore. La suddetta policy descrive un'autorizzazione specifica. L'Action
specifica il tipo di accesso. Nella policy,s3:ListAllMyBuckets
è un'operazione di Amazon S3 predefinita. Questa azione riguarda il funzionamento del GET servizio Amazon S3, che restituisce un elenco di tutti i bucket di proprietà del mittente autenticato. Il valore dell'elementoEffect
determina se un'autorizzazione specifica è consentita o rifiutata. -
Scegliere Review policy (Esamina policy). Nella pagina successiva, immettere
AllowGroupToSeeBucketListInTheConsole
nel campo Name (Nome), quindi scegliere Create policy (Crea policy).Nota
La voce Summary (Riepilogo) visualizza un messaggio in cui si afferma che la policy non concede alcuna autorizzazione. Per questa procedura guidata, il messaggio può essere ignorato.
-
-
Collegare la policy gestita
AllowGroupToSeeBucketListInTheConsole
che è stata creata al gruppoConsultants
.Per step-by-step istruzioni su come allegare una policy gestita, consulta Aggiungere e rimuovere le autorizzazioni di IAM identità nella Guida per l'utente. IAM
Puoi allegare i documenti relativi alle policy a IAM utenti e gruppi nella IAM console. Poiché entrambi gli utenti devono essere in grado di elencare i bucket, la policy deve essere collegata al gruppo.
-
Testare l'autorizzazione.
-
Utilizzando il link di accesso IAM utente (vediPer fornire un link di accesso agli utenti IAM), accedi alla console utilizzando una qualsiasi delle credenziali IAM utente.
-
Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
La console ora dovrebbe elencare tutti i bucket, ma non gli oggetti contenuti in ogni bucket.
-
Fase 4.2: abilitazione degli utenti a elencare il contenuto di un bucket a livello root
Di seguito, consentire a tutti gli utenti nel gruppo Consultants
di elencare le voci del bucket companybucket
a livello root. Quando un utente sceglie il bucket aziendale nella console di Amazon S3, può visualizzare le voci a livello root nel bucket.
Nota
Questo esempio utilizza companybucket
a scopo illustrativo. È necessario utilizzare il nome del bucket che è stato creato.
Per comprendere la richiesta che la console invia ad Amazon S3 quando scegli il nome di un bucket, la risposta che Amazon S3 restituisce e come la console interpreta la risposta, esamina il flusso un po' più da vicino.
Quando scegli un nome per il bucket, la console invia la richiesta GETBucket (List Objects) ad Amazon S3. Questa richiesta include i seguenti parametri:
-
Il parametro
prefix
che presenta una stringa vuota come valore. -
Il
delimiter
parametro con/
come valore.
Di seguito è riportata una richiesta di esempio.
GET ?prefix=&delimiter=/ HTTP/1.1 Host: companybucket.s3.amazonaws.com Date: Wed, 01 Aug 2012 12:00:00 GMT Authorization: AWS AKIAIOSFODNN7EXAMPLE:xQE0diMbLRepdf3YB+FIEXAMPLE=
Amazon S3 restituisce una risposta che include il seguente elemento <ListBucketResult/>
.
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>companybucket</Name> <Prefix></Prefix> <Delimiter>/</Delimiter> ... <Contents> <Key>s3-dg.pdf</Key> ... </Contents> <CommonPrefixes> <Prefix>Development/</Prefix> </CommonPrefixes> <CommonPrefixes> <Prefix>Finance/</Prefix> </CommonPrefixes> <CommonPrefixes> <Prefix>Private/</Prefix> </CommonPrefixes> </ListBucketResult>
L'oggetto s3-dg.pdf
della chiave non contiene il delimitatore barra (/
) e Amazon S3 restituisce la chiave nell'elemento <Contents>
. Tutte le altre chiavi nel bucket di esempio contengono tuttavia il delimitatore /
. Amazon S3 raggruppa queste chiavi e restituisce un elemento <CommonPrefixes>
per ciascuno dei diversi valori di prefisso Development/
, Finance/
e Private/
che corrisponde a una sottostringa dall'inizio di queste chiavi alla prima occorrenza del delimitatore /
specificato.
La console interpreta questo risultato e mostra le voci a livello root come tre cartelle e una chiave dell'oggetto.
Se Bob o Alice aprono la cartella Development, la console invia la richiesta GETBucket (List Objects) ad Amazon S3 con e prefix
delimiter
i parametri impostati sui seguenti valori:
-
Il parametro
prefix
con il valoreDevelopment/
. -
Il parametro
delimiter
con il valore "/
".
In risposta, Amazon S3 restituisce le chiavi degli oggetti che iniziano con il prefisso specificato.
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>companybucket</Name> <Prefix>Development</Prefix> <Delimiter>/</Delimiter> ... <Contents> <Key>Project1.xls</Key> ... </Contents> <Contents> <Key>Project2.xls</Key> ... </Contents> </ListBucketResult>
La console mostra le chiavi degli oggetti.
Ora, tornare alla concessione dell'autorizzazione agli utenti per elencare le voci del bucket a livello root. Per elencare il contenuto del bucket, gli utenti devono disporre dell'autorizzazione per chiamare l'operazione s3:ListBucket
, come illustrato nella seguente dichiarazione di policy. Per fare in modo che possa essere visualizzato il contenuto a livello root, è necessario aggiungere una condizione per richiedere che gli utenti specifichino un oggetto prefix
vuoto nella richiesta, ovvero gli utenti non sono autorizzati a fare doppio clic su alcuna cartella a livello root. Infine, aggiungere una condizione per esigere un accesso di tipo cartella imponendo che le richieste dell'utente includano il parametro delimiter
con il valore "/
".
{ "Sid": "AllowRootLevelListingOfCompanyBucket", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::companybucket"], "Condition":{ "StringEquals":{ "s3:prefix":[""], "s3:delimiter":["/"] } } }
Quando scegli un bucket sulla console Amazon S3, la console invia innanzitutto la richiesta di posizione GETdel bucket per trovare dove è distribuito Regione AWS il bucket. Quindi la console utilizza l'endpoint specifico della regione per il bucket per inviare la richiesta Bucket (List Objects). GET Di conseguenza, se gli utenti utilizzeranno la console, è necessario assegnare l'autorizzazione per l'operazione s3:GetBucketLocation
come illustrato nella seguente dichiarazione di policy.
{ "Sid": "RequiredByS3Console", "Action": ["s3:GetBucketLocation"], "Effect": "Allow", "Resource": ["arn:aws:s3:::*"] }
Per consentire agli utenti di elencare il contenuto di un bucket a livello root
-
Accedi a AWS Management Console e apri la console all'indirizzo. IAM https://console.aws.amazon.com/iam/
Usa Account AWS le tue credenziali, non quelle di un IAM utente, per accedere alla console.
-
Sostituire la policy gestita
AllowGroupToSeeBucketListInTheConsole
esistente che è collegata al gruppoConsultants
con la seguente policy, che consente anche l'operaziones3:ListBucket
. Ricordati di sostituirle
nella polizzacompany bucket
Resource
con il nome del tuo bucket.Per step-by-step istruzioni, consulta Modifica delle IAM politiche nella Guida per l'IAMutente. Quando segui le step-by-step istruzioni, assicurati di seguire i passaggi per applicare le modifiche a tutte le principali entità a cui è allegata la politica.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGroupToSeeBucketListAndAlsoAllowGetBucketLocationRequiredForListBucket", "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "AllowRootLevelListingOfCompanyBucket", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::
companybucket
"], "Condition":{ "StringEquals":{ "s3:prefix":[""], "s3:delimiter":["/"] } } } ] } -
Test delle autorizzazioni aggiornate.
-
Utilizzando il link di accesso IAM utente (vediPer fornire un link di accesso agli utenti IAM), accedi a. AWS Management Console
Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
-
Scegliere il bucket creato. La console mostra le voci del bucket a livello root. Se si sceglie qualsiasi cartella nel bucket, non sarà possibile visualizzare il contenuto della cartella perché le relative autorizzazioni non sono state ancora concesse.
-
Questo test ha esito positivo quando gli utenti utilizzano la console di Amazon S3. Quando si sceglie un bucket sulla console, l'implementazione della console invia una richiesta che include il parametro prefix
con una stringa vuota come valore e il parametro delimiter
con "/
" come valore.
Fase 4.3: sintesi della policy di gruppo
L'effetto netto della politica di gruppo che hai aggiunto è quello di concedere IAM agli utenti Alice e Bob le seguenti autorizzazioni minime:
-
Elencare tutti i bucket di proprietà dell'account padre.
-
Visualizzare le voci a livello root nel bucket
companybucket
.
Tuttavia, gli utenti ancora non possono fare molto. Di seguito, concedere autorizzazioni specifiche per utente, come segue:
-
Consentire a Alice di prendere e mettere oggetti nella cartella
Development
. -
Consentite a Bob di prendere e mettere oggetti nella cartella
Finance
.
Per le autorizzazioni specifiche dell'utente, collegare una policy all'utente specifico, non al gruppo. Nella sezione seguente, ad Alice vengono concesse le autorizzazioni per lavorare nella cartella Development
. È possibile ripetere le fasi per concedere un'autorizzazione simile a Bob per lavorare nella cartella Finance
.
Passaggio 5: concedere IAM all'utente Alice autorizzazioni specifiche
È necessario ora concedere autorizzazioni aggiuntive ad Alice in modo che possa vedere il contenuto della cartella Development
per poter prendere e mettere oggetti nella stessa.
Passo 5.1: Concedi IAM all'utente Alice il permesso di elencare il contenuto della cartella di sviluppo
Affinché Alice possa elencare il contenuto della Development
cartella, è necessario applicare all'utente Alice una politica che conceda l'autorizzazione per l's3:ListBucket
azione sul companybucket
bucket, a condizione che la richiesta includa il prefisso. Development/
Questa policy deve essere applicata solo all'utente Alice, pertanto viene utilizzata una policy inline. Per ulteriori informazioni sulle politiche in linea, vedere le politiche gestite e le politiche in linea nella Guida per l'utente. IAM
-
Accedi AWS Management Console e apri la IAM console all'indirizzo. https://console.aws.amazon.com/iam/
Usa Account AWS le tue credenziali, non quelle di un IAM utente, per accedere alla console.
-
Creare una policy inline per concedere all'utente Alice l'autorizzazione per elencare il contenuto della cartella
Development
.-
Nel riquadro di navigazione sinistro, scegliere Users (Utenti).
-
Scegli il nome utente Alice.
-
Nella pagina dei dettagli dell'utente, scegliere la scheda Permissions (Autorizzazioni), quindi selezionare Add inline policy (Aggiungi policy inline).
-
Scegli la JSONscheda.
-
Copia la seguente politica e incollala nel campo di testo della politica.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListBucketIfSpecificPrefixIsIncludedInRequest", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::
companybucket
"], "Condition":{ "StringLike":{"s3:prefix":["Development/*"] } } } ] } -
Scegliere Review policy (Esamina policy). Nella pagina successiva, immettere un nome nel campo Name (Nome), quindi scegliere Create policy (Crea policy).
-
-
Test della modifica apportata alle autorizzazioni di Alice:
-
Utilizzando il link di accesso IAM utente (vediPer fornire un link di accesso agli utenti IAM), accedi a. AWS Management Console
Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
-
Nella console di Amazon S3 verificare che Alice possa visualizzare l'elenco degli oggetti nella cartella
Development/
del bucket.Quando l'utente sceglie la cartella
/Development
per visualizzare l'elenco degli oggetti in essa contenuti, la console di Amazon S3 invia la richiestaListObjects
ad Amazon S3 con il prefisso/Development
. Poiché all'utente è stata concessa l'autorizzazione per visualizzare l'elenco degli oggetti con il prefissoDevelopment
e il delimitatore/
, Amazon S3 restituisce l'elenco degli oggetti con il prefisso della chiaveDevelopment/
e la console visualizza tale elenco.
-
Passaggio 5.2: Concedi IAM all'utente Alice le autorizzazioni per scaricare e inserire oggetti nella cartella di sviluppo
Affinché Alice possa prendere e mettere oggetti nella cartella Development
, ha bisogno di un'autorizzazione per chiamare le operazioni s3:GetObject
e s3:PutObject
. Le seguenti dichiarazioni di policy assegnano queste autorizzazioni purché la richiesta includa il parametro prefix
con un valore di Development/
.
{ "Sid":"AllowUserToReadWriteObjectData", "Action":["s3:GetObject", "s3:PutObject"], "Effect":"Allow", "Resource":["arn:aws:s3:::companybucket/Development/*"] }
-
Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
Usa Account AWS le tue credenziali, non quelle di un IAM utente, per accedere alla console.
-
Modificare la policy inline creata nella fase precedente.
Nel riquadro di navigazione sinistro, scegliere Users (Utenti).
Scegliere il nome utente Alice.
Nella pagina dei dettagli, scegliere la scheda Permissions (Autorizzazioni) ed espandere la sezione Inline Policies (Policy inline).
Accanto al nome della policy creata nella fase precedente, scegliere Edit Policy (Modifica policy) .
Copiare la seguente policy e incollarla nel campo di testo della policy, sostituendo la policy esistente.
{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllowListBucketIfSpecificPrefixIsIncludedInRequest", "Action":["s3:ListBucket"], "Effect":"Allow", "Resource":["arn:aws:s3:::
companybucket
"], "Condition":{ "StringLike":{"s3:prefix":["Development/*"] } } }, { "Sid":"AllowUserToReadWriteObjectDataInDevelopmentFolder", "Action":["s3:GetObject", "s3:PutObject"], "Effect":"Allow", "Resource":["arn:aws:s3:::companybucket
/Development/*"] } ] }
-
Test della policy aggiornata:
-
Utilizzando il link di accesso IAM dell'utente (vediPer fornire un link di accesso agli utenti IAM), accedi a. AWS Management Console
-
Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
-
Nella console di Amazon S3 verificare che Alice possa aggiungere e scaricare un oggetto nella cartella
Development
.
-
Passaggio 5.3: Negare esplicitamente le autorizzazioni IAM dell'utente Alice a qualsiasi altra cartella del bucket
L'utente Alice ora può elencare il contenuto del bucket companybucket
a livello root. Inoltre, ora può prendere e mettere oggetti nella cartella Development
. Se si vuole effettivamente limitare le autorizzazioni di accesso, è possibile rifiutare esplicitamente ad Alice l'accesso a qualsiasi altra cartella del bucket. Se esiste un'altra politica (policy del bucket oACL) che concede ad Alice l'accesso a qualsiasi altra cartella nel bucket, questa negazione esplicita ha la precedenza su tali autorizzazioni.
È possibile aggiungere la seguente istruzione alla policy utente di Alice, che prevede che tutte le richieste inviate da Alice ad Amazon S3 includano il parametro prefix
, il cui valore può essere Development/*
oppure una stringa vuota.
{ "Sid": "ExplicitlyDenyAnyRequestsForAllOtherFoldersExceptDevelopment", "Action": ["s3:ListBucket"], "Effect": "Deny", "Resource": ["arn:aws:s3:::companybucket"], "Condition":{ "StringNotLike": {"s3:prefix":["Development/*",""] }, "Null" : {"s3:prefix":false } } }
Esistono due espressioni condizionali nel blocco Condition
. Il risultato di queste espressioni condizionali viene combinato utilizzando l'AND
logico. Se entrambe le condizioni sono vere, il risultato della condizione combinata è vero. Poiché Effect
in questa policy è Deny
, quando Condition
viene valutata true, gli utenti non saranno in grado di eseguire la Action
specificata.
-
L'espressione condizionale
Null
assicura che le richieste provenienti da Alice includano il parametroprefix
.Il parametro
prefix
richiede l'accesso di tipo cartella. Se viene inviata una richiesta senza il parametroprefix
, Amazon S3 restituisce tutte le chiavi degli oggetti.Se la richiesta include il parametro
prefix
con un valore null, l'espressione restituisce il valore True, quindi tutta laCondition
restituisce il valore True. È necessario consentire una stringa vuota come valore del parametroprefix
. Da quanto detto in precedenza, ricordare che permettere una stringa nulla significa consentire ad Alice di recuperare le voci del bucket a livello root come fa la console nella precedente discussione. Per ulteriori informazioni, consulta Fase 4.2: abilitazione degli utenti a elencare il contenuto di un bucket a livello root. L'espressione condizionale
StringNotLike
assicura che se il valore del parametroprefix
viene specificato e non èDevelopment/*
, la richiesta ha esito negativo.
Seguire le fasi della sezione precedente e aggiornare nuovamente la policy inline creata per l'utente Alice.
Copiare la seguente policy e incollarla nel campo di testo della policy, sostituendo la policy esistente.
{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllowListBucketIfSpecificPrefixIsIncludedInRequest", "Action":["s3:ListBucket"], "Effect":"Allow", "Resource":["arn:aws:s3:::
companybucket
"], "Condition":{ "StringLike":{"s3:prefix":["Development/*"] } } }, { "Sid":"AllowUserToReadWriteObjectDataInDevelopmentFolder", "Action":["s3:GetObject", "s3:PutObject"], "Effect":"Allow", "Resource":["arn:aws:s3:::companybucket
/Development/*"] }, { "Sid": "ExplicitlyDenyAnyRequestsForAllOtherFoldersExceptDevelopment", "Action": ["s3:ListBucket"], "Effect": "Deny", "Resource": ["arn:aws:s3:::companybucket
"], "Condition":{ "StringNotLike": {"s3:prefix":["Development/*",""] }, "Null" : {"s3:prefix":false } } } ] }
Passo 6: Concedi all'utente Bob autorizzazioni specifiche IAM
È necessario ora assegnare a Bob l'autorizzazione per la cartella Finance
. Seguire le fasi utilizzate precedentemente per assegnare le autorizzazioni ad Alice ma sostituire la cartella Development
con la cartella Finance
. Per step-by-step istruzioni, consultaPassaggio 5: concedere IAM all'utente Alice autorizzazioni specifiche.
Fase 7: protezione della cartella Private (Privato)
In questo esempio, vi sono soltanto due utenti. Sono state concesse le autorizzazioni minime a livello di gruppo e quelle a livello di utente unicamente quando erano veramente necessarie delle autorizzazioni a livello di singolo utente. Questo approccio contribuisce ad alleggerire l'impegno necessario per gestire le autorizzazioni. Con l'aumento del numero degli utenti, la gestione delle autorizzazioni può diventare gravosa. Ad esempio, non vogliamo che alcun utente di questo esempio acceda al contenuto della cartella Private
. Come ci si assicura di non concedere accidentalmente a un utente l'autorizzazione alla Private
cartella? È necessario aggiungere una policy che rifiuti esplicitamente l'accesso alla cartella. Un rifiuto esplicito sovrascrive qualsiasi altra autorizzazione.
Per essere certi che la cartella Private
resti privata, è possibile aggiungere le seguenti due dichiarazioni di rifiuto alla policy di gruppo:
-
Aggiungere la seguente dichiarazione per rifiutare esplicitamente qualsiasi operazione sulle risorse della cartella
Private
(companybucket/Private/*
).{ "Sid": "ExplictDenyAccessToPrivateFolderToEveryoneInTheGroup", "Action": ["s3:*"], "Effect": "Deny", "Resource":["arn:aws:s3:::companybucket/Private/*"] }
-
Viene inoltre rifiutata l'autorizzazione a eseguire l'operazione di elenco degli oggetti quando la richiesta specifica il prefisso
Private/
. Nella console, se Bob o Alice apre la cartellaPrivate
, questa policy fa in modo che Amazon S3 restituisca una risposta di errore.{ "Sid": "DenyListBucketOnPrivateFolder", "Action": ["s3:ListBucket"], "Effect": "Deny", "Resource": ["arn:aws:s3:::*"], "Condition":{ "StringLike":{"s3:prefix":["Private/"]} } }
Sostituire la policy del gruppo Consultants
con una policy aggiornata che includa le precedenti dichiarazioni di rifiuto. Una volta applicata la policy aggiornata, nessuno degli utenti del gruppo può accedere alla cartella Private
nel bucket.
-
Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
Usa Account AWS le tue credenziali, non quelle di un IAM utente, per accedere alla console.
-
Sostituire la policy gestita
AllowGroupToSeeBucketListInTheConsole
esistente che è collegata al gruppoConsultants
con la seguente policy. Ricordati di sostituirle
nella polizza con il nome del tuo bucket.company bucket
Per istruzioni, consulta Modifica delle politiche gestite dai clienti nella Guida per l'IAMutente. Quando si seguono le istruzioni, osservare le indicazioni per l'applicazione delle modifiche a tutte le entità principali a cui è collegata la policy.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGroupToSeeBucketListAndAlsoAllowGetBucketLocationRequiredForListBucket", "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"], "Effect": "Allow", "Resource": ["arn:aws:s3:::*"] }, { "Sid": "AllowRootLevelListingOfCompanyBucket", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::
companybucket
"], "Condition":{ "StringEquals":{"s3:prefix":[""]} } }, { "Sid": "RequireFolderStyleList", "Action": ["s3:ListBucket"], "Effect": "Deny", "Resource": ["arn:aws:s3:::*"], "Condition":{ "StringNotEquals":{"s3:delimiter":"/"} } }, { "Sid": "ExplictDenyAccessToPrivateFolderToEveryoneInTheGroup", "Action": ["s3:*"], "Effect": "Deny", "Resource":["arn:aws:s3:::companybucket
/Private/*"] }, { "Sid": "DenyListBucketOnPrivateFolder", "Action": ["s3:ListBucket"], "Effect": "Deny", "Resource": ["arn:aws:s3:::*"], "Condition":{ "StringLike":{"s3:prefix":["Private/"]} } } ] }
Fase 8: Pulizia
Per eseguire la pulizia, apri la IAMconsole
Per essere certi che non vengano addebitati costi aggiuntivi per lo storage, è necessario eliminare anche gli oggetti e il bucket che è stato creato per questo esercizio.
Risorse correlate
Gestione delle IAM politiche nella Guida per l'IAMutente