Esempi di policy di bucket - Amazon Simple Storage Service

Esempi di policy di bucket

Con le policy di bucket Amazon S3, puoi proteggere l'accesso agli oggetti nei tuoi bucket, in modo che solo gli utenti con le autorizzazioni appropriate possano accedervi. Puoi persino impedire agli utenti autenticati senza le autorizzazioni appropriate di accedere alle tue risorse Amazon S3.

Questa sezione include esempi di casi d'uso tipici per le policy di bucket. Queste policy di esempio utilizzano DOC-EXAMPLE-BUCKET come valore di risorsa. Per testare queste policy, sostituisci user input placeholders con le tue informazioni (come il nome del bucket).

Per concedere o negare le autorizzazioni per un insieme di oggetti, puoi utilizzare caratteri jolly (*) nei nomi delle risorse Amazon (ARN) e altri valori. Ad esempio, puoi controllare l'accesso a gruppi di oggetti che iniziano con un prefisso comune o terminano con una determinata estensione, come .html.

Per informazioni sulle policy del bucket, consulta la sezione Utilizzo delle policy di bucket. Per informazioni sul linguaggio delle policy AWS Identity and Access Management (IAM), consulta Policy e autorizzazioni in Amazon S3.

Nota

Per testare le autorizzazioni utilizzando la console Amazon S3, dovrai concedere le autorizzazioni aggiuntive richieste dalla console, ovvero s3:ListAllMyBuckets, s3:GetBucketLocation e s3:ListBucket. Per una procedura dettagliata 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.

Richiesta della crittografia

Richiedi SSE-KMS per tutti gli oggetti scritti in un bucket

La seguente policy di esempio richiede che ogni oggetto scritto nel bucket sia crittografato con la crittografia lato server mediante chiavi AWS Key Management Service (AWS KMS) (SSE-KMS). Se l'oggetto non è crittografato con SSE-KMS, la richiesta verrà respinta.

{ "Version": "2012-10-17", "Id": "PutObjPolicy", "Statement": [{ "Sid": "DenyObjectsThatAreNotSSEKMS", "Principal": "*", "Effect": "Deny", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "Null": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "true" } } }] }

Richiedere SSE-KMS con una chiave AWS KMS key specifica per tutti gli oggetti scritti in un bucket

La seguente policy di esempio impedisce la scrittura di qualsiasi oggetto nel bucket se l'oggetto non è crittografato con SSE-KMS mediante un ID chiave KMS specifico. Anche se gli oggetti sono crittografati con SSE-KMS utilizzando la crittografia predefinita a livello di intestazione per richiesta o bucket, gli oggetti non possono essere scritti nel bucket se non sono stati crittografati con la chiave KMS specificata. Assicurati di sostituire il nome della risorsa Amazon (ARN) della chiave KMS utilizzata in questo esempio con il nome della risorsa Amazon (ARN) della tua chiave KMS ARN.

