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à.
Come utilizza AWS Systems Manager Parameter Store AWS KMS
Con AWS Systems Manager Parameter Store, è possibile creare parametri di stringa sicuri, ovvero parametri con un nome di parametro in testo semplice e un valore di parametro crittografato. Parameter Store viene utilizzato AWS KMS per crittografare e decrittografare i valori dei parametri delle stringhe sicure.
Con Parameter Store è possibile creare, archiviare e gestire i dati come parametri con valori. È possibile creare un parametro in Parameter Store e utilizzarlo in più applicazioni e servizi soggetti a policy e autorizzazioni che tu stesso stabilisci. Quando è necessario modificare il valore di un parametro, è possibile modificare un'istanza piuttosto che gestire modifiche soggette a errore in numerose origini. Parameter Store supporta una struttura gerarchica per i nomi dei parametri, in modo da definire un parametro per utilizzi specifici.
Per gestire i dati sensibili, è possibile creare parametri di stringa sicura. Parameter Store consente AWS KMS keys di crittografare i valori dei parametri delle stringhe sicure quando vengono creati o modificati. Utilizza inoltre KMS le chiavi per decrittografare i valori dei parametri quando vi si accede. Puoi utilizzare la Chiave gestita da AWS che Parameter Store crea per l'account o specificare la tua chiave gestita dal cliente.
Importante
Parameter Store supporta solo chiavi KMSsimmetriche. Non è possibile utilizzare una KMSchiave asimmetrica per crittografare i parametri. Per informazioni su come determinare se una KMS chiave è simmetrica o asimmetrica, vedere. Identifica diversi tipi di chiave
Parameter Store supporta i parametri nei livelli standard e avanzato. I parametri standard, che non possono superare i 4096 byte, vengono crittografati e decrittografati direttamente con la chiave specificata. KMS Per crittografare e decrittografare i parametri di stringa sicura avanzati, Parameter Store utilizza la crittografia envelope con AWS Encryption SDK. È possibile convertire un parametro di stringa sicura standard in un parametro avanzato, ma non è possibile convertire un parametro avanzato in uno standard. Per ulteriori informazioni sulla differenza tra i parametri di stringa sicuri standard e avanzati, vedere Informazioni sui parametri avanzati di Systems Manager nella Guida per l' AWS Systems Manager utente.
Argomenti
Protezione dei parametri di stringa sicura standard
Parameter Store non esegue alcuna operazione di crittografia. Si basa invece sulla AWS KMS crittografia e la decrittografia dei valori dei parametri di stringa sicuri. Quando si crea o si modifica un valore di parametro di stringa sicura standard, Parameter Store richiama l'operazione Encrypt. AWS KMS Questa operazione utilizza direttamente una KMS chiave di crittografia simmetrica per crittografare il valore del parametro anziché utilizzare la KMS chiave per generare una chiave dati.
È possibile selezionare la KMS chiave utilizzata da Parameter Store per crittografare il valore del parametro. Se non si specifica una KMS chiave, Parameter Store utilizza quella Chiave gestita da AWS che Systems Manager crea automaticamente nell'account. Questa KMS chiave ha l'aws/ssm
alias.
Per visualizzare la aws/ssm
KMS chiave predefinita per il tuo account, utilizza l'DescribeKeyoperazione in. AWS KMS API L'esempio seguente utilizza il describe-key
comando contenuto in AWS Command Line Interface (AWS CLI) con il nome aws/ssm
alias.
aws kms describe-key --key-id alias/aws/ssm
Per creare un parametro di stringa sicuro standard, utilizzare l'PutParameteroperazione in Systems ManagerAPI. Ometti il parametro Tier
o specifica un valore Standard
, che è l'impostazione predefinita. Includi un parametro Type
con un valore SecureString
. Per specificare una KMS chiave, utilizzare il KeyId
parametro. L'impostazione predefinita è Chiave gestita da AWS per il tuo account,aws/ssm
.
Parameter Store richiama quindi l' AWS KMS Encrypt
operazione con la KMS chiave e il valore del parametro in testo semplice. AWS KMS restituisce il valore crittografato del parametro, che Parameter Store memorizza con il nome del parametro.
L'esempio seguente utilizza il comando put-parameter di Systems Manager e il relativo --type
parametro in AWS CLI per creare un parametro di stringa sicuro. Poiché il comando omette i parametri opzionali --tier
e, --key-id
Parameter Store crea un parametro di stringa sicuro standard e lo cripta in base al Chiave gestita da AWS
aws ssm put-parameter --name MyParameter --value "secret_value" --type SecureString
Il seguente esempio simile utilizza il parametro --key-id
per specificare una chiave gestita dal cliente. L'esempio utilizza un ID KMS chiave per identificare la KMS chiave, ma è possibile utilizzare qualsiasi identificatore di KMS chiave valido. Poiché il comando omette il parametro Tier
(--tier
), Parameter Store crea un parametro di stringa sicura standard, non uno avanzato.
aws ssm put-parameter --name param1 --value "secret" --type SecureString --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
Quando si ottiene un parametro di stringa sicura da Parameter Store, il suo valore è crittografato. Per ottenere un parametro, utilizzare l'GetParameter operazione in Systems ManagerAPI.
L'esempio seguente utilizza il comando get-parameter di Systems Manager in AWS CLI per ottenere il MyParameter
parametro da Parameter Store senza decriptarne il valore.
$
aws ssm get-parameter --name MyParameter
{ "Parameter": { "Type": "SecureString", "Name": "MyParameter", "Value": "AQECAHgnOkMROh5LaLXkA4j0+vYi6tmM17Lg/9E464VRo68cvwAAAG8wbQYJKoZIhvcNAQcGoGAwXgIBADBZBgkqhkiG9w0BBwEwHgYJYZZIAWUDBAEuMBEEDImYOw44gna0Jm00hAIBEIAsjgr7mum1EnnXzE3xM8bGle0oKYcfVCHtBkfjIeZGTgL6Hg0fSDnpMHdcSXY=" } }
Per decrittografare il valore del parametro prima di restituirlo, imposta il parametro WithDecryption
di GetParameter
su true
. Quando si utilizzaWithDecryption
, Parameter Store richiama l'operazione AWS KMS Decrypt per conto dell'utente per decrittografare il valore del parametro. Di conseguenza, la richiesta GetParameter
restituisce il parametro con un valore di parametro in testo normale, come mostrato nel seguente esempio.
$
aws ssm get-parameter --name MyParameter --with-decryption
{ "Parameter": { "Type": "SecureString", "Name": "MyParameter", "Value": "secret_value" } }
Il seguente flusso di lavoro mostra come Parameter Store utilizza una KMS chiave per crittografare e decrittografare un parametro di stringa sicuro standard.
Crittografare un parametro standard
-
Quando usi
PutParameter
per creare un parametro di stringa sicura, Parameter Store invia una richiestaEncrypt
a AWS KMS. Tale richiesta include il valore del parametro in testo semplice, la KMS chiave scelta e il contesto di crittografia Parameter Store. Durante la trasmissione a AWS KMS, il valore di testo in chiaro nel parametro secure string è protetto da Transport Layer Security (). TLS -
AWS KMS crittografa il valore del parametro con la KMS chiave e il contesto di crittografia specificati. Restituisce il testo cifrato a Parameter Store, che memorizza il nome e il valore crittografato del parametro.
Decrittografia di un parametro standard
-
Quando includi il parametro
WithDecryption
in una richiestaGetParameter
, Parameter Store invia una richiestaDecrypt
a AWS KMS con il valore di parametro di stringa sicura crittografato e il contesto di crittografia di Parameter Store. -
AWS KMS utilizza la stessa KMS chiave e il contesto di crittografia fornito per decrittografare il valore crittografato. Restituisce il valore del parametro in testo in chiaro (decrittografato) a Parameter Store. Durante la trasmissione, i dati in chiaro sono protetti da. TLS
-
Parameter Store restituisce il valore del parametro in testo in chiaro nella risposta
GetParameter
.
Protezione dei parametri di stringa sicura avanzati
Quando si utilizza PutParameter
per creare un parametro di stringa sicuro avanzato, Parameter Store utilizza la crittografia a busta con AWS Encryption SDK e una crittografia simmetrica AWS KMS key per proteggere il valore del parametro. Ogni valore di parametro avanzato viene crittografato con una chiave dati univoca e la chiave dati viene crittografata con una chiave. KMS Puoi utilizzare la Chiave gestita da AWS per l'account (aws/ssm
) o qualsiasi chiave gestita dal cliente.
AWS Encryption SDK è una libreria open source lato client, che consente di crittografare e decrittografare i dati utilizzando gli standard di settore e le best practice. È supportata su più piattaforme e in più linguaggi di programmazione, compresa un'interfaccia a riga di comando. È possibile visualizzare il codice sorgente e contribuire al suo sviluppo in GitHub.
Per ogni valore di parametro di stringa sicura, Parameter Store chiama AWS Encryption SDK per crittografare il valore del parametro utilizzando una chiave dati univoca che AWS KMS genera (GenerateDataKey). AWS Encryption SDK Restituisce a Parameter Store un messaggio crittografato che include il valore del parametro crittografato e una copia crittografata della chiave dati univoca. Parameter Store archivia l'intero messaggio crittografato nel valore del parametro stringa sicura. Quindi, quando si ottiene un valore avanzato del parametro Secure String, Parameter Store utilizza il AWS Encryption SDK per decrittografare il valore del parametro. Ciò richiede una chiamata per AWS KMS decrittografare la chiave dati crittografata.
Per creare un parametro di stringa sicuro avanzato, utilizzare l'PutParameteroperazione in Systems ManagerAPI. Imposta il valore del parametro Tier
su Advanced
. Includi un parametro Type
con un valore SecureString
. Per specificare una KMS chiave, utilizzare il KeyId
parametro. L'impostazione predefinita è Chiave gestita da AWS per il tuo account,aws/ssm
.
aws ssm put-parameter --name MyParameter --value "secret_value" --type SecureString --tier Advanced
Il seguente esempio simile utilizza il parametro --key-id
per specificare una chiave gestita dal cliente. L'esempio utilizza l'Amazon Resource Name (ARN) della KMS chiave, ma puoi utilizzare qualsiasi identificatore di KMS chiave valido.
aws ssm put-parameter --name MyParameter --value "secret_value" --type SecureString --tier Advanced --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
Quando ottieni un parametro di stringa sicuro da Parameter Store, il suo valore è il messaggio crittografato AWS Encryption SDK restituito. Per ottenere un parametro, utilizzare l'GetParameter operazione in Systems ManagerAPI.
L'esempio seguente utilizza l'operazione GetParameter
di Systems Manager per ottenere il parametro MyParameter
da Parameter Store senza decrittarne il valore.
$
aws ssm get-parameter --name MyParameter
{ "Parameter": { "Type": "SecureString", "Name": "MyParameter", "Value": "AQECAHgnOkMROh5LaLXkA4j0+vYi6tmM17Lg/9E464VRo68cvwAAAG8wbQYJKoZIhvcNAQcGoGAwXgIBADBZBgkqhkiG9w0BBwEwHgYJYZZIAWUDBAEuMBEEDImYOw44gna0Jm00hAIBEIAsjgr7mum1EnnXzE3xM8bGle0oKYcfVCHtBkfjIeZGTgL6Hg0fSDnpMHdcSXY=" } }
Per decrittografare il valore del parametro prima di restituirlo, imposta il parametro WithDecryption
di GetParameter
su true
. Quando si utilizzaWithDecryption
, Parameter Store richiama l'operazione AWS KMS Decrypt per conto dell'utente per decrittografare il valore del parametro. Di conseguenza, la richiesta GetParameter
restituisce il parametro con un valore di parametro in testo normale, come mostrato nel seguente esempio.
$
aws ssm get-parameter --name MyParameter --with-decryption
{ "Parameter": { "Type": "SecureString", "Name": "MyParameter", "Value": "secret_value" } }
Non è possibile convertire un parametro di stringa sicura avanzato in uno standard, ma è possibile convertire un parametro di stringa sicura standard in uno avanzato. Per convertire un parametro di stringa sicura standard in uno avanzato, utilizza l'operazione PutParameter
con il parametro Overwrite
. Type
deve essere SecureString
e il valore Tier
deve essere Advanced
. Il parametro KeyId
che identifica una chiave gestita dal cliente è facoltativo. Se lo ometti, Parameter Store utilizza l'per l'account. Chiave gestita da AWS È possibile specificare qualsiasi KMS chiave che il principale è autorizzato a utilizzare, anche se è stata utilizzata una KMS chiave diversa per crittografare il parametro standard.
Quando si utilizza il Overwrite
parametro, Parameter Store utilizza il AWS Encryption SDK per crittografare il valore del parametro. Quindi memorizza il nuovo messaggio crittografato in Parameter Store.
$
aws ssm put-parameter --name myStdParameter --value "secret_value" --type SecureString --tier Advanced --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --overwrite
Il seguente flusso di lavoro mostra come Parameter Store utilizza una KMS chiave per crittografare e decrittografare un parametro di stringa sicuro avanzato.
Crittografare un parametro avanzato
-
Quando si utilizza
PutParameter
per creare un parametro di stringa sicuro avanzato, Parameter Store utilizza AWS Encryption SDK e AWS KMS per crittografare il valore del parametro. Parameter Store chiama il contesto di crittografia Parameter Store AWS Encryption SDK con il valore del parametro, la KMS chiave specificata e il contesto di crittografia Parameter Store. -
AWS Encryption SDK Invia una GenerateDataKeyrichiesta a AWS KMS con l'identificatore della KMS chiave specificata e il contesto di crittografia Parameter Store. AWS KMS restituisce due copie della chiave dati univoca: una in testo semplice e una crittografata sotto la chiave. KMS Il contesto di crittografia viene utilizzato per crittografare la chiave di dati.
-
AWS Encryption SDK utilizza la chiave di dati in testo semplice per crittografare il valore del parametro. Restituisce un messaggio crittografato che include il valore di parametro crittografato, la chiave di dati crittografata e altri dati, tra cui il contesto di crittografia di Parameter Store.
-
Parameter Store archivia il messaggio crittografato come valore del parametro.
Decrittografare un parametro avanzato
-
È possibile includere il parametro
WithDecryption
in una richiestaGetParameter
per ottenere un parametro di stringa sicura avanzato. In questo caso, Parameter Store trasmette il messaggio crittografato dal valore di parametro a un metodo di decrittografia dell' AWS Encryption SDK. -
AWS Encryption SDK Richiama l'operazione Decrypt. AWS KMS Trasferisce la chiave di dati crittografata e il contesto di crittografia di Parameter Store dal messaggio crittografato.
-
AWS KMS utilizza la KMS chiave e il contesto di crittografia Parameter Store per decrittografare la chiave di dati crittografata. Quindi restituisce la chiave di dati in testo normale (decrittografato) a AWS Encryption SDK.
-
AWS Encryption SDK utilizza la chiave di dati in testo semplice per decrittografare il valore del parametro. Restituisce il valore del parametro in testo in chiaro a Parameter Store.
-
Parameter Store verifica il contesto di crittografia e restituisce il valore del parametro in testo in chiaro nella risposta
GetParameter
.
Impostazione delle autorizzazioni per crittografare e decrittografare i valori dei parametri
Per crittografare un valore di parametro di stringa sicura standard, l'utente necessita dell'autorizzazione kms:Encrypt
. Per crittografare un valore di parametro di stringa sicura avanzato, l'utente necessita dell'autorizzazione kms:GenerateDataKey
. Per decrittografare entrambi i tipi di valori di parametri di stringa sicura, l'utente necessita dell'autorizzazione kms:Decrypt
.
È possibile utilizzare IAM le politiche per consentire o negare l'autorizzazione a un utente di chiamare Systems Manager PutParameter
e GetParameter
le operazioni.
Se si utilizzano chiavi gestite dal cliente per crittografare i valori dei parametri delle stringhe sicure, è possibile utilizzare IAM policy e policy chiave per gestire le autorizzazioni di crittografia e decrittografia. Tuttavia, non è possibile stabilire politiche di controllo dell'accesso per la chiave predefinita. aws/ssm
KMS Per ulteriori informazioni sul controllo degli accessi alle chiavi gestite dal cliente, consulta KMSaccesso con chiavi e autorizzazioni.
L'esempio seguente mostra una IAM politica progettata per parametri di stringa sicuri standard. Questa consente all'utente di chiamare l'operazione PutParameter
di Systems Manager su tutti i parametri nel percorso FinancialParameters
. La policy consente inoltre all'utente di richiamare l' AWS KMS
Encrypt
operazione su una chiave gestita dal cliente di esempio.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter" ], "Resource": "arn:aws:ssm:us-west-2:111122223333:parameter/FinancialParameters/*" }, { "Effect": "Allow", "Action": [ "kms:Encrypt" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }
L'esempio successivo mostra una IAM politica progettata per parametri avanzati di stringa sicuri. Questa consente all'utente di chiamare l'operazione PutParameter
di Systems Manager su tutti i parametri nel percorso ReservedParameters
. La policy consente inoltre all'utente di richiamare l' AWS KMS
GenerateDataKey
operazione su una chiave gestita dal cliente di esempio.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter" ], "Resource": "arn:aws:ssm:us-west-2:111122223333:parameter/ReservedParameters/*" }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }
L'ultimo esempio mostra anche una IAM politica che può essere utilizzata per parametri di stringa sicuri standard o avanzati. Questa consente all'utente di chiamare le operazioni GetParameter
di Systems Manager (e le operazioni correlate) su tutti i parametri nel percorso ITParameters
. La policy consente inoltre all'utente di richiamare l' AWS KMS Decrypt
operazione su una chiave gestita dal cliente di esempio.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameter*" ], "Resource": "arn:aws:ssm:us-west-2:111122223333:parameter/ITParameters/*" }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }
Contesto di crittografia di Parameter Store
Un contesto di crittografia è un set di coppie chiave-valore che contiene dati arbitrari non segreti. Quando includi un contesto di crittografia in una richiesta di crittografia dei dati, associa AWS KMS crittograficamente il contesto di crittografia ai dati crittografati. lo stesso contesto di crittografia sia necessario per decrittografare i dati.
È inoltre possibile utilizzare il contesto di crittografia per identificare un'operazione di crittografia nei record e nei log di controllo. Il contesto di crittografia viene visualizzato in testo normale nei log, ad esempio nei log di AWS CloudTrail.
Utilizza AWS Encryption SDK anche un contesto di crittografia, sebbene lo gestisca in modo diverso. Parameter Store fornisce il contesto di crittografia al metodo di crittografia. AWS Encryption SDK associa crittograficamente il contesto di crittografia ai dati crittografati. Include il contesto di crittografia in testo normale nell'intestazione del messaggio crittografato restituito. Tuttavia AWS KMS, a differenza dei metodi di AWS Encryption SDK decrittografia, non utilizzano un contesto di crittografia come input. Invece, quando decrittografa i dati, AWS Encryption SDK ottiene il contesto di crittografia dal messaggio crittografato. Parameter Store verifica che il contesto di crittografia includa il valore atteso prima di restituire il valore del parametro in testo in chiaro.
Parameter Store usa il seguente contesto di crittografia in tutte le operazioni di crittografia:
-
Chiave:
PARAMETER_ARN
-
Valore: Amazon Resource Name (ARN) del parametro che viene crittografato.
Il formato del contesto di crittografia è il seguente:
"PARAMETER_ARN":"arn:aws:ssm:
<REGION_NAME>
:<ACCOUNT_ID>
:parameter/<parameter-name>
"
Ad esempio, Parameter Store include questo contesto di crittografia nelle chiamate per crittografare e decrittografare il MyParameter
parametro in un esempio Account AWS e in una regione.
"PARAMETER_ARN":"arn:aws:ssm:us-west-2:111122223333:parameter/MyParameter"
Se il parametro è in un percorso gerarchico di Parameter Store, il nome e il percorso sono inclusi nel contesto di crittografia. Ad esempio, questo contesto di crittografia viene utilizzato per crittografare e decrittografare il MyParameter
parametro nel /ReadableParameters
percorso in un esempio e in una regione. Account AWS
"PARAMETER_ARN":"arn:aws:ssm:us-west-2:111122223333:parameter/ReadableParameters/MyParameter"
È possibile decrittografare un valore del parametro di stringa sicura crittografata chiamando l' AWS KMS
Decrypt
operazione con il contesto di crittografia corretto e il valore del parametro crittografato restituito dall'GetParameter
operazione Systems Manager. Tuttavia, consigliamo di decrittare i valori del parametro GetParameter
di Parameter Store usando l'operazione con il parametro WithDecryption
.
È inoltre possibile includere il contesto di crittografia in una IAM policy. Ad esempio, è possibile consentire a un utente di decrittografare solo un determinato valore di parametro o un set di valori di parametri.
La seguente dichiarazione IAM politica di esempio consente all'utente di ottenere il valore del MyParameter
parametro e di decrittografarne il valore utilizzando la chiave specificataKMS. Tuttavia le autorizzazioni si applicano solo quando il contesto di crittografia corrisponde alla stringa specificata. Queste autorizzazioni non si applicano a nessun altro parametro o KMS chiave e la chiamata a ha GetParameter
esito negativo se il contesto di crittografia non corrisponde alla stringa.
Prima di utilizzare una dichiarazione politica come questa, sostituite l'esempio ARNs con valori validi.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameter*" ], "Resource": "
arn:aws:ssm:us-west-2:111122223333:parameter/MyParameter
" }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
", "Condition": { "StringEquals": { "kms:EncryptionContext:PARAMETER_ARN":"arn:aws:ssm:us-west-2:111122223333:parameter/MyParameter
" } } } ] }
Risoluzione dei problemi KMS principali in Parameter Store
Per eseguire qualsiasi operazione su un parametro di stringa sicuro, Parameter Store deve essere in grado di utilizzare la AWS KMS KMS chiave specificata per l'operazione prevista. La maggior parte degli errori di Parameter Store relativi alle KMS chiavi sono causati dai seguenti problemi:
-
Le credenziali utilizzate da un'applicazione non sono autorizzate a eseguire l'azione specificata sulla KMS chiave.
Per correggere questo errore, esegui l'applicazione con credenziali diverse o rivedi la politica IAM o la chiave che impedisce l'operazione. Per assistenza AWS KMS IAM e per le politiche chiave, consulta. KMSaccesso con chiavi e autorizzazioni
-
La KMS chiave non è stata trovata.
Ciò si verifica in genere quando si utilizza un identificatore errato per la KMS chiave. Trova gli identificatori corretti per la KMS chiave e riprova con il comando.
-
La KMS chiave non è abilitata. Quando ciò si verifica, Parameter Store restituisce un'
InvalidKeyId
eccezione con un messaggio di errore dettagliato da AWS KMS. Se lo stato della KMS chiave èDisabled
, abilitalo. Se èPending Import
, completa la procedura di importazione. Se lo stato della chiave èPending Deletion
, annulla l'eliminazione della chiave o usa una KMS chiave diversa.Per trovare lo stato chiave di una KMS chiave, utilizzate l'DescribeKeyoperazione.