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à.
AWS KMS chiavi di condizione
AWS KMS fornisce un set di chiavi di condizione che è possibile utilizzare nelle politiche e nelle IAM politiche chiave. Queste chiavi di condizione sono specifiche per AWS KMS. Ad esempio, è possibile utilizzare la chiave di kms:EncryptionContext:context-key
condizione per richiedere un particolare contesto di crittografia quando si controlla l'accesso a una chiave di crittografia KMS simmetrica.
Condizioni per una richiesta di operazione API
Molte chiavi AWS KMS condizionali controllano l'accesso a una KMS chiave in base al valore di un parametro nella richiesta di un' AWS KMS operazione. Ad esempio, puoi utilizzare la chiave kms: KeySpec condition in una IAM politica per consentire l'uso dell'CreateKeyoperazione solo quando il valore del KeySpec
parametro nella CreateKey
richiesta èRSA_4096
.
Questo tipo di condizione funziona anche quando il parametro non è presente nella richiesta, ad esempio quando si usa il valore predefinito del parametro. Ad esempio, puoi usare la chiave kms: KeySpec condition per consentire agli utenti di utilizzare l'CreateKey
operazione solo quando il valore del KeySpec
parametro èSYMMETRIC_DEFAULT
, che è il valore predefinito. Questa condizione consente le richieste che hanno il parametro KeySpec
con il valore SYMMETRIC_DEFAULT
e le richieste che non hanno alcun parametro KeySpec
.
Condizioni per KMS le chiavi utilizzate nelle operazioni API
Alcune chiavi AWS KMS condizionali possono controllare l'accesso alle operazioni in base a una proprietà della KMS chiave utilizzata nell'operazione. Ad esempio, puoi utilizzare la KeyOrigin condizione kms: per consentire ai principali di richiamare GenerateDataKeyuna KMS chiave solo quando Origin
la KMS chiave è. AWS_KMS
Per scoprire se una chiave di condizione può essere utilizzata in questo modo, osserva la descrizione della chiave di condizione.
L'operazione deve essere un'operazione relativa a una risorsa KMS chiave, ovvero un'operazione autorizzata per una chiave particolareKMS. Per identificare le operazioni KMS chiave relative alle risorse, nella tabella Azioni e risorse, cerca il valore di KMS key
nella Resources
colonna relativa all'operazione. Se si utilizza questo tipo di chiave condizionale con un'operazione non autorizzata per una particolare risorsa KMS chiave, ad esempio ListKeys, l'autorizzazione non è valida perché la condizione non può mai essere soddisfatta. Non vi è alcuna risorsa KMS chiave coinvolta nell'autorizzazione dell'ListKeys
operazione e nessuna KeySpec
proprietà.
I seguenti argomenti descrivono ogni chiave di AWS KMS condizione e includono esempi di istruzioni sulle politiche che illustrano la sintassi delle politiche.
Utilizzo di operatori con chiavi di condizione
Quando una condizione di policy confronta due set di valori, ad esempio il set di tag in una richiesta e il set di tag in una policy, è necessario spiegare AWS come confrontare i set. IAMdefinisce due operatori di set ForAnyValue
eForAllValues
, a tal fine. Utilizza gli operatori solo con le chiavi di condizione multivalore che li richiedono. Non utilizzare operatori con chiavi di condizione a valore singolo. Testa sempre in modo approfondito le istruzioni di policy prima di avvalertene in un ambiente di produzione.
Le chiavi di condizione sono a valore singolo o multivalore. Per determinare se una chiave di AWS KMS condizione è a valore singolo o multivalore, consulta la colonna Tipo di valore nella descrizione della chiave di condizione.
-
Le chiavi di condizione a valore singolo hanno al massimo un valore nel contesto di autorizzazione (la richiesta o la risorsa). Ad esempio, poiché ogni API chiamata può provenire da una sola Account AWS, kms: CallerAccount è una chiave di condizione a valore singolo. Non utilizzare operatori con una chiave di condizione a valore singolo.
-
Le chiavi di condizione multivalore hanno più valori nel contesto di autorizzazione (la richiesta o la risorsa). Ad esempio, poiché ogni KMS chiave può avere più alias, kms: ResourceAliases può avere più valori. Le chiavi di condizione multivalore richiedono un operatore.
Si noti che la differenza tra chiavi di condizione a valore singolo e multivalore dipende dal numero di valori nel contesto di autorizzazione e non dal numero di valori nella condizione di policy.
avvertimento
L'utilizzo di un operatore con una chiave di condizione a valore singolo può creare un'istruzione di policy eccessivamente permissiva (o eccessivamente restrittiva). Utilizza gli operatori solo con le chiavi di condizione multivalore.
Se si crea o si aggiorna una politica che include un operatore di ForAllValues
set con le chiavi kms:EncryptionContext: context-key o aws:RequestTag/tag-key
condition, AWS KMS restituisce il seguente messaggio di errore:
OverlyPermissiveCondition: Using the ForAllValues set operator with a
single-valued condition key matches requests without the specified [encryption context or
tag] or with an unspecified [encryption context or tag]. To fix, remove
ForAllValues.
Per informazioni dettagliate sugli operatori ForAnyValue
e ForAllValues
set, consultate Uso di più chiavi e valori nella Guida per l'IAMutente. Per informazioni sul rischio di utilizzare l'operatore ForAllValues
set con una condizione a valore singolo, vedere Avviso di sicurezza: ForAllValues con chiave a valore singolo nella Guida per l'IAMutente.
Argomenti
- km: BypassPolicyLockoutSafetyCheck
- km: CallerAccount
- kms: CustomerMasterKeySpec (obsoleto)
- kms: CustomerMasterKeyUsage (obsoleto)
- km: DataKeyPairSpec
- km: EncryptionAlgorithm
- kms: chiave contestuale EncryptionContext
- km: EncryptionContextKeys
- km: ExpirationModel
- km: GrantConstraintType
- km: GrantIsFor AWSResource
- km: GrantOperations
- km: GranteePrincipal
- km: KeyAgreementAlgorithm
- km: KeyOrigin
- km: KeySpec
- km: KeyUsage
- km: MacAlgorithm
- km: MessageType
- km: MultiRegion
- km: MultiRegionKeyType
- km: PrimaryRegion
- km: ReEncryptOnSameKey
- km: RequestAlias
- km: ResourceAliases
- km: ReplicaRegion
- km: RetiringPrincipal
- km: RotationPeriodInDays
- km: ScheduleKeyDeletionPendingWindowInDays
- km: SigningAlgorithm
- km: ValidTo
- km: ViaService
- km: WrappingAlgorithm
- km: WrappingKeySpec
km: BypassPolicyLockoutSafetyCheck
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Booleano |
A valore singolo |
|
Solo policy IAM Policy delle chiavi e policy IAM |
Il tasto kms:BypassPolicyLockoutSafetyCheck
condition controlla l'accesso alle PutKeyPolicyoperazioni CreateKeyand in base al valore del BypassPolicyLockoutSafetyCheck
parametro nella richiesta.
L'esempio seguente di dichiarazione IAM politica impedisce agli utenti di aggirare il controllo di sicurezza del blocco delle politiche negando loro l'autorizzazione a creare KMS chiavi quando il valore del BypassPolicyLockoutSafetyCheck
parametro nella richiesta è CreateKey
true.
{ "Effect": "Deny", "Action": [ "kms:CreateKey", "kms:PutKeyPolicy" ], "Resource": "*", "Condition": { "Bool": { "kms:BypassPolicyLockoutSafetyCheck": true } } }
È inoltre possibile utilizzare la chiave kms:BypassPolicyLockoutSafetyCheck
condition in una IAM policy o in una policy chiave per controllare l'accesso all'operazione. PutKeyPolicy
L'esempio seguente di dichiarazione politica tratta da una politica chiave impedisce agli utenti di aggirare il controllo di sicurezza relativo al blocco delle politiche quando modificano la politica di una KMS chiave.
Invece di utilizzare un Deny
esplicito, questa istruzione di policy utilizza Allow
con l'operatore di condizione Null per consentire l'accesso solo quando la richiesta non include il parametro BypassPolicyLockoutSafetyCheck
. Quando il parametro non viene utilizzato, il valore predefinito è false
. Questa istruzione di policy leggermente più debole può essere sostituita nel raro caso in cui un bypass sia necessario.
{ "Effect": "Allow", "Action": "kms:PutKeyPolicy", "Resource": "*", "Condition": { "Null": { "kms:BypassPolicyLockoutSafetyCheck": true } } }
Consulta anche
km: CallerAccount
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa |
A valore singolo |
KMSoperazioni relative alle risorse chiave Operazioni dell'archivio delle chiavi personalizzate |
Policy delle chiavi e policy IAM |
È possibile utilizzare questa chiave di condizione per consentire o negare l'accesso a tutte le identità (utenti e ruoli) in un Account AWS. Nelle policy delle chiavi, è possibile utilizzare l'elemento Principal
per specificare le identità per le quali vale l'istruzione di policy. La sintassi per l'elemento Principal
non fornisce un modo per specificare tutte le identità in un Account AWS. Ma è possibile ottenere questo effetto combinando questa chiave di condizione con un Principal
elemento che specifica tutte le AWS identità.
È possibile utilizzarlo per controllare l'accesso a qualsiasi operazione relativa alle risorse KMS chiave, ovvero a qualsiasi AWS KMS operazione che utilizza una chiave particolareKMS. Per identificare le operazioni KMS chiave relative alle risorse, nella tabella Azioni e risorse, cerca il valore di KMS key
nella Resources
colonna relativa all'operazione. È valido anche per le operazioni che gestiscono gli archivi delle chiavi personalizzate.
Ad esempio, la seguente istruzione di policy chiave dimostra come utilizzare la chiave di condizione kms:CallerAccount
. Questa dichiarazione rientra nella politica chiave Chiave gestita da AWS di AmazonEBS. Combina un Principal
elemento che specifica tutte le AWS identità con la chiave kms:CallerAccount
condizionale per consentire efficacemente l'accesso a tutte le identità in 111122223333. Account AWS Contiene una chiave di AWS KMS condizione aggiuntiva (kms:ViaService
) per limitare ulteriormente le autorizzazioni autorizzando solo le richieste che arrivano tramite AmazonEBS. Per ulteriori informazioni, consulta km: ViaService.
{ "Sid": "Allow access through EBS for all principals in the account that are authorized to use EBS", "Effect": "Allow", "Principal": {"AWS": "*"}, "Condition": { "StringEquals": { "kms:CallerAccount": "111122223333", "kms:ViaService": "ec2.us-west-2.amazonaws.com" } }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*" }
kms: CustomerMasterKeySpec (obsoleto)
La chiave di condizione kms:CustomerMasterKeySpec
è obsoleta. Usa invece la chiave kms: condition. KeySpec
Le chiavi di condizione kms:CustomerMasterKeySpec
e kms:KeySpec
funzionano allo stesso modo. Solo i nomi differiscono. Ti consigliamo di utilizzare kms:KeySpec
. Tuttavia, per evitare di interrompere le modifiche, AWS KMS supporta entrambe le chiavi di condizione.
kms: CustomerMasterKeyUsage (obsoleto)
La chiave di condizione kms:CustomerMasterKeyUsage
è obsoleta. Usa invece la chiave kms: condition. KeyUsage
Le chiavi di condizione kms:CustomerMasterKeyUsage
e kms:KeyUsage
funzionano allo stesso modo. Solo i nomi differiscono. Ti consigliamo di utilizzare kms:KeyUsage
. Tuttavia, per evitare di interrompere le modifiche, AWS KMS supporta entrambe le chiavi di condizione.
km: DataKeyPairSpec
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa |
A valore singolo |
|
Policy delle chiavi e policy IAM |
È possibile utilizzare questa chiave di condizione per controllare l'accesso alle GenerateDataKeyPairWithoutPlaintextoperazioni GenerateDataKeyPairand in base al valore del KeyPairSpec
parametro nella richiesta. Ad esempio, è possibile consentire agli utenti di generare solo determinati tipi di coppie di chiavi di dati.
L'esempio seguente di dichiarazione sulla politica chiave utilizza la chiave kms:DataKeyPairSpec
condition per consentire agli utenti di utilizzare la KMS chiave per generare solo coppie di chiavi di RSA dati.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext" ], "Resource": "*", "Condition": { "StringLike": { "kms:DataKeyPairSpec": "RSA*" } } }
Consulta anche
km: EncryptionAlgorithm
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa |
A valore singolo |
|
Policy delle chiavi e policy IAM |
È possibile utilizzare la chiave di condizione kms:EncryptionAlgorithm
per controllare l'accesso alle operazioni di crittografia in base all'algoritmo di crittografia usato nell'operazione. Per quanto riguarda Encrypt, Decrypt e ReEncryptOperations, controlla l'accesso in base al valore del EncryptionAlgorithmparametro nella richiesta. Per le operazioni che generano chiavi di dati e coppie di chiavi di dati, controlla l'accesso in base all'algoritmo di crittografia utilizzato per crittografare la chiave di dati.
Questa chiave condizionale non ha effetto sulle operazioni eseguite all'esterno AWS KMS, come la crittografia con la chiave pubblica in una KMS coppia di chiavi asimmetrica all'esterno di. AWS KMS
EncryptionAlgorithm parametro in una richiesta
Per consentire agli utenti di utilizzare solo un particolare algoritmo di crittografia con una KMS chiave, utilizzate una dichiarazione politica con un Deny
effetto e un operatore di StringNotEquals
condizione. Ad esempio, la seguente dichiarazione sulla politica chiave vieta ai responsabili che possono assumere il ExampleRole
ruolo di utilizzare questa KMS chiave nelle operazioni crittografiche specificate, a meno che l'algoritmo di crittografia contenuto nella richiesta non sia RSAES_OAEP_SHA_256
un algoritmo di crittografia asimmetrico utilizzato con le chiavi. RSA KMS
A differenza di un'informativa che consente a un utente di utilizzare un particolare algoritmo di crittografia, una dichiarazione politica con una doppia negazione come questa impedisce ad altre politiche e concessioni per questa KMS chiave di consentire a questo ruolo di utilizzare altri algoritmi di crittografia. L'informativa contenuta Deny
in questa dichiarazione politica chiave ha la precedenza su qualsiasi politica o IAM politica chiave che abbia un Allow
effetto e ha la precedenza su tutte le concessioni relative a questa chiave e ai suoi principi. KMS
{ "Sid": "Allow only one encryption algorithm with this asymmetric KMS key", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*" ], "Resource": "*", "Condition": { "StringNotEquals": { "kms:EncryptionAlgorithm": "RSAES_OAEP_SHA_256" } } }
Algoritmo di crittografia utilizzato per l'operazione
È possibile utilizzare anche la chiave di condizione kms:EncryptionAlgorithm
per controllare l'accesso alle operazioni basate sull'algoritmo di crittografia utilizzato nell'operazione, anche quando l'algoritmo non è specificato nella richiesta. Ciò consente di richiedere o vietare l'algoritmo SYMMETRIC_DEFAULT
, che potrebbe non essere specificato in una richiesta perché è il valore predefinito.
Questa funzione ti consente di usare la chiave di condizione kms:EncryptionAlgorithm
per controllare l'accesso alle operazioni che generano chiavi di dati e coppie di chiavi di dati. Queste operazioni utilizzano solo chiavi di crittografia simmetriche e l'algoritmo. KMS SYMMETRIC_DEFAULT
Ad esempio, questa IAM politica limita i suoi principi alla crittografia simmetrica. Nega l'accesso a qualsiasi KMS chiave nell'account di esempio per le operazioni crittografiche a meno che l'algoritmo di crittografia specificato nella richiesta o utilizzato nell'operazione non sia _. SYMMETRIC DEFAULT Include GenerateDataKey*
aggiunte GenerateDataKey, GenerateDataKeyWithoutPlaintextGenerateDataKeyPair, e GenerateDataKeyPairWithoutPlaintextalle autorizzazioni. La condizione non ha alcun effetto su queste operazioni perché utilizzano sempre un algoritmo di crittografia simmetrica.
{ "Sid": "AllowOnlySymmetricAlgorithm", "Effect": "Deny", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringNotEquals": { "kms:EncryptionAlgorithm": "SYMMETRIC_DEFAULT" } } }
Consulta anche
kms: chiave contestuale EncryptionContext
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa |
A valore singolo |
|
Policy delle chiavi e policy IAM |
È possibile utilizzare la chiave kms:EncryptionContext:context-key
condition per controllare l'accesso a una KMSchiave di crittografia simmetrica basata sul contesto di crittografia in una richiesta di operazione crittografica. Utilizza questa chiave di condizione per valutare sia la chiave sia il valore nella coppia del contesto di crittografia. Per valutare solo le chiavi del contesto di crittografia o richiedere un contesto di crittografia indipendentemente dalle chiavi o dai valori, usa la chiave kms: condition. EncryptionContextKeys
Nota
I valori delle chiavi condizionali devono essere conformi alle regole dei caratteri per le politiche e IAM le politiche chiave. Alcuni caratteri che sono validi in un contesto di crittografia non sono validi nelle policy. Potrebbe non essere possibile utilizzare questa chiave di condizione per esprimere tutti i valori validi del contesto di crittografia. Per maggiori informazioni sulle regole delineate nel documento delle policy delle chiavi, consulta la sezione Formato della policy della chiave. Per informazioni dettagliate sulle regole IAM dei documenti relativi alle policy, consultate i requisiti relativi ai IAM nomi nella Guida per l'IAMutente.
Non è possibile specificare un contesto di crittografia in un'operazione crittografica con una chiave asimmetrica o una KMS chiave. HMAC KMS Gli algoritmi e gli algoritmi asimmetrici non supportano un contesto di crittografiaMAC.
Per utilizzare la chiave di condizione kms:EncryptionContext: context-key, sostituisci la context-key
segnaposto con la chiave di contesto di crittografia. Sostituisci il context-value
segnaposto con il valore del contesto di crittografia.
"kms:EncryptionContext:
context-key
": "context-value
"
Ad esempio, la seguente chiave di condizione specifica un contesto di crittografia in cui la chiave è AppName
e il valore è ExampleApp
(AppName =
ExampleApp
).
"kms:EncryptionContext:AppName": "ExampleApp"
Si tratta di una chiave di condizione a valore singolo. La chiave nella chiave di condizione specifica una particolare chiave di contesto di crittografia (context-key). Sebbene sia possibile includere più coppie di contesti di crittografia in ogni API richiesta, la coppia di contesti di crittografia con la chiave di contesto specificata può avere un solo valore. Ad esempio, la chiave di condizione kms:EncryptionContext:Department
si applica solo alle coppie di contesto di crittografia con una chiave Department
e qualsiasi coppia di contesto di crittografia data con la chiave Department
può avere solo un valore.
Non utilizzare un operatore con la chiave di condizione kms:EncryptionContext:context-key
. Se crei un'istruzione di policy con un'azione Allow
, la chiave di condizione kms:EncryptionContext:context-key
e l'operatore ForAllValues
, la condizione consente le richieste senza contesto di crittografia e senza le richieste con coppie di contesto di crittografia che non sono specificate nella condizione di policy.
avvertimento
Non utilizzare un operatore ForAnyValue
or ForAllValues
con una chiave di condizione a valore singolo. Questi operatori possono creare una condizione di policy che non richiede valori che intendi richiedere e consente valori che intendi vietare.
Se si crea o si aggiorna una politica che include un operatore ForAllValues
set con la chiave kms:EncryptionContext: context-key, AWS KMS restituisce il seguente messaggio di errore:
OverlyPermissiveCondition:EncryptionContext: Using the
ForAllValues
set operator with a single-valued condition key matches requests without the specified
encryption context or with an unspecified encryption context. To fix, remove
ForAllValues.
Per richiedere una particolare coppia di contesto di crittografia, utilizzare la chiave di condizione kms:EncryptionContext:context-key
con l'operatore StringEquals
.
L'esempio seguente di dichiarazione sulla politica chiave consente ai responsabili che possono assumere il ruolo di utilizzare la KMS chiave in una GenerateDataKey
richiesta solo quando il contesto di crittografia nella richiesta include la coppia. AppName:ExampleApp
Altre coppie di contesto di crittografia sono consentite.
Il nome della chiave non fa distinzione tra maiuscole e minuscole. La distinzione tra maiuscole e minuscole che fa il valore è determinata dall'operatore della condizione, ad esempio StringEquals
. Per informazioni dettagliate, consultare Distinzione tra maiuscole e minuscole della condizione del contesto.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } } }
Per richiedere una coppia di contesti di crittografia e vietare tutte le altre coppie di contesti di crittografia, utilizza entrambi kms:EncryptionContext: la chiave contestuale e kms:EncryptionContextKeysnella dichiarazione politica. La seguente istruzione di policy chiave utilizza la chiave di condizione kms:EncryptionContext:AppName
per richiedere la coppia di contesto di crittografia AppName=ExampleApp
nella richiesta. Utilizza inoltre una chiave di condizione kms:EncryptionContextKeys
con l'operatore ForAllValues
per consentire solo la chiave di contesto di crittografia AppName
.
L'operatore ForAllValues
limita le chiavi di contesto di crittografia nella richiesta a AppName
. Se la condizione kms:EncryptionContextKeys
con l'operatore ForAllValues
e è stata utilizzata da sola in un'istruzione di policy, questo operatore consentirebbe le richieste senza contesto di crittografia. Tuttavia, se la richiesta non avesse un contesto di crittografia, la condizione kms:EncryptionContext:AppName
avrebbe esito negativo. Per i dettagli sull'operatore ForAllValues
set, vedere Utilizzo di più chiavi e valori nella Guida per l'IAMutente.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/KeyUsers" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" }, "ForAllValues:StringEquals": { "kms:EncryptionContextKeys": [ "AppName" ] } } }
È inoltre possibile utilizzare questa chiave di condizione per negare l'accesso a una KMS chiave per una particolare operazione. L'esempio seguente di dichiarazione sulla politica delle chiavi utilizza un Deny
effetto per vietare al principale di utilizzare la KMS chiave se il contesto di crittografia nella richiesta include una coppia di contesti di Stage=Restricted
crittografia. Questa condizione consente una richiesta con altre coppie di contesto di crittografia, incluse le coppie di contesto di crittografia con la chiave Stage
e altri valori, come Stage=Test
.
{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Stage": "Restricted" } } }
Utilizzo di più coppie di contesto di crittografia
È possibile richiedere o vietare più coppie di contesto di crittografia. È inoltre possibile richiedere una delle diverse coppie di contesto di crittografia. Per i dettagli sulla logica utilizzata per interpretare queste condizioni, vedere Creazione di una condizione con più chiavi o valori nella Guida per l'IAMutente.
Nota
Le versioni precedenti di questo argomento mostravano dichiarazioni politiche che utilizzavano ForAnyValue
e ForAllValues
impostavano gli operatori con la chiave di condizione kms:EncryptionContext: context-key. L'utilizzo di un operatore con una chiave di condizione a valore singolo può comportare policy che consentono richieste senza contesto di crittografia e coppie di contesto di crittografia non specificate.
Ad esempio, una condizione di policy con l'effetto Allow
, l'operatore ForAllValues
e la chiave di condizione "kms:EncryptionContext:Department": "IT"
non limita il contesto di crittografia alla coppia "Department=IT". Permette richieste senza contesto di crittografia e richieste con coppie di contesto di crittografia non specificate, come Stage=Restricted
.
Rivedi le tue politiche ed elimina l'operatore set da qualsiasi condizione con kms:EncryptionContext: context-key. I tentativi di creare o aggiornare una policy con questo formato hanno esito negativo con un'eccezione OverlyPermissiveCondition
. Per risolvere il problema, è necessario eliminare l'operatore.
Per richiedere più coppie di contesto di crittografia, elenca le coppie nella stessa condizione. La seguente istruzione di policy della chiave di esempio richiede due coppie di contesto di crittografia, Department=IT
e Project=Alpha
. Poiché le condizioni hanno chiavi diverse (kms:EncryptionContext:Department
ekms:EncryptionContext:Project
), sono connesse implicitamente da un operatore. AND Altre coppie di contesto di crittografia sono consentite, ma non obbligatorie.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Department": "IT", "kms:EncryptionContext:Project": "Alpha" } } }
Per richiedere una coppia di contesto di crittografia OPPURE un'altra coppia, inserire ciascuna chiave di condizione in un'istruzione di policy separata. La seguente policy chiave di esempio richiede coppie Department=IT
o Project=Alpha
, o entrambe. Altre coppie di contesto di crittografia sono consentite, ma non obbligatorie.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Department": "IT" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Project": "Alpha" } } }
Per richiedere coppie di crittografia particolari ed escludere tutte le altre coppie di contesto di crittografia, utilizzate entrambe kms:EncryptionContext: la chiave contestuale e kms:EncryptionContextKeysnella dichiarazione politica. La seguente dichiarazione politica chiave utilizza la condizione kms:EncryptionContext: chiave contestuale per richiedere un contesto di crittografia con entrambe le coppie. Department=IT
Project=Alpha
Utilizza una chiave di condizione kms:EncryptionContextKeys
con l'operatore ForAllValues
per consentire solo le chiavi di contesto di crittografia Department
e Project
.
L'operatore ForAllValues
limita le chiavi di contesto di crittografia nella richiesta a Department
e Project
. Se fosse usato da solo in una condizione, questo operatore di set consentirebbe richieste senza contesto di crittografia, ma in questa configurazione, la chiave di contesto kms: EncryptionContext: in questa condizione avrebbe esito negativo.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Department": "IT", "kms:EncryptionContext:Project": "Alpha" }, "ForAllValues:StringEquals": { "kms:EncryptionContextKeys": [ "Department", "Project" ] } } }
È inoltre possibile vietare più coppie di contesto di crittografia. L'esempio seguente di dichiarazione sulla politica delle chiavi utilizza un Deny
effetto per vietare al principale di utilizzare KMS le chiavi se il contesto di crittografia nella richiesta include un Stage=Restricted
o .pair. Stage=Production
Valori multipli (Restricted
e Production
) per la stessa chiave (kms:EncryptionContext:Stage
) sono implicitamente collegati da un'OR. Per i dettagli, consulta Logica di valutazione per condizioni con più chiavi o valori nella Guida per l'IAMutente.
{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Stage": [ "Restricted", "Production" ] } } }
Distinzione tra maiuscole e minuscole della condizione del contesto
Il contesto di crittografia specificato in un'operazione di decrittografia deve essere una corrispondenza esatta, che fa distinzione tra maiuscole e minuscole per il contesto di crittografia specificato nell'operazione di crittografia. Solo l'ordine delle coppie in un contesto di crittografia con più coppie può variare.
Tuttavia, nelle condizioni della policy, la chiave di condizione non fa distinzione tra maiuscole e minuscole. Se il valore della condizione fa distinzione tra minuscole e maiuscole viene determinato dall'operatore della condizione della policy che utilizzi, ad esempio StringEquals
o StringEqualsIgnoreCase
.
Pertanto, la chiave di condizione, che consiste nel kms:EncryptionContext:
prefisso e nel
sostituzione, non fa distinzione tra maiuscole e minuscole. Una policy che utilizza questa condizione non controlla se i caratteri degli elementi della chiave di condizione sono in maiuscolo o minuscolo. La distinzione tra maiuscole e minuscole del valore, ovvero chiave contestuale
sostituzione, è determinata dall'operatore delle condizioni della politica.valore di contesto
Ad esempio, la seguente istruzione di policy consente l'operazione quando il contesto di crittografia include una chiave Appname
, senza considerare se i caratteri sono in minuscolo o maiuscolo. La condizione StringEquals
richiede che ExampleApp
sia scritto con caratteri maiuscoli come specificato.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Appname": "ExampleApp" } } }
Per richiedere una chiave contestuale di crittografia con distinzione tra maiuscole e minuscole, utilizza la condizione kms: EncryptionContextKeys policy con un operatore di condizione con distinzione tra maiuscole e minuscole, ad esempio. StringEquals
In questa condizione della policy, poiché la chiave di contesto di crittografia è il valore della condizione della policy; la distinzione tra minuscole e maiuscole è determinata dall'operatore della condizione.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName" } } }
Per richiedere una valutazione con distinzione tra maiuscole e minuscole sia della chiave che del valore del contesto di crittografia, utilizzate insieme le condizioni della politica kms:EncryptionContextKeys
and kms:EncryptionContext: chiave contestuale nella stessa dichiarazione di policy. L'operatore condizione con distinzione tra maiuscole e minuscole (come StringEquals
) si applica sempre al valore della condizione. La chiave di contesto di crittografia (ad esempio AppName
) è il valore della condizione kms:EncryptionContextKeys
. Il valore del contesto di crittografia (ad esempioExampleApp
) è il valore della condizione: context-key. kms: EncryptionContext
Ad esempio, nella seguente istruzione della policy della chiave di esempio, in quanto l'operatore StringEquals
fa distinzione tra minuscole e maiuscole, sia la chiave del contesto di crittografia sia il valore del contesto di crittografia fanno distinzione tra minuscole e maiuscole.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName" }, "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } } }
Utilizzo di variabili in una condizione del contesto di crittografia
La chiave e il valore in una coppia del contesto di crittografia devono essere stringhe letterali semplici. Non possono essere integer o oggetti o un qualsiasi tipo non completamente risolto. Se si utilizza un tipo diverso, ad esempio un numero intero o un float, lo AWS KMS interpreta come una stringa letterale.
"encryptionContext": { "department": "10103.0" }
Tuttavia, il valore della chiave di kms:EncryptionContext:context-key
condizione può essere una variabile politica. IAM Queste variabili di policy vengono risolte in fase di esecuzione (runtime) in base ai valori nella richiesta. Ad esempio, aws:CurrentTime
restituisce l'ora della richiesta e aws:username
restituisce il nome descrittivo dell'intermediario.
Puoi utilizzare queste variabili di policy per creare un'istruzione di policy con una condizione che richiede informazioni molto specifiche in un contesto di crittografia, ad esempio il nome utente dell'intermediario. Dal momento che contiene una variabile, puoi utilizzare la stessa istruzione di policy per tutti gli utenti che possono assumere il ruolo. Non è necessario scrivere un'istruzione di policy separata per ogni utente.
Si consideri una situazione in cui si desidera che tutti gli utenti che possono assumere un ruolo utilizzino la stessa KMS chiave per crittografare e decrittografare i propri dati. Tuttavia, vuoi consentire loro di decrittografare solo i dati che hanno crittografato. Inizia richiedendo che ogni richiesta AWS KMS includa un contesto di crittografia in cui la chiave è user
e il valore è il nome AWS utente del chiamante, come il seguente.
"encryptionContext": { "user": "bob" }
Quindi, per applicare questo requisito, puoi utilizzare un'istruzione di policy come quella nell'esempio seguente. Questa dichiarazione politica autorizza il TestTeam
ruolo a crittografare e decrittografare i dati con la chiave. KMS Tuttavia, l'autorizzazione è valida solo quando il contesto di crittografia nella richiesta include una coppia "user":
"
. Per rappresentare il nome utente, la condizione utilizza la variabile della policy <username>
"aws:username
.
Quando la richiesta viene valutata, il nome utente dell'intermediario sostituisce la variabile nella condizione. Pertanto, la condizione richiede un contesto di crittografia "user":
"bob"
per "bob" e "user": "alice"
per "alice".
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/TestTeam" }, "Action": [ "kms:Decrypt", "kms:Encrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:user": "${aws:username}" } } }
È possibile utilizzare una variabile di IAM policy solo nel valore della chiave di condizione. kms:EncryptionContext:context-key
Non è possibile utilizzare una variabile nella chiave.
Puoi anche utilizzare le chiavi di contesto specifiche del provider nelle variabili. Queste chiavi di contesto identificano in modo univoco gli utenti che hanno effettuato l'accesso AWS utilizzando la federazione delle identità Web.
Come tutte le variabili, queste possono essere utilizzate solo nella condizione kms:EncryptionContext:context-key
della policy, non nel contesto di crittografia effettivo. Inoltre, possono essere utilizzate solo nel valore della condizione, non nella chiave.
Ad esempio, la seguente istruzione della policy delle chiavi è simile a quella precedente. Tuttavia, la condizione richiede un contesto di crittografia in cui la chiave è sub
e il valore identifica in modo univoco un utente connesso a un pool di utenti Amazon Cognito. Per informazioni dettagliate sull'identificazione di utenti e ruoli in Amazon Cognito, consulta IAMRuoli nella Amazon Cognito Developer Guide.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/TestTeam" }, "Action": [ "kms:Decrypt", "kms:Encrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:sub": "${cognito-identity.amazonaws.com:sub}" } } }
Consulta anche
km: EncryptionContextKeys
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa (elenco) |
Multivalore |
|
Policy delle chiavi e policy IAM |
È possibile utilizzare la chiave kms:EncryptionContextKeys
condition per controllare l'accesso a una KMSchiave di crittografia simmetrica basata sul contesto di crittografia in una richiesta di operazione crittografica. Utilizza questa chiave di condizione per valutare solo la chiave in ciascuna coppia del contesto di crittografia. Per valutare sia la chiave sia il valore nel contesto di crittografia, usa la chiave di condizione kms:EncryptionContext:context-key
.
Non è possibile specificare un contesto di crittografia in un'operazione crittografica con una chiave asimmetrica KMS o una chiave. HMAC KMS Gli algoritmi e gli algoritmi asimmetrici non supportano un contesto di crittografiaMAC.
Nota
I valori delle chiavi condizionali, inclusa una chiave di contesto di crittografia, devono essere conformi ai caratteri e alle regole di codifica delle politiche chiave. AWS KMS Potrebbe non essere possibile utilizzare questa chiave di condizione per esprimere tutte le chiavi valide nel contesto di crittografia. Per maggiori informazioni sulle regole delineate nel documento delle policy delle chiavi, consulta la sezione Formato della policy della chiave. Per informazioni dettagliate sulle regole dei documenti relativi alle IAM policy, consultate i requisiti relativi ai IAM nomi nella Guida per l'IAMutente.
Si tratta di una chiave di condizione multivalore. È possibile specificare più coppie di contesti di crittografia in ogni API richiesta. kms:EncryptionContextKeys
confronta le chiavi del contesto di crittografia nella richiesta con l'insieme di chiavi del contesto di crittografia nella politica. Per determinare il modo in cui questi set vengono confrontati, devi fornire un operatore ForAnyValue
o ForAllValues
nella condizione di policy. Per i dettagli sugli operatori del set, vedere Utilizzo di più chiavi e valori nella Guida per l'IAMutente.
-
ForAnyValue
: almeno una chiave di contesto di crittografia nella richiesta deve corrispondere a una chiave di contesto di crittografia nella condizione della policy. Sono consentite altre chiavi di contesto di crittografia. Se la richiesta non dispone di contesto di crittografia, la condizione non viene soddisfatta. -
ForAllValues
: ogni chiave di contesto di crittografia nella richiesta deve corrispondere a una chiave di contesto di crittografia nella condizione della policy. Questo operatore limita le chiavi di contesto di crittografia a quelle nella condizione della policy. Non richiede alcuna chiave di contesto di crittografia, ma vieta le chiavi di contesto di crittografia non specificate.
La seguente istruzione di policy della chiave di esempio utilizza la chiave di condizione kms:EncryptionContextKeys
con l'operatore ForAnyValue
. Questa dichiarazione politica consente l'uso di una KMS chiave per le operazioni specificate, ma solo quando almeno una delle coppie di contesti di crittografia nella richiesta include la AppName
chiave, indipendentemente dal suo valore.
Ad esempio, questa istruzione di policy chiave consente una richiesta GenerateDataKey
con due coppie di contesto di crittografia, AppName=Helper
e Project=Alpha
, perché la prima coppia di contesto di crittografia soddisfa la condizione. Una richiesta con solo Project=Alpha
o senza contesto di crittografia avrebbe esito negativo.
Poiché l'operazione di StringEqualscondizione fa distinzione tra maiuscole e minuscole, questa dichiarazione di policy richiede l'ortografia e la minuscola della chiave di contesto di crittografia. Tuttavia, è possibile utilizzare un operatore della condizione che ignora se la chiave ha caratteri in minuscolo o maiuscolo, ad esempio StringEqualsIgnoreCase
.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName" } } }
È inoltre possibile utilizzare la chiave kms:EncryptionContextKeys
condizionale per richiedere un contesto di crittografia (qualsiasi contesto di crittografia) nelle operazioni crittografiche che utilizzano la KMS chiave;.
L'esempio seguente di dichiarazione di policy chiave utilizza la chiave kms:EncryptionContextKeys
condition con l'operatore di condizione Null per consentire l'accesso a una KMS chiave solo quando il contesto di crittografia nella API richiesta non è nullo. Questa condizione non verifica le chiavi o i valori del contesto di crittografia. Verifica solo che il contesto di crittografia esista.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "Null": { "kms:EncryptionContextKeys": false } } }
Consulta anche
km: ExpirationModel
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa |
A valore singolo |
|
Policy delle chiavi e policy IAM |
Il tasto kms:ExpirationModel
condition controlla l'accesso all'ImportKeyMaterialoperazione in base al valore del ExpirationModelparametro nella richiesta.
ExpirationModel
è un parametro opzionale che determina se il materiale della chiave importato scade. I valori validi sono KEY_MATERIAL_EXPIRES
e KEY_MATERIAL_DOES_NOT_EXPIRE
. Il valore predefinito è KEY_MATERIAL_EXPIRES
.
La data e l'ora di scadenza sono determinate dal valore del ValidToparametro. Il parametro ValidTo
è obbligatorio a meno che il valore del parametro ExpirationModel
non sia KEY_MATERIAL_DOES_NOT_EXPIRE
. Puoi anche utilizzare la chiave kms: ValidTo condition per richiedere una data di scadenza particolare come condizione per l'accesso.
La seguente dichiarazione politica di esempio utilizza la chiave kms:ExpirationModel
condition per consentire agli utenti di importare materiale chiave in una KMS chiave solo quando la richiesta include il ExpirationModel
parametro e il suo valore èKEY_MATERIAL_DOES_NOT_EXPIRE
.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "StringEquals": { "kms:ExpirationModel": "KEY_MATERIAL_DOES_NOT_EXPIRE" } } }
È inoltre possibile utilizzare la chiave di condizione kms:ExpirationModel
per consentire agli utenti di importare il materiale chiave solo quando il materiale della chiave scade. La seguente istruzione di policy di esempio utilizza la chiave di condizione kms:ExpirationModel
con Null condition operator per consentire agli utenti di importare materiale chiave solo quando la richiesta non include il parametro ExpirationModel
. Il valore predefinito per ExpirationModel èKEY_MATERIAL_EXPIRES
.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "Null": { "kms:ExpirationModel": true } } }
Consulta anche
km: GrantConstraintType
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa |
A valore singolo |
|
Policy delle chiavi e policy IAM |
È possibile utilizzare questa chiave di condizione per controllare l'accesso all'CreateGrantoperazione in base al tipo di vincolo di concessione nella richiesta.
Quando crei una concessione, opzionalmente è possibile specificare un vincolo di concessione per consentire le operazioni che la concessione consente solo quando è presente un determinato contesto di crittografia. Il vincolo di concessione può essere di due tipi: EncryptionContextEquals
o EncryptionContextSubset
. È possibile utilizzare questa chiave di condizione per controllare che la richiesta contenga uno dei due tipi.
Importante
Non includere informazioni riservate o sensibili in questo campo. Questo campo può essere visualizzato in testo semplice nei CloudTrail log e in altri output.
La seguente istruzione di policy delle chiavi di esempio utilizza la chiave di condizione kms:GrantConstraintType
per consentire agli utenti di creare concessioni solo quando la richiesta include un vincolo di concessione EncryptionContextEquals
. L'esempio illustra un'istruzione di policy in una policy delle chiavi.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GrantConstraintType": "EncryptionContextEquals" } } }
Consulta anche
km: GrantIsFor AWSResource
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Booleano |
A valore singolo |
|
Policy delle chiavi e policy IAM |
Consente o nega l'CreateGrantautorizzazione per RevokeGrantle operazioni solo quando un AWS servizio integrato con AWS KMS
La seguente istruzione di policy della chiave di esempio utilizza la chiave di condizione kms:GrantIsForAWSResource
. Consente AWS ai servizi integrati con AWS KMS, come AmazonEBS, di creare sovvenzioni su questa KMS chiave per conto del committente specificato.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } }
Consulta anche
km: GrantOperations
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa |
Multivalore |
|
Policy delle chiavi e policy IAM |
È possibile utilizzare questa chiave di condizione per controllare l'accesso all'CreateGrantoperazione in base alle operazioni di concessione contenute nella richiesta. Ad esempio, è possibile consentire agli utenti di creare concessioni che delegano l'autorizzazione di crittografare ma non decrittografare. Per ulteriori informazioni sulle autorizzazioni, consulta Utilizzo di concessioni
Questa è una chiave di condizione multivalore. kms:GrantOperations
confronta l'insieme delle operazioni di concessione nella richiesta CreateGrant
all'insieme di operazioni di concessione nella policy. Per determinare il modo in cui questi set vengono confrontati, devi fornire un operatore ForAnyValue
o ForAllValues
nella condizione di policy. Per i dettagli sugli operatori di set, vedere Utilizzo di più chiavi e valori nella Guida per l'IAMutente.
-
ForAnyValue
: almeno un'operazione di concessione nella richiesta deve corrispondere a una delle operazioni di concessione nella condizione di policy. Sono ammesse altre operazioni di concessione. -
ForAllValues: Ogni operazione di concessione inclusa nella richiesta deve corrispondere a un'operazione di concessione nella condizione della politica. Questo operatore limita le operazioni di concessione a quelle specificate nella condizione della policy. Non richiede alcuna operazione di concessione, ma vieta le operazioni di concessione non specificate.
ForAllValues restituisce true anche quando non ci sono operazioni di concessione nella richiesta, ma
CreateGrant
non le consente. Se il parametroOperations
è mancante o ha un valore nullo, la richiestaCreateGrant
ha esito negativo.
La seguente istruzione di policy delle chiavi di esempio utilizza la chiave di condizione kms:GrantOperations
per creare concessioni solo quando le operazioni di concessione sono Encrypt
, ReEncryptTo
o entrambi. Se la concessione include altre operazioni, la richiesta CreateGrant
ha esito negativo.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Encrypt", "ReEncryptTo" ] } } }
Se si modifica l'operatore nella condizione di policy in ForAnyValue
, l'istruzione di policy richiederebbe che almeno una delle operazioni di concessione nella concessione sia Encrypt
o ReEncryptTo
, ma consentirebbe altre operazioni di concessione, come Decrypt
o ReEncryptFrom
.
Consulta anche
km: GranteePrincipal
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa |
A valore singolo |
|
Policy IAM e della chiave |
È possibile utilizzare questa chiave di condizione per controllare l'accesso all'CreateGrantoperazione in base al valore del GranteePrincipalparametro nella richiesta. Ad esempio, è possibile creare concessioni per utilizzare una KMS chiave solo quando il principale beneficiario nella CreateGrant
richiesta corrisponde al capitale specificato nell'istruzione condizionale.
Per specificare il principale beneficiario, utilizza il nome Amazon Resource Name (ARN) di un AWS destinatario. I principali validi includono IAM utenti Account AWS, IAM ruoli, utenti federati e utenti assunti. Per informazioni sulla ARN sintassi di un principale, consulta la Guida per l'IAMARNsIAMutente.
L'esempio seguente di dichiarazione politica chiave utilizza la chiave kms:GranteePrincipal
condition per creare sovvenzioni per una KMS chiave solo quando il beneficiario principale della sovvenzione è il. LimitedAdminRole
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GranteePrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole" } } }
Consulta anche
km: KeyAgreementAlgorithm
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa |
A valore singolo |
|
Policy delle chiavi e policy IAM |
È possibile utilizzare il tasto kms:KeyAgreementAlgorithm
condition per controllare l'accesso all'DeriveSharedSecretoperazione in base al valore del KeyAgreementAlgorithm
parametro nella richiesta. L'unico valore valido per KeyAgreementAlgorithm
èECDH
.
Ad esempio, la seguente dichiarazione politica chiave utilizza la chiave kms:KeyAgreementAlgorithm
condition per negare qualsiasi accesso a DeriveSharedSecret meno che non lo KeyAgreementAlgorithm
siaECDH
.
{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:DeriveSharedSecret", "Resource": "*", "Condition": { "StringNotEquals": { "kms:KeyAgreementAlgorithm": "ECDH" } } }
Consulta anche
km: KeyOrigin
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa |
A valore singolo |
KMSoperazioni relative alle risorse chiave |
IAMpolitiche Policy delle chiavi e policy IAM |
Il tasto kms:KeyOrigin
condition controlla l'accesso alle operazioni in base al valore della Origin
proprietà della KMS chiave creata o utilizzata nell'operazione. Funziona come una condizione di risorsa o una condizione di richiesta.
È possibile utilizzare questa chiave di condizione per controllare l'accesso all'CreateKeyoperazione in base al valore del parametro Origin nella richiesta. I valori validi di Origin
sono AWS_KMS
, AWS_CLOUDHSM
ed EXTERNAL
.
Ad esempio, è possibile creare una KMS chiave solo quando il materiale chiave viene generato in AWS KMS (AWS_KMS
), solo quando il materiale chiave viene generato in un AWS CloudHSM cluster associato a un archivio chiavi personalizzato (AWS_CLOUDHSM
) o solo quando il materiale chiave viene importato da un'origine esterna (EXTERNAL
).
L'esempio seguente di dichiarazione politica chiave utilizza la chiave kms:KeyOrigin
condition per creare una KMS chiave solo quando AWS KMS crea il materiale chiave.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_KMS" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_CLOUDHSM" } } } ] }
È inoltre possibile utilizzare il tasto kms:KeyOrigin
condition per controllare l'accesso alle operazioni che utilizzano o gestiscono una KMS chiave in base alla Origin
proprietà della KMS chiave utilizzata per l'operazione. L'operazione deve essere un'operazione relativa a una risorsa KMS chiave, ovvero un'operazione autorizzata per una KMS chiave particolare. Per identificare le operazioni KMS chiave relative alle risorse, nella tabella Azioni e risorse, cerca il valore di KMS key
nella Resources
colonna relativa all'operazione.
Ad esempio, la seguente IAM politica consente ai responsabili di eseguire le operazioni sulle risorse KMS chiave specificate, ma solo con KMS le chiavi dell'account che sono state create in un archivio di chiavi personalizzato.
{ "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_CLOUDHSM" } } }
Consulta anche
km: KeySpec
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa |
A valore singolo |
KMSoperazioni relative alle risorse chiave |
IAMpolitiche Policy delle chiavi e policy IAM |
Il tasto kms:KeySpec
condition controlla l'accesso alle operazioni in base al valore della KeySpec
proprietà della KMS chiave creata o utilizzata nell'operazione.
È possibile utilizzare questa chiave di condizione in una IAM politica per controllare l'accesso all'CreateKeyoperazione in base al valore del KeySpecparametro in una CreateKey
richiesta. Ad esempio, è possibile utilizzare questa condizione per consentire agli utenti di creare solo chiavi di crittografia simmetriche o solo KMS HMAC KMS chiavi.
L'esempio seguente di dichiarazione IAM politica utilizza la chiave kms:KeySpec
condition per consentire ai principali di creare solo RSA chiavi asimmetriche. KMS L'autorizzazione è valida solo quando KeySpec
nella richiesta inizia con RSA_
.
{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringLike": { "kms:KeySpec": "RSA_*" } } }
È inoltre possibile utilizzare il tasto kms:KeySpec
condition per controllare l'accesso alle operazioni che utilizzano o gestiscono una KMS chiave in base alla KeySpec
proprietà della KMS chiave utilizzata per l'operazione. L'operazione deve essere un'operazione relativa a una risorsa KMS chiave, ovvero un'operazione autorizzata per una KMS chiave particolare. Per identificare le operazioni KMS chiave relative alle risorse, nella tabella Azioni e risorse, cerca il valore di KMS key
nella Resources
colonna relativa all'operazione.
Ad esempio, la seguente IAM politica consente ai responsabili di eseguire le operazioni sulle risorse KMS chiave specificate, ma solo con KMS chiavi di crittografia simmetriche nell'account.
{ "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringEquals": { "kms:KeySpec": "SYMMETRIC_DEFAULT" } } }
Consulta anche
km: KeyUsage
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa |
A valore singolo |
KMSoperazioni relative alle risorse chiave |
IAMpolitiche Policy delle chiavi e policy IAM |
Il tasto kms:KeyUsage
condition controlla l'accesso alle operazioni in base al valore della KeyUsage
proprietà della KMS chiave creata o utilizzata nell'operazione.
È possibile utilizzare questa chiave di condizione per controllare l'accesso all'CreateKeyoperazione in base al valore del KeyUsageparametro nella richiesta. I valori validi per KeyUsage
sono ENCRYPT_DECRYPT
SIGN_VERIFY
,GENERATE_VERIFY_MAC
, eKEY_AGREEMENT
.
Ad esempio, è possibile creare una KMS chiave solo quando KeyUsage
è ENCRYPT_DECRYPT
o negare l'autorizzazione di un utente quando KeyUsage
èSIGN_VERIFY
.
L'esempio seguente di dichiarazione IAM politica utilizza la chiave kms:KeyUsage
condition per creare una KMS chiave solo quando KeyUsage
èENCRYPT_DECRYPT
.
{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeyUsage": "ENCRYPT_DECRYPT" } } }
È inoltre possibile utilizzare il tasto kms:KeyUsage
condition per controllare l'accesso alle operazioni che utilizzano o gestiscono una KMS chiave in base alla KeyUsage
proprietà della KMS chiave nell'operazione. L'operazione deve essere un'operazione relativa a una risorsa KMS chiave, ovvero un'operazione autorizzata per una KMS chiave particolare. Per identificare le operazioni KMS chiave relative alle risorse, nella tabella Azioni e risorse, cerca il valore di KMS key
nella Resources
colonna relativa all'operazione.
Ad esempio, la seguente IAM politica consente ai responsabili di eseguire le operazioni sulle risorse KMS chiave specificate, ma solo con KMS le chiavi dell'account utilizzate per la firma e la verifica.
{ "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:DescribeKey", "kms:GetPublicKey", "kms:ScheduleKeyDeletion" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringEquals": { "kms:KeyUsage": "SIGN_VERIFY" } } }
Consulta anche
km: MacAlgorithm
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa |
A valore singolo |
|
Policy delle chiavi e policy IAM |
È possibile utilizzare il tasto kms:MacAlgorithm
condition per controllare l'accesso alle VerifyMacoperazioni GenerateMacand in base al valore del MacAlgorithm
parametro nella richiesta.
L'esempio seguente di policy chiave consente agli utenti che possono assumere il testers
ruolo di utilizzare la HMAC KMS chiave per generare e verificare i HMAC tag solo quando l'MACalgoritmo nella richiesta è HMAC_SHA_384
oHMAC_SHA_512
. Questa policy utilizza due istruzioni della policy separate, ciascuna con una propria condizione. Se si specifica più di un MAC algoritmo in una singola dichiarazione di condizione, la condizione richiede entrambi gli algoritmi, anziché l'uno o l'altro.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/testers" }, "Action": [ "kms:GenerateMac", "kms:VerifyMac" ], "Resource": "*", "Condition": { "StringEquals": { "kms:MacAlgorithm": "HMAC_SHA_384" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/testers" }, "Action": [ "kms:GenerateMac", "kms:VerifyMac" ], "Resource": "*", "Condition": { "StringEquals": { "kms:MacAlgorithm": "HMAC_SHA_512" } } } ] }
Consulta anche
km: MessageType
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa |
A valore singolo |
|
Policy delle chiavi e policy IAM |
La chiave di condizione kms:MessageType
controlla l'accesso alle operazioni Sign e Verify in base al valore del parametro MessageType
nella richiesta. I valori validi di MessageType
sono RAW
e DIGEST
.
Ad esempio, la seguente dichiarazione di politica chiave utilizza la chiave kms:MessageType
condition per utilizzare una KMS chiave asimmetrica per firmare un messaggio, ma non un message digest.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:Sign", "Resource": "*", "Condition": { "StringEquals": { "kms:MessageType": "RAW" } } }
Consulta anche
km: MultiRegion
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Booleano |
A valore singolo |
KMSoperazioni relative alle risorse chiave |
Policy delle chiavi e policy IAM |
È possibile utilizzare questa chiave di condizione per consentire operazioni solo su chiavi di regione singola o solo su chiavi multiregione. Il tasto kms:MultiRegion
condition controlla l'accesso alle AWS KMS operazioni sulle KMS chiavi e all'CreateKeyoperazione in base al valore della MultiRegion
proprietà della KMS chiave. I valori validi sono true
(multiregione) e false
(singola Regione). Tutte KMS le chiavi hanno una MultiRegion
proprietà.
Ad esempio, la seguente dichiarazione IAM politica utilizza la chiave kms:MultiRegion
condition per consentire ai principali di creare solo chiavi a regione singola.
{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "Bool": { "kms:MultiRegion": false } } }
km: MultiRegionKeyType
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa |
A valore singolo |
KMSoperazioni relative alle risorse chiave |
Policy delle chiavi e policy IAM |
È possibile utilizzare questa chiave di condizione per consentire operazioni solo su chiavi multiregione primarie o solo su chiavi multiregione di replica. Il tasto kms:MultiRegionKeyType
condition controlla l'accesso alle AWS KMS operazioni sulle KMS chiavi e l'CreateKeyoperazione in base alla MultiRegionKeyType
proprietà della KMS chiave. I valori validi sono PRIMARY
e REPLICA
. Solo le chiavi multiregione hanno una proprietà MultiRegionKeyType
.
In genere, si utilizza la chiave di kms:MultiRegionKeyType
condizione in una IAM politica per controllare l'accesso a più KMS chiavi. Tuttavia, poiché una determinata chiave multiregione può diventare primaria o di replica, è possibile utilizzare questa condizione in una policy chiave per consentire un'operazione solo quando la chiave multiregione specifica è una chiave primaria o di replica.
Ad esempio, la seguente dichiarazione di IAM politica utilizza la chiave kms:MultiRegionKeyType
condition per consentire ai responsabili di pianificare e annullare l'eliminazione delle chiavi solo per le chiavi di replica multiregionali nel territorio specificato. Account AWS
{ "Effect": "Allow", "Action": [ "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "StringEquals": { "kms:MultiRegionKeyType": "REPLICA" } } }
Per consentire o negare l'accesso a tutte le chiavi multiregione, è possibile utilizzare entrambi i valori o un valore null con kms:MultiRegionKeyType
. Tuttavia, la chiave kms: MultiRegion condition è consigliata a tale scopo.
km: PrimaryRegion
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa (elenco) |
A valore singolo |
|
Policy delle chiavi e policy IAM |
È possibile utilizzare questa chiave di condizione per limitare le regioni di destinazione in un'UpdatePrimaryRegionoperazione. Queste sono quelle Regioni AWS che possono ospitare le tue chiavi primarie multiregionali.
Il tasto kms:PrimaryRegion
condition controlla l'accesso all'UpdatePrimaryRegionoperazione in base al valore del PrimaryRegion
parametro. Il PrimaryRegion
parametro specifica la chiave Regione AWS di replica multiregionale che viene promossa a primaria. Il valore della condizione è costituito da uno o più Regione AWS nomi, ad esempio or, us-east-1
o da schemi di denominazione delle regioniap-southeast-2
, ad esempio eu-*
Ad esempio, la seguente istruzione di policy chiave utilizza la chiave di condizione kms:PrimaryRegion
per consentire ai principali di aggiornare la Regione primaria di una chiave multiregione in una delle quattro Regioni specificate.
{ "Effect": "Allow", "Action": "kms:UpdatePrimaryRegion", "Principal": { "AWS": "arn:aws:iam::111122223333:role/Developer" }, "Resource": "*", "Condition": { "StringEquals": { "kms:PrimaryRegion": [ "us-east-1", "us-west-2", "eu-west-3", "ap-southeast-2" ] } } }
km: ReEncryptOnSameKey
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Booleano |
A valore singolo |
|
Policy delle chiavi e policy IAM |
È possibile utilizzare questa chiave di condizione per controllare l'accesso all'ReEncryptoperazione a seconda che la richiesta specifichi una KMS chiave di destinazione uguale a quella utilizzata per la crittografia originale.
Ad esempio, la seguente dichiarazione sulla politica di chiave utilizza la chiave kms:ReEncryptOnSameKey
condition per ricrittografare solo quando la KMS chiave di destinazione è la stessa utilizzata per la crittografia originale.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:ReEncrypt*", "Resource": "*", "Condition": { "Bool": { "kms:ReEncryptOnSameKey": true } } }
km: RequestAlias
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa (elenco) |
A valore singolo |
Policy delle chiavi e policy IAM |
È possibile utilizzare questa chiave di condizione per consentire un'operazione solo quando la richiesta utilizza un alias particolare per identificare la KMS chiave. La chiave kms:RequestAlias
condizionale controlla l'accesso a una KMS chiave utilizzata in un'operazione crittografica o in DescribeKey
base all'alias che identifica quella KMS chiave nella richiesta. GetPublicKey
(Questa condizione politica non ha alcun effetto sull'GenerateRandomoperazione perché l'operazione non utilizza una KMS chiave o un alias.)
Questa condizione supporta il controllo degli accessi basato sugli attributi (ABAC) in AWS KMS, che consente di controllare l'accesso alle KMS chiavi in base ai tag e agli alias di una chiave. KMS È possibile utilizzare tag e alias per consentire o negare l'accesso a una KMS chiave senza modificare le politiche o le concessioni. Per informazioni dettagliate, consultare ABACper AWS KMS.
Per specificare l'alias in questa condizione di policy, utilizza un nome alias, ad esempio alias/project-alpha
, o un modello di nome alias, ad esempio alias/*test*
. Non è possibile specificare un alias ARN nel valore di questa chiave di condizione.
Per soddisfare questa condizione, il valore del KeyId
parametro nella richiesta deve essere un nome alias o un alias corrispondente. ARN Se la richiesta utilizza un identificatore di chiave diverso, non soddisfa la condizione, anche se identifica la stessa chiave. KMS
Ad esempio, la seguente dichiarazione di politica chiave consente al principale di richiamare l'GenerateDataKeyoperazione sulla chiave. KMS Tuttavia, ciò è consentito solo quando il valore del KeyId
parametro nella richiesta è alias/finance-key
o è un alias ARN con quel nome alias, ad esempio. arn:aws:kms:us-west-2:111122223333:alias/finance-key
{ "Sid": "Key policy using a request alias condition", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/developer" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:RequestAlias": "alias/finance-key" } } }
Non è possibile utilizzare questa chiave di condizione per controllare l'accesso alle operazioni di alias, come o. CreateAliasDeleteAlias Per informazioni sul controllo dell'accesso a tutte le operazioni alias, consulta Controllo dell'accesso agli alias.
km: ResourceAliases
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa (elenco) |
Multivalore | KMSoperazioni relative alle risorse chiave |
Solo policy IAM |
Utilizzate questa chiave di condizione per controllare l'accesso a una KMS chiave in base agli alias associati alla KMS chiave. L'operazione deve essere un'operazione relativa a una risorsa KMS chiave, ovvero un'operazione autorizzata per una KMS chiave particolare. Per identificare le operazioni KMS chiave relative alle risorse, nella tabella Azioni e risorse, cerca il valore di KMS key
nella Resources
colonna relativa all'operazione.
Questa condizione supporta il controllo degli accessi basato sugli attributi () ABAC in. AWS KMS ConABAC, è possibile controllare l'accesso alle KMS chiavi in base ai tag assegnati a una KMS chiave e agli alias associati a una chiave. KMS È possibile utilizzare tag e alias per consentire o negare l'accesso a una KMS chiave senza modificare le politiche o le concessioni. Per informazioni dettagliate, consultare ABACper AWS KMS.
Un alias deve essere univoco in una regione Account AWS and, ma questa condizione consente di controllare l'accesso a più KMS chiavi nella stessa regione (utilizzando l'operatore di StringLike
confronto) o a più KMS chiavi in diversi Regioni AWS account.
Nota
La ResourceAliases condizione kms: è efficace solo quando la KMS chiave è conforme agli alias per quota di chiavi. KMS Se una KMS chiave supera questa quota, ai principali che sono autorizzati a utilizzare la KMS chiave in base alla kms:ResourceAliases
condizione viene negato l'accesso alla chiave. KMS
Per specificare l'alias in questa condizione di policy, utilizza un nome alias, ad esempio alias/project-alpha
, o un modello di nome alias, ad esempio alias/*test*
. Non è possibile specificare un alias ARN nel valore di questa chiave di condizione. Per soddisfare la condizione, la KMS chiave utilizzata nell'operazione deve avere l'alias specificato. Non importa se o come la KMS chiave viene identificata nella richiesta dell'operazione.
Si tratta di una chiave di condizione multivalore che confronta l'insieme di alias associati a una KMS chiave con l'insieme di alias della politica. Per determinare il modo in cui questi set vengono confrontati, devi fornire un operatore ForAnyValue
o ForAllValues
nella condizione di policy. Per i dettagli sugli operatori del set, consulta Utilizzo di più chiavi e valori nella Guida per l'utente. IAM
-
ForAnyValue: almeno un alias associato alla KMS chiave deve corrispondere a un alias nella condizione della policy. Sono consentiti altri alias. Se la KMS chiave non ha alias, la condizione non è soddisfatta.
-
ForAllValues: ogni alias associato alla KMS chiave deve corrispondere a un alias nella policy. Questo operatore di set limita gli alias associati alla KMS chiave a quelli presenti nelle condizioni della policy. Non richiede alcun alias, ma vieta alias non specificati.
Ad esempio, la seguente dichiarazione di IAM policy consente al principale di richiamare l'GenerateDataKeyoperazione su qualsiasi KMS chiave dello specificato Account AWS associata all'finance-key
alias. (Le politiche chiave delle KMS chiavi interessate devono inoltre consentire all'account del principale di utilizzarle per questa operazione.) Per indicare che la condizione è soddisfatta quando uno dei tanti alias che possono essere associati alla KMS chiave lo èalias/finance-key
, la condizione utilizza l'operatore ForAnyValue
set.
Poiché la kms:ResourceAliases
condizione è basata sulla risorsa e non sulla richiesta, una chiamata a GenerateDataKey
ha esito positivo per qualsiasi KMS chiave associata all'finance-key
alias, anche se la richiesta utilizza un ID o una chiave ARN per identificare la chiave. KMS
{ "Sid": "AliasBasedIAMPolicy", "Effect": "Allow", "Action": "kms:GenerateDataKey", "Resource": [ "arn:aws:kms:*:111122223333:key/*", "arn:aws:kms:*:444455556666:key/*" ], "Condition": { "ForAnyValue:StringEquals": { "kms:ResourceAliases": "alias/finance-key" } } }
La seguente dichiarazione IAM politica di esempio consente al principale di abilitare e disabilitare KMS le chiavi, ma solo quando tutti gli alias delle KMS chiavi includono ".» Test
Questa dichiarazione politica utilizza due condizioni. La condizione con l'operatore ForAllValues
set richiede che tutti gli alias associati alla KMS chiave includano «Test». La condizione con l'operatore ForAnyValue
set richiede che la KMS chiave abbia almeno un alias con «Test». Senza la ForAnyValue
condizione, questa dichiarazione politica avrebbe consentito al principale di utilizzare KMS chiavi prive di alias.
{ "Sid": "AliasBasedIAMPolicy", "Effect": "Allow", "Action": [ "kms:EnableKey", "kms:DisableKey" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "ForAllValues:StringLike": { "kms:ResourceAliases": [ "alias/*Test*" ] }, "ForAnyValue:StringLike": { "kms:ResourceAliases": [ "alias/*Test*" ] } } }
km: ReplicaRegion
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa (elenco) |
A valore singolo |
|
Policy delle chiavi e policy IAM |
È possibile utilizzare questa chiave di condizione per limitare il numero Regioni AWS in cui un principale può replicare una chiave multiregionale. La chiave kms:ReplicaRegion
condizionale controlla l'accesso all'ReplicateKeyoperazione in base al valore del ReplicaRegionparametro nella richiesta. Questo parametro specifica la Regione AWS
per la nuova Chiave di replica.
Il valore della condizione è costituito da uno o più Regione AWS nomi, ad esempio us-east-1
orap-southeast-2
, o da modelli di nomi, ad esempioeu-*
. Per un elenco dei nomi di tali Regioni AWS AWS KMS supporti, consulta AWS Key Management Service endpoints e quote in. Riferimenti generali di AWS
Ad esempio, la seguente dichiarazione di politica chiave utilizza la chiave kms:ReplicaRegion
condition per consentire ai principali di richiamare l'ReplicateKeyoperazione solo quando il valore del ReplicaRegion
parametro è una delle regioni specificate.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/Administrator" }, "Action": "kms:ReplicateKey" "Resource": "*", "Condition": { "StringEquals": { "kms:ReplicaRegion": [ "us-east-1", "eu-west-3", "ap-southeast-2" ] } } }
Questa chiave condizionale controlla l'accesso solo all'ReplicateKeyoperazione. Per controllare l'accesso all'UpdatePrimaryRegionoperazione, usa il tasto kms: PrimaryRegion condition.
km: RetiringPrincipal
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa (elenco) |
A valore singolo |
|
Policy delle chiavi e policy IAM |
È possibile utilizzare questa chiave di condizione per controllare l'accesso all'CreateGrantoperazione in base al valore del RetiringPrincipalparametro nella richiesta. Ad esempio, è possibile creare concessioni per utilizzare una KMS chiave solo quando il valore RetiringPrincipal
in nella CreateGrant
richiesta corrisponde RetiringPrincipal
a quello dell'istruzione condition.
Per specificare il principale che andrà in pensione, usa il nome Amazon Resource Name (ARN) di un AWS principale. I principali validi includono IAM utenti Account AWS, IAM ruoli, utenti federati e utenti assunti. Per informazioni sulla ARN sintassi di un principale, consulta la Guida per l'IAMARNsIAMutente.
L'esempio seguente di dichiarazione politica chiave consente a un utente di creare concessioni per la KMS chiave. La chiave kms:RetiringPrincipal
condizionale limita l'autorizzazione alle CreateGrant
richieste in cui è il principale beneficiario della sovvenzione. LimitedAdminRole
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:RetiringPrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole" } } }
Consulta anche
km: RotationPeriodInDays
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Numerico |
A valore singolo |
|
Policy delle chiavi e policy IAM |
È possibile utilizzare questa chiave di condizione per limitare i valori che i principali possono specificare nel RotationPeriodInDays
parametro di una EnableKeyRotationrichiesta.
RotationPeriodInDays
specifica il numero di giorni tra ogni data di rotazione automatica dei tasti. AWS KMS consente di specificare un periodo di rotazione compreso tra 90 e 2560 giorni, ma è possibile utilizzare il tasto kms:RotationPeriodInDays
condition per limitare ulteriormente il periodo di rotazione, ad esempio imporre un periodo di rotazione minimo entro l'intervallo valido.
Ad esempio, la seguente dichiarazione politica chiave utilizza la chiave kms:RotationPeriodInDays
condition per impedire ai principali di abilitare la rotazione dei tasti se il periodo di rotazione è inferiore o uguale a 180 giorni.
{ "Effect": "Deny", "Action": "kms:EnableKeyRotation", "Principal": "*", "Resource": "*", "Condition" : { "NumericLessThanEquals" : { "kms:RotationPeriodInDays" : "180" } } }
km: ScheduleKeyDeletionPendingWindowInDays
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Numerico |
A valore singolo |
|
Policy delle chiavi e policy IAM |
È possibile utilizzare questa chiave di condizione per limitare i valori che i principali possono specificare nel PendingWindowInDays
parametro di una ScheduleKeyDeletionrichiesta.
PendingWindowInDays
Speciifica il numero di giorni che AWS KMS attendono prima di eliminare una chiave. AWS KMS consente di specificare un periodo di attesa compreso tra 7 e 30 giorni, ma è possibile utilizzare la chiave di kms:ScheduleKeyDeletionPendingWindowInDays
condizione per limitare ulteriormente il periodo di attesa, ad esempio imporre un periodo di attesa minimo entro l'intervallo valido.
Ad esempio, la seguente istruzione della policy della chiave utilizza la chiave di condizione kms:ScheduleKeyDeletionPendingWindowInDays
per impedire ai principali di pianificare l'eliminazione della chiave se il periodo di attesa è minore o uguale a 21 giorni.
{ "Effect": "Deny", "Action": "kms:ScheduleKeyDeletion", "Principal": "*", "Resource": "*", "Condition" : { "NumericLessThanEquals" : { "kms:ScheduleKeyDeletionPendingWindowInDays" : "21" } } }
km: SigningAlgorithm
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa |
A valore singolo |
|
Policy delle chiavi e policy IAM |
È possibile utilizzare il tasto kms:SigningAlgorithm
condition per controllare l'accesso alle operazioni Sign and Verify in base al valore del SigningAlgorithmparametro nella richiesta. Questa chiave condizionale non ha effetto sulle operazioni eseguite all'esterno AWS KMS, come la verifica delle firme con la chiave pubblica in una coppia di KMS chiavi asimmetrica esterna a. AWS KMS
Il seguente esempio di policy chiave consente agli utenti che possono assumere il testers
ruolo di utilizzare la KMS chiave per firmare i messaggi solo quando l'algoritmo di firma utilizzato per la richiesta è un algoritmo RSASSA _PSS, ad esempio. RSASSA_PSS_SHA512
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/testers" }, "Action": "kms:Sign", "Resource": "*", "Condition": { "StringLike": { "kms:SigningAlgorithm": "RSASSA_PSS*" } } }
Consulta anche
km: ValidTo
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Timestamp |
A valore singolo |
|
Policy delle chiavi e policy IAM |
Il tasto kms:ValidTo
condition controlla l'accesso all'ImportKeyMaterialoperazione in base al valore del ValidToparametro nella richiesta, che determina quando scade il materiale chiave importato. Il valore viene espresso in formato Unix
Come impostazione predefinita, il parametro ValidTo
è obbligatorio in una richiesta ImportKeyMaterial
. Tuttavia, se il valore del ExpirationModelparametro èKEY_MATERIAL_DOES_NOT_EXPIRE
, il ValidTo
parametro non è valido. Puoi anche usare la chiave kms: ExpirationModel condition per richiedere il ExpirationModel
parametro o un valore di parametro specifico.
L'esempio seguente di dichiarazione politica consente a un utente di importare materiale chiave in una KMS chiave. La chiave di condizione kms:ValidTo
limita l'autorizzazione alle richieste ImportKeyMaterial
nelle quali il valore ValidTo
è minore o uguale a 1546257599.0
(31 dicembre 2018, 23:59:59).
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "NumericLessThanEquals": { "kms:ValidTo": "1546257599.0" } } }
Consulta anche
km: ViaService
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa |
A valore singolo |
KMSoperazioni relative alle risorse chiave |
Policy delle chiavi e policy IAM |
La chiave di kms:ViaService
condizione limita l'uso di una KMS chiave alle richieste provenienti da AWS servizi specifici. È possibile specificare uno o più servizi in ciascuna chiave di condizione kms:ViaService
. L'operazione deve essere un'operazione relativa a una risorsa KMS chiave, ovvero un'operazione autorizzata per una KMS chiave particolare. Per identificare le operazioni KMS chiave relative alle risorse, nella tabella Azioni e risorse, cerca il valore di KMS key
nella Resources
colonna relativa all'operazione.
Ad esempio, la seguente dichiarazione sulla politica chiave utilizza la chiave di kms:ViaService
condizione per consentire l'utilizzo di una chiave gestita dal cliente per le azioni specificate solo quando la richiesta proviene da Amazon EC2 o Amazon RDS nella regione Stati Uniti occidentali (Oregon) per conto diExampleRole
.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:ListGrants", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "ec2.us-west-2.amazonaws.com", "rds.us-west-2.amazonaws.com" ] } } }
Puoi anche utilizzare una chiave kms:ViaService
condizionale per negare l'autorizzazione all'uso di una KMS chiave quando la richiesta proviene da servizi particolari. Ad esempio, la seguente istruzione di policy da una policy delle chiavi utilizza una chiave di condizione kms:ViaService
per evitare che una chiave gestita dal cliente venga utilizzata per le operazioni Encrypt
quando la richiesta proviene da AWS Lambda per conto di ExampleRole
.
{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Encrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "lambda.us-west-2.amazonaws.com" ] } } }
Importante
Quando si utilizza la chiave di condizione kms:ViaService
, il servizio effettua la richiesta per conto di un principale in Account AWS. Questi principali devono disporre delle autorizzazioni seguenti:
-
Autorizzazione all'uso della KMS chiave. Il principale deve concedere le autorizzazioni al servizio integrato in modo che il servizio possa utilizzare la chiave gestita dal cliente per conto del principale. Per ulteriori informazioni, consulta Utilizzo della AWS KMS crittografia con AWS i servizi.
-
Autorizzazione a utilizzare il servizio integrato. Per informazioni dettagliate su come concedere agli utenti l'accesso a un AWS servizio che si integra con AWS KMS, consulta la documentazione relativa al servizio integrato.
Tutte le Chiavi gestite da AWS utilizzano una chiave di condizione kms:ViaService
nel documento della policy delle chiavi. Questa condizione consente di utilizzare la KMS chiave solo per le richieste provenienti dal servizio che ha creato la KMS chiave. Per visualizzare la politica chiave di an Chiave gestita da AWS, usa l'GetKeyPolicyoperazione.
La chiave di kms:ViaService
condizione è valida IAM nelle dichiarazioni politiche chiave. I servizi specificati devono essere integrati con AWS KMSkms:ViaService
.
I servizi che supportano la chiave di condizione kms:ViaService
La tabella seguente elenca AWS i servizi che sono integrati AWS KMS e supportano l'uso della chiave di kms:ViaService
condizione nelle chiavi gestite dal cliente. I servizi in questa tabella potrebbero non essere disponibili in tutte le aree. Utilizza il .amazonaws.com
suffisso del AWS KMS ViaService nome in tutte le AWS partizioni.
Nota
Potrebbe essere necessario scorrere orizzontalmente o verticalmente per visualizzare tutti i dati di questa tabella.
Nome servizio | AWS KMS ViaService nome |
---|---|
AWS App Runner | apprunner. |
AWS AppFabric | appfabric. |
Amazon AppFlow | appflow. |
AWS Application Migration Service | mgn. |
Amazon Athena | athena. |
AWS Audit Manager | auditmanager. |
Amazon Aurora | rds. |
AWS Backup | backup. |
AWS Backup Gateway | backup-gateway. |
Copia del modello Amazon Bedrock | bedrock. |
Amazon Chime SDK | chimevoiceconnector. |
AWS Clean Rooms ML | cleanrooms-ml. |
AWS CodeArtifact | codeartifact. |
CodeGuru Revisore Amazon | codeguru-reviewer. |
Amazon Comprehend | comprehend. |
Amazon Connect | connect. |
Customer Profiles Amazon Connect | profile. |
Amazon Q in Connect | wisdom. |
AWS Database Migration Service (AWS DMS) | dms. |
AWS Directory Service | directoryservice. |
Amazon DynamoDB | dynamodb. |
Amazon DocumentDB | docdb-elastic. |
Amazon EC2 Systems Manager (SSM) | ssm. |
Amazon Elastic Block Store (AmazonEBS) | ec2. (EBSsolo) |
Registro Amazon Elastic Container (AmazonECR) | ecr. |
Amazon Elastic File System (AmazonEFS) | elasticfilesystem. |
Amazon ElastiCache |
Includi entrambi ViaService i nomi nel valore della chiave condizionale:
|
AWS Elemental MediaTailor | mediatailor. |
AWS Risoluzione dell'entità | entityresolution. |
Amazon EventBridge | events. |
Amazon FinSpace | finspace. |
Amazon Forecast | forecast. |
Amazon FSx | fsx. |
AWS Glue | glue. |
AWS Ground Station | groundstation. |
Amazon GuardDuty | malware-protection. |
AWS HealthLake | healthlake. |
AWS IoT SiteWise | iotsitewise. |
Amazon Kendra | kendra. |
Amazon Keyspaces (per Apache Cassandra) | cassandra. |
Amazon Kinesis | kinesis. |
Amazon Data Firehose | firehose. |
Flusso di video Amazon Kinesis | kinesisvideo. |
AWS Lambda | lambda. |
Amazon Lex | lex. |
AWS License Manager | license-manager. |
Servizio di posizione Amazon | geo. |
Amazon Lookout per le apparecchiature | lookoutequipment. |
Amazon Lookout per le metriche | lookoutmetrics. |
Amazon Lookout per Vision | lookoutvision. |
Amazon Macie | macie. |
Modernizzazione del mainframe AWS | m2. |
Modernizzazione del mainframe AWS Test delle applicazioni | apptest. |
Blockchain gestita da Amazon | managedblockchain. |
Streaming gestito da Amazon per Apache Kafka (Amazon) MSK | kafka. |
Flussi di lavoro gestiti da Amazon per Apache Airflow () MWAA | airflow. |
Amazon MemoryDB | memorydb. |
Amazon Monitron | monitron. |
Amazon MQ | mq. |
Amazon Neptune | rds. |
Amazon Nimble Studio | nimble. |
AWS HealthOmics | omics. |
OpenSearch Servizio Amazon | es. ,
aoss. |
AWS Proton | proton. |
Database Amazon Quantum Ledger (Amazon) QLDB | qldb. |
Amazon RDS Performance Insights | rds. |
Amazon Redshift | redshift. |
Editor di query Amazon Redshift V2 | sqlworkbench. |
Amazon Redshift Serverless | redshift-serverless. |
Amazon Rekognition | rekognition. |
Servizio di Database Relazionale Amazon (AmazonRDS) | rds. |
Datastore replicato di Amazon | ards. |
Amazon SageMaker | sagemaker. |
AWS Secrets Manager | secretsmanager. |
Amazon Security Lake | securitylake. |
Servizio e-mail semplice Amazon (AmazonSES) | ses. |
Servizio di notifica semplice Amazon (AmazonSNS) | sns. |
Servizio Amazon Simple Queue (AmazonSQS) | sqs. |
Amazon Simple Storage Service (Amazon S3) | s3. |
AWS Snowball | importexport. |
AWS Step Functions | states. |
AWS Storage Gateway | storagegateway. |
AWS Systems Manager Incident Manager | ssm-incidents. |
AWS Systems Manager Incident Manager Contatti | ssm-contacts. |
Amazon Timestream | timestream. |
Amazon Translate | translate. |
Accesso verificato da AWS | verified-access. |
Amazon WorkMail | workmail. |
Amazon WorkSpaces | workspaces. |
Amazon WorkSpaces Thin Client | thinclient. |
Amazon WorkSpaces Web | workspaces-web. |
AWS X-Ray | xray. |
km: WrappingAlgorithm
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa |
A valore singolo |
|
Policy delle chiavi e policy IAM |
Questa chiave di condizione controlla l'accesso all'GetParametersForImportoperazione in base al valore del WrappingAlgorithmparametro nella richiesta. È possibile utilizzare questa condizione per richiedere che i principali utilizzino un determinato algoritmo per crittografare il materiale chiave durante il processo di importazione. Le richieste della chiave pubblica e del token di importazione non riescono se viene specificato un diverso algoritmo di wrapping.
La seguente istruzione di policy chiave di esempio utilizza la chiave di condizione kms:WrappingAlgorithm
per fornire all'utente l'autorizzazione a richiamare l'operazione GetParametersForImport
, ma gli impedisce di utilizzare l'algoritmo di wrapping RSAES_OAEP_SHA_1
. Quando WrappingAlgorithm
nella richiesta GetParametersForImport
èRSAES_OAEP_SHA_1
, l'operazione non riesce.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringNotEquals": { "kms:WrappingAlgorithm": "RSAES_OAEP_SHA_1" } } }
Consulta anche
km: WrappingKeySpec
AWS KMS chiavi di condizione | Tipo di condizioni | Value type (Tipo di valore) | APIoperazioni | Tipo di policy |
---|---|---|---|---|
|
Stringa |
A valore singolo |
|
Policy delle chiavi e policy IAM |
Questa chiave di condizione controlla l'accesso all'GetParametersForImportoperazione in base al valore del WrappingKeySpecparametro nella richiesta. È possibile utilizzare questa condizione per richiedere che i principali utilizzino un determinato tipo di chiave pubblica durante il processo di importazione. Se la richiesta specifica un tipo di chiave diversa, ha esito negativo.
Poiché l'unico valore valido per il valore del parametro WrappingKeySpec
è RSA_2048
, impedendo agli utenti di utilizzare questo valore efficacemente, si impedisce loro di utilizzare l'operazione GetParametersForImport
.
La seguente istruzione di policy di esempio utilizza la chiave di condizione kms:WrappingAlgorithm
per richiedere che WrappingKeySpec
nella richiesta sia RSA_4096
.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringEquals": { "kms:WrappingKeySpec": "RSA_4096" } } }
Consulta anche