IAMJSONelementi politici: Condition - AWS Identity and Access Management

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

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:encryption_context_key, la e la chiave di ResourceTag/tag-key contesto supportate da più servizi.

  • Se utilizzi la chiave di ResourceTag/tag-key contesto per un servizio come Amazon EC2, devi specificare un nome chiave pertag-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 denominata TagKey1 o tagkey1, 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:EncryptionContextKeysper il contesto di AWS KMS crittografia.

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'Conditionelemento 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 contesto aws: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.

diagrammi a blocchi con operatore a due condizioni. Il primo blocco include due segnaposto con chiavi di contesto, ciascuno con più valori. Il secondo blocco di condizioni include una chiave di contesto con più valori.

Per ulteriori informazioni, consulta Chiavi di contesto multivalore.