Esempi di policy di bucket - Amazon Simple Storage Service

Questa guida non viene più aggiornata. Per informazioni e istruzioni aggiornate, consultare la nuova GuidaAmazon S3 dell'utente.

Esempi di policy di bucket

Questa sezione include alcuni esempi di casi d'uso tipici per le policy di bucket. Le policy utilizzano le stringhe bucket ed examplebucket nel valore di risorsa. Per testare queste policy, sostituisci queste stringhe con il nome del bucket. Per informazioni sulla sintassi della/e policy di accesso, consulta Policy e autorizzazioni in Amazon S3.

Nota

Le policy di bucket sono limitate a una dimensione di 20 KB.

Puoi utilizzare lo strumento AWS Policy Generator per creare una policy per un bucket Amazon S3. Puoi quindi utilizzare il documento generato per impostare la policy del bucket utilizzando la console Amazon S3, tramite diversi di strumenti di terze parti o con la tua applicazione.

Importante

Per testare le autorizzazioni utilizzando la console Amazon S3, sarà necessario concedere autorizzazioni aggiuntive richieste dalla console, ovvero le autorizzazioni s3:ListAllMyBuckets, s3:GetBucketLocation e s3:ListBucket. Per una procedura guidata di esempio che concede autorizzazioni a utenti e le testa utilizzando la console, consulta Procedura guidata: controllo dell'accesso a un bucket con policy utente.

Concessione di autorizzazioni a più account con condizioni aggiunte

La policy di esempio seguente concede le autorizzazioni s3:PutObject e s3:PutObjectAcl a più account AWS e richiede che tutte le richieste di queste operazioni includano la lista di controllo accessi (ACL) public-read predefinita. Per ulteriori informazioni, consulta Operazioni di Amazon S3 e Chiavi di condizione di Amazon S3.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AddCannedAcl", "Effect":"Allow", "Principal": {"AWS": ["arn:aws:iam::111122223333:root","arn:aws:iam::444455556666:root"]}, "Action":["s3:PutObject","s3:PutObjectAcl"], "Resource":"arn:aws:s3:::awsexamplebucket1/*", "Condition":{"StringEquals":{"s3:x-amz-acl":["public-read"]}} } ] }

Concessione dell'autorizzazione di sola lettura a un utente anonimo

La policy di esempio seguente concede l'autorizzazione s3:GetObject a tutti gli utenti anonimi pubblici. Per un elenco di autorizzazioni e le operazioni che queste concedono, consulta Operazioni di Amazon S3. Questa autorizzazione consente a chiunque di leggere i dati dell'oggetto, che è utile per quando si configura il proprio bucket come sito Web e si vuole che tutti possano leggere gli oggetti nel bucket. Prima di utilizzare una policy del bucket per concedere l'autorizzazione di sola lettura a un utente anonimo, devi disabilitare le impostazioni di blocco dell'accesso pubblico per il bucket. Per ulteriori informazioni, consulta Impostazione delle autorizzazioni per l'accesso al sito Web.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"PublicRead", "Effect":"Allow", "Principal": "*", "Action":["s3:GetObject","s3:GetObjectVersion"], "Resource":["arn:aws:s3:::awsexamplebucket1/*"] } ] }
avvertimento

Procedi con cautela quando concedi l'accesso anonimo al bucket Amazon S3 o disabiliti le impostazioni di blocco dell'accesso pubblico. Quando si concede l'accesso anonimo, si consente a qualsiasi persona al mondo di accedere al bucket. È consigliabile non concedere mai l'accesso anonimo al bucket Amazon S3 a meno che non sia assolutamente necessario, ad esempio con l'hosting di un sito Web statico.

Limitazione dell'accesso a indirizzi IP specifici

L'esempio seguente rifiuta le autorizzazioni a qualsiasi utente per eseguire operazioni di Amazon S3 sugli oggetti nel bucket S3 specificato, a meno che la richiesta non provenga dall'intervallo di indirizzi IP specificato nella condizione.

Questa istruzione identifica l'intervallo 54.240.143.0/24 come l'intervallo di indirizzi IP Internet Protocol versione 4 (IPv4) consentiti.

Il blocco Condition utilizza la condizioni NotIpAddress e la chiave di condizione aws:SourceIp che è una chiave di condizione AWS. Per ulteriori informazioni su queste chiavi di condizione, consulta Chiavi di condizione di Amazon S3. I valori IPv4 aws:SourceIp utilizzano la notazione CIDR standard. Per ulteriori informazioni, consulta Documentazione di riferimento degli elementi delle policy JSON IAM nella Guida per l'utente di IAM.

Importante

Sostituire l'intervallo di indirizzi IP riportato in questo esempio con un valore appropriato per il caso d'uso prima di utilizzare questa policy. Altrimenti, perderai la possibilità di accedere al tuo bucket.

{ "Version": "2012-10-17", "Id": "S3PolicyId1", "Statement": [ { "Sid": "IPAllow", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::awsexamplebucket1", "arn:aws:s3:::awsexamplebucket1/*" ], "Condition": { "NotIpAddress": {"aws:SourceIp": "54.240.143.0/24"} } } ] }

Permesso per gli indirizzi IPv4 e IPv6

Quando inizi a utilizzare gli indirizzi IPv6, è consigliabile aggiornare tutte le policy dell'organizzazione con gli intervalli di indirizzi IPv6 in aggiunta agli intervalli di indirizzi IPv4 esistenti per fare in modo che le policy continuino a funzionare durante la transizione a IPv6.

Nella policy del bucket di esempio seguente viene mostrato come combinare gli intervalli di indirizzi IPv4 e IPv6 per coprire tutti gli indirizzi IP validi dell'organizzazione. La policy di esempio permette l'accesso agli indirizzi IP di esempio 54.240.143.1 e 2001:DB8:1234:5678::1 e lo rifiuta agli indirizzi 54.240.143.129 e 2001:DB8:1234:5678:ABCD::1.

I valori IPv6 per aws:SourceIp devono essere nel formato CIDR standard. Per IPv6 è supportato l'utilizzo di :: per rappresentare un intervallo di zeri (0), ad esempio 2032001:DB8:1234:5678::/64. Per ulteriori informazioni, consulta Operatori di condizione con indirizzo IP nella Guida per l'utente di IAM.

Importante

Sostituire gli intervalli di indirizzi IP in questo esempio con valori appropriati per il caso d'uso prima di utilizzare questa policy. In caso contrario, si potrebbe perdere la possibilità di accedere al bucket.

{ "Id":"PolicyId2", "Version":"2012-10-17", "Statement":[ { "Sid":"AllowIPmix", "Effect":"Allow", "Principal":"*", "Action":"s3:*", "Resource":"arn:aws:s3:::awsexamplebucket1/*", "Condition": { "IpAddress": { "aws:SourceIp": [ "54.240.143.0/24", "2001:DB8:1234:5678::/64" ] }, "NotIpAddress": { "aws:SourceIp": [ "54.240.143.128/30", "2001:DB8:1234:5678:ABCD::/80" ] } } } ] }

Limitazione dell'accesso a un referer HTTP specifico

Supponi di avere un sito Web con un nome di dominio (www.example.com o example.com) con collegamenti a foto e video archiviati nel bucket Amazon S3awsexamplebucket1. Per impostazione predefinita, tutte le risorse di Amazon S3 sono private, quindi solo l'account AWS che le ha create può accedervi. Per consentire l'accesso in lettura a questi oggetti dal sito Web, è possibile aggiungere una policy di bucket che consente l'autorizzazione s3:GetObject con una condizione, tramite la chiave aws:Referer, che la richiesta get deve originare da pagine Web specifiche. La policy seguente specifica la condizione StringLike con la chiave di condizione aws:Referer.

{ "Version":"2012-10-17", "Id":"http referer policy example", "Statement":[ { "Sid":"Allow get requests originating from www.example.com and example.com.", "Effect":"Allow", "Principal":"*", "Action":["s3:GetObject","s3:GetObjectVersion"], "Resource":"arn:aws:s3:::awsexamplebucket1/*", "Condition":{ "StringLike":{"aws:Referer":["http://www.example.com/*","http://example.com/*"]} } } ] }

Verifica che i browser utilizzati includano l'intestazione HTTP referer nella richiesta.

Concessione dell'autorizzazione a un'identità di accesso origine Amazon CloudFront

La policy del bucket di esempio seguente concede a un'identità di accesso origine (OAI, Origin Access Identity) CloudFront l'autorizzazione per ottenere (leggere) tutti gli oggetti nel bucket Amazon S3. Puoi utilizzare un'identità OAI CloudFront per permettere agli utenti di accedere agli oggetti nel bucket tramite CloudFront ma non direttamente tramite Amazon S3. Per ulteriori informazioni, consulta Limitazione dell'accesso a contenuti Amazon S3 utilizzando un'identità di accesso origine nella Guida per gli sviluppatori di Amazon CloudFront.

La policy seguente utilizza l'ID dell'OAI come Principal della policy. Per ulteriori informazioni sull'utilizzo delle policy del bucket S3 per concedere l'accesso a un'identità OAI CloudFront, consulta Utilizzo delle policy del bucket Amazon S3 nella Guida per gli sviluppatori di Amazon CloudFront.

Per utilizzare questo esempio:

{ "Version": "2012-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EH1HDMB1FH2TC" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::awsexamplebucket1/*" } ] }

Aggiunta di una policy di bucket per la richiesta dell'autenticazione MFA

Amazon S3 supporta l'accesso all'API protetto con autenticazione MFA, una caratteristica che permette di imporre la Multi-Factor Authentication (MFA) per accedere alle risorse di Amazon S3. L'autenticazione a più fattori offre un ulteriore livello di sicurezza applicabile all'ambiente AWS. È una funzione di protezione che prevede che gli utenti dimostrino di possedere fisicamente un dispositivo MFA fornendo un codice MFA valido. Per ulteriori informazioni, consulta AWS Multi-Factor Authentication. Puoi richiedere l'autenticazione MFA per tutte le richieste di accesso alle risorse di Amazon S3.

Puoi imporre il requisito dell'autenticazione MFA utilizzando la chiave aws:MultiFactorAuthAge in una policy del bucket. Gli utenti di AWS Identity and Access Management (IAM) possono accedere alle risorse di Amazon S3 utilizzando credenziali temporanee emesse da AWS Security Token Service (AWS STS). È necessario fornire il codice MFA al momento della richiesta di AWS STS.

Quando Amazon S3 riceve una richiesta con la Multi-Factor Authentication, la chiave aws:MultiFactorAuthAge fornisce un valore numerico che indica il tempo trascorso (in secondi) dalla creazione delle credenziali temporanee. Se le credenziali temporanee fornite nella richiesta non sono state create utilizzando un dispositivo MFA, il valore di questa chiave è null (assente). In una policy di bucket, è possibile aggiungere una condizione per controllare questo valore, come mostrato nella policy di bucket di esempio riportata di seguito. La policy rifiuta qualsiasi operazione di Amazon S3 nella cartella /taxdocuments del bucket awsexamplebucket1 se la richiesta non è autenticata tramite MFA. Per ulteriori informazioni su MFA, consulta Utilizzo dell'autenticazione a più fattori (MFA) in AWS nella Guida per l'utente di IAM.

{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::awsexamplebucket1/taxdocuments/*", "Condition": { "Null": { "aws:MultiFactorAuthAge": true }} } ] }

La condizione Null nel blocco Condition viene valutata come true se il valore della chiave aws:MultiFactorAuthAge è null, che indica che le credenziali di sicurezza temporanee nella richiesta sono state create senza la chiave MFA.

La policy di bucket seguente è un'estensione di quella precedente. Include due dichiarazioni di policy. Una consente l'autorizzazione s3:GetObject per un bucket (awsexamplebucket1) per tutti gli utenti, mentre l'altra limita ulteriormente l'accesso alla cartella awsexamplebucket1/taxdocuments nel bucket richiedendo l'autenticazione MFA.

{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::awsexamplebucket1/taxdocuments/*", "Condition": { "Null": { "aws:MultiFactorAuthAge": true } } }, { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::awsexamplebucket1/*" } ] }

Facoltativamente, è possibile utilizzare una condizione numerica per limitare la durata di validità della chiave aws:MultiFactorAuthAge, indipendentemente dalla durata delle credenziali temporanee utilizzate per l'autenticazione della richiesta. Ad esempio, la policy di bucket seguente, oltre a richiedere l'autenticazione MFA, controlla anche da quanto tempo esiste la sessione temporanea. La policy rifiuta tutte le operazioni se il valore della chiave aws:MultiFactorAuthAge indica che la sessione temporanea è stata creata oltre un'ora (3.600 secondi) prima.

{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::awsexamplebucket1/taxdocuments/*", "Condition": {"Null": {"aws:MultiFactorAuthAge": true }} }, { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::awsexamplebucket1/taxdocuments/*", "Condition": {"NumericGreaterThan": {"aws:MultiFactorAuthAge": 3600 }} }, { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::awsexamplebucket1/*" } ] }

Concessione di autorizzazioni multiaccount per il caricamento di oggetti e garanzia del controllo completo da parte del proprietario del bucket

L'esempio seguente mostra come consentire a un altro account AWS di caricare oggetti nel bucket mentre si prende il pieno controllo degli oggetti caricati. Questo criterio impone che a un account AWS specifico (123456789012) venga concessa la possibilità di caricare oggetti solo se tale account include l'ACL predefinita con controllo completo del proprietario del bucket durante il caricamento. La condizione StringEquals nella policy specifica la chiave di condizione s3:x-amz-acl per esprimere il requisito (consulta Chiavi di condizione di Amazon S3).

{ "Version":"2012-10-17", "Statement":[ { "Sid":"PolicyForAllowUploadWithACL", "Effect":"Allow", "Principal":{"AWS":"123456789012"}, "Action":"s3:PutObject", "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "StringEquals": {"s3:x-amz-acl":"bucket-owner-full-control"} } } ] }

Concessione delle autorizzazioni per l'inventario di Amazon S3 e l'analisi di Amazon S3

L'inventario di Amazon S3 crea elenchi di oggetti in un bucket Amazon S3 e l'esportazione analitica di Amazon S3 crea file di output dei dati utilizzati nell'analisi. Il bucket per il quale l'inventario elenca gli oggetti è denominato bucket di origine. Il bucket nel quale viene scritto il file di inventario e nel quale viene scritto il file di esportazione di analisi è definito bucket di destinazione. Quando si configura l'inventario per un bucket Amazon S3 e quando si configura l'esportazione analitica, è necessario creare una policy del bucket per il bucket di destinazione. Per ulteriori informazioni, consulta Inventario Amazon S3 e Analisi di Amazon S3 – Analisi della classe di storage.

La policy del bucket di esempio seguente concede ad Amazon S3 l'autorizzazione per scrivere oggetti (PUT) dall'account per il bucket di origine nel bucket di destinazione. Questo tipo di policy del bucket viene utilizzato nel bucket di destinazione quando si esegue la configurazione dell'inventario di Amazon S3 e dell'esportazione analitica di Amazon S3.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"InventoryAndAnalyticsExamplePolicy", "Effect":"Allow", "Principal": {"Service": "s3.amazonaws.com"}, "Action":"s3:PutObject", "Resource":["arn:aws:s3:::destinationbucket/*"], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::sourcebucket" }, "StringEquals": { "aws:SourceAccount": "1234567890", "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }