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à.
Creazione di concessioni
Prima di creare una concessione, scopri le opzioni per la personalizzazione della concessione. È possibile utilizzare vincoli di concessione per limitare le autorizzazioni nella concessione. Scopri di più sulla concessione dell'autorizzazione CreateGrant
. Le entità principali che ricevono l'autorizzazione per creare concessioni da una concessione sono limitate nelle concessioni che possono creare.
Creazione di una concessione
Per creare una sovvenzione, chiama l'CreateGrantoperazione. Specificate una KMS chiave, un titolare del beneficiario e un elenco di operazioni di concessione consentite. È inoltre possibile designare un principale per il ritiro opzionale. Per personalizzare la concessione, puoi usare i parametri Constraints
opzionali per definire i vincoli di concessione
Quando si crea, si ritira o si revoca una concessione, potrebbe verificarsi un breve ritardo, in genere meno di cinque minuti, prima che la modifica sia disponibile in AWS KMS. Per ulteriori informazioni, consulta Consistenza finale (per concessioni).
Ad esempio, il CreateGrant comando seguente crea una concessione che consente agli utenti autorizzati ad assumere il keyUserRole ruolo di richiamare l'operazione Decrypt sulla chiave simmetrica specificata. KMS La concessione utilizza il parametro RetiringPrincipal
per designare un'entità principale che può ritirare la concessione. Include anche un vincolo di concessione che consente l'autorizzazione solo quando il contesto di crittografia nella richiesta include "Department": "IT"
.
$
aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \ --operations Decrypt \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --constraints EncryptionContextSubset={Department=IT}
Se il codice ritenta l'CreateGrant
operazione o utilizza un metodo AWS SDKche riprova automaticamente le richieste, utilizza il parametro opzionale Name per impedire la creazione di concessioni duplicate. Se AWS KMS riceve una CreateGrant
richiesta di concessione con le stesse proprietà di una concessione esistente, incluso il nome, riconosce la richiesta come un nuovo tentativo e non crea una nuova concessione. Non puoi utilizzare il valore Name
per identificare la concessione in qualsiasi operazione AWS KMS
.
Importante
Non includere informazioni riservate o sensibili nel nome della concessione. Può apparire in testo semplice nei CloudTrail log e in altri output.
$
aws kms create-grant \ --name IT-1234abcd-keyUserRole-decrypt \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \ --operations Decrypt \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --constraints EncryptionContextSubset={Department=IT}
Per esempi di codice che dimostrano come creare sovvenzioni in diversi linguaggi di programmazione, vedere. Da utilizzare CreateGrant con un AWS SDK o CLI
Utilizzo dei vincoli di concessione
I vincoli di concessione stabiliscono condizioni relative alle autorizzazioni che la concessione dà all'assegnatario principale. I vincoli di sovvenzione sostituiscono le chiavi condizionali in una politica o in una politica chiave. IAM Ogni valore del vincolo di concessione può includere fino a 8 coppie del contesto di crittografia. Il valore del contesto di crittografia in ogni vincolo di concessione non può superare i 384 caratteri.
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.
AWS KMS supporta due vincoli di concessione EncryptionContextEquals
ed entrambi stabiliscono EncryptionContextSubset
i requisiti per il contesto di crittografia in una richiesta di operazione crittografica.
I vincoli di concessione del contesto di crittografia sono progettati per essere utilizzati con operazioni di concessione che dispongono di un parametro contesto di crittografia.
-
I vincoli del contesto di crittografia sono validi solo in una concessione per una chiave di crittografia simmetrica. KMS Le operazioni crittografiche con altre KMS chiavi non supportano un contesto di crittografia.
-
Il vincolo di contesto di crittografia viene ignorato per le operazioni
DescribeKey
eRetireGrant
.DescribeKey
eRetireGrant
non dispongono di un parametro di contesto di crittografia, ma è possibile includere queste operazioni in una concessione con un vincolo di contesto di crittografia. -
È possibile utilizzare un vincolo di contesto di crittografia in una concessione per l'operazione
CreateGrant
. Il vincolo del contesto di crittografia richiede che tutte le concessioni create con l'autorizzazioneCreateGrant
hanno un vincolo di contesto di crittografia altrettanto rigoroso o più rigoroso.
AWS KMS supporta i seguenti vincoli di concessione del contesto di crittografia.
- EncryptionContextEquals
-
Utilizza
EncryptionContextEquals
per specificare il contesto di crittografia esatto per le richieste consentite.EncryptionContextEquals
richiede che le coppie del contesto di crittografia nella richiesta corrispondano in modo esatto a livello di maiuscole e minuscole alle coppie del contesto di crittografia nel vincolo di concessione. Le coppie possono essere visualizzate in qualsiasi ordine, ma le chiavi e i valori in ciascuna coppia non possono variare.Ad esempio, se il vincolo di concessione
EncryptionContextEquals
richiede la coppia del contesto di crittografia"Department": "IT"
, la concessione consente le richieste del tipo specificato solo quando il contesto di crittografia nella richiesta è esattamente"Department": "IT"
. - EncryptionContextSubset
-
Utilizza
EncryptionContextSubset
per richiedere che le richieste includano particolari coppie di contesto di crittografia.EncryptionContextSubset
richiede che le richieste includano tutte le coppie del contesto di crittografia nel vincolo di concessione (corrispondenti in modo esatto a livello di maiuscole e minuscole), ma la richiesta può avere anche altre coppie di contesto di crittografia. Le coppie possono essere visualizzate in qualsiasi ordine, ma le chiavi e i valori in ciascuna coppia non possono variare.Ad esempio, se il vincolo di concessione
EncryptionContextSubset
richiede la coppia del contesto di crittografiaDepartment=IT
, la concessione consente le richieste del tipo specificato quando il contesto di crittografia nella richiesta è"Department": "IT"
, o include"Department": "IT"
insieme ad altre coppie di contesto di crittografia, come"Department": "IT","Purpose": "Test"
.
Per specificare un vincolo del contesto di crittografia in una concessione per una KMS chiave di crittografia simmetrica, utilizzate il parametro nell'operazione. Constraints
CreateGrant La concessione creata da questo comando concede agli utenti autorizzati ad assumere il ruolo keyUserRole
l'autorizzazione a chiamare l'operazione API Decrypt. Tuttavia, tale autorizzazione è valida solo quando il contesto di crittografia nella richiesta Decrypt
è una coppia di contesto di crittografia "Department": "IT"
.
$
aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \ --operations Decrypt \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --constraints EncryptionContextEquals={Department=IT}
La concessione risultante è simile alla seguente. Tieni presente che l'autorizzazione concessa al ruolo keyUserRole
è valida solo quando la richiesta Decrypt
usa la stessa coppia del contesto di crittografia specificata nel vincolo di concessione. Per trovare le concessioni su una KMS chiave, usa l'operazione. ListGrants
$
aws kms list-grants --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
{ "Grants": [ { "Name": "", "IssuingAccount": "arn:aws:iam::111122223333:root", "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a", "Operations": [ "Decrypt" ], "GranteePrincipal": "arn:aws:iam::111122223333:role/keyUserRole", "Constraints": { "EncryptionContextEquals": { "Department": "IT" } }, "CreationDate": 1568565290.0, "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole" } ] }
Per soddisfare il vincolo di concessione EncryptionContextEquals
, il contesto di crittografia nella richiesta per l'operazione Decrypt
deve essere una coppia "Department": "IT"
. Una richiesta dall'assegnatario principale come la seguente soddisferebbe il vincolo di concessione EncryptionContextEquals
.
$
aws kms decrypt \ --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab\ --ciphertext-blob fileb://encrypted_msg \ --encryption-context Department=IT
Quando il vincolo di concessione è EncryptionContextSubset
, le coppie del contesto di crittografia nella richiesta devono includere le coppie del contesto di crittografia nel vincolo di concessione, ma la richiesta può includere anche altre coppie di contesto di crittografia. Il seguente vincolo di concessione richiede che una delle coppie di contesto di crittografia nella richiesta sia "Deparment": "IT"
.
"Constraints": { "EncryptionContextSubset": { "Department": "IT" } }
La seguente richiesta dall'assegnatario principale soddisferebbe entrambi i vincoli di concessione EncryptionContextEqual
e EncryptionContextSubset
di questo esempio.
$
aws kms decrypt \ --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --ciphertext-blob fileb://encrypted_msg \ --encryption-context Department=IT
Tuttavia, una richiesta come la seguente da parte dell'assegnatario principale soddisferebbe il vincolo di concessioneEncryptionContextSubset
, ma fallirebbe il vincolo di concessione EncryptionContextEquals
.
$
aws kms decrypt \ --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --ciphertext-blob fileb://encrypted_msg \ --encryption-context Department=IT,Purpose=Test
AWS i servizi spesso utilizzano vincoli di contesto di crittografia nelle concessioni che autorizzano loro l'uso KMS delle chiavi nel tuo. Account AWS Ad esempio, Amazon DynamoDB utilizza una concessione come la seguente per ottenere l'autorizzazione a utilizzare la Chiave gestita da AWS per DynamoDB nel tuo account. Il vincolo di concessione EncryptionContextSubset
in questa concessione rende le autorizzazioni nella concessione valide solo quando il contesto di crittografia nella richiesta include coppie "tableName":
"Services"
e "subscriberID": "111122223333"
. Questo vincolo di concessione significa che la concessione consente a DynamoDB di utilizzare la KMS chiave specificata solo per una particolare tabella del tuo. Account AWS
Per ottenere questo risultato, esegui l'ListGrantsoperazione su Chiave gestita da AWS per DynamoDB nel tuo account.
$
aws kms list-grants --key-id 0987dcba-09fe-87dc-65ba-ab0987654321 { "Grants": [ { "Operations": [ "Decrypt", "Encrypt", "GenerateDataKey", "ReEncryptFrom", "ReEncryptTo", "RetireGrant", "DescribeKey" ], "IssuingAccount": "arn:aws:iam::111122223333:root", "Constraints": { "EncryptionContextSubset": { "aws:dynamodb:tableName": "Services", "aws:dynamodb:subscriberId": "111122223333" } }, "CreationDate": 1518567315.0, "KeyId": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "GranteePrincipal": "dynamodb.us-west-2.amazonaws.com", "RetiringPrincipal": "dynamodb.us-west-2.amazonaws.com", "Name": "8276b9a6-6cf0-46f1-b2f0-7993a7f8c89a", "GrantId": "1667b97d27cf748cf05b487217dd4179526c949d14fb3903858e25193253fe59" } ] }
Concessione dell'autorizzazione CreateGrant
Una concessione può includere l'autorizzazione per chiamare l'operazione CreateGrant
. Ma quando un assegnatario principale ottiene l'autorizzazione di chiamare CreateGrant
da una concessione, piuttosto che da una policy, tale autorizzazione è limitata.
-
L'assegnatario principale può solo creare concessioni che consentono alcune o tutte le operazioni nella concessione primaria.
-
I vincoli di concessione nelle concessioni che creano devono essere almeno altrettanto rigorosi di quelli della concessione primaria.
Queste limitazioni non si applicano ai principali che ottengono l'autorizzazione CreateGrant
da una policy, anche se le loro autorizzazioni possono essere limitate dalle condizioni della policy.
Ad esempio, considera una concessione che consente al principale della concessione di chiamare le operazioni GenerateDataKey
, Decrypt
e CreateGrant
. Chiamiamo una concessione che consente all'autorizzazione CreateGrant
a una concessione primaria.
# The original grant in a ListGrants response. { "Grants": [ { "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1572216195.0, "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a", "Operations": [ "GenerateDataKey", "Decrypt", "CreateGrant ] "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole", "Name": "", "IssuingAccount": "arn:aws:iam::111122223333:root", "GranteePrincipal": "arn:aws:iam::111122223333:role/keyUserRole", "Constraints": { "EncryptionContextSubset": { "Department": "IT" } }, } ] }
Il titolare del beneficiario,exampleUser, può utilizzare questa autorizzazione per creare una concessione che includa qualsiasi sottoinsieme delle operazioni specificate nella concessione originale, ad esempio e. CreateGrant
Decrypt
La concessione secondaria non può includere altre operazioni, come ScheduleKeyDeletion
o ReEncrypt
.
Inoltre, i vincoli nelle concessioni secondarie devono essere altrettanto o più restrittivi di quelli della concessione primaria. Ad esempio, la concessione figlio può aggiungere coppie a un vincolo EncryptionContextSubset
nella concessione padre, ma non può rimuoverle. La concessione figlio può modificare un vincolo EncryptionContextSubset
in un vincolo EncryptionContextEquals
, ma non viceversa.
IAMle migliori pratiche scoraggiano l'uso di IAM utenti con credenziali a lungo termine. Quando possibile, utilizzate IAM ruoli che forniscono credenziali temporanee. Per i dettagli, consulta le migliori pratiche di sicurezza IAM nella Guida per l'IAMutente.
Ad esempio, l'assegnatario principale della concessione può utilizzare l'autorizzazione CreateGrant
che ha ottenuto dalla concessione primaria per creare la seguente concessione secondaria. Le operazioni nella concessione secondaria sono un sottoinsieme di operazioni della concessione primaria e i vincoli di concessione sono più restrittivi.
# The child grant in a ListGrants response. { "Grants": [ { "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1572249600.0, "GrantId": "fedcba9999c1e2e9876abcde6e9d6c9b6a1987650000abcee009abcdef40183f", "Operations": [ "CreateGrant" "Decrypt" ] "RetiringPrincipal": "arn:aws:iam::111122223333:user/exampleUser", "Name": "", "IssuingAccount": "arn:aws:iam::111122223333:root", "GranteePrincipal": "arn:aws:iam::111122223333:user/anotherUser", "Constraints": { "EncryptionContextEquals": { "Department": "IT" } }, } ] }
L'assegnatario principale nella concessione secondaria, anotherUser
, può utilizzare il la sua autorizzazione CreateGrant
per creare concessioni. Tuttavia, le concessioni che anotherUser
crea devono includere le operazioni nella sua concessione primaria o in un sottoinsieme e i vincoli di concessione devono essere uguali o più severi.