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à.
Limita l'accesso a un'origine Amazon Simple Storage Service
CloudFront offre due modi per inviare richieste autenticate a un'origine Amazon S3: Origin Access Control (OAC) e Origin Access Identity (OAI). OAC ti aiuta a proteggere le tue origini, ad esempio per Amazon S3. Si consiglia di utilizzare OAC perché supporta:
-
Tutti i bucket Amazon S3 in totale Regioni AWS, comprese le regioni opt-in lanciate dopo dicembre 2022
-
Crittografia lato server con chiavi AWS KMS (SSE-KMS) Amazon S3
-
Richieste dinamiche (
PUT
eDELETE
) su Amazon S3
L'identità di accesso origine (OAI) non funziona per gli scenari dell'elenco precedente o richiede soluzioni alternative aggiuntive in tali scenari. I seguenti argomenti descrivono come utilizzare OAC con origine Amazon S3. Per informazioni su come migrare dell'identità di accesso origine (OAI) al controllo degli accessi origine (OAC), vedere Migrazione dell'identità di accesso origine (OAI) al controllo degli accessi origine (OAC).
Note
-
Quando usi CloudFront OAC con le origini dei bucket Amazon S3, devi impostare Amazon S3 Object Ownership su Bucket owner enforced, l'impostazione predefinita per i nuovi bucket Amazon S3. Se necessario ACLs, utilizza l'impostazione preferita del proprietario di Bucket per mantenere il controllo sugli oggetti caricati tramite. CloudFront
-
Se la tua origine è un bucket Amazon S3 configurato come endpoint del sito Web, devi configurarlo CloudFront come origine personalizzata. Ciò significa che non è possibile utilizzare OAC (o OAI). OAC non supporta il reindirizzamento all'origine tramite Lambda @Edge.
Argomenti
Crea un nuovo controllo di accesso all'origine
Completa i passaggi descritti nei seguenti argomenti per configurare un nuovo controllo di accesso di origine in CloudFront.
Argomenti
Prerequisiti
Prima di creare e configurare Origin Access Control (OAC), devi disporre di una CloudFront distribuzione con un'origine di bucket Amazon S3. Questa origine deve essere un normale bucket S3, non un bucket configurato come endpoint del sito Web. Per ulteriori informazioni sulla configurazione di una CloudFront distribuzione con un'origine del bucket S3, consulta. Inizia con una CloudFront distribuzione di base
Nota
Quando usi OAC per proteggere l'origine del tuo bucket S3, la comunicazione tra e Amazon CloudFront S3 avviene sempre tramite HTTPS, indipendentemente dalle tue impostazioni specifiche.
Concedi all'origine il permesso di controllo dell'accesso per accedere al bucket S3
Prima di creare un controllo di accesso all'origine (OAC) o configurarlo in una CloudFront distribuzione, assicurati che l'OAC disponga dell'autorizzazione per accedere all'origine del bucket S3. Esegui questa operazione dopo aver creato una CloudFront distribuzione, ma prima di aggiungere l'OAC all'origine S3 nella configurazione di distribuzione.
Per concedere all'OAC l'autorizzazione ad accedere al bucket S3, utilizza una policy del bucket S3 per consentire al CloudFront service principal () di accedere al bucket. cloudfront.amazonaws.com
Utilizza un Condition
elemento della policy per consentire l'accesso CloudFront al bucket solo quando la richiesta è per conto della distribuzione che contiene l' CloudFront origine S3.
Per informazioni sull'aggiunta o la modifica di una politica del bucket, consulta Aggiunta di una policy di bucket utilizzando la console Amazon S3 nella Guida per l'utente di Amazon S3.
Di seguito sono riportati alcuni esempi di policy relative ai bucket S3 che consentono a un CloudFront OAC di accedere a un'origine S3.
Esempio Policy sui bucket S3 che consente l'accesso in sola lettura a un OAC CloudFront
{ "Version": "2012-10-17", "Statement": { "Sid": "AllowCloudFrontServicePrincipalReadOnly", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::
<S3 bucket name>
/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333
:distribution/<CloudFront distribution ID>
" } } } }
Esempio Policy S3 bucket che consente l'accesso in lettura e scrittura a un OAC CloudFront
{ "Version": "2012-10-17", "Statement": { "Sid": "AllowCloudFrontServicePrincipalReadWrite", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::
<S3 bucket name>
/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333
:distribution/<CloudFront distribution ID>
" } } } }
SSE-KMS
Se gli oggetti nell'origine del bucket S3 sono crittografati utilizzando la crittografia lato server con AWS Key Management Service (SSE-KMS), devi assicurarti che l'OAC disponga dell'autorizzazione per utilizzare la chiave. AWS KMS Per concedere all'OAC l'autorizzazione per utilizzare la chiave KMS, aggiungi una dichiarazione alla Policy della chiave KMS. Per informazioni su come modificare un criterio delle chiavi, consulta Modifica di una policy delle chiavinella Guida per gli sviluppatori AWS Key Management Service .
L'esempio seguente mostra una dichiarazione di policy della chiave KMS che consente all'OAC di utilizzare la chiave KMS.
Esempio Dichiarazione politica chiave KMS che consente a un OAC di accedere a una chiave KMS per SSE-KMS CloudFront
{ "Sid": "AllowCloudFrontServicePrincipalSSE-KMS", "Effect": "Allow", "Principal": { "Service": [ "cloudfront.amazonaws.com" ] }, "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::
111122223333
:distribution/<CloudFront distribution ID>
" } } }
Crea il controllo di accesso all'origine
Per creare un controllo di accesso all'origine (OAC), puoi utilizzare l' AWS Management Console AWS CloudFormation, AWS CLI, o l' CloudFront API.
Elimina una distribuzione con un OAC collegato a un bucket S3
Se devi eliminare una distribuzione con un OAC collegato a un bucket S3, devi eliminare la distribuzione prima di eliminare l'origine del bucket S3. In alternativa, includi la regione nel nome di dominio di origine. Se ciò non è possibile, puoi rimuovere l'OAC dalla distribuzione passando a public prima dell'eliminazione. Per ulteriori informazioni, consulta Eliminazione di una distribuzione .
Migrazione dell'identità di accesso origine (OAI) al controllo degli accessi origine (OAC)
Per migrare da un'identità di accesso all'origine (OAI) legacy a un controllo dell'accesso all'origine (OAC), aggiorna innanzitutto l'origine del bucket S3 per consentire sia all'OAI che all'OAC di accedere al contenuto del bucket. Questo assicura che CloudFront non perda mai l'accesso al bucket durante la transizione. Per consentire sia a OAI che a OAC di accedere a un bucket S3, aggiorna la Policy del bucket per includere due dichiarazioni, una per ogni tipo di principale.
Il seguente esempio di policy del bucket S3 consente sia a un OAI che a un OAC di accedere a un'origine S3.
Esempio Policy del bucket S3 che consente l'accesso in sola lettura a un OAI e a un OAC
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudFrontServicePrincipalReadOnly", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::
<S3 bucket name>
/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333
:distribution/<CloudFront distribution ID>
" } } }, { "Sid": "AllowLegacyOAIReadOnly", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity<origin access identity ID>
" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<S3 bucket name>
/*" } ] }
Dopo aver aggiornato la politica dei bucket di S3 Origin per consentire l'accesso sia all'OAI che all'OAC, puoi aggiornare la configurazione di distribuzione per utilizzare OAC anziché OAI. Per ulteriori informazioni, consulta Crea un nuovo controllo di accesso all'origine.
Dopo che la distribuzione è stata completamente distribuita, puoi rimuovere l'istruzione nella politica del bucket che consente l'accesso all'OAI. Per ulteriori informazioni, consulta Concedi all'origine il permesso di controllo dell'accesso per accedere al bucket S3.
Impostazioni avanzate per il controllo dell'accesso all'origine
La funzionalità di controllo dell'accesso all' CloudFront origine include impostazioni avanzate destinate solo a casi d'uso specifici. Usa le impostazioni consigliate a meno che tu non abbia una necessità specifica per le impostazioni avanzate.
Origin Access Control contiene un'impostazione denominata Signing behavior (nella console) o SigningBehavior
(nell'API, CLI e AWS CloudFormation). Questa impostazione offre le seguenti opzioni:
- Firma sempre le richieste di origine (impostazione consigliata)
-
Si consiglia di utilizzare questa impostazione, denominata Richieste di firma (consigliata) nella console, oppure
always
nell'API, nell'interfaccia a riga di comando e AWS CloudFormation. Con questa impostazione, firma CloudFront sempre tutte le richieste che invia all'origine del bucket S3. - Non firmare le richieste di origine
-
Questa impostazione è denominata Non firmare le richieste nella console, oppure
never
nell'API, nell'interfaccia a riga di comando e AWS CloudFormation. Usa questa impostazione per disattivare il controllo dell'accesso all'origine per tutte le origini in tutte le distribuzioni che utilizzano questo controllo di accesso all'origine. Ciò consente di risparmiare tempo e fatica rispetto alla rimozione di un controllo di accesso all'origine da tutte le origini e le distribuzioni che lo utilizzano, uno per uno. Con questa impostazione, CloudFront non firma alcuna richiesta inviata all'origine del bucket S3.avvertimento
Per utilizzare questa impostazione, l'origine del bucket S3 deve essere accessibile al pubblico. Se utilizzi questa impostazione con un'origine del bucket S3 che non è accessibile pubblicamente, CloudFront non puoi accedere all'origine. L'origine del bucket S3 restituisce gli errori CloudFront e li CloudFront trasmette agli spettatori.
- Non ignorare l'intestazione del visualizzatore (client)
Authorization
-
Questa impostazione è denominata Non sovrascrivere l'intestazione di autorizzazionenella console, oppure
no-override
nell'API, nell'interfaccia a riga di comando e AWS CloudFormation. Utilizza questa impostazione quando desideri firmare le richieste CloudFront di origine solo quando la richiesta del visualizzatore corrispondente non include un'intestazione.Authorization
Con questa impostazione, CloudFront trasmette l'Authorization
intestazione della richiesta del visualizzatore quando ne è presente una, ma firma la richiesta di origine (aggiungendo la propriaAuthorization
intestazione) quando la richiesta del visualizzatore non include un'intestazione.Authorization
avvertimento
Per passare lungo l'intestazione
Authorization
della richiesta del visualizzatore, devi aggiungere l'intestazioneAuthorization
a una policy della cache per tutti i comportamenti della cache che utilizzano le origini del bucket S3 associate a questo controllo di accesso all'origine.
Usa un'identità di accesso all'origine (legacy, non consigliata)
CloudFront origin access identity (OAI) offre funzionalità simili a quelle di Origin Access Control (OAC), ma non funziona per tutti gli scenari. Questo è il motivo per cui consigliamo di utilizzare invece OAC. Nello specifico, l'OAI non supporta:
-
Bucket Amazon S3 in tutto Regioni AWS, comprese le regioni con attivazione
-
Crittografia lato server con chiavi AWS KMS (SSE-KMS) Amazon S3
-
Richieste dinamiche (
PUT
,POST
oDELETE
) su Amazon S3 -
Nuovo Regioni AWS lanciato dopo dicembre 2022
Per ulteriori informazioni sulla migrazione da OAI a OAC, consultare Migrazione dell'identità di accesso origine (OAI) al controllo degli accessi origine (OAC).
Quando crei un OAI o ne aggiungi uno a una distribuzione con la CloudFront console, puoi aggiornare automaticamente la policy del bucket Amazon S3 per concedere all'OAI l'autorizzazione ad accedere al tuo bucket. In alternativa, è possibile scegliere di creare o aggiornare manualmente la policy di bucket. Qualunque sia il metodo utilizzato, è comunque necessario esaminare le autorizzazioni per assicurarsi che:
-
Il tuo CloudFront OAI può accedere ai file nel bucket per conto degli utenti che li richiedono. CloudFront
-
Gli utenti non possono utilizzare Amazon URLs S3 per accedere ai tuoi file dall'esterno. CloudFront
Importante
Se configuri CloudFront per accettare e inoltrare tutti i metodi HTTP CloudFront supportati, assicurati di concedere all' CloudFront OAI le autorizzazioni desiderate. Ad esempio, se CloudFront configuri l'accettazione e l'inoltro delle richieste che utilizzano questo DELETE
metodo, configura la tua bucket policy per gestire DELETE
le richieste in modo appropriato in modo che gli utenti possano eliminare solo i file che desideri.
Usa le policy dei bucket di Amazon S3
Puoi consentire a un CloudFront OAI di accedere ai file in un bucket Amazon S3 creando o aggiornando la policy del bucket nei seguenti modi:
-
Utilizzo della scheda Permissions (Autorizzazioni) del bucket Amazon S3 nella console Amazon S3
. -
Utilizzo PutBucketPolicynell'API Amazon S3.
-
Utilizzo della console CloudFront
. Quando aggiungi un OAI alle impostazioni di origine nella CloudFront console, puoi scegliere Sì, aggiorna la policy del bucket per dire di aggiornare la policy del bucket CloudFront per tuo conto.
Se si aggiorna manualmente la policy del bucket, assicurarsi di:
-
Specificare l'OAI corretto come
Principal
nella policy. -
Dare all'OAI le autorizzazioni necessarie per accedere agli oggetti per conto dei visualizzatori.
Per ulteriori informazioni, consultare le sezioni indicate di seguito.
Specificare un OAI come Principal
in una policy di bucket
Per specificare un OAI come Principal
in una policy del bucket Amazon S3, usa l'Amazon Resource Name (ARN) della OAI, che include il relativo ID. Per esempio:
"Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity
<origin access identity ID>
" }
Trova l'ID OAI nella CloudFront console in Security, Origin access, Identities (legacy). In alternativa, utilizzalo ListCloudFrontOriginAccessIdentitiesnell'API. CloudFront
Concessione di autorizzazioni a una OAI
Per concedere alla OAI le autorizzazioni per accedere agli oggetti nel bucket Amazon S3, utilizzare le azioni nella policy relative a operazioni API Amazon S3 specifiche. Ad esempio, l'azione s3:GetObject
consente all'OAI di leggere gli oggetti nel bucket. Per ulteriori informazioni, consulta gli esempi riportati nella sezione seguente oppure consulta la sezione Operazioni Amazon S3 nella Guida per l'utente di Amazon Simple Storage Service.
Esempi di policy del bucket Amazon S3
Gli esempi seguenti mostrano le policy dei bucket Amazon S3 che consentono a CloudFront OAI di accedere a un bucket S3.
Trova l'ID OAI nella CloudFront console in Security, Origin access, Identities (legacy). In alternativa, utilizzalo ListCloudFrontOriginAccessIdentitiesnell'API. CloudFront
Esempio Policy bucket Amazon S3 che fornisce l'accesso in lettura dell'OAI
L'esempio seguente consente all'OAI di leggere gli oggetti nel bucket (s3:GetObject
) specificato.
{ "Version": "2012-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity
<origin access identity ID>
" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<S3 bucket name>
/*" } ] }
Esempio Policy bucket Amazon S3 che fornisce all'OAI l'accesso in lettura e scrittura
L'esempio seguente consente all'OAI di leggere e scrivere oggetti nel bucket specificato (s3:GetObject
e s3:PutObject
). Ciò consente agli utenti di caricare file nel tuo bucket Amazon S3 tramite. CloudFront
{ "Version": "2012-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity
<origin access identity ID>
" }, "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::<S3 bucket name>
/*" } ] }
Usa oggetto Amazon S3 ACLs (non consigliato)
Importante
Consigliamo l'utilizzo delle policy di bucket Amazon S3 per consentire a un OAI l'accesso a un bucket S3. Puoi usare le liste di controllo degli accessi (ACLs) come descritto in questa sezione, ma non è consigliabile.
Amazon S3 consiglia di impostare S3 Object Ownership su bucket owner enforced, il che significa che ACLs sono disabilitati per il bucket e gli oggetti in esso contenuti. Quando si applica questa impostazione per la proprietà degli oggetti, è necessario utilizzare le policy del bucket per consentire l'accesso all'OAI (vedere la sezione precedente).
La sezione seguente riguarda solo i casi d'uso precedenti che lo richiedono. ACLs
Puoi consentire a un CloudFront OAI di accedere ai file in un bucket Amazon S3 creando o aggiornando l'ACL del file nei seguenti modi:
-
Utilizzo della scheda Permissions (Autorizzazioni) dell'oggetto Amazon S3 nella Console Amazon S3
. -
Utilizzo PutObjectAclnell'API Amazon S3.
Quando si concede l'accesso a una OAI utilizzando un ACL, è necessario specificare l'OAI utilizzando il relativo ID utente Amazon S3 canonico. Nella CloudFront console, puoi trovare questo ID in Security, Origin access, Identities (legacy). Se utilizzi l' CloudFront API, utilizza il valore dell'S3CanonicalUserId
elemento che è stato restituito quando hai creato l'OAI o richiama ListCloudFrontOriginAccessIdentitiesl' CloudFrontAPI.
Le regioni Amazon S3 più recenti richiedono l'utilizzo di Signature Version 4 per le richieste autenticate. (Per le versioni di firma supportate in ogni regione Amazon S3, consultare Endpoint e quote Amazon Simple Storage Service nei Riferimenti generali di AWS.) Se utilizzi un'identità di accesso origine e se il bucket si trova in una delle regioni che richiedono Signature Version 4, nota quanto segue:
-
Le richieste
DELETE
,GET
,HEAD
,OPTIONS
ePATCH
sono supportate senza qualifiche. -
Le richieste
POST
non sono supportate.