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'elemento Condition
facoltativo o il blocco Condition
per specificare le condizioni per l'applicazione di una policy.
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.
Esempi – Chiavi di condizione di Amazon S3 per le operazioni sugli oggetti
In questa sezione vengono forniti esempi che illustrano 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.
Diverse politiche di esempio mostrano come utilizzare le chiavi delle condizioni con le operazioni PUTObject. PUTLe operazioni sugli oggetti consentono l'uso di intestazioni specifiche di Access Control List (ACL), che è possibile utilizzare per concedere autorizzazioni basate su autorizzazioni ACL basate su di essa. Utilizzando queste chiavi, il proprietario del bucket può impostare una condizione per richiedere determinate 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 su ACLs, consultare Panoramica della lista di controllo degli accessi (ACL).
Argomenti
- Esempio 1: concessione di s3: PutObject autorizzazione che richiede l'autorizzazione per oggetti archiviati utilizzando la crittografia lato server
- Esempio 2: Concessione a s3: PutObject autorizzazione a 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 in base all' Account AWS ID del proprietario del bucket
- Esempio 6: Richiesta di una versione minima TLS
Esempio 1: concessione di s3: PutObject autorizzazione che richiede l'autorizzazione per oggetti archiviati utilizzando la crittografia lato server
Si supponga che l'Account A possieda un bucket. L'amministratore dell'account vuole concedere a Jane, un'utente dell'Account A, l'autorizzazione per il caricamento di oggetti con la condizione che Jane richieda sempre la crittografia lato server in modo che Amazon S3 salvi gli oggetti crittografati. L'amministratore dell'Account A può procedere utilizzando la chiave di condizione s3:x-amz-server-side-encryption
come mostrato. La coppia chiave-valore nel blocco Condition
specifica la chiave s3:x-amz-server-side-encryption
.
"Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "AES256" }}
Quando si verifica l'autorizzazione utilizzando il AWS CLI, è necessario aggiungere il parametro richiesto utilizzando il parametro. --server-side-encryption
aws s3api put-object --bucket example1bucket --key HappyFace.jpg --body c:\HappyFace.jpg --server-side-encryption "AES256" --profile AccountBadmin
Esempio 2: Concessione a s3: PutObject autorizzazione a copiare oggetti con una restrizione sulla fonte di copia
Nella richiesta PUT Object, quando si specifica un oggetto sorgente, si tratta di un'operazione di copia (vedi PUTObject - Copy). Di conseguenza è possibile che il proprietario del bucket assegni all'utente l'autorizzazione a copiare gli oggetti con qualche limitazione sull'origine, ad esempio:
-
Consentire la copia di oggetti solo dal bucket
sourcebucket
. -
Consentire la copia di oggetti dal bucket di origine e solo di quegli oggetti il cui prefisso del nome della chiave inizia con public/ f (ad esempio, sourcebucket/public/*).
-
Consentire la copia di un solo oggetto specifico dal bucket di origine (ad esempio, sourcebucket/example.jpg).
La policy del bucket seguente concede all'utente (Dave) l'autorizzazione s3:PutObject
che gli consente di copiare solo gli oggetti con la condizione che la richiesta includa l'intestazione s3:x-amz-copy-source
e il valore di intestazione specifichi il prefisso del nome della chiave /awsexamplebucket1/public/*
.
{ "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:::awsexamplebucket1
/*" }, { "Sid": "Deny your user permission to upload object if copy source is not /bucket/folder", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012
:user/Dave" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::awsexamplebucket1
/*", "Condition": { "StringNotLike": { "s3:x-amz-copy-source": "awsexamplebucket1
/public/*" } } } ] }
Verificate la politica con AWS CLI
È possibile verificare l'autorizzazione utilizzando il AWS CLI copy-object
comando. È possibile specificare l'origine aggiungendo il parametro --copy-source
; il prefisso del nome della chiave deve corrispondere al prefisso consentito nella policy. È necessario fornire le credenziali all'utente Dave utilizzando il parametro --profile
. Per ulteriori informazioni sulla configurazione di AWS CLI, vedereSviluppo con Amazon S3 tramite la AWS CLI.
aws s3api copy-object --bucket
awsexamplebucket1
--key HappyFace.jpg --copy-sourceexamplebucket
/public/PublicHappyFace1.jpg --profile AccountADave
Concessione dell'autorizzazione a copiare solo un oggetto specifico
La policy di cui sopra utilizza la condizione StringNotLike
. Per assegnare l'autorizzazione a copiare solo un determinato oggetto, è necessario modificare la condizione da StringNotLike
a StringNotEquals
e quindi specificare l'esatta chiave dell'oggetto, come illustrato.
"Condition": { "StringNotEquals": { "s3:x-amz-copy-source": "
awsexamplebucket1
/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 HappyFace.jpg
. L'amministratore dell'account ora vuole assegnare al suo utente Dave l'autorizzazione a ottenere unicamente una versione specifica dell'oggetto. L'amministratore dell'account può procedere assegnando a Dave l'autorizzazione s3:GetObjectVersion
in base a condizioni, come mostrato di seguito. La coppia chiave-valore nel blocco Condition
specifica la chiave di condizione s3:VersionId
. In questo caso, Dave deve conoscere l'esatto ID di versione dell'oggetto per poterlo recuperare.
Per ulteriori informazioni, consulta GetObjectAmazon 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:::examplebucketversionenabled
/HappyFace.jpg" }, { "Sid": "statement2", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012
:user/Dave" }, "Action": "s3:GetObjectVersion", "Resource": "arn:aws:s3:::examplebucketversionenabled
/HappyFace.jpg", "Condition": { "StringNotEquals": { "s3:VersionId": "AaaHbAQitwiL_h47_44lRO2DDfLlBO5e
" } } } ] }
Testa la policy con il AWS CLI
È possibile testare le autorizzazioni utilizzando il AWS CLI get-object
comando con il --version-id
parametro che identifica la versione specifica dell'oggetto. Il comando recupera l'oggetto e lo salva nel file OutputFile.jpg
.
aws s3api get-object --bucket
examplebucketversionenabled
--key HappyFace.jpg OutputFile.jpg --version-idAaaHbAQitwiL_h47_44lRO2DDfLlBO5e
--profile AccountADave
Esempio 4: concessione di autorizzazioni basate sui tag degli oggetti
Per esempi su come utilizzare le chiavi di condizione per il tagging di oggetti con le operazioni di Amazon S3, consulta Tagging e policy di controllo degli accessi.
Esempio 5: limitazione dell'accesso in base all' Account AWS ID del proprietario del bucket
Puoi utilizzare la s3:ResourceAccount
chiave aws:ResourceAccount
o per scrivere 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 un ID specifico. Account AWS Puoi usare questa chiave condizionale per impedire ai tuoi clienti di accedere VPC a bucket che non possiedi.
Tuttavia, tieni presente che alcuni AWS servizi si basano sull'accesso a bucket AWS 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 ed esempi, consulta le seguenti risorse:
-
Limitazione dell'accesso ai bucket in un Account AWS specificato nella Guida di AWS PrivateLink
-
Limita l'accesso ai bucket ECR utilizzati da Amazon nell'Amazon Guide ECR
-
Fornisci l'accesso richiesto a Systems Manager per i bucket Amazon S3 AWS gestiti nella guida AWS Systems Manager
-
Limitazione dell'accesso ai bucket Amazon S3 di proprietà di specifici Account AWS
nel Blog di archiviazione AWS
Esempio 6: Richiesta di una versione minima TLS
Puoi utilizzare le policy s3: TlsVersion condition key to writeIAM, Virtual Private Cloud Endpoint (VPCE) o bucket che limitano l'accesso di utenti o applicazioni ai bucket Amazon S3 in base alla versione utilizzata dal TLS client. Puoi usare questa chiave di condizione per scrivere politiche che richiedono una versione minima. TLS
Questo 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.
{ "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
Questo esempio 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
Esempi – Chiavi di condizione di Amazon S3 per le operazioni sui bucket
In questa sezione vengono fornite policy di esempio che illustrano come utilizzare le chiavi di condizione specifiche di Amazon S3 per le operazioni sui bucket.
Argomenti
Esempio 1: Concessione di s3: GetObject autorizzazione con una condizione su un indirizzo IP
È possibile concedere agli utenti autenticati il permesso di utilizzare l's3:GetObject
azione se la richiesta proviene da un intervallo specifico di indirizzi IP (192.0.2.*), a meno che l'indirizzo IP non sia 192.0.2.188. Nel blocco di condizioni, IpAddress
e NotIpAddress
sono condizioni e per ogni condizione viene fornita una coppia chiave-valore per la valutazione. Entrambe le coppie chiave-valore in questo esempio utilizzano la chiave ‐wide. aws:SourceIp
AWS
Nota
I valori IPAddress
e NotIpAddress
chiave specificati nella condizione utilizzano la CIDR notazione descritta in 4632. RFC 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:::
awsexamplebucket1
/*", "Condition" : { "IpAddress" : { "aws:SourceIp": "192.0.2.0/24" }, "NotIpAddress" : { "aws:SourceIp": "192.0.2.188/32" } } } ] }
Puoi anche utilizzare altre chiavi di condizione AWS a livello di ‐wide nelle policy 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 alcune chiavi di condizione AWS globali, sono supportati solo determinati tipi di risorse. Pertanto, verificare se Amazon S3 supporta la chiave di condizione globale e il tipo di risorsa che si desidera utilizzare o se sarà invece necessario utilizzare una chiave di condizione specifica per 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.
Esempio 2: recupero di un elenco di oggetti in un bucket con un prefisso specifico
Puoi usare la chiave s3:prefix
condition per limitare la risposta di GETBucket (ListObjects) API ai nomi di chiavi con un prefisso specifico. Se si è il proprietario del bucket, è possibile limitare un utente a elencare il contenuto di un prefisso specifico nel bucket. Questa chiave di condizione risulta utile se gli oggetti nel bucket sono organizzati per prefissi del 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. 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.
Ad esempio, se vi sono due oggetti con nomi delle chiavi public/object1.jpg
e public/object2.jpg
, la console mostra gli oggetti nella cartella public
. In Amazon S3API, si tratta di oggetti con prefissi, non di oggetti in cartelle. Tuttavia, in Amazon S3API, se organizzi le chiavi oggetto utilizzando tali prefissi, puoi concedere l's3:ListBucket
autorizzazione a s3:prefix
condizione che consenta all'utente di ottenere un elenco di nomi di chiavi con quei prefissi specifici.
In questo esempio, il proprietario del bucket e l'account padre a cui appartiene l'utente corrispondono. Quindi, il proprietario del bucket può utilizzare una policy di bucket o una policy utente. Per ulteriori informazioni su altre chiavi condizionali che puoi usare con GET Bucket (), consulta. ListObjects API ListObjects
Policy utente
La seguente politica utente concede l's3:ListBucket
autorizzazione (vedi GETBucket (List Objects)) con una condizione che richiede all'utente di specificare il valore prefix
nella richiesta. projects
{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Action": "s3:ListBucket", "Resource":"arn:aws:s3:::
awsexamplebucket1
", "Condition" : { "StringEquals" : { "s3:prefix": "projects" } } }, { "Sid":"statement2", "Effect":"Deny", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::awsexamplebucket1
", "Condition" : { "StringNotEquals" : { "s3:prefix": "projects" } } } ] }
La condizione limita l'utente a elencare solo le chiavi degli oggetti con il prefisso projects
. Il rifiuto esplicito aggiunto rifiuta all'utente la richiesta di elencazione delle chiavi con qualsiasi altro prefisso, indipendentemente da quale altra autorizzazione possa avere l'utente. Ad esempio, è possibile che l'utente ottenga l'autorizzazione a elencare le chiavi degli oggetti senza alcuna limitazione in base agli aggiornamenti alla precedente policy utente oppure tramite una policy di bucket. Poiché il rifiuto esplicito è sempre prevalente, la richiesta dell'utente di elencare chiavi diverse dal prefisso projects
viene rifiutata.
Policy del bucket
Se si aggiunge l'elemento Principal
alla policy utente precedente, identificando l'utente, si ottiene una policy di bucket come illustrato.
{ "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:::awsexamplebucket1
", "Condition" : { "StringEquals" : { "s3:prefix": "projects" } } }, { "Sid":"statement2", "Effect":"Deny", "Principal": { "AWS": "arn:aws:iam::123456789012
:user/bucket-owner
" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::awsexamplebucket1
", "Condition" : { "StringNotEquals" : { "s3:prefix": "projects" } } } ] }
Verifica la politica con AWS CLI
È possibile testare la politica utilizzando il seguente list-object
AWS CLI comando. Nel comando, vengono fornite le credenziali utente utilizzando il parametro --profile
. Per ulteriori informazioni sulla configurazione e l'utilizzo di AWS CLI, vedereSviluppo con Amazon S3 tramite la AWS CLI.
aws s3api list-objects --bucket
awsexamplebucket1
--prefix examplefolder --profile AccountADave
Se il bucket è abilitato al controllo delle versioni, per elencare gli oggetti nel bucket, è necessario concedere l's3:ListBucketVersions
autorizzazione nella politica precedente, anziché l'autorizzazione. s3:ListBucket
Questa autorizzazione supporta la chiave di condizione s3:prefix
.
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 il richiedente può restituire in un Bucket () o in una richiesta. GET ListObjects ListObjectVersions Per impostazione predefinita, API restituisce 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.