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 Bucket che utilizzano chiavi condizionali
È possibile utilizzare in linguaggio delle policy di accesso per specificare le condizioni quando si concedono le autorizzazioni. È possibile utilizzare l'Condition
elemento opzionale, o Condition
blocco, per specificare le condizioni relative all'entrata in vigore di una politica.
Per le policy che utilizzano le chiavi di condizioni di Amazon S3 per operazioni su oggetti e bucket, consulta gli esempi seguenti. Per ulteriori informazioni su queste chiavi di condizione, consulta Chiavi relative alle condizioni delle politiche per Amazon S3. Per un elenco completo di azioni, chiavi di condizione e risorse di Amazon S3 che puoi specificare nelle politiche, 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
Esempi: chiavi di condizione di Amazon S3 per le operazioni sugli oggetti
Gli esempi seguenti mostrano come utilizzare le chiavi di condizione specifiche di Amazon S3 per le operazioni sugli oggetti. Per un elenco completo di azioni, chiavi di condizione e risorse di Amazon S3 che puoi specificare nelle politiche, 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
Diverse politiche di esempio mostrano come utilizzare le chiavi delle condizioni con PUT le operazioni Object. PUTLe operazioni sugli oggetti consentono l'uso di intestazioni specifiche di Access Control List (ACL) che è possibile utilizzare per concedere autorizzazioni ACL basate su autorizzazioni. Utilizzando queste chiavi condizionali, è possibile impostare una condizione per richiedere autorizzazioni di accesso specifiche quando l'utente carica un oggetto. È inoltre possibile concedere autorizzazioni ACL basate sull'operazione. PutObjectAcl Per ulteriori informazioni, consulta PutObjectAclAmazon S3 Amazon Simple Storage Service API Reference. Per ulteriori informazioni suACLs, consultaPanoramica della lista di controllo degli accessi (ACL).
Argomenti
- Esempio 1: concessione s3:PutObject dell'autorizzazione che richiede che gli oggetti vengano archiviati utilizzando la crittografia lato server
- Esempio 2: concessione del s3:PutObject permesso di copiare oggetti con una restrizione sulla fonte di copia
- Esempio 3: Concessione dell'accesso a una versione specifica di un oggetto
- Esempio 4: concessione di autorizzazioni basate sui tag degli oggetti
- Esempio 5: limitazione dell'accesso tramite Account AWS ID del proprietario del bucket
- Esempio 6: Richiesta di una TLS versione minima
- Esempio 7: esclusione di determinati principi da una dichiarazione Deny
Esempio 1: concessione s3:PutObject
dell'autorizzazione che richiede che gli oggetti vengano archiviati utilizzando la crittografia lato server
Si supponga che l'Account A possieda un bucket. L'amministratore dell'account desidera concedere a Jane, un utente dell'Account A, l'autorizzazione a caricare oggetti a condizione che Jane richieda sempre la crittografia lato server con chiavi SSE gestite di Amazon S3 (-S3). L'amministratore dell'account A può specificare questo requisito utilizzando la chiave di condizione come mostrato. s3:x-amz-server-side-encryption
La coppia chiave-valore nel Condition
blocco seguente specifica la chiave di s3:x-amz-server-side-encryption
condizione e SSE -S3 (AES256
) come tipo di crittografia:
"Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "AES256" }}
Quando si verifica questa autorizzazione utilizzando il AWS CLI, è necessario aggiungere la crittografia richiesta utilizzando il --server-side-encryption
parametro, come illustrato nell'esempio seguente. Per utilizzare questo comando di esempio, sostituisci
con le tue informazioni. user input
placeholders
aws s3api put-object --bucket
amzn-s3-demo-bucket
--keyHappyFace.jpg
--bodyc:\HappyFace.jpg
--server-side-encryption "AES256
" --profileAccountAadmin
Esempio 2: concessione del s3:PutObject
permesso di copiare oggetti con una restrizione sulla fonte di copia
In una richiesta di PUT
oggetto, quando si specifica un oggetto di origine, la richiesta è un'operazione di copia (vedere CopyObject). Di conseguenza, il proprietario del bucket può concedere all'utente l'autorizzazione a copiare oggetti con restrizioni sull'origine, ad esempio:
-
Consenti la copia di oggetti solo dal bucket di origine specificato (ad esempio,).
amzn-s3-demo-source-bucket
-
Consenti la copia di oggetti dal bucket di origine specificato e solo gli oggetti il cui prefisso del nome chiave inizia con un prefisso specifico, ad esempio
(ad esempio,pubblico/
).amzn-s3-demo-source-bucket
/public/*
-
Consenti la copia solo di un oggetto specifico dal bucket di origine (ad esempio,
).amzn-s3-demo-source-bucket
/example.jpg
La seguente politica del bucket concede l'autorizzazione a un utente ()
. Dave
s3:PutObject
Questa politica gli consente di copiare oggetti solo a condizione che la richiesta includa l's3:x-amz-copy-source
intestazione e che il valore dell'intestazione specifichi il prefisso del nome della /
chiave. Per utilizzare questa policy di esempio, sostituisci amzn-s3-demo-source-bucket
/public/*
con le tue informazioni.user
input placeholders
{ "Version": "2012-10-17", "Statement": [ { "Sid": "cross-account permission to user in your own account", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/Dave
" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::/*" }, { "Sid": "Deny your user permission to upload object if copy source is not /bucket/prefix", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::
amzn-s3-demo-source-bucket
123456789012
:user/Dave
" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::/*", "Condition": { "StringNotLike": { "s3:x-amz-copy-source": "
amzn-s3-demo-source-bucket
amzn-s3-demo-source-bucket
/public/*
" } } } ] }
Prova la politica con AWS CLI
È possibile verificare l'autorizzazione utilizzando il AWS CLI copy-object
comando. Si specifica la fonte aggiungendo il --copy-source
parametro. Il prefisso del nome chiave specificato deve corrispondere al prefisso consentito nella politica. È necessario fornire le
credenziali utente utilizzando il parametro. Dave
--profile
Per ulteriori informazioni sulla configurazione di AWS CLI, consulta Sviluppo con Amazon S3 tramite la AWS CLI. Per utilizzare questo comando di esempio, sostituisci
con le tue informazioni.user input placeholders
aws s3api copy-object --bucket
--key
amzn-s3-demo-source-bucket
HappyFace.jpg
--copy-source
amzn-s3-demo-source-bucket
/public/PublicHappyFace1.jpg
--profileAccountADave
Concessione dell'autorizzazione a copiare solo un oggetto specifico
La policy di cui sopra utilizza la condizione StringNotLike
. Per concedere l'autorizzazione a copiare solo un oggetto specifico, è necessario modificare la condizione da StringNotLike
a StringNotEquals
e quindi specificare la chiave esatta dell'oggetto, come illustrato nell'esempio seguente. Per utilizzare questo comando di esempio, sostituisci
con le tue informazioni.user input
placeholders
"Condition": { "StringNotEquals": { "s3:x-amz-copy-source": "
amzn-s3-demo-source-bucket
/public/PublicHappyFace1.jpg
" } }
Esempio 3: Concessione dell'accesso a una versione specifica di un oggetto
Supponiamo che l'Account A possieda un bucket abilitato al controllo delle versioni. Il bucket ha diverse versioni dell'oggetto
. L'amministratore dell'account A ora desidera concedere all'utente il HappyFace.jpg
permesso di ottenere solo una versione specifica dell'oggetto. L'amministratore dell'account può eseguire questa operazione concedendo all'utente Dave
l'Dave
s3:GetObjectVersion
autorizzazione in modo condizionale, come illustrato nell'esempio seguente. La coppia chiave-valore nel blocco Condition
specifica la chiave di condizione s3:VersionId
. In questo caso, per recuperare l'oggetto dal bucket specificato abilitato al controllo delle versioni, è
necessario conoscere l'ID esatto della versione dell'oggetto. Per utilizzare questa policy di esempio, sostituisci Dave
con le tue informazioni.user input
placeholders
Per ulteriori informazioni, consulta GetObjectnell'Amazon Simple Storage Service API Reference.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/Dave
" }, "Action": "s3:GetObjectVersion", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/HappyFace.jpg
" }, { "Sid": "statement2", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012
:user/Dave
" }, "Action": "s3:GetObjectVersion", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/HappyFace.jpg
", "Condition": { "StringNotEquals": { "s3:VersionId": "AaaHbAQitwiL_h47_44lRO2DDfLlBO5e
" } } } ] }
Testa la policy con AWS CLI
È possibile verificare le autorizzazioni contenute in questa politica utilizzando il AWS CLI get-object
comando con il --version-id
parametro per identificare la versione specifica dell'oggetto da recuperare. Il comando recupera la versione specificata dell'oggetto e la salva nel
file.OutputFile.jpg
aws s3api get-object --bucket
--key
amzn-s3-demo-bucket
HappyFace.jpg
OutputFile.jpg
--version-idAaaHbAQitwiL_h47_44lRO2DDfLlBO5e
--profileAccountADave
Esempio 4: concessione di autorizzazioni basate sui tag degli oggetti
Per esempi di come utilizzare le chiavi delle condizioni di etichettatura degli oggetti con le operazioni di Amazon S3, consulta. Tagging e policy di controllo degli accessi
Esempio 5: limitazione dell'accesso tramite Account AWS ID del proprietario del bucket
Puoi utilizzare la chiave aws:ResourceAccount
o s3:ResourceAccount
condition key to write IAM o le policy degli endpoint del cloud privato virtuale (VPC) che limitano l'accesso di utenti, ruoli o applicazioni ai bucket Amazon S3 di proprietà di uno specifico Account AWS ID. Puoi usare queste chiavi di condizione per impedire ai tuoi VPC clienti di accedere a bucket che non possiedi.
Tuttavia, tieni presente che alcuni AWS i servizi si basano sull'accesso a AWS bucket gestiti. Pertanto, l'utilizzo della s3:ResourceAccount
chiave aws:ResourceAccount
o nella IAM politica potrebbe influire anche sull'accesso a queste risorse. Per ulteriori informazioni, consulta le seguenti risorse:
-
Limita l'accesso ai bucket in un intervallo specificato Account AWS nella AWS PrivateLink Guida
-
Limita l'accesso ai bucket ECR utilizzati da Amazon nell'Amazon Guide ECR
-
Fornire l'accesso richiesto a Systems Manager per AWSbucket Amazon S3 gestiti nel AWS Systems Manager Guida
Per ulteriori informazioni sulle chiavi aws:ResourceAccount
e s3:ResourceAccount
condition ed esempi che mostrano come utilizzarle, consulta Limitare l'accesso ai bucket Amazon S3 di proprietà di specifici Account AWS
Esempio 6: Richiesta di una TLS versione minima
Puoi utilizzare la chiave di s3:TlsVersion
condizione per creare policy di scritturaIAM, endpoint cloud privato virtuale (VPCE) o bucket che limitano l'accesso di utenti o applicazioni ai bucket Amazon S3 in base TLS alla versione utilizzata dal client. Puoi utilizzare questa chiave di condizione per scrivere politiche che richiedono una versione minima. TLS
Il seguente esempio di bucket policy nega PutObject
le richieste dei client con una TLS versione precedente alla 1.2, ad esempio 1.1 o 1.0. Per utilizzare questa policy di esempio, sostituisci
con le tue informazioni.user input placeholders
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::
", "arn:aws:s3:::
amzn-s3-demo-bucket1
/*" ], "Condition": { "NumericLessThan": { "s3:TlsVersion": 1.2 } } } ] }
amzn-s3-demo-bucket1
L'esempio seguente di bucket policy consente PutObject
le richieste da parte di client con una TLS versione successiva alla 1.1, ad esempio 1.2, 1.3 o successiva:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::
", "arn:aws:s3:::
amzn-s3-demo-bucket1
/*" ], "Condition": { "NumericGreaterThan": { "s3:TlsVersion": 1.1 } } } ] }
amzn-s3-demo-bucket1
Esempio 7: esclusione di determinati principi da una dichiarazione Deny
La seguente policy sui bucket nega s3:GetObject
l'accesso a
, ad eccezione dei principali con il numero di conto amzn-s3-demo-bucket
. Per utilizzare questa politica di esempio, 123456789012
sostituiscila con le tue informazioni.user input
placeholders
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAccessFromPrincipalNotInSpecificAccount", "Principal": { "AWS": "*" }, "Action": "s3:GetObject", "Effect": "Deny", "Resource": [ "arn:aws:s3:::
amzn-s3-demo-bucket
/*" ], "Condition": { "StringNotEquals": { "aws:PrincipalAccount": [ "" ] } } } ] }
123456789012
Esempi: chiavi di condizione di Amazon S3 per le operazioni con i bucket
I seguenti esempi di policy mostrano come utilizzare le chiavi di condizione specifiche di Amazon S3 per le operazioni con i bucket.
Argomenti
Esempio 1: concessione s3:GetObject
dell'autorizzazione con una condizione su un indirizzo IP
È possibile concedere agli utenti autenticati l'autorizzazione a utilizzare l's3:GetObject
azione se la richiesta proviene da un intervallo specifico di indirizzi IP (ad esempio,
), a meno che l'indirizzo IP non sia uno che si desidera escludere (ad esempio,). 192.0.2.*
Nel 192.0.2.188
Condition
blocco IpAddress
e NotIpAddress
ci sono condizioni e a ciascuna condizione viene fornita una coppia chiave-valore per la valutazione. Entrambe le coppie chiave-valore in questo esempio utilizzano il aws:SourceIp
AWS chiave larga. Per utilizzare questa policy di esempio, sostituisci
con le tue informazioni.user input placeholders
Nota
I valori IPAddress
e le NotIpAddress
chiavi specificati nella CIDR notazione del Condition
blocco utilizzano, come descritto in RFC 4632. Per ulteriori informazioni, consulta http://www.rfc-editor.org/rfc/rfc4632.txt
{ "Version": "2012-10-17", "Id": "S3PolicyId1", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": "*", "Action":"s3:GetObject", "Resource": "arn:aws:s3:::
/*", "Condition" : { "IpAddress" : { "aws:SourceIp": "
amzn-s3-demo-bucket
192.0.2.0/24
" }, "NotIpAddress" : { "aws:SourceIp": "192.0.2.188/32
" } } } ] }
Puoi anche usare altri AWS‐chiavi di condizione a livello generale nelle politiche di Amazon S3. Ad esempio, puoi specificare le chiavi aws:SourceVpce
e le aws:SourceVpc
condizioni nelle policy bucket per gli endpoint. VPC Per esempi specifici consulta Controllo dell'accesso dagli VPC endpoint con policy bucket.
Nota
Per alcuni AWS chiavi di condizione globali, sono supportati solo determinati tipi di risorse. Pertanto, verifica se Amazon S3 supporta la chiave di condizione globale e il tipo di risorsa che desideri utilizzare o se invece dovrai utilizzare una chiave di condizione specifica di Amazon S3. Per un elenco completo dei tipi di risorse e delle chiavi di condizione supportati per Amazon S3, consulta Azioni, risorse e chiavi di condizione per Amazon S3 nel Service Authorization Reference.
Per ulteriori informazioni sulle autorizzazioni per le API operazioni S3 in base ai tipi di risorse S3, consulta. Autorizzazioni richieste per le operazioni di Amazon API S3
Esempio 2: recupero di un elenco di oggetti in un bucket con un prefisso specifico
È possibile utilizzare il tasto s3:prefix
condition per limitare la risposta di ListObjectsV2APIoperazione ai nomi delle chiavi con un prefisso specifico. Se sei il proprietario del bucket, puoi utilizzare questa chiave di condizione per impedire a un utente di elencare il contenuto di un prefisso specifico nel bucket. La chiave di s3:prefix
condizione è utile se gli oggetti nel bucket sono organizzati in base ai prefissi dei nomi delle chiavi.
La console di Amazon S3 utilizza i prefissi dei nomi delle chiavi per mostrare un concetto di cartella. Solo la console supporta il concetto di cartelle; Amazon S3 API supporta solo bucket e oggetti. Ad esempio, se hai due oggetti con i nomi chiave
e public/object1.jpg
, la console mostra gli oggetti sotto il public/object2.jpg
folder. In Amazon S3API, si tratta di oggetti con prefissi, non di oggetti in cartelle. Per ulteriori informazioni sull'utilizzo di prefissi e delimitatori per filtrare le autorizzazioni di accesso, consulta Procedura guidata: controllo dell'accesso a un bucket con policy utente. pubblico
Nello scenario seguente, il proprietario del bucket e l'account principale a cui appartiene l'utente sono gli stessi. Pertanto, il proprietario del bucket può utilizzare una policy del bucket o una politica utente per concedere l'accesso. Per ulteriori informazioni sugli altri tasti di condizione che è possibile utilizzare con l'ListObjectsV2
APIoperazione, vedere ListObjectsV2.
Nota
Se il bucket è abilitato al controllo delle versioni, per elencare gli oggetti nel bucket, è necessario concedere l's3:ListBucketVersions
autorizzazione nelle seguenti politiche, anziché l'autorizzazione. s3:ListBucket
L's3:ListBucketVersions
autorizzazione supporta anche la chiave di condizione. s3:prefix
Policy utente
La seguente politica utente concede l's3:ListBucket
autorizzazione (vedi ListObjectsV2) con un'Condition
istruzione che richiede all'utente di specificare un prefisso nella richiesta con un valore di.
Per utilizzare questa policy di esempio, sostituisci projects
con le tue informazioni.user input placeholders
{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Action": "s3:ListBucket", "Resource":"arn:aws:s3:::
", "Condition" : { "StringEquals" : { "s3:prefix": "
amzn-s3-demo-bucket
projects
" } } }, { "Sid":"statement2", "Effect":"Deny", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::", "Condition" : { "StringNotEquals" : { "s3:prefix": "
amzn-s3-demo-bucket
projects
" } } } ] }
L'Condition
istruzione limita l'utente a elencare solo le chiavi degli oggetti che hanno il
prefisso. L'projects
Deny
istruzione esplicita aggiunta impedisce all'utente di elencare le chiavi con qualsiasi altro prefisso, indipendentemente dalle altre autorizzazioni dell'utente. Ad esempio, è possibile che l'utente ottenga l'autorizzazione a elencare le chiavi degli oggetti senza alcuna restrizione, tramite aggiornamenti alla politica utente precedente o tramite una policy bucket. Poiché Deny
le istruzioni esplicite hanno sempre la precedenza sulle Allow
istruzioni, se l'utente tenta di elencare chiavi diverse da quelle che hanno il
prefisso, la richiesta viene rifiutata. projects
Policy del bucket
Se si aggiunge l'Principal
elemento alla policy utente precedente, che identifica l'utente, si ottiene ora una policy bucket, come illustrato nell'esempio seguente. Per utilizzare questa policy di esempio, sostituisci
con le tue informazioni.user input
placeholders
{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/bucket-owner
" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::", "Condition" : { "StringEquals" : { "s3:prefix": "
amzn-s3-demo-bucket
projects
" } } }, { "Sid":"statement2", "Effect":"Deny", "Principal": { "AWS": "arn:aws:iam::123456789012
:user/bucket-owner
" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::", "Condition" : { "StringNotEquals" : { "s3:prefix": "
amzn-s3-demo-bucket
projects
" } } } ] }
Prova la politica con AWS CLI
È possibile testare la politica utilizzando quanto segue list-object
AWS CLI comando. Nel comando, si forniscono le credenziali dell'utente utilizzando il --profile
parametro. Per ulteriori informazioni sulla configurazione e l'utilizzo di AWS CLI, consulta Sviluppo con Amazon S3 tramite la AWS CLI.
aws s3api list-objects --bucket
--prefix
amzn-s3-demo-bucket
projects
--profileAccountA
Esempio 3: impostazione del numero massimo di chiavi
È possibile utilizzare la chiave di s3:max-keys
condizione per impostare il numero massimo di chiavi che un richiedente può restituire in un ListObjectsV2 o ListObjectVersions. Per impostazione predefinita, queste API operazioni restituiscono fino a 1.000 chiavi. Per un elenco degli operatori di condizioni numerici che è possibile utilizzare con s3:max-keys
e gli esempi che li accompagnano, consulta la sezione Operatori di condizione numerica nella Guida per l'IAMutente.