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à.
Esempi di policy relative ai bucket di Amazon S3
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
come valore di risorsa. Per testare queste policy, sostituisci amzn-s3-demo-bucket
con le tue informazioni (come il nome del bucket). user input placeholders
Per concedere o negare le autorizzazioni a un insieme di oggetti, puoi utilizzare caratteri jolly () *
in Amazon Resource Names (ARNs) e altri valori. Ad esempio, puoi controllare l'accesso a gruppi di oggetti che iniziano con un prefisso comune o terminano con un'estensione specifica, ad esempio. .html
Per ulteriori informazioni sul linguaggio delle politiche AWS Identity and Access Management (IAM), vederePolitiche e autorizzazioni in Amazon S3.
Per ulteriori informazioni sulle autorizzazioni alle API operazioni S3 in base ai tipi di risorse S3, consulta. Autorizzazioni richieste per le operazioni di Amazon API S3
Nota
Per testare le autorizzazioni utilizzando la console di 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.
Le risorse aggiuntive per la creazione di policy relative ai bucket includono quanto segue:
-
Per un elenco delle azioni IAM politiche, delle risorse e delle chiavi di condizione che puoi utilizzare durante la creazione di una bucket policy, consulta Azioni, risorse e chiavi di condizione per Amazon S3 nel Service Authorization Reference.
-
Per ulteriori informazioni sulle autorizzazioni alle API operazioni S3 in base ai tipi di risorse S3, consulta. Autorizzazioni richieste per le operazioni di Amazon API S3
-
Per istruzioni sulla creazione della policy S3, consulta Aggiunta di una policy di bucket utilizzando la console di Amazon S3.
-
Per risolvere gli errori relativi a una policy, consulta Risolvi i problemi relativi all'accesso negato (403 Forbidden) errori in Amazon S3.
Argomenti
- Concessione di autorizzazioni di sola lettura a un utente pubblico anonimo
- Richiesta della crittografia
- Gestione dei bucket utilizzando «in scatola» ACLs
- Gestione dell'accesso agli oggetti con assegnazione di tag agli oggetti
- Gestione dell'accesso agli oggetti utilizzando chiavi di condizione globali
- Gestione dell'accesso in base alle nostre HTTP richieste HTTPS
- Gestione dell'accesso utente a cartelle specifiche
- Gestione dell'accesso per i log degli accessi
- Gestire l'accesso a un Amazon CloudFront OAI
- Gestione dell'accesso per Amazon S3 Storage Lens
- Gestione delle autorizzazioni per i report di S3 Inventory, S3 Analytics e S3 Inventory
- Richiedendo MFA
- Impedire agli utenti di eliminare oggetti
Concessione di autorizzazioni di sola lettura a un utente pubblico anonimo
Puoi utilizzare le impostazioni delle policy per concedere l'accesso a utenti anonimi pubblici, il che è utile se stai configurando il tuo bucket come sito web statico. Per concedere l'accesso a utenti pubblici anonimi devi disabilitare le impostazioni Block Public Access per il tuo bucket. Per ulteriori informazioni su come eseguire questa operazione e sulla politica richiesta, consulta. Impostazione delle autorizzazioni per l'accesso al sito Web Per informazioni su come configurare politiche più restrittive per lo stesso scopo, vedi Come posso concedere l'accesso pubblico in lettura ad alcuni oggetti nel mio bucket Amazon S3
Per impostazione predefinita, Amazon S3 blocca l'accesso pubblico all'account e ai bucket. Per utilizzare un bucket per ospitare un sito Web statico, puoi seguire questa procedura per modificare le impostazioni di blocco dell'accesso pubblico:
avvertimento
Prima di completare questi passaggi, accertati Blocco dell'accesso pubblico allo storage Amazon S3 di aver compreso e accettato i rischi connessi all'autorizzazione dell'accesso pubblico. Quando si disattivano le impostazioni di blocco dell'accesso pubblico per rendere pubblico il bucket, chiunque su Internet può accedere al bucket. Consigliamo di bloccare tutti gli accessi pubblici ai bucket.
-
Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
-
Seleziona il nome del bucket configurato come sito Web statico.
-
Seleziona Autorizzazioni.
-
In Blocca accesso pubblico (impostazioni bucket), seleziona Modifica.
-
Deseleziona Blocca tutto l'accesso pubblico, quindi seleziona Salva modifiche.
Amazon S3 disattiva le impostazioni Block Public Access per il tuo bucket. Per creare un sito Web statico pubblico, potresti anche dover modificare le impostazioni Block Public Access per il tuo account prima di aggiungere una policy bucket. Se le impostazioni Blocca accesso pubblico per il tuo account sono attualmente attivate, vedrai una nota in Blocca l'accesso pubblico (impostazioni del bucket).
Richiesta della crittografia
Puoi richiedere la crittografia lato server con AWS Key Management Service (AWS KMS) chiavi (SSE-KMS), come mostrato negli esempi seguenti.
RichiedeSSE: KMS per tutti gli oggetti scritti in un bucket
La seguente politica di esempio richiede che ogni oggetto scritto nel bucket sia crittografato con la crittografia lato server utilizzando le chiavi AWS Key Management Service (AWS KMS) (-). SSE KMS Se l'oggetto non è crittografato con SSE -KMS, la richiesta viene rifiutata.
{ "Version": "2012-10-17", "Id": "PutObjPolicy", "Statement": [{ "Sid": "
DenyObjectsThatAreNotSSEKMS
", "Principal": "*", "Effect": "Deny", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::/*", "Condition": { "Null": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "true" } } }] }
amzn-s3-demo-bucket
RichiedeSSE: KMS con uno specifico AWS KMS key per tutti gli oggetti scritti in un bucket
La seguente politica di esempio impedisce la scrittura di qualsiasi oggetto nel bucket se non è crittografato conSSE, KMS utilizzando un ID chiave specificoKMS. Anche se gli oggetti sono crittografati conSSE, KMS utilizzando un'intestazione per richiesta o una crittografia predefinita per bucket, gli oggetti non possono essere scritti nel bucket se non sono stati crittografati con la chiave specificata. KMS Assicurati di sostituire la KMS chiave ARN utilizzata in questo esempio con la tua chiave. KMS ARN
{ "Version": "2012-10-17", "Id": "PutObjPolicy", "Statement": [{ "Sid": "
DenyObjectsThatAreNotSSEKMSWithSpecificKey
", "Principal": "*", "Effect": "Deny", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::/*", "Condition": { "ArnNotEqualsIfExists": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:
amzn-s3-demo-bucket
us-east-2
:111122223333
:key/01234567-89ab-cdef-0123-456789abcdef
" } } }] }
Gestione dei bucket utilizzando «in scatola» ACLs
Concessione delle autorizzazioni a più account per caricare oggetti o impostare oggetti per l'accesso pubblico ACLs
La politica di esempio seguente concede le s3:PutObjectAcl
autorizzazioni s3:PutObject
and a più utenti. Account AWS Inoltre, la politica di esempio richiede che tutte le richieste per queste operazioni includano la lista di controllo degli public-read accessi predefinita (). ACL Per ulteriori informazioni, consulta Azioni politiche per Amazon S3 e Chiavi relative alle condizioni delle politiche per Amazon S3.
avvertimento
Il public-read
contenitore in scatola ACL consente a chiunque nel mondo di visualizzare gli oggetti contenuti nel secchio. 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:::/*", "Condition": { "StringEquals": { "s3:x-amz-acl": [ "public-read" ] } } } ] }
amzn-s3-demo-bucket
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'altra persona di Account AWS caricare oggetti nel tuo bucket assicurandoti al contempo di avere il pieno controllo degli oggetti caricati. Questa politica garantisce uno specifico ( Account AWS
) la possibilità di caricare oggetti solo se tale account include quelli 111122223333
bucket-owner-full-control
predefiniti al momento del caricamentoACL. La StringEquals
condizione nella politica specifica la chiave di s3:x-amz-acl
condizione per esprimere il requisito predefinito. ACL Per ulteriori informazioni, consulta Chiavi relative alle condizioni delle politiche per Amazon S3.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"PolicyForAllowUploadWithACL", "Effect":"Allow", "Principal":{"AWS":"
111122223333
"}, "Action":"s3:PutObject", "Resource":"arn:aws:s3:::/*", "Condition": { "StringEquals": {"s3:x-amz-acl":"bucket-owner-full-control"} } } ] }
amzn-s3-demo-bucket
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:::amzn-s3-demo-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 Creazione di una condizione che verifica più valori chiave nella Guida per l'IAMutente.
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:::/*" ], "Condition": {"ForAnyValue:StringEquals": {"s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] } } } ] }
amzn-s3-demo-bucket
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,
) con valore impostato su Project
.X
{ "Version": "2012-10-17", "Statement": [ {"Principal":{"AWS":[ "arn:aws:iam::
111122223333
:user/JohnDoe
" ] }, "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::/*" ], "Condition": {"StringEquals": {"s3:RequestObjectTag/
amzn-s3-demo-bucket
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 (
) con il valore impostato su Department
Finance
{ "Version": "2012-10-17", "Statement": [{ "Principal":{ "AWS":[ "arn:aws:iam::
111122223333
:user/JohnDoe
" ] }, "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::/*" ], "Condition": { "StringEquals": { "s3:RequestObjectTag/
amzn-s3-demo-bucket
Department
": "Finance
" } } }] }
Gestione dell'accesso agli oggetti utilizzando chiavi di condizione globali
Le chiavi di condizione globali sono chiavi di contesto delle condizioni con un aws
prefisso. Servizi AWS può supportare chiavi di condizione globali o chiavi specifiche del servizio che includono il prefisso del servizio. È possibile utilizzare l'Condition
elemento di una JSON politica per confrontare le chiavi in una richiesta con i valori chiave specificati nella politica.
Limitare l'accesso alle sole consegne dei log degli accessi al server Amazon S3
Nel seguente esempio di bucket policy, il aws:SourceArnla chiave global condition viene utilizzata per confrontare l'Amazon Resource Name (ARN) della risorsa, effettuando una service-to-service richiesta con quanto specificato nella policy. ARN 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
).
Nota
Il NotPrincipall'elemento non può essere utilizzato con Servizio AWS
i principali nelle politiche basate sulle risorse di Amazon S3, come le policy bucket. Consigliamo invece di utilizzare la chiave aws:PrincipalServiceName
condition, come illustrato nella seguente politica.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "
AllowPutObjectS3ServerAccessLogsPolicy
", "Principal": { "Service": "logging.s3.amazonaws.com" }, "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::/*", "Condition": { "StringEquals": { "aws:SourceAccount": "
amzn-s3-demo-bucket
-logs111111111111
" }, "ArnLike": { "aws:SourceArn": "arn:aws:s3:::EXAMPLE-SOURCE-BUCKET
" } } }, { "Sid": "RestrictToS3ServerAccessLogs
", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::/*", "Condition": { "StringNotEqualsIfExists": { "aws:PrincipalServiceName": "logging.s3.amazonaws.com" } } } ] }
amzn-s3-demo-bucket
-logs
Consentire l'accesso solo alla tua organizzazione
Se desideri che tutti i IAMresponsabili che accedono a una risorsa provengano da un Account AWS membro della tua organizzazione (incluso l'account di AWS Organizations gestione), puoi utilizzare la chiave di condizione aws:PrincipalOrgID
globale.
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 sui bucket basata sulle risorse che puoi utilizzare per concedere a IAM responsabili specifici della tua organizzazione l'accesso diretto al tuo bucket. 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 accidentalmente specifichi un account errato quando concedi l'accesso, il aws:PrincipalOrgID la chiave global condition funge da protezione aggiuntiva. 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:::
/*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": ["
amzn-s3-demo-bucket
o-aa111bb222
"] } } }] }
Gestione dell'accesso in base alle nostre HTTP richieste HTTPS
Limita l'accesso solo HTTPS alle richieste
Se vuoi impedire a potenziali aggressori di manipolare il traffico di rete, puoi usare HTTPS (TLS) per consentire solo connessioni crittografate, limitando al contempo l'accesso HTTP delle richieste al tuo bucket. Per determinare se la richiesta è o, usa il HTTP HTTPS aws:SecureTransportchiave di condizione globale nella tua policy sui bucket S3. La chiave di aws:SecureTransport
condizione verifica se una richiesta è stata inviata utilizzando. HTTP
Se una richiesta viene restituitatrue
, significa che la richiesta è stata inviataHTTPS. Se la richiesta viene restituitafalse
, significa che è stata inviataHTTP. Puoi quindi consentire o negare l'accesso al bucket in base allo schema di richiesta desiderato.
Nell'esempio seguente, la policy bucket HTTP nega esplicitamente le richieste.
{ "Version": "2012-10-17", "Statement": [{ "Sid": "RestrictToTLSRequestsOnly", "Action": "s3:*", "Effect": "Deny", "Resource": [ "arn:aws:s3:::
", "arn:aws:s3:::
amzn-s3-demo-bucket
amzn-s3-demo-bucket
/*" ], "Condition": { "Bool": { "aws:SecureTransport": "false" } }, "Principal": "*" }] }
Limita l'accesso a un referente specifico HTTP
Supponiamo di avere un sito Web con il nome di dominio
oppure www.example.com
con link a foto e video memorizzati nel bucket denominato. esempio.com
Per impostazione predefinita, tutte le risorse Amazon S3 sono private, quindi solo chi le Account AWS ha create può accedervi. amzn-s3-demo-bucket
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:::
amzn-s3-demo-bucket
/*", "Condition":{ "StringLike":{"aws:Referer":["http://www.example.com/*
","http://example.com/*
"]} } } ] }
Assicurati che i browser che utilizzi includano l'HTTPreferer
intestazione nella richiesta.
avvertimento
Ti consigliamo di procedere cautela quando utilizzi la chiave di condizione aws:Referer
. È pericoloso includere un valore di intestazione del HTTP referer noto pubblicamente. Parti non autorizzate possono utilizzare browser modificati o personalizzati per fornire qualsiasi valore aws:Referer
scelto. Pertanto, non aws:Referer
utilizzarlo per impedire a parti non autorizzate di effettuare richieste dirette. AWS
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 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'IAMutente e il bucket S3 appartengono allo stesso Account AWS, puoi utilizzare una IAM policy per concedere all'utente l'accesso a una cartella di bucket specifica. Con questo approccio, non è necessario aggiornare la policy di bucket per concedere l'accesso. Puoi aggiungere la IAM policy a un IAM ruolo a cui possono passare più utenti.
Se l'IAMidentità e il bucket S3 appartengono a parti diverse Account AWS, devi concedere l'accesso a più account sia nella policy che nella IAM policy del 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
l'accesso completo a livello di console solo alla sua cartella (JohnDoe
home/
). Creando una cartella JohnDoe
/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
:
-
: consente all'utente (AllowRootAndHomeListingOfCompanyBucket
) di elencare gli oggetti al livello root del bucketJohnDoe
e nella cartellaamzn-s3-demo-bucket
home
. Questa istruzione consente inoltre all'utente di cercare in base al prefissohome/
utilizzando la console. -
: consente all'utente (AllowListingOfUserFolder
) di elencare tutti gli oggetti nella cartellaJohnDoe
home/
e nelle eventuali sottocartelle.JohnDoe
/ -
: consente all'utente di eseguire tutte le operazioni di Amazon S3 concedendo le autorizzazioniAllowAllS3ActionsInUserFolder
Read
,Write
eDelete
. 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:::"], "Condition": { "StringEquals": { "s3:prefix": ["", "home/", "home/
amzn-s3-demo-bucket
JohnDoe
"], "s3:delimiter": ["/"] } } }, { "Sid": "AllowListingOfUserFolder
", "Principal": { "AWS": [ "arn:aws:iam::111122223333
:user/JohnDoe
" ] }, "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::"], "Condition": { "StringLike": { "s3:prefix": ["home/
amzn-s3-demo-bucket
JohnDoe
/*"] } } }, { "Sid": "AllowAllS3ActionsInUserFolder
", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333
:user/JohnDoe
" ] }, "Action": ["s3:*"], "Resource": ["arn:aws:s3:::/home/
amzn-s3-demo-bucket
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 del bucket concede a Elastic Load Balancing ELB () l'autorizzazione a scrivere i log di accesso 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:::amzn-s3-demo-bucket
/prefix
/AWSLogs/111122223333
/*" } ] }
Nota
Assicurati di sostituire
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.elb-account-id
Se la tua Regione AWS non compare nell'elenco delle regioni Elastic Load Balancing supportate, utilizza la seguente politica, 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:::
amzn-s3-demo-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.
Gestire l'accesso a un Amazon CloudFront OAI
Concedi l'autorizzazione a un Amazon CloudFront OAI
Il seguente esempio di bucket policy concede l'autorizzazione CloudFront Origin Access Identity (OAI) per ottenere (leggere) tutti gli oggetti nel bucket S3. Puoi usare CloudFront OAI a per consentire agli utenti di accedere agli oggetti nel tuo bucket tramite Amazon S3 CloudFront , ma non direttamente. Per ulteriori informazioni, consulta Limitazione dell'accesso ai contenuti di Amazon S3 utilizzando un'identità di accesso di origine nella CloudFront Amazon Developer Guide.
La seguente politica utilizza OAI l'ID come criterio. Principal
Per ulteriori informazioni sull'utilizzo delle policy dei bucket S3 per concedere l'accesso a CloudFront OAI, consulta Migrating from origin access identity (OAI) to origin access control (OAC) nella Amazon CloudFront Developer Guide.
Per utilizzare questo esempio:
-
Sostituisci
con l'ID. OAI Per trovare l'OAIID, consulta la pagina Origin Access IdentityEH1HDMB1FH2TC
sulla CloudFront console oppure usa ListCloudFrontOriginAccessIdentitiesnel CloudFront API. -
Sostituisci
con il nome del tuo bucket.amzn-s3-demo-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:::amzn-s3-demo-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 di 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 e visualizzare approfondimenti a livello di organizzazione, account, Regione AWS, classe di archiviazione, bucket, prefisso o gruppo Storage Lens. Puoi anche inviare un'esportazione giornaliera delle metriche in CSV o Parquet formattare in 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:::
amzn-s3-demo-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:::
amzn-s3-demo-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 Catalogazione e analisi dei dati con S3 Inventory 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" } } } ] }
Controlla la creazione della configurazione dei report di S3 Inventory
Catalogazione e analisi dei dati con S3 Inventory crea elenchi degli oggetti presenti in un bucket S3 e i metadata per ogni oggetto. L's3:PutInventoryConfiguration
autorizzazione consente a un utente di creare una configurazione di inventario che includa tutti i campi di metadati degli oggetti disponibili per impostazione predefinita 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 rapporto S3 Inventory, rimuovi l's3:PutInventoryConfiguration
autorizzazione all'utente.
Alcuni campi di metadati degli oggetti nelle configurazioni dei report di S3 Inventory sono facoltativi, il che significa che sono disponibili per impostazione predefinita, ma possono essere limitati quando concedi l'autorizzazione a un utente. s3:PutInventoryConfiguration
Puoi controllare se gli utenti possono includere questi campi di metadati opzionali nei loro report utilizzando la chiave di condizione. s3:InventoryAccessibleOptionalFields
Per un elenco dei campi di metadati opzionali disponibili in S3 Inventory, consulta OptionalFieldsnell'Amazon Simple Storage Service API Reference.
Per concedere a un utente l'autorizzazione a creare una configurazione di inventario con campi di metadati opzionali specifici, utilizza la chiave di s3:InventoryAccessibleOptionalFields
condizione per rifinire le condizioni della tua bucket policy.
La seguente politica di esempio concede a un utente (
) l'autorizzazione a creare una configurazione di inventario in modo condizionale. La Ana
ForAllValues:StringEquals
condizione nella politica utilizza la chiave s3:InventoryAccessibleOptionalFields
condition per specificare i due campi di metadati opzionali consentiti, vale a dire e. Size
StorageClass
Pertanto, quando crea
una configurazione di inventario, gli unici campi di metadati opzionali che può includere sono Ana
Size
e. StorageClass
{ "Id": "InventoryConfigPolicy", "Version": "2012-10-17", "Statement": [{ "Sid": "AllowInventoryCreationConditionally", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:user/Ana
" }, "Action": "s3:PutInventoryConfiguration", "Resource": "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET
", "Condition": { "ForAllValues:StringEquals": { "s3:InventoryAccessibleOptionalFields": [ "Size", "StorageClass" ] } } } ] }
Per impedire a un utente di configurare un report S3 Inventory che includa campi di metadati opzionali specifici, aggiungi una Deny
dichiarazione esplicita alla policy del bucket di origine. L'esempio seguente di bucket policy impedisce all'utente di creare una configurazione di inventario nel
bucket di origine che DOC-EXAMPLE-SOURCE-BUCKET
includa i campi opzionali o di metadati. Ana
ObjectAccessControlList
ObjectOwner
L'utente
può comunque creare una configurazione di inventario con altri campi di metadati opzionali.Ana
{ "Id": "InventoryConfigSomeFields", "Version": "2012-10-17", "Statement": [{ "Sid": "AllowInventoryCreation", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:user/Ana
" }, "Action": "s3:PutInventoryConfiguration", "Resource": "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET
", }, { "Sid": "DenyCertainInventoryFieldCreation", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333
:user/Ana
" }, "Action": "s3:PutInventoryConfiguration", "Resource": "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET
", "Condition": { "ForAnyValue:StringEquals": { "s3:InventoryAccessibleOptionalFields": [ "ObjectOwner", "ObjectAccessControlList" ] } } } ] }
Nota
L'uso della chiave di s3:InventoryAccessibleOptionalFields
condizione nelle politiche relative ai bucket non influisce sulla fornitura di report di inventario basati sulle configurazioni di inventario esistenti.
Importante
Si consiglia di utilizzarlo ForAllValues
con un Allow
effetto o ForAnyValue
con un Deny
effetto, come mostrato negli esempi precedenti.
Non utilizzare ForAllValues
con un Deny
effetto né ForAnyValue
con un Allow
effetto, poiché queste combinazioni possono essere eccessivamente restrittive e bloccare l'eliminazione della configurazione dell'inventario.
Per ulteriori informazioni sugli operatori ForAllValues
e sui set di ForAnyValue
condizioni, consulta Chiavi contestuali multivalore nella Guida per l'utente. IAM
Richiedendo MFA
Amazon S3 supporta API l'accesso MFA protetto, una funzionalità che può imporre l'autenticazione a più fattori (MFA) per l'accesso alle risorse Amazon S3. L'autenticazione a più fattori offre un ulteriore livello di sicurezza che puoi applicare al tuo ambiente. AWS MFAè una funzionalità di sicurezza che richiede agli utenti di dimostrare il possesso fisico di un MFA dispositivo fornendo un MFA codice valido. Per ulteriori informazioni, consulta Autenticazione a più fattori (MFA) di AWS
Per applicare il MFA requisito, utilizza la chiave di aws:MultiFactorAuthAge
condizione in una policy bucket. IAMgli utenti possono accedere alle risorse Amazon S3 utilizzando credenziali temporanee emesse da (). AWS Security Token Service AWS STS Fornisci il MFA codice al momento della AWS STS
richiesta.
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 la credenziale temporanea fornita nella richiesta non è stata creata utilizzando un MFA dispositivo, questo valore chiave è nullo (assente). In una policy di bucket, è possibile aggiungere una condizione per controllare questo valore, come mostrato nell'esempio riportato di seguito.
Questa politica di esempio nega qualsiasi operazione di Amazon S3 su
cartella nel /documenti fiscali
bucket se la richiesta non viene autenticata utilizzando. MFA Per ulteriori informazioniMFA, consulta Using Multi-Factor Authentication (MFA) AWS nella Guida per l'IAMutente.amzn-s3-demo-bucket
{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/taxdocuments
/*", "Condition": { "Null": { "aws:MultiFactorAuthAge": true }} } ] }
La Null
condizione nel Condition
blocco restituisce true
se il valore della chiave della aws:MultiFactorAuthAge
condizione è nullo, 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. La seguente politica include due dichiarazioni politiche. Una dichiarazione consente l'autorizzazione s3:GetObject
per un bucket (
) per tutti gli utenti. Un'altra dichiarazione limita ulteriormente l'accesso alla amzn-s3-demo-bucket
cartella nel bucket richiedendo. MFA amzn-s3-demo-bucket
/taxdocuments
{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/taxdocuments
/*", "Condition": { "Null": { "aws:MultiFactorAuthAge": true } } }, { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::amzn-s3-demo-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 seguente policy sul bucket, oltre a richiedere MFA l'autenticazione, controlla anche quanto tempo fa è stata creata 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:::
amzn-s3-demo-bucket
/taxdocuments
/*", "Condition": {"Null": {"aws:MultiFactorAuthAge": true }} }, { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/taxdocuments
/*", "Condition": {"NumericGreaterThan": {"aws:MultiFactorAuthAge": 3600 }} }, { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/*" } ] }
Impedire agli utenti di eliminare oggetti
Per default, gli utenti non dispongono di autorizzazioni. Tuttavia, mentre crei le politiche, potresti concedere agli utenti autorizzazioni che non intendevi concedere. Per evitare tali lacune nelle autorizzazioni, puoi scrivere una politica di accesso più rigorosa aggiungendo un rifiuto esplicito.
Per impedire in modo esplicito agli utenti o agli account di eliminare oggetti, è necessario aggiungere le seguenti azioni a una policy bucket:, e le autorizzazioni. s3:DeleteObject
s3:DeleteObjectVersion
s3:PutLifecycleConfiguration
Tutte e tre le azioni sono necessarie perché è possibile eliminare gli oggetti richiamando esplicitamente DELETE Object
API le operazioni o configurandone il ciclo di vita (vediGestione del ciclo di vita degli oggetti) in modo che Amazon S3 possa rimuovere gli oggetti alla scadenza del loro ciclo di vita.
Nel seguente esempio di policy, neghi esplicitamente le autorizzazioni all'utente. DELETE Object
Una MaryMajor
Deny
dichiarazione esplicita sostituisce sempre qualsiasi altra autorizzazione concessa.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/" }, "Action": [ "s3:GetObjectVersion", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::
MaryMajor
", "arn:aws:s3:::
amzn-s3-demo-bucket1
" ] }, { "Sid": "statement2", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::
amzn-s3-demo-bucket1
/*123456789012
:user/" }, "Action": [ "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:PutLifecycleConfiguration" ], "Resource": [ "arn:aws:s3:::
MaryMajor
", "arn:aws:s3:::
amzn-s3-demo-bucket1
" ] } ] }
amzn-s3-demo-bucket1
/*