{ "Version": "2012-10-17", "Id": "PutObjPolicy", "Statement": [{ "Sid": "DenyObjectsThatAreNotSSEKMSWithSpecificKey", "Principal": "*", "Effect": "Deny", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "ArnNotEqualsIfExists": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:us-east-2:111122223333:key/01234567-89ab-cdef-0123-456789abcdef" } } }] }

Gestione dei bucket tramite ACL predefinite

Concessione delle autorizzazioni a più account per caricare oggetti o impostare le ACL degli oggetti per l'accesso pubblico

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 degli accessi (ACL) public-read predefinita. Per ulteriori informazioni, consulta Operazioni di Amazon S3 e Esempi di chiavi di condizioni di Amazon S3.

avvertimento

L'ACL public-read predefinita consente a chiunque nel mondo di visualizzare gli oggetti nel tuo bucket, indipendentemente dalla sua dislocazione geografica. 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. Se desideri abilitare le impostazioni di Blocco dell'accesso pubblico Amazon S3 per l'hosting di siti Web statici, consulta Tutorial: Configurazione di un sito Web statico su Amazon S3.

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

Concedere autorizzazioni multi-account per il caricamento di oggetti a 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, garantendo contemporaneamente il pieno controllo degli oggetti caricati. Questa policy garantisce a un Account AWS specifico (111122223333) la possibilità di caricare oggetti solo se tale account include la lista di controllo degli accessi (ACL) predefinita bucket-owner-full-control durante il caricamento. La condizione StringEquals nella policy specifica la chiave di condizione s3:x-amz-acl per esprimere il requisito dell'ACL predefinita. Per ulteriori informazioni, consulta Esempi di chiavi di condizioni di Amazon S3.

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

Gestione dell'accesso agli oggetti con assegnazione di tag agli oggetti

Concedere a un utente autorizzazioni di sola lettura per gli oggetti che hanno una chiave o un valore di tag specifico

La seguente policy di autorizzazione limita un utente a leggere solo gli oggetti con chiave e valore di tag environment: production. La policy utilizza la chiave di condizione s3:ExistingObjectTag per specificare la chiave e il valore di tag.

{ "Version": "2012-10-17", "Statement": [ {"Principal":{"AWS":[ "arn:aws:iam::111122223333:role/JohnDoe" "Effect": "Allow", "Action": ["s3:GetObject","s3:GetObjectVersion"], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", ] } "Condition": { "StringEquals": {"s3:ExistingObjectTag/environment": "production" } } } ] }

Limitare le chiavi di tag degli oggetti che gli utenti possono aggiungere

La seguente policy di esempio concede a un utente le autorizzazioni per eseguire l'operazione s3:PutObjectTagging, che permette di aggiungere tag a un oggetto esistente. La condizione utilizza la chiave di condizione s3:RequestObjectTagKeys per specificare le chiavi di tag consentite, ad esempio Owner o CreationDate. Per ulteriori informazioni, consulta la sezione Creazione di una condizione con più chiavi o valori nella Guida per l'utente IAM.

La policy garantisce che ogni chiave di tag specificata nella richiesta sia una chiave di tag autorizzata. Il qualificatore ForAnyValue nella condizione garantisce che almeno una delle chiavi specificate sia presente nella richiesta.

{ "Version": "2012-10-17", "Statement": [ {"Principal":{"AWS":[ "arn:aws:iam::111122223333:role/JohnDoe" ] }, "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ], "Condition": {"ForAnyValue:StringEquals": {"s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] } } } ] }

Richiedere una chiave e un valore di tag specifici per consentire agli utenti di aggiungere tag di oggetti

La seguente policy di esempio concede a un utente le autorizzazioni per eseguire l'operazione s3:PutObjectTagging, che permette di aggiungere tag a un oggetto esistente. La condizione prevede che l'utente includa una chiave di tag specifica (ad esempio, Project) con valore impostato su X.

{ "Version": "2012-10-17", "Statement": [ {"Principal":{"AWS":[ "arn:aws:iam::111122223333:user/JohnDoe" ] }, "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ], "Condition": {"StringEquals": {"s3:RequestObjectTag/Project": "X" } } } ] }

Concedere a un utente di aggiungere solo oggetti che hanno una chiave o un valore di tag specifico

La seguente policy di esempio concede a un utente l'autorizzazione per eseguire l'operazione s3:PutObject in modo che possa aggiungere oggetti a un bucket. Tuttavia, l'istruzione Condition limita le chiavi e i valori di tag consentiti sugli oggetti caricati. In questo esempio, l'utente può aggiungere al bucket solo oggetti con la chiave di tag specifica (Department) con il valore impostato su Finance

{ "Version": "2012-10-17", "Statement": [{ "Principal":{ "AWS":[ "arn:aws:iam::111122223333:user/JohnDoe" ] }, "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ], "Condition": { "StringEquals": { "s3:RequestObjectTag/Department": "Finance" } } }] }

Gestione dell'accesso agli oggetti utilizzando chiavi di condizione globali

Le chiavi di condizione globali sono chiavi di condizione contestuali con un prefisso aws. I Servizi AWS possono supportare chiavi di condizione globali o fornire chiavi specifiche del servizio che includono il prefisso del servizio. È possibile utilizzare l'elemento Condition di una policy JSON per confrontare le chiavi in una richiesta con i valori di chiave specificati nella policy.

Limitare l'accesso alle sole consegne dei log degli accessi al server Amazon S3

Nella seguente policy di bucket di esempio, la chiave di condizione globale aws:SourceArn viene utilizzata per confrontare il nome della risorsa Amazon (ARN) della risorsa, che effettua una richiesta da servizio a servizio con l'ARN specificato nella policy. La chiave di condizione globale aws:SourceArn viene utilizzata per impedire a un servizio Amazon S3 di essere utilizzato come confused deputy durante le transazioni tra servizi. Solo il servizio Amazon S3 può aggiungere oggetti al bucket Amazon S3.

Questo esempio di policy di bucket concede autorizzazioni s3:PutObject al principale del servizio di log (logging.s3.amazonaws.com).

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutObjectS3ServerAccessLogsPolicy", "Principal": { "Service": "logging.s3.amazonaws.com" }, "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET-logs/*", "Condition": { "StringEquals": { "aws:SourceAccount": "111111111111" }, "ArnLike": { "aws:SourceArn": "arn:aws:s3:::EXAMPLE-SOURCE-BUCKET" } } }, { "Sid": "RestrictToS3ServerAccessLogs", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET-logs/*", "Condition": { "ForAllValues:StringNotEquals": { "aws:PrincipalServiceNamesList": "logging.s3.amazonaws.com" } } } ] }

Consentire l'accesso solo alla tua organizzazione

Se desideri che tutti i principali IAM che accedono a una risorsa provengano da un Account AWS della tua organizzazione (incluso l'account di gestione AWS Organizations), puoi utilizzare la chiave di condizione globale aws:PrincipalOrgID.

Per concedere o limitare questo tipo di accesso, definisci la condizione aws:PrincipalOrgID e imposta il valore sull'ID dell'organizzazione nella policy di bucket. L'ID dell'organizzazione viene utilizzato per controllare l'accesso al bucket. Quando si utilizza la condizione aws:PrincipalOrgID, le autorizzazioni della policy di bucket vengono applicate anche a tutti i nuovi account aggiunti all'organizzazione.

Ecco un esempio di policy di bucket basata su risorse che puoi utilizzare per concedere l'accesso diretto al bucket a specifici principali IAM nella tua organizzazione. Aggiungendo la chiave di condizione globale aws:PrincipalOrgID alla policy di bucket, ora l'account principale deve trovarsi nell'organizzazione per ottenere l'accesso alla risorsa. Anche se si specifica accidentalmente un account errato quando si concede l'accesso, la chiave di condizione globale aws:PrincipalOrgID funge da ulteriore protezione. Quando viene utilizzata come policy, questa chiave globale impedisce a tutti i principali esterni all'organizzazione specificata di accedere al bucket S3. Solo i principali degli account dell'organizzazione elencata possono ottenere l'accesso alla risorsa.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowGetObject", "Principal": { "AWS": "*" }, "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": ["o-aa111bb222"] } } }] }

Gestione dell'accesso in base a indirizzi IP specifici

Limitare l'accesso a indirizzi IP specifici

L'esempio seguente impedisce a tutti gli utenti di eseguire operazioni di Amazon S3 sugli oggetti nei bucket specificati, a meno che la richiesta non provenga dall'intervallo di indirizzi IP specificato.

L'istruzione Condition di questa policy identifica 192.0.2.0/24 come l'intervallo di indirizzi IP Internet Protocol versione 4 (IPv4) consentiti.

Il blocco Condition utilizza la condizione NotIpAddress e la chiave di condizione aws:SourceIp, che è una chiave di condizione valida per tutto AWS. La chiave di condizione aws:SourceIp può essere utilizzata solo per intervalli di indirizzi IP pubblici. Per ulteriori informazioni su queste chiavi di condizione, consulta Esempi di chiavi di condizioni di Amazon S3. I valori IPv4 aws:SourceIp utilizzano la notazione CIDR standard. Per ulteriori informazioni, consulta i riferimenti agli elementi delle policy JSON IAM nella Guida per l'utente di IAM.

avvertimento

Prima di utilizzare questa policy, sostituisci l'intervallo di indirizzi IP 192.0.2.0/24 riportato in questo esempio con un valore appropriato per il tuo caso d'uso. 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:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*" ], "Condition": { "NotIpAddress": { "aws:SourceIp": "192.0.2.0/24" } } } ] }

Consentire entrambi 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. Ciò contribuirà a garantire 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 192.0.2.1 e 2001:DB8:1234:5678::1 e lo nega agli indirizzi 203.0.113.1 e 2001:DB8:1234:5678:ABCD::1.

La chiave di condizione aws:SourceIp può essere utilizzata solo per intervalli di indirizzi IP pubblici. 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 2001:DB8:1234:5678::/64. Per ulteriori informazioni, consulta Operatori di condizione con indirizzo IP nella Guida per l'utente di IAM.

avvertimento

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:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*" ], "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "2001:DB8:1234:5678::/64" ] }, "NotIpAddress": { "aws:SourceIp": [ "203.0.113.0/24", "2001:DB8:1234:5678:ABCD::/80" ] } } } ] }

Gestione dell'accesso in base a richieste HTTP o HTTPS

Limitare l'accesso solo alle richieste HTTPS

Se desideri impedire a potenziali aggressori di manipolare il traffico di rete, puoi utilizzare HTTPS (TLS) per consentire solo le connessioni crittografate limitando al contempo l'accesso al tuo bucket da parte delle richieste HTTP. Per determinare se la richiesta è HTTP o HTTPS, utilizza la chiave di condizione globale aws:SecureTransport nella policy di bucket S3. La chiave di condizione aws:SecureTransport controlla se una richiesta è stata inviata utilizzando HTTP.

Se una richiesta restituisce true, la richiesta è stata inviata tramite HTTP. Se la richiesta restituisce false, la richiesta è stata inviata tramite HTTPS. Puoi quindi consentire o negare l'accesso al bucket in base allo schema di richiesta desiderato.

Nell'esempio seguente, la policy di bucket nega esplicitamente l'accesso alle richieste HTTP.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "RestrictToTLSRequestsOnly", "Action": "s3:*", "Effect": "Deny", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*" ], "Condition": { "Bool": { "aws:SecureTransport": "false" } }, "Principal": "*" }] }

Limitare l'accesso a un referer HTTP specifico

Supponi di avere un sito Web con il nome di dominio (www.example.com o example.com) con collegamenti a foto e video archiviati nel bucket denominato DOC-EXAMPLE-BUCKET. 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 concede l'autorizzazione s3:GetObject con una condizione secondo cui la richiesta GET deve generare da pagine Web specifiche. La seguente policy limita le richieste utilizzando la condizione StringLike con la chiave di condizione aws:Referer.

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

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

avvertimento

Ti consigliamo di procedere cautela quando utilizzi la chiave di condizione aws:Referer. È pericoloso includere un valore di intestazione di un referer pubblicamente noto. Parti non autorizzate possono utilizzare browser modificati o personalizzati per fornire qualsiasi valore aws:Referer scelto. Pertanto, non utilizzare aws:Referer per impedire a parti non autorizzate di inviare richieste AWS dirette.

La chiave di condizione aws:Referer è disponibile solo per consentire ai clienti di proteggere i propri contenuti digitali, come i contenuti archiviati in Amazon S3, da riferimenti su siti di terze parti non autorizzate. Per ulteriori informazioni, consulta la sezione aws:Referer nella Guida per l'utente di IAM.

Gestione dell'accesso utente a cartelle specifiche

Concedere agli utenti l'accesso a cartelle specifiche

Supponiamo che tu stia cercando di concedere agli utenti l'accesso a una cartella specifica. Se l'utente IAM e il bucket S3 appartengono allo stessoAccount AWS, puoi utilizzare una policy IAM per concedere all'utente l'accesso a una cartella bucket specifica. Con questo approccio, non è necessario aggiornare la policy di bucket per concedere l'accesso. Puoi aggiungere la policy IAM ai singoli utenti IAM oppure puoi associare la policy IAM a un ruolo IAM a cui possono essere collegati più utenti.

Se l'identità IAM e il bucket S3 appartengono ad Account AWS diversi, è necessario concedere l'accesso multi-account sia nella policy IAM che nella policy di bucket. Per informazioni su come concedere l'accesso multi-account, consulta la sezione relativa al proprietario del bucket che concede autorizzazioni per il bucket multi-account.

La seguente policy di bucket di esempio concede a JohnDoe l'accesso completo a livello di console solo alla sua cartella (home/JohnDoe/). Creando una cartella home e concedendo le autorizzazioni appropriate ai tuoi utenti, puoi fare in modo che più utenti condividano un singolo bucket. Questa policy è composta da tre istruzioni Allow:

  • AllowRootAndHomeListingOfCompanyBucket: consente all'utente (JohnDoe) di elencare gli oggetti al livello root del bucket DOC-EXAMPLE-BUCKET e nella cartella home. Questa istruzione consente inoltre all'utente di cercare in base al prefisso home/ utilizzando la console.

  • AllowListingOfUserFolder: consente all'utente (JohnDoe) di elencare tutti gli oggetti nella cartella home/JohnDoe/ e nelle eventuali sottocartelle.

  • AllowAllS3ActionsInUserFolder: consente all'utente di eseguire tutte le operazioni di Amazon S3 concedendo le autorizzazioni Read, Write e Delete. Le autorizzazioni sono limitate alla cartella principale del proprietario del bucket.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRootAndHomeListingOfCompanyBucket", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/JohnDoe" ] }, "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET"], "Condition": { "StringEquals": { "s3:prefix": ["", "home/", "home/JohnDoe"], "s3:delimiter": ["/"] } } }, { "Sid": "AllowListingOfUserFolder", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/JohnDoe" ] }, "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET"], "Condition": { "StringLike": { "s3:prefix": ["home/JohnDoe/*"] } } }, { "Sid": "AllowAllS3ActionsInUserFolder", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/JohnDoe" ] }, "Action": ["s3:*"], "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET/home/JohnDoe/*"] } ] }

Gestione dell'accesso per i log degli accessi

Concedere l'accesso ad Application Load Balancer per abilitare i log degli accessi

Quando abiliti i log degli accessi per Application Load Balancer, devi specificare il nome del bucket S3 in cui il sistema di bilanciamento del carico archivierà i log. Il bucket deve avere una policy collegata che concede a Elastic Load Balancing l'autorizzazione a scrivere nel bucket.

Nell'esempio seguente, la policy di bucket concede a Elastic Load Balancing (ELB) l'autorizzazione a scrivere i log degli accessi nel bucket:

{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": "arn:aws:iam::elb-account-id:root" }, "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/prefix/AWSLogs/111122223333/*" } ] }
Nota

Assicurati di sostituire elb-account-id con l'ID Account AWS per Elastic Load Balancing per la tua Regione AWS. Per l'elenco delle regioni Elastic Load Balancing, consulta Collegamento di una policy al bucket Amazon S3 nella Guida per l'utente di Elastic Load Balancing.

Se la tua Regione AWS non compare nell'elenco delle regioni Elastic Load Balancing supportate, utilizza la seguente policy che concede le autorizzazioni al servizio di consegna dei log specificato.

{ "Version": "2012-10-17", "Statement": [ { "Principal": { "Service": "logdelivery.elasticloadbalancing.amazonaws.com" }, "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3::DOC-EXAMPLE-BUCKET/prefix/AWSLogs/111122223333/*" } ] }

Quindi, assicurati di configurare i log degli accessi di Elastic Load Balancing abilitandoli. Puoi verificare le autorizzazioni del bucket creando un file di test.

Gestione dell'accesso a un'identità di accesso origine (OAI) Amazon CloudFront

Concedere l'autorizzazione a un'identità di accesso origine (OAI) Amazon CloudFront

La policy di bucket di esempio seguente concede a un'identità di accesso origine (OAI) CloudFront l'autorizzazione per ottenere (leggere) tutti gli oggetti nel bucket 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 la sezione relativa alla limitazione dell'accesso a contenuti Amazon S3 mediante un'identità di accesso origine nella Guida per gli sviluppatori di Amazon CloudFront.

La policy seguente utilizza l'ID dell'identità di accesso origine (OAI) come Principal della policy. Per ulteriori informazioni sull'utilizzo delle policy di bucket S3 per concedere l'accesso a un'identità di accesso origine (OAI), consulta Migrazione dell'identità di accesso origine (OAI) al controllo degli accessi origine (OAC) nella Guida per gli sviluppatori di Amazon CloudFront.

Per utilizzare questo esempio:

  • Sostituisci EH1HDMB1FH2TC con l'ID dell'identità di accesso origine (OAI). Per trovare l'ID dell'identità di accesso origine (OAI), consulta la pagina Origin Access Identity (Identità di accesso origine) nella console CloudFront oppure utilizza ListCloudFrontOriginAccessIdentities nell'API CloudFront.

  • Sostituisci DOC-EXAMPLE-BUCKET con il nome del tuo bucket.

{ "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:::DOC-EXAMPLE-BUCKET/*" } ] }

Gestione dell'accesso per Amazon S3 Storage Lens

Concedere le autorizzazioni per Amazon S3 Storage Lens

S3 Storage Lens aggrega i tuoi parametri e mostra le informazioni nella sezione Account snapshot (Snapshot dell'account) nella pagina Buckets (Bucket) della console Amazon S3. S3 Storage Lens dispone inoltre di un pannello di controllo interattivo che puoi usare per visualizzare informazioni dettagliate e tendenze, contrassegnare le anomalie e ricevere consigli per ottimizzare i costi di archiviazione e applicare le best practice sulla protezione dei dati. Nel pannello di controllo sono disponibili opzioni di drill-down per generare informazioni dettagliate a livello di organizzazione, account, bucket, oggetto o prefisso. Puoi anche inviare un'esportazione dei parametri una volta al giorno in formato CSV o Parquet a un bucket S3.

S3 Storage Lens può esportare i parametri aggregati relativi l'utilizzo dell'archiviazione in un bucket Amazon S3 per ulteriori analisi. Il bucket in cui S3 Storage Lens colloca le esportazioni delle metriche è noto come bucket di destinazione. Quando configuri l'esportazione delle metriche di S3 Storage Lens, devi disporre di una policy di bucket per il bucket di destinazione. Per ulteriori informazioni, consulta Valutazione dell'attività e dell'utilizzo dello storage con Amazon S3 Storage Lens.

La seguente policy di bucket di esempio concede ad Amazon S3 l'autorizzazione a scrivere oggetti (richieste PUT) in un bucket di destinazione. Questo tipo di policy di bucket viene utilizzato nel bucket di destinazione quando si imposta l'esportazione dei parametri di S3 Storage Lens.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3StorageLensExamplePolicy", "Effect": "Allow", "Principal": { "Service": "storage-lens.s3.amazonaws.com" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::destination-bucket/destination-prefix/StorageLens/111122223333/*" ], "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": "111122223333", "aws:SourceArn": "arn:aws:s3:region-code:111122223333:storage-lens/storage-lens-dashboard-configuration-id" } } } ] }

Utilizza la modifica seguente alla precedente istruzione Resource della policy di bucket quando configuri un'esportazione di parametri a livello di organizzazione S3 Storage Lens.

"Resource": "arn:aws:s3:::destination-bucket/destination-prefix/StorageLens/your-organization-id/*",

Gestione delle autorizzazioni per i report di S3 Inventory, S3 Analytics e S3 Inventory

Concedere autorizzazioni per S3 Inventory e S3 Analytics

S3 Inventory crea elenchi di oggetti in un bucket, mentre l'esportazione di analisi della classe di archiviazione di S3 Analytics genera 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 il file di esportazione di analisi è definito bucket di destinazione. È necessario creare una policy di bucket per il bucket di destinazione quando si configura un inventario o un'esportazione di analisi. Per ulteriori informazioni, consulta Inventario Amazon S3 e Analisi di Amazon S3 – Analisi della classe di storage.

La policy di bucket di esempio seguente concede ad Amazon S3 l'autorizzazione per scrivere oggetti (richieste PUT) dall'account per il bucket di origine nel bucket di destinazione. Questo tipo di policy di bucket viene utilizzato nel bucket di destinazione quando imposti S3 Inventory e l'esportazione di S3 Analytics.

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

Limitare l'accesso a un report S3 Inventory

Inventario Amazon S3 crea elenchi degli oggetti presenti in un bucket S3 e i metadata per ogni oggetto. L'autorizzazione s3:PutInventoryConfiguration consente a un utente di creare un report di inventario contenente tutti i campi di metadati degli oggetti disponibili e di specificare il bucket di destinazione in cui archiviare l'inventario. Un utente con accesso in lettura agli oggetti nel bucket di destinazione può accedere a tutti i campi di metadati degli oggetti disponibili nel report di inventario. Per ulteriori informazioni sui campi dei metadati disponibili in S3 Inventory, consulta Elenco di Amazon S3 Inventory.

Per impedire a un utente di configurare un report S3 Inventory con tutti i metadati degli oggetti disponibili, rimuovi l'autorizzazione s3:PutInventoryConfiguration dall'utente.

Per impedire a un utente di accedere al report S3 Inventory in un bucket di destinazione, aggiungi una policy di bucket simile a quella riportata nel seguente esempio al bucket di destinazione. Questo esempio di policy di bucket impedisce a tutti i principali tranne l'utente Ana di accedere al report di inventario DOC-EXAMPLE-DESTINATION-BUCKET-INVENTORY nel bucket di destinazione DOC-EXAMPLE-DESTINATION-BUCKET.

{ "Id": "GetObjectPolicy", "Version": "2012-10-17", "Statement": [{ "Sid": "AllowListBucket", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET/*" ], "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/Ana" ] } }, { "Sid": "AllowACertainUserToReadObject", "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET/DOC-EXAMPLE-DESTINATION-BUCKET-INVENTORY/*", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/Ana" ] } }, { "Sid": "DenyAllTheOtherUsersToReadObject", "Action": [ "s3:GetObject" ], "Effect": "Deny", "Resource": "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET/DOC-EXAMPLE-DESTINATION-BUCKET-INVENTORY/*", "Principal": { "AWS": "*" }, "Condition": { "ArnNotEquals": { "aws:PrincipalArn": "arn:aws:iam::111122223333:user/Ana" } } } ] }

Richiesta dell'autenticazione a più fattori (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. L'autenticazione a più fattori (MFA) è 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 Autenticazione a più fattori (MFA) di AWS. Puoi richiedere l'autenticazione MFA per tutte le richieste di accesso alle risorse di Amazon S3.

Per imporre l'uso del requisito dell'autenticazione a più fattori (MFA), utilizza la chiave di condizione aws:MultiFactorAuthAge in una policy di bucket. Gli utenti IAM possono accedere alle risorse di Amazon S3 utilizzando credenziali temporanee emesse da AWS Security Token Service (AWS STS). Al momento della richiesta AWS STS, dovrai fornire il codice MFA.

Quando Amazon S3 riceve una richiesta con l'autenticazione a più fattori (MFA), la chiave di condizione 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 nell'esempio riportato di seguito.

La policy di esempio nega qualsiasi operazione Amazon S3 nella cartella /taxdocuments del bucket DOC-EXAMPLE-BUCKET se la richiesta non è autenticata tramite l'autenticazione a più fattori (MFA). Per ulteriori informazioni su MFA, consulta la sezione 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:::DOC-EXAMPLE-BUCKET/taxdocuments/*", "Condition": { "Null": { "aws:MultiFactorAuthAge": true }} } ] }

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

La policy di bucket seguente è un'estensione di quella precedente. Include due dichiarazioni di policy. Una dichiarazione consente l'autorizzazione s3:GetObject per un bucket (DOC-EXAMPLE-BUCKET) per tutti gli utenti. La seconda dichiarazione limita ulteriormente l'accesso alla cartella DOC-EXAMPLE-BUCKET/taxdocuments nel bucket richiedendo l'autenticazione MFA.

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

Facoltativamente, è possibile utilizzare una condizione numerica per limitare la durata della validità della chiave aws:MultiFactorAuthAge. La durata specificata con la chiave aws:MultiFactorAuthAge è indipendente dalla durata delle credenziali di sicurezza 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:::DOC-EXAMPLE-BUCKET/taxdocuments/*", "Condition": {"Null": {"aws:MultiFactorAuthAge": true }} }, { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/taxdocuments/*", "Condition": {"NumericGreaterThan": {"aws:MultiFactorAuthAge": 3600 }} }, { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }