

• La AWS Systems Manager CloudWatch dashboard non sarà più disponibile dopo il 30 aprile 2026. I clienti possono continuare a utilizzare la CloudWatch console Amazon per visualizzare, creare e gestire le proprie CloudWatch dashboard Amazon, proprio come fanno oggi. Per ulteriori informazioni, consulta la [documentazione di Amazon CloudWatch Dashboard](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html). 

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 crittografia per AWS Systems ManagerParameter Store SecureString i parametri
<a name="secure-string-parameter-kms-encryption"></a>

Con AWS Systems Manager Parameter Store, è possibile creare [SecureString parametri, ossia parametri](https://docs.aws.amazon.com//systems-manager/latest/userguide/systems-manager-parameter-store.html#what-is-a-parameter) con un nome di parametro in testo semplice e un valore di parametro crittografato. Parameter Storeviene utilizzato AWS KMS per crittografare e decrittografare i valori dei parametri dei parametri. `SecureString`

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. `SecureString` Parameter Storeutilizza AWS KMS keys per crittografare i valori dei `SecureString` parametri quando vengono creati o modificati. Utilizza inoltre le chiavi KMS per decrittare i valori dei parametri al momento dell'accesso. È possibile utilizzare la [Chiave gestita da AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) che Parameter Store crea per l'account, oppure specificare la propria [chiave gestita dal cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk). 

**Importante**  
Parameter Store supporta solo [chiavi KMS simmetriche](https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-choose-key-spec.html#symmetric-cmks). Non è possibile utilizzare una [chiave KMS asimmetrica](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) per crittografare i parametri. Per informazioni su come determinare se una chiave KMS è o meno asimmetrica, consulta [Identifica i diversi tipi di chiavi](https://docs.aws.amazon.com/kms/latest/developerguide/identify-key-types.html) nella *Guida per gli sviluppatori di AWS Key Management Service *.

Parameter Store supporta due livelli di parametri `SecureString`: *standard* e *avanzati*. I parametri standard, che non possono superare i 4096 byte, sono crittografati e decrittati direttamente con la chiave KMS specificata. Per crittografare e decrittografare i parametri `SecureString` avanzati, Parameter Store utilizza la crittografia a busta con [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/). È possibile convertire un parametro `SecureString` standard in un parametro avanzato, ma non è possibile convertire un parametro avanzato in uno standard. Per ulteriori informazioni sulla differenza tra parametri `SecureString` standard e avanzati, consulta [Gestione dei livelli dei parametri](parameter-store-advanced-parameters.md).

**Topics**
+ [Protezione dei parametri standard SecureString](#kms-encryption-securestring-standard)
+ [Protezione dei parametri avanzati SecureString](#kms-encryption-securestring-advanced)
+ [Impostazione delle autorizzazioni per crittografare e decrittografare i valori dei parametri](#parameter-policy-kms-encryption)
+ [Contesto di crittografia Parameter Store](#parameter-store-kms-encryption-context)
+ [Risoluzione dei problemi relativi alla chiave KMS in Parameter Store](#parameter-store-kms-cmk-troubleshooting)

## Protezione dei parametri standard SecureString
<a name="kms-encryption-securestring-standard"></a>

Parameter Store non esegue alcuna operazione di crittografia. Al contrario, si basa su AWS KMS per crittografare e decrittografare i valori dei parametri `SecureString`. Quando create o modificate il valore di un `SecureString` parametro standard, Parameter Store richiama l'operazione AWS KMS [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html). Questa operazione usa una chiave KMS di crittografia simmetrica direttamente per crittografare il valore del parametro anziché utilizzare la chiave KMS per generare una [chiave dei dati](https://docs.aws.amazon.com/kms/latest/developerguide/data-keys.html). 

È possibile selezionare la chiave KMS utilizzata da Parameter Store per crittografare il valore del parametro. Non specificando una chiave KMS, Parameter Store usa la Chiave gestita da AWS generata automaticamente da Systems Manager nell'account. Questa chiave KMS ha l'alias `aws/ssm`.

Per visualizzare la chiave `aws/ssm` KMS predefinita per il tuo account, utilizza l'[DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)operazione nell' AWS KMS API. L'esempio seguente utilizza il `describe-key` comando in the AWS Command Line Interface (AWS CLI) con il nome `aws/ssm` alias.

```
aws kms describe-key \
    --key-id alias/aws/ssm
```

Per creare un `SecureString` parametro standard, utilizzare l'[PutParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PutParameter.html)operazione nell'API Systems Manager. Ometti il parametro `Tier` o specifica un valore `Standard`, che è l'impostazione predefinita. Includi un parametro `Type` con un valore `SecureString`. Per specificare una chiave KMS, utilizza il parametro `KeyId`. L'impostazione predefinita è Chiave gestita da AWS per il tuo account,`aws/ssm`. 

Parameter Storequindi richiama l' AWS KMS `Encrypt`operazione con la chiave KMS e il valore del parametro plaintext. AWS KMS restituisce il valore crittografato del parametro, che viene Parameter Store memorizzato con il nome del parametro.

L'esempio seguente utilizza il comando [put-parameter](https://docs.aws.amazon.com/cli/latest/reference/ssm/put-parameter.html) di Systems Manager e il relativo `--type` parametro in AWS CLI per creare un `SecureString` parametro. Poiché il comando omette i parametri opzionali `--tier` e `--key-id`, Parameter Store crea un parametro `SecureString` standard e lo crittografa con la 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](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk). Nell'esempio viene utilizzato un ID chiave KMS per identificare la chiave KMS, ma è possibile utilizzare qualsiasi identificatore di chiave KMS valido. Poiché il comando omette il parametro `Tier` (`--tier`), Parameter Store crea un parametro `SecureString` 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 `SecureString` da Parameter Store, il valore è crittografato. Per ottenere un parametro, utilizzare l'[GetParameter ](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html)operazione nell'API Systems Manager.

L'esempio seguente utilizza il comando [get-parameter](https://docs.aws.amazon.com/cli/latest/reference/ssm/get-parameter.html) 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"
    }
}
```

Per decrittografare il valore del parametro prima di restituirlo, impostare il parametro `WithDecryption` di `GetParameter` su `true`. Quando si utilizza`WithDecryption`, Parameter Store richiama l'operazione Decrypt per conto dell'utente per AWS KMS [decrittografare](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 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 il modo in cui Parameter Store utilizza una chiave KMS per crittografare e decrittare un parametro `SecureString` standard.

### Crittografare un parametro standard
<a name="kms-encryption-securestring-standard-encrypt"></a>

1. Quando si utilizza `PutParameter` per creare un parametro `SecureString`, Parameter Store invia una richiesta `Encrypt` a AWS KMS. Questa richiesta include il valore del parametro in testo normale, la chiave KMS scelta e il [contesto di crittografia di Parameter Store](#parameter-store-kms-encryption-context). Durante la trasmissione a AWS KMS, il valore in chiaro del `SecureString` parametro è protetto da Transport Layer Security (TLS).

1. AWS KMS crittografa il valore del parametro con la chiave KMS e il contesto di crittografia specificati. Restituisce il testo criptato a Parameter Store, che memorizza il nome e il valore crittografato del parametro.  
![\[Crittografia di un valore di parametro standard SecureString\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/service-pstore-standard.png)

### Decrittografia di un parametro standard
<a name="kms-encryption-securestring-standard-decrypt"></a>

1. Quando includi il `WithDecryption` parametro in una `GetParameter` richiesta, Parameter Store invia una `Decrypt` richiesta a AWS KMS con il valore del `SecureString` parametro crittografato e il [contesto di Parameter Store crittografia](#parameter-store-kms-encryption-context).

1. AWS KMS utilizza la stessa chiave KMS e il contesto di crittografia fornito per decrittografare il valore crittografato. Restituisce il valore del parametro in testo normale (decrittografato) a Parameter Store. Durante la trasmissione, i dati in testo normale sono protetti da TLS.

1. Parameter Store restituisce il valore del parametro in testo normale nella risposta `GetParameter`.

## Protezione dei parametri avanzati SecureString
<a name="kms-encryption-securestring-advanced"></a>

Quando si utilizza `PutParameter` per creare un `SecureString` parametro avanzato, Parameter Store utilizza la crittografia a [busta con AWS Encryption SDK e una crittografia](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/how-it-works.html#envelope-encryption) simmetrica AWS KMS key per proteggere il valore del parametro. Ogni valore di parametro avanzato è crittografato con una chiave di dati univoca e la chiave di dati è crittografata con una chiave KMS. È possibile utilizzare la [Chiave gestita da AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) per l'account (`aws/ssm`) o qualsiasi chiave gestita dal cliente.

[AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/) è 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 del `SecureString` parametro, Parameter Store chiama AWS Encryption SDK per crittografare il valore del parametro utilizzando una chiave dati univoca che AWS KMS genera ([GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)). AWS Encryption SDK Ritorna a Parameter Store un [messaggio crittografato](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#message) che include il valore del parametro crittografato e una copia crittografata della chiave dati univoca. Parameter Storememorizza l'intero messaggio crittografato nel valore del `SecureString` parametro. Quindi, quando si ottiene un valore di `SecureString` parametro avanzato, 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 `SecureString` parametro avanzato, utilizzare l'[PutParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PutParameter.html)operazione nell'API Systems Manager. Imposta il valore del parametro `Tier` su `Advanced`. Includi un parametro `Type` con un valore `SecureString`. Per specificare una chiave KMS, utilizza il parametro `KeyId`. 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](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk). Questo esempio utilizza il nome della risorsa Amazon (ARN) della chiave KMS, ma è possibile usare qualunque identificatore di chiave KMS valido. 

```
aws ssm put-parameter \
    --name MyParameter \
    --value "secret_value" \
    --type SecureString \
    --tier Advanced \
    --key-id arn:aws:kms:us-east-2:987654321098:key/1234abcd-12ab-34cd-56ef-1234567890ab
```

Quando si ottiene un `SecureString` parametro daParameter Store, il suo valore è il messaggio crittografato AWS Encryption SDK restituito. Per ottenere un parametro, utilizzare l'[GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html)operazione nell'API Systems Manager.

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"
    }
}
```

Per decrittografare il valore del parametro prima di restituirlo, impostare il parametro `WithDecryption` di `GetParameter` su `true`. Quando si utilizza`WithDecryption`, Parameter Store richiama l'operazione AWS KMS [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 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 `SecureString` avanzato in uno standard, ma è possibile convertire un parametro `SecureString` standard in uno avanzato. Per convertire un parametro `SecureString` standard in uno `SecureString` 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 Parameter Store ometti, usa il per l'account. Chiave gestita da AWS È possibile specificare qualsiasi chiave KMS che il principale è autorizzato a utilizzare, anche se è stata utilizzata un'altra chiave KMS per crittografare il parametro standard.

Quando si utilizza il parametro `Overwrite`, Parameter Store utilizza 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 il modo in cui Parameter Store utilizza una chiave KMS per crittografare e decrittare un parametro `SecureString` avanzato.

### Crittografare un parametro avanzato
<a name="kms-encryption-securestring-advanced-encrypt"></a>

1. Quando si utilizza `PutParameter` per creare un `SecureString` parametro avanzato, Parameter Store utilizza AWS Encryption SDK e AWS KMS per crittografare il valore del parametro. Parameter Storelo chiama AWS Encryption SDK con il valore del parametro, la chiave KMS specificata e il contesto di [Parameter Storecrittografia](#parameter-store-kms-encryption-context).

1.  AWS Encryption SDK invia una [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)richiesta a AWS KMS con l'identificatore della chiave KMS specificata e il Parameter Store contesto di crittografia. AWS KMS restituisce due copie della chiave dati univoca: una in testo semplice e una crittografata con la chiave KMS. Il contesto di crittografia viene utilizzato per crittografare la chiave di dati.

1.  AWS Encryption SDK utilizza la chiave dati in testo semplice per crittografare il valore del parametro. Restituisce un [messaggio crittografato](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#message) che include il valore di parametro crittografato, la chiave di dati crittografata e altri dati, tra cui il contesto di crittografia Parameter Store.

1. Parameter Store memorizza il messaggio crittografato come valore del parametro.  
![\[Crittografia di un valore di parametro avanzato SecureString\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/service-pstore-advanced.png)

### Decrittografare un parametro avanzato
<a name="kms-encryption-securestring-advanced-decrypt"></a>

1. È possibile includere il parametro `WithDecryption` in una richiesta `GetParameter` per ottenere un parametro `SecureString` avanzato. In questo caso, Parameter Store passa il [messaggio crittografato](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#message) dal valore di parametro a un metodo di decrittografia di AWS Encryption SDK.

1.  AWS Encryption SDK Richiama l'operazione AWS KMS [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html). Trasferisce la chiave di dati crittografata e il contesto di crittografia Parameter Store dal messaggio crittografato.

1. AWS KMS utilizza la chiave KMS e il contesto di Parameter Store crittografia per decrittografare la chiave dati crittografata. Quindi restituisce la chiave di dati in testo normale (decrittografato) a AWS Encryption SDK.

1.  AWS Encryption SDK utilizza la chiave dati in testo semplice per decrittografare il valore del parametro. Restituisce il valore del parametro in testo normale a Parameter Store. 

1. Parameter Store verifica il contesto di crittografia e restituisce il valore del parametro in testo normale nella risposta `GetParameter`.

## Impostazione delle autorizzazioni per crittografare e decrittografare i valori dei parametri
<a name="parameter-policy-kms-encryption"></a>

Per crittografare un valore di parametro `SecureString` standard, l'utente necessita dell'autorizzazione `kms:Encrypt`. Per crittografare un valore di parametro `SecureString` avanzato, l'utente necessita dell'autorizzazione `kms:GenerateDataKey`. Per decrittografare entrambi i tipi di valori di parametri `SecureString`, l'utente necessita dell'autorizzazione `kms:Decrypt`. 

È possibile utilizzare le policy AWS Identity and Access Management (IAM) per consentire o negare l'autorizzazione a un utente di chiamare Systems Manager `PutParameter` e `GetParameter` le operazioni.

Inoltre, quando si utilizzano chiavi gestite dal cliente per crittografare i valori dei parametri `SecureString`, è possibile utilizzare le policy IAM e le policy della chiave per gestire le autorizzazioni di crittografia e decrittazione. Tuttavia, non è possibile definire policy di controllo degli accessi per la chiave KMS `aws/ssm` predefinita. Per informazioni dettagliate sul controllo dell'accesso a chiavi gestite dal cliente, consulta [Autorizzazioni e accesso con chiave KSM](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html) nella *Guida per gli sviluppatori di AWS Key Management Service *.

L'esempio seguente mostra una policy IAM progettata per parametri `SecureString` 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.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:PutParameter"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/FinancialParameters/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Encrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ]
}
```

------

L'esempio seguente mostra una policy IAM progettata per parametri `SecureString` avanzati. 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.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:PutParameter"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/ReservedParameters/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id"
        }
    ]
}
```

------

L'esempio finale mostra anche una policy IAM che può essere utilizzata per parametri `SecureString` 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.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameter*"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/ITParameters/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ]
}
```

------

## Contesto di crittografia Parameter Store
<a name="parameter-store-kms-encryption-context"></a>

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](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html). 

Utilizza AWS Encryption SDK anche un contesto di crittografia, sebbene lo gestisca in modo diverso. Parameter Storefornisce il contesto di crittografia al metodo di crittografia. Associa AWS Encryption SDK 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 Storeverifica che il contesto di crittografia includa il valore previsto prima di restituire all'utente il valore del parametro in chiaro. 

Parameter Store usa il seguente contesto di crittografia in tutte le operazioni di crittografia:
+ Chiave: `PARAMETER_ARN`
+ Valore: l'ARN (Amazon Resource Name) del parametro crittografato. 

Il formato del contesto di crittografia è il seguente:

```
"PARAMETER_ARN":"arn:aws:ssm:region-id:account-id:parameter/parameter-name"
```

Ad esempio, Parameter Store include questo contesto di crittografia nelle chiamate per crittografare e decrittografare il parametro in un esempio e in una regione`MyParameter`. Account AWS 

```
"PARAMETER_ARN":"arn:aws:ssm:us-east-2:111122223333:parameter/MyParameter"
```

Se il parametro è in un percorso gerarchico 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-east-2:111122223333:parameter/ReadableParameters/MyParameter"
```

È possibile decrittografare un valore di `SecureString` parametro crittografato 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 decrittografare i valori dei parametri Parameter Store usando l'operazione `GetParameter` con il parametro `WithDecryption`. 

È possibile anche includere il contesto di crittografia nella policy IAM. Ad esempio, è possibile consentire a un utente di decrittografare solo un determinato valore di parametro o un set di valori di parametri.

La seguente istruzione di esempio della policy IAM consente all'utente di ottenere il valore del parametro `MyParameter` e di decrittarne il valore utilizzando la chiave KMS specificata. Tuttavia le autorizzazioni si applicano solo quando il contesto di crittografia corrisponde alla stringa specificata. Queste autorizzazioni non si applicano a qualsiasi altro parametro o chiave KMS e la chiamata a `GetParameter` ha esito negativo se il contesto di crittografia non corrisponde alla stringa.

Prima di utilizzare una dichiarazione politica come questa, sostituiscila *example ARNs* con valori validi.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameter*"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/MyParameter"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:PARAMETER_ARN":"arn:aws:ssm:us-east-1:111122223333:parameter/MyParameter"
                }
            }
        }
    ]
}
```

------

## Risoluzione dei problemi relativi alla chiave KMS in Parameter Store
<a name="parameter-store-kms-cmk-troubleshooting"></a>

Per eseguire qualsiasi operazione su un `SecureString` parametro, è Parameter Store necessario essere in grado di utilizzare la chiave AWS KMS KMS specificata per l'operazione prevista. La maggior parte degli errori di Parameter Store relativi alle chiavi KMS sono causati da uno dei seguenti motivi:
+ Le credenziali utilizzate da un'applicazione non hanno l'autorizzazione per eseguire l'operazione specificata sulla chiave KMS. 

  Per risolvere questo errore, eseguire l'applicazione con credenziali differenti o modificare l'IAM o la policy della chiave che impedisce l'operazione. *Per assistenza su AWS KMS IAM e sulle politiche chiave, consulta [l'accesso e le autorizzazioni delle chiavi KMS](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html) nella Guida per gli AWS Key Management Service sviluppatori.*
+ La chiave KMS non è stata trovata. 

  In genere questo accade quando si utilizza un identificatore errato per la chiave KMS. [Trova gli identificatori corretti](https://docs.aws.amazon.com/kms/latest/developerguide/find-cmk-id-arn.html) per la chiave KMS e riprova il comando. 
+ La chiave KMS non è abilitata. Quando ciò si verifica, Parameter Store restituisce un'InvalidKeyIdeccezione con un messaggio di errore dettagliato da. AWS KMS Se lo stato della chiave KMS è `Disabled`, [abilitalo](https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html). Se è `Pending Import`, completa la [procedura di importazione](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html). Se lo stato di chiave è `Pending Deletion`, [annulla l'eliminazione della chiave](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys-scheduling-key-deletion.html) o utilizza un'altra chiave KMS.

  Per trovare lo [stato della chiave](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) di una chiave KMS, usa l'[DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)operazione. 