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à.
È possibile utilizzare in linguaggio delle policy di accesso per specificare le condizioni quando si concedono le autorizzazioni. È possibile utilizzare l'elemento opzionale Condition
, o blocco Condition
, per specificare le condizioni per l'entrata in vigore 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 di condizione per Amazon S3. Per un elenco completo delle azioni, delle chiavi di condizione e delle risorse di Amazon S3 che è possibile specificare nelle policy, consulta Azioni, risorse e chiavi di condizione per Amazon S3 in Riferimento alle autorizzazioni di servizio.
Per ulteriori informazioni sulle autorizzazioni alle operazioni API S3 per tipi di risorse S3, consulta Autorizzazioni necessarie per le operazioni API di Amazon S3.
Esempi: Chiavi di condizione di Amazon S3 per operazioni sugli oggetti
Gli esempi seguenti mostrano come si possono usare le chiavi di condizione specifiche di Amazon S3 per le operazioni sugli oggetti. Per un elenco completo delle azioni, delle chiavi di condizione e delle risorse di Amazon S3 che è possibile specificare nelle policy, consulta Azioni, risorse e chiavi di condizione per Amazon S3 in Riferimento alle autorizzazioni di servizio.
Per ulteriori informazioni sulle autorizzazioni alle operazioni API S3 per tipi di risorse S3, consulta Autorizzazioni necessarie per le operazioni API di Amazon S3.
Molte delle policy di esempio mostrano come è possibile utilizzare le chiavi di condizione con le operazioni PUT Object. Le operazioni PUT Object permettono intestazioni specifiche della lista di controllo degli accessi (ACL) che è possibile utilizzare per concedere autorizzazioni basate sulle liste ACL. Utilizzando queste chiavi di condizione, è possibile impostare una condizione per richiedere autorizzazioni di accesso specifiche quando l'utente carica un oggetto. Puoi anche concedere autorizzazioni basate su ACL con l'operazione. PutObjectAcl Per ulteriori informazioni, consulta il riferimento PutObjectAclall'API Amazon S3 Amazon Simple Storage Service. Per ulteriori informazioni su ACLs, consultaPanoramica delle liste di controllo accessi (ACL).
Argomenti
Esempio 1: concessione dell'autorizzazione a s3:PutObject
che richiede che gli oggetti siano memorizzati 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 a caricare oggetti con la condizione che Jane richieda sempre la crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3). L'amministratore del conto A può specificare questo requisito utilizzando la chiave di condizione s3:x-amz-server-side-encryption
, come mostrato. La coppia chiave-valore nel seguente blocco Condition
specifica la chiave di condizione s3:x-amz-server-side-encryption
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 all'indirizzo s3:PutObject
dell'autorizzazione a copiare oggetti con una restrizione sull'origine della 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:
-
Consente di copiare gli oggetti solo dal bucket di origine specificato (ad esempio,
).amzn-s3-demo-source-bucket
-
Consente di copiare gli oggetti dal bucket di origine specificato e solo gli oggetti il cui prefisso del nome della chiave inizia con un prefisso specifico, come ad esempio
(ad esempio,public/
).amzn-s3-demo-source-bucket
/public/*
-
Consente di copiare solo un oggetto specifico dal bucket di origine (ad esempio,
).amzn-s3-demo-source-bucket
/example.jpg
La seguente policy del bucket concede a un utente (
) l'autorizzazione Dave
s3:PutObject
. Questa policy gli consente di copiare gli oggetti solo a condizione che la richiesta includa l'intestazione s3:x-amz-copy-source
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/*
" } } } ] }
Verifica 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, consulta Developing with Amazon S3 using the AWS CLI nell'Amazon S3 API Reference.
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 dell'oggetto esatto, come mostrato 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
Si supponga che l'account A possieda un bucket con controllo delle versioni abilitato. Il bucket ha diverse versioni dell'oggetto
. L'amministratore dell'account A vuole ora concedere all'utente HappyFace.jpg
il permesso di ottenere solo una versione specifica dell'oggetto. L'amministratore dell'account può ottenere questo risultato concedendo all'utente Dave
l'autorizzazione Dave
s3:GetObjectVersion
in modo condizionato, come mostrato 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 con controllo delle versioni abilitato specificato,
deve 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 GetObjectnel riferimento all'API di riferimento di Amazon Simple Storage Service.
{ "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 in base ai tag degli oggetti
Per esempi su come utilizzare le chiavi di condizione del tagging degli oggetti con le operazioni di Amazon S3, consulta Tagging e policy di controllo degli accessi.
Esempio 5: Limitazione dell'accesso in base all'ID Account AWS del proprietario del bucket
Puoi utilizzare la chiave aws:ResourceAccount
o s3:ResourceAccount
condition per scrivere policy endpoint IAM o Virtual Private Cloud (VPC) che limitano l'accesso di utenti, ruoli o applicazioni ai bucket Amazon S3 di proprietà di un ID specifico. Account AWS È possibile utilizzare queste chiavi di condizione per limitare l'accesso dei client all'interno del VPC ai bucket non di proprietà dell'utente.
Tuttavia, tieni presente che alcuni AWS servizi si basano sull'accesso a bucket gestiti. AWS Pertanto, l'utilizzo della chiave aws:ResourceAccount
o s3:ResourceAccount
nelle policy IAM potrebbe influire sull'accesso a queste risorse. Per ulteriori informazioni, consulta le seguenti risorse:
-
Limitazione dell'accesso ai bucket in un Account AWS specificato nella Guida di AWS PrivateLink
-
Limitazione dell'accesso ai bucket utilizzati da Amazon ECRnella Guida di Amazon ECR
-
Fornisci l'accesso richiesto a Systems Manager per i bucket Amazon S3 AWS gestiti nella guida AWS Systems Manager
Per ulteriori informazioni sulle chiavi di condizione aws:ResourceAccount
e s3:ResourceAccount
ed esempi che mostrano come usarle, consulta Limitare l'accesso ai bucket Amazon S3 di proprietà di specifici Account AWS
Esempio 6: Richiesta di una versione TLS minima
È possibile utilizzare la chiave di condizione s3:TlsVersion
per scrivere policy IAM, endpoint di cloud privato virtuale (VPCE) o bucket che limitano l'accesso di utenti o applicazioni ai bucket Amazon S3 in base alla versione TLS utilizzata dal client. È possibile utilizzare questa chiave di condizione per scrivere policy che richiedono una versione TLS minima.
Il seguente esempio di policy del bucket nega le richieste di PutObject
da parte di client che hanno una versione di TLS precedente a 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:::amzn-s3-demo-bucket1
",
"arn:aws:s3:::amzn-s3-demo-bucket1
/*"
],
"Condition": {
"NumericLessThan": {
"s3:TlsVersion": 1.2
}
}
}
]
}
Il seguente esempio di policy del bucket consente le richieste di PutObject
da parte di client che hanno una versione TLS 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 alcuni principali da un'istruzione Deny
La seguente policy dei bucket nega a s3:GetObject
l'accesso a
, tranne che ai principali con il numero di account amzn-s3-demo-bucket
. Per utilizzare questa policy di esempio, sostituisci 123456789012
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
Esempio 8: imporre ai client di caricare oggetti in modo condizionale in base ai nomi delle chiavi degli oggetti o ETags
Con le scritture condizionali, è possibile aggiungere un'intestazione aggiuntiva alle richieste di WRITE
per specificare le precondizioni dell'operazione S3. Questa intestazione specifica una condizione che, se non viene soddisfatta, comporta il fallimento dell'operazione S3. Ad esempio, si può evitare la sovrascrittura di dati esistenti convalidando che non vi siano oggetti con lo stesso nome di chiave già presenti nel bucket durante il caricamento degli oggetti. In alternativa, puoi controllare il tag di entità di un oggetto (ETag) in Amazon S3 prima di scrivere un oggetto.
Per esempi di policy di bucket che utilizzano le condizioni in una policy di bucket per imporre scritture condizionali, consulta Applicazione delle scritture condizionali sui bucket Amazon S3.
Esempi: Chiavi di condizione di Amazon S3 per le operazioni sui bucket
I seguenti esempi di policy mostrano come sia possibile utilizzare chiavi di condizione specifiche di Amazon S3 per le operazioni sui bucket.
Argomenti
Esempio 1: concessione dell'autorizzazione a s3:GetObject
con una condizione su un indirizzo IP
È possibile concedere agli utenti autenticati il permesso di utilizzare l'azione s3:GetObject
se la richiesta proviene da un intervallo specifico di indirizzi IP (ad esempio,
), a meno che l'indirizzo IP non sia uno di quelli che si desidera escludere (ad esempio, 192.0.2.*
). Nel blocco 192.0.2.188
Condition
, IpAddress
e NotIpAddress
sono condizioni e a ciascuna condizione viene fornita una coppia chiave-valore da valutare. Entrambe le coppie chiave-valore in questo esempio utilizzano la aws:SourceIp
AWS chiave wide. Per utilizzare questa policy di esempio, sostituisci
con le tue informazioni.user input placeholders
Nota
I valori delle chiavi IPAddress
e NotIpAddress
specificati nel blocco Condition
utilizzano la notazione CIDR, come descritto in RFC 4632. Per ulteriori informazioni, consulta http://www.rfc-editor. org/rfc/rfc
{ "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 utilizzare altre chiavi di condizione AWS a livello di ‐wide 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 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 invece è necessario utilizzare una chiave di condizione specifica di Amazon S3. Per un elenco completo dei tipi di risorse e delle chiavi di condizione supportate per Amazon S3, consulta Azioni, risorse e chiavi di condizione per Amazon S3 in Riferimento alle autorizzazioni di servizio.
Per ulteriori informazioni sulle autorizzazioni alle operazioni API S3 per tipi di risorse S3, consulta Autorizzazioni necessarie per le operazioni API di Amazon 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 ListObjectsV2Funzionamento dell'API sui nomi delle chiavi con un prefisso specifico. Se si è il proprietario del bucket, si può usare questa chiave di condizione per limitare un utente a elencare il contenuto di un prefisso specifico nel bucket. La chiave di condizione s3:prefix
è utile se gli oggetti del bucket sono organizzati per prefissi di nomi di 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, mentre l'API Amazon S3 supporta solo bucket e oggetti. Ad esempio, se si hanno due oggetti con i nomi delle chiavi
e public/object1.jpg
la console mostra gli oggetti sotto la cartella public/object2.jpg
. Nell'API Amazon S3 questi sono oggetti con prefissi, non oggetti nelle 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. public
Nel seguente scenario, il proprietario del bucket e l'account padre a cui appartiene l'utente sono gli stessi. Il proprietario del bucket può quindi utilizzare una policy del bucket o una policy dell'utente per concedere l'accesso. Per ulteriori informazioni su altre chiavi di condizione che è possibile utilizzare con l'operazione ListObjectsV2
API, consulta ListObjectsV2.
Nota
Se per il bucket è abilitato il controllo delle versioni, per elencare gli oggetti nel bucket è necessario concedere l'autorizzazione s3:ListBucketVersions
nelle policy seguenti, invece dell'autorizzazione s3:ListBucket
. Il permesso s3:ListBucketVersions
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'istruzione Condition
limita l'utente a elencare solo le chiavi degli oggetti che hanno il prefisso
. L'aggiunta dell'istruzione esplicita projects
Deny
impedisce all'utente di elencare le chiavi con qualsiasi altro prefisso, indipendentemente dalle altre autorizzazioni di cui dispone. Ad esempio, è possibile che l'utente ottenga l'autorizzazione a elencare le chiavi degli oggetti senza alcuna restrizione, sia attraverso l'aggiornamento della precedente policy dell'utente sia attraverso una policy del bucket. Poiché le istruzioni esplicite Deny
sovrascrivono sempre le istruzioni Allow
, 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'elemento Principal
alla policy utente di cui sopra, che identifica l'utente, si ottiene una policy del bucket, come mostrato 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
" } } } ] }
Verificate 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, consulta Developing with Amazon S3 using the AWS CLI nel Amazon S3 API Reference.
aws s3api list-objects --bucket
--prefix
amzn-s3-demo-bucket
projects
--profileAccountA
Esempio 3: impostazione del numero massimo di chiavi
Puoi 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 operazioni API restituiscono fino a 1.000 chiavi. Per un elenco di operatori di condizione numerici che è possibile utilizzare con s3:max-keys
e i relativi esempi, consulta Operatori di condizione numerici nella Guida per l'utente di IAM.