Chiavi di condizione di Amazon S3 - Amazon Simple Storage Service

Chiavi di condizione di Amazon S3

La sintassi della policy di accesso consente di specificare le condizioni al momento dell'assegnazione delle autorizzazioni. Per specificare le condizioni per la validità di una policy, è possibile utilizzare l'elemento facoltativo Condition o il blocco Condition per specificare le condizioni per la validità di una policy. È possibile utilizzare le chiavi predefinite per tutto AWS e le chiavi specifiche di Amazon S3 per specificare le condizioni in una policy di accesso di Amazon S3.

Nell'elemento Condition è possibile creare espressioni con operatori booleani (uguale a, minore di e così via) per soddisfare la condizione rispetto ai valori contenuti nella richiesta. Ad esempio, quando si assegna a un utente l'autorizzazione per caricare un oggetto, il proprietario del bucket può richiedere che l'oggetto sia leggibile pubblicamente aggiungendo la condizione StringEquals come mostrato di seguito.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::awsexamplebucket1/*" ], "Condition": { "StringEquals": { "s3:x-amz-acl": "public-read" } } } ] }

Nell'esempio, il blocco Condition specifica la condizione StringEquals che viene applicata alla coppia chiave-valore "s3:x-amz-acl":["public-read"]. Esiste un insieme predefinito di chiavi che possono essere utilizzate nell'espressione di una condizione. L'esempio utilizza la chiave di condizione s3:x-amz-acl. Questa condizione prevede che l'utente includa l'intestazione x-amz-acl con il valore public-read in ogni richiesta PUT object.

Chiavi di condizioni valide per tutto AWS

AWS fornisce un set di chiavi comuni che sono supportate da tutti i servizi AWS che supportano le policy. Queste chiavi sono chiamate chiavi valide per tutto AWS e usano il prefisso aws:. Per un elenco completo di chiavi di condizione valide per tutto AWS, consulta Chiavi AWS disponibili per le condizioni nella Guida per l'utente di IAM. In Amazon S3 è possibile utilizzare le chiavi di condizione valide per tutto AWS. La seguente policy di bucket di esempio concede agli utenti autenticati l'autorizzazione per utilizzare l'operazione s3:GetObject se la richiesta proviene da un intervallo specifico di indirizzi IP (192.0.2.0.*), escluso l'indirizzo IP 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 del presente esempio utilizzano la chiave aws:SourceIp valida per tutto AWS.

Nota

I valori chiave IPAddress e NotIpAddress specificati nella condizione utilizzano la notazione CIDR 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:::awsexamplebucket1/*", "Condition" : { "IpAddress" : { "aws:SourceIp": "192.0.2.0/24" }, "NotIpAddress" : { "aws:SourceIp": "192.0.2.188/32" } } } ] }

È anche possibile utilizzare altre chiavi di condizione valide per tutto AWS nelle policy di Amazon S3. Ad esempio, è possibile specificare le chiavi di condizione aws:SourceVpce e aws:SourceVpc nelle policy di bucket per gli endpoint VPC. Per esempi specifici consulta Controllo dell'accesso dagli endpoint VPC con policy di bucket.

Nota

Per alcune chiavi di condizione globali AWS, 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 di tipi di risorse e chiavi di condizione supportate per Amazon S3, consulta Operazioni, risorse e condizioni.

Chiavi di condizione specifiche di Amazon S3

È possibile utilizzare le chiavi di condizione di Amazon S3 con operazioni specifiche di Amazon S3. Ogni chiave di condizione esegue la mappatura all'intestazione di richiesta dello stesso nome autorizzata dall'API su cui può essere impostata la condizione. Le chiavi di condizione specifiche di Amazon S3 determinano il comportamento delle intestazioni di richiesta con lo stesso nome. Per un elenco completo delle chiavi di condizione specifiche di Amazon S3, consulta Operazioni, risorse e chiavi di condizione per Amazon S3.

Ad esempio, la chiave di condizione s3:x-amz-acl che può essere utilizzata per assegnare l'autorizzazione della condizione per l'autorizzazione s3:PutObject definisce il comportamento dell'intestazione di richiesta x-amz-acl supportata dall'API PUT Object. La chiave di condizione s3:VersionId che può essere utilizzata per assegnare l'autorizzazione condizionale per l'autorizzazione s3:GetObjectVersion definisce il comportamento del parametro di query versionId impostato in una richiesta GET Object.

La seguente policy del bucket concede l'autorizzazione s3:PutObject per due Account AWS se la richiesta include l'intestazione x-amz-acl che rende l'oggetto pubblicamente leggibile. Il blocco Condition utilizza la condizione StringEquals ed è dotato di una coppia chiave-valore, "s3:x-amz-acl":["public-read", per la valutazione. Nella coppia chiave-valore, la s3:x-amz-acl è una chiave specifica di Amazon S3, come indicato dal prefisso s3:.

{ "Version":"2012-10-17", "Statement": [ { "Sid":"AddCannedAcl", "Effect":"Allow", "Principal": { "AWS": [ "arn:aws:iam::Account1-ID:root", "arn:aws:iam::Account2-ID:root" ] }, "Action":"s3:PutObject", "Resource": ["arn:aws:s3:::awsexamplebucket1/*"], "Condition": { "StringEquals": { "s3:x-amz-acl":["public-read"] } } } ] }
Importante

Non tutte le condizioni hanno significato per tutte le operazioni. Ha senso, ad esempio, includere una condizione s3:LocationConstraint in una policy che concede l'autorizzazione s3:CreateBucket di Amazon S3. Non ha tuttavia senso includere questa condizione in una policy che concede l'autorizzazione s3:GetObject. Amazon S3 può verificare la presenza di errori semantici di questo tipo che riguardano condizioni specifiche di Amazon S3. Se tuttavia stai creando una policy per un utente IAM e includi una condizione di Amazon S3 che non è valida sotto il profilo semantico, non viene segnalato alcun errore perché IAM non può convalidare le condizioni di Amazon S3.