Esempi di policy Bucket che utilizzano chiavi condizionali - Amazon Simple Storage Service

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'Conditionelemento 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).

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 user input placeholders con le tue informazioni.

aws s3api put-object --bucket amzn-s3-demo-bucket --key HappyFace.jpg --body c:\HappyFace.jpg --server-side-encryption "AES256" --profile AccountAadmin

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 pubblico/ (ad esempio,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-sourceintestazione e che il valore dell'intestazione specifichi il prefisso del nome della /amzn-s3-demo-source-bucket/public/* chiave. Per utilizzare questa policy di esempio, sostituisci user input placeholders con le tue informazioni.

{ "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:::amzn-s3-demo-source-bucket/*" }, { "Sid": "Deny your user permission to upload object if copy source is not /bucket/prefix", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Dave" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*", "Condition": { "StringNotLike": { "s3:x-amz-copy-source": "amzn-s3-demo-source-bucket/public/*" } } } ] }
Prova la politica con AWS CLI

È possibile verificare l'autorizzazione utilizzando il AWS CLI copy-objectcomando. 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 Dave credenziali utente utilizzando il parametro. --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 user input placeholders con le tue informazioni.

aws s3api copy-object --bucket amzn-s3-demo-source-bucket --key HappyFace.jpg --copy-source amzn-s3-demo-source-bucket/public/PublicHappyFace1.jpg --profile AccountADave
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 user input placeholders con le tue informazioni.

"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 HappyFace.jpg. L'amministratore dell'account A ora desidera concedere all'utente il Dave permesso di ottenere solo una versione specifica dell'oggetto. L'amministratore dell'account può eseguire questa operazione concedendo all'utente Dave l's3:GetObjectVersionautorizzazione 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, è Dave necessario conoscere l'ID esatto della versione dell'oggetto. Per utilizzare questa policy di esempio, sostituisci user input placeholders con le tue informazioni.

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-objectcomando 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 OutputFile.jpg file.

aws s3api get-object --bucket amzn-s3-demo-bucket --key HappyFace.jpg OutputFile.jpg --version-id AaaHbAQitwiL_h47_44lRO2DDfLlBO5e --profile AccountADave

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:

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 nella AWS Blog sullo storage.

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 user input placeholders con le tue informazioni.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1", "arn:aws:s3:::amzn-s3-demo-bucket1/*" ], "Condition": { "NumericLessThan": { "s3:TlsVersion": 1.2 } } } ] }

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:::amzn-s3-demo-bucket1", "arn:aws:s3:::amzn-s3-demo-bucket1/*" ], "Condition": { "NumericGreaterThan": { "s3:TlsVersion": 1.1 } } } ] }

Esempio 7: esclusione di determinati principi da una dichiarazione Deny

La seguente policy sui bucket nega s3:GetObject l'accesso aamzn-s3-demo-bucket, ad eccezione dei principali con il numero di conto 123456789012. Per utilizzare questa politica di esempio, user input placeholders sostituiscila con le tue informazioni.

{ "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.

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:GetObjectazione se la richiesta proviene da un intervallo specifico di indirizzi IP (ad esempio,192.0.2.*), a meno che l'indirizzo IP non sia uno che si desidera escludere (ad esempio,). 192.0.2.188 Nel 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 user input placeholders con le tue informazioni.

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:::amzn-s3-demo-bucket/*", "Condition" : { "IpAddress" : { "aws:SourceIp": "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 public/object1.jpg e public/object2.jpg, la console mostra gli oggetti sotto il pubblico 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.

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'ListObjectsV2APIoperazione, vedere ListObjectsV2.

Nota

Se il bucket è abilitato al controllo delle versioni, per elencare gli oggetti nel bucket, è necessario concedere l's3:ListBucketVersionsautorizzazione nelle seguenti politiche, anziché l'autorizzazione. s3:ListBucket L's3:ListBucketVersionsautorizzazione supporta anche la chiave di condizione. s3:prefix

Policy utente

La seguente politica utente concede l's3:ListBucketautorizzazione (vedi ListObjectsV2) con un'Conditionistruzione che richiede all'utente di specificare un prefisso nella richiesta con un valore di. projects Per utilizzare questa policy di esempio, sostituisci user input placeholders con le tue informazioni.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Action": "s3:ListBucket", "Resource":"arn:aws:s3:::amzn-s3-demo-bucket", "Condition" : { "StringEquals" : { "s3:prefix": "projects" } } }, { "Sid":"statement2", "Effect":"Deny", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Condition" : { "StringNotEquals" : { "s3:prefix": "projects" } } } ] }

L'Conditionistruzione limita l'utente a elencare solo le chiavi degli oggetti che hanno il projects prefisso. L'Denyistruzione 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 projects prefisso, la richiesta viene rifiutata.

Policy del bucket

Se si aggiunge l'Principalelemento 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 user input placeholders con le tue informazioni.

{ "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:::amzn-s3-demo-bucket", "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:::amzn-s3-demo-bucket", "Condition" : { "StringNotEquals" : { "s3:prefix": "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 amzn-s3-demo-bucket --prefix projects --profile AccountA

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.