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à.
IAMJSONelementi politici: Condition
L'elemento Condition
(o blocco Condition
) consente di specificare le condizioni di attivazione di una policy. L'elemento Condition
è facoltativo. Nell'elemento Condition
è possibile creare espressioni in cui utilizzare operatori condizionali (uguale a, meno di, e altri) per confrontare le chiavi di contesto e i valori della policy rispetto alle chiavi e ai valori del contesto della richiesta. Per ulteriori informazioni sul contesto della richiesta, consultare Componenti di una richiesta.
"Condition" : { "
{condition-operator}
" : { "{condition-key}
" : "{condition-value}
" }}
La chiave di contesto specificata in una condizione della policy può essere una chiave di contesto della condizione globale o una chiave di condizione specifica del servizio. Le chiavi di contesto della condizione globale presentano il prefisso aws:
. Le chiavi di contesto specifiche del servizio presentano il prefisso del servizio. Ad esempio, Amazon ti EC2 consente di scrivere una condizione utilizzando la chiave di ec2:InstanceType
contesto, che è unica per quel servizio. Per visualizzare le chiavi di IAM contesto specifiche del servizio con il iam:
prefisso, consulta. IAMe chiavi di contesto delle AWS STS condizioni
I nomi delle chiavi di contesto non fanno distinzione tra maiuscole e minuscole. Ad esempio, se si include la chiave di contesto aws:SourceIP
è identico al test per la chiave AWS:SourceIp
. La distinzione tra maiuscole e minuscole dei valori delle chiavi di contesto dipende dall'operatore di condizione utilizzato. Ad esempio, la seguente condizione include l'operatore StringEquals
per rendere possibile la corrispondenza solo delle richieste effettuate da johndoe
. Agli utenti denominati JohnDoe
viene negato l'accesso.
"Condition" : { "StringEquals" : { "aws:username" : "johndoe" }}
Le seguenti condizione utilizza l'operatore StringEqualsIgnoreCase per corrispondere agli utenti denominati johndoe
o JohnDoe
.
"Condition" : { "StringEqualsIgnoreCase" : { "aws:username" : "johndoe" }}
Alcune chiavi di contesto supportano le coppie chiave-valore che consentono di specificare parte del nome della chiave. Gli esempi includono la chiave di aws:RequestTag/tag-key contesto AWS KMS kms:EncryptionContext:
, la e la chiave di ResourceTag/tag-key contesto supportate da più servizi.encryption_context_key
-
Se utilizzi la chiave di
ResourceTag/
contesto per un servizio come Amazon EC2, devi specificare un nome chiave pertag-key
tag-key
. -
I nomi delle chiavi non fanno distinzione tra maiuscole e minuscole. Questo significa che se specifichi
"aws:ResourceTag/TagKey1": "Value1"
nell'elemento condizione della policy, la condizione corrisponderà a una chiave di tag della risorsa denominataTagKey1
otagkey1
, ma non a entrambe. -
AWS i servizi che supportano questi attributi potrebbero consentire di creare più nomi di chiavi che differiscono solo in base alle maiuscole e alle minuscole. Ad esempio, puoi taggare un'EC2istanza Amazon con
ec2=test1
eEC2=test2
. Quando utilizzi una condizione come"aws:ResourceTag/EC2": "test1"
per consentire l'accesso alla risorsa, il nome della chiave corrisponde a entrambi i tag, ma solo a un valore. Questo può causare errori di condizione imprevisti.
Importante
Come best practice, verifica che i membri del tuo account seguano una convenzione di denominazione coerente quando assegnano nomi agli attributi di coppie chiave- valore. Alcuni esempi includono tag o contesti di crittografia AWS KMS
. Puoi imporlo utilizzando la chiave di aws:TagKeyscontesto per l'etichettatura o la kms:EncryptionContextKeys
per il contesto di AWS KMS crittografia.
-
Per un elenco di tutti gli operatori di condizione e per una descrizione del funzionamento di ciascun operatore, consulta Operatori di condizione
-
Se non è diversamente specificato, tutte le chiavi di contesto possono avere valori multipli. Per ulteriori informazioni sulla gestione delle chiavi di contesto che dispongono di più valori, consulta Chiavi di contesto multivalore
-
Per un elenco di tutte le chiavi di contesto disponibili a livello globale, consulta AWS chiavi di contesto della condizione globale.
-
Per le chiavi di contesto delle condizioni definite da ciascun servizio, consulta Azioni, risorse e chiavi di condizione per i AWS servizi.
Il contesto della richiesta
Quando un preside effettua una richiesta a AWS, AWS raccoglie le informazioni sulla richiesta in un contesto di richiesta. Le informazioni vengono utilizzate per valutare e autorizzare la richiesta. È possibile utilizzare l'Condition
elemento di una JSON politica per testare chiavi di contesto specifiche rispetto al contesto della richiesta. Ad esempio, puoi creare una policy che utilizzi la chiave aws: CurrentTime context per consentire a un utente di eseguire azioni solo entro un intervallo di date specifico.
Quando viene inviata una richiesta, AWS valuta ogni chiave di contesto nella policy e restituisce il valore true, false, not present e occasionalmente null (una stringa di dati vuota). Una chiave di contesto che non è presente nella richiesta è considerata una mancata corrispondenza. Ad esempio, la seguente politica consente di rimuovere il proprio dispositivo di autenticazione a più fattori (MFA), ma solo se l'accesso è stato effettuato MFA nell'ultima ora (3.600 secondi).
{ "Version": "2012-10-17", "Statement": { "Sid": "AllowRemoveMfaOnlyIfRecentMfa", "Effect": "Allow", "Action": [ "iam:DeactivateMFADevice" ], "Resource": "arn:aws:iam::*:user/${aws:username}", "Condition": { "NumericLessThanEquals": {"aws:MultiFactorAuthAge": "3600"} } } }
Il contesto della richiesta può restituire i seguenti valori:
-
Vero: se il richiedente ha effettuato l'accesso utilizzando MFA l'ultima ora o meno, la condizione restituisce true.
-
Falso: se il richiedente ha effettuato l'accesso utilizzando MFA più di un'ora fa, la condizione restituisce false.
-
Non presente: se il richiedente ha effettuato una richiesta utilizzando le chiavi di accesso IAM utente in AWS CLI or AWS API, la chiave non è presente. In questo caso, la chiave non è presente e non viene restituita la corrispondenza.
-
Null: per le chiavi di contesto definite dall'utente, ad esempio passando tag in una richiesta, è possibile includere una stringa vuota. In questo caso, il valore nel contesto della richiesta è null. Un valore nullo potrebbe restituire true in alcuni casi. Ad esempio, se utilizzi l'operatore di condizione multivalore
ForAllValues
con la chiave di contestoaws:TagKeys
, è possibile ottenere risultati imprevisti se il contesto della richiesta restituisce null. Per ulteriori informazioni, consulta aws: TagKeys andChiavi di contesto multivalore.
Il blocco condizione
L'esempio seguente mostra il formato di base di un elemento Condition
:
"Condition": {"StringLike": {"s3:prefix": ["janedoe/*"]}}
Un valore dalla richiesta è rappresentato da una chiave di contesto, in questo caso s3:prefix
. Il valore della chiave di contesto viene confrontato con un valore specificato come valore letterale, ad esempio janedoe/*
. Il tipo di confronto da eseguire viene specificato dall'operatore di condizione (in questo caso, StringLike
). Puoi creare condizioni che confrontano stringhe, date, numeri e altro ancora, utilizzando tipiche comparazioni booleane come ad esempio "uguale a", "maggiore di" e "minore di". Quando si utilizzano operatori o ARNoperatori di stringa, è possibile utilizzare anche una variabile di policy nel valore della chiave di contesto. L'esempio seguente include la variabile aws:username
.
"Condition": {"StringLike": {"s3:prefix": ["${aws:username}/*"]}}
In alcuni casi, le chiavi di contesto possono contenere più valori. Ad esempio, una richiesta ad Amazon DynamoDB potrebbe richiedere la restituzione o l'aggiornamento di più attributi di una tabella. Una policy per l'accesso alle tabelle di DynamoDB può includere la chiave dynamodb:Attributes
che contiene tutti gli attributi elencati nella richiesta. Puoi testare i vari attributi nella richiesta a fronte di un elenco di attributi consentiti in una policy, utilizzando operatori predefiniti nell'elemento Condition
. Per ulteriori informazioni, consulta Chiavi di contesto multivalore.
Quando la policy viene valutata durante una richiesta, AWS sostituisce la chiave con il valore corrispondente della richiesta. (In questo esempio, AWS utilizzerebbe la data e l'ora della richiesta.) Dopo la valutazione della condizione, viene restituito un risultato True o False, che viene poi utilizzato per decidere se la policy nel suo complesso deve consentire o rifiutare la richiesta.
Valori multipli in una condizione
Un elemento Condition
può contenere più operatori di condizioni, ciascuno delle quali può includere a sua volta più coppie chiave-valore. L'immagine seguente illustra questo scenario.
Per ulteriori informazioni, consulta Chiavi di contesto multivalore.