

# Crittografia del pacchetto di configurazione
<a name="configuration-bundles-encryption"></a>

Quando si specifica un `kmsKeyArn` pacchetto di configurazione, il servizio crittografa le **configurazioni dei componenti** (istruzioni di sistema, descrizioni degli strumenti e altro contenuto di configurazione) utilizzando la crittografia a busta. Tutti gli altri metadati del pacchetto (nome, descrizione, ID di versione, timestamp) rimangono crittografati con la chiave proprietaria. AWS 

## Come funziona
<a name="configuration-bundles-encryption-how-it-works"></a>

La crittografia del pacchetto di configurazione utilizza la crittografia a busta con le credenziali del chiamante. Quando crei o aggiorni un pacchetto con a`kmsKeyArn`, il servizio utilizza le tue credenziali (tramite [Forward Access Sessions](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#fas)) per generare una chiave di crittografia dei dati (DEK) da KMS. Il servizio crittografa le configurazioni dei componenti localmente utilizzando tale DEK, quindi archivia il DEK crittografato AES-GCM insieme al pacchetto. Quando recuperate il pacchetto, il servizio decripta il DEK utilizzando le vostre credenziali e decripta i componenti.

Il chiamante deve avere`kms:GenerateDataKey`,, e le autorizzazioni sulla chiave. `kms:Decrypt` `kms:DescribeKey` `kms:ReEncrypt*`

AgentCore le ottimizzazioni supportano solo chiavi KMS di crittografia simmetrica. La chiave KMS deve trovarsi nella stessa AWS regione del pacchetto di configurazione.

### Configurazione delle autorizzazioni per l'utilizzo di una chiave KMS gestita dal cliente
<a name="configuration-bundles-encryption-key-policy"></a>

La seguente politica chiave fornisce le autorizzazioni minime richieste per la crittografia del pacchetto di configurazione. La policy include due dichiarazioni:
+  **AllowCallerAccess**— Consente all'utente o al ruolo IAM di convalidare la chiave tramite. `DescribeKey`
+  **AllowCallerCryptoOps**— Consente all'utente o al ruolo IAM di generare chiavi di dati, decrittografare e ricrittografare (per la rotazione delle chiavi), in base al contesto di crittografia.

```
{
"Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowCallerAccess",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/MyConfigBundleRole"
      },
      "Action": "kms:DescribeKey",
      "Resource": "*"
    },
    {
      "Sid": "AllowCallerCryptoOps",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/MyConfigBundleRole"
      },
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt",
        "kms:ReEncrypt*"
      ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "kms:EncryptionContext:aws:bedrock-agentcore:configurationBundleArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:configuration-bundle/*"
        }
      }
    }
  ]
}
```

La policy contiene le seguenti dichiarazioni:
+  **AllowCallerAccess**— Concede al ruolo IAM l'`kms:DescribeKey`autorizzazione per la convalida delle chiavi al momento della creazione o dell'aggiornamento del pacchetto. {{111122223333}}Sostituiscilo con l'ID del tuo account e {{MyConfigBundleRole}} con il ruolo o l'utente IAM che gestisce i pacchetti di configurazione.
+  **AllowCallerCryptoOps**— Concede il ruolo `kms:GenerateDataKey` e le `kms:ReEncrypt*` autorizzazioni IAM in base al contesto di crittografia. `kms:Decrypt` `aws:bedrock-agentcore:configurationBundleArn` L'`kms:ReEncrypt*`autorizzazione è richiesta per la rotazione delle chiavi (modifica della chiave KMS su un pacchetto esistente). Sostituisci {{111122223333}} e {{us-east-1}} con i tuoi valori. {{MyConfigBundleRole}} Per consentire l'accesso a tutti i pacchetti di configurazione del tuo account, usa un jolly con`StringLike`:. `arn:aws:bedrock-agentcore:us-east-1:111122223333:configuration-bundle/*`

### Definizione dell'accesso alla chiave KMS gestita dal cliente
<a name="configuration-bundles-encryption-scoping"></a>

È possibile utilizzare il contesto di crittografia per limitare l'accesso alla chiave gestita dal cliente. AgentCore le ottimizzazioni includono il seguente contesto di crittografia in tutte le operazioni KMS:

```
{
  "aws:bedrock-agentcore:configurationBundleArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:configuration-bundle/bundle-id"
}
```

È possibile utilizzare questo contesto di crittografia nelle condizioni politiche chiave per limitare le operazioni KMS a pacchetti di configurazione specifici, come illustrato nella `AllowCallerCryptoOps` dichiarazione contenuta nella politica chiave di esempio riportata sopra.

### Creazione di un pacchetto di configurazione con una chiave KMS gestita dal cliente
<a name="configuration-bundles-encryption-creating"></a>

Per crittografare un pacchetto di configurazione, specifica il parametro durante la `kmsKeyArn` chiamata. [CreateConfigurationBundle](https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreateConfigurationBundle.html)

**Example**  

```
aws bedrock-agentcore-control create-configuration-bundle \
  --bundle-name "MyEncryptedBundle" \
  --kms-key-arn "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" \
  --components '{
    "arn:aws:bedrock-agentcore:us-east-1:111122223333:runtime/my-agent": {
      "configuration": {
        "systemPrompt": "You are a helpful assistant.",
        "modelId": "anthropic.claude-3-sonnet"
      }
    }
  }'
```

```
import boto3

client = boto3.client('bedrock-agentcore-control')

response = client.create_configuration_bundle(
    bundleName='MyEncryptedBundle',
    kmsKeyArn='arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab',
    components={
        'arn:aws:bedrock-agentcore:us-east-1:111122223333:runtime/my-agent': {
            'configuration': {
                'systemPrompt': 'You are a helpful assistant.',
                'modelId': 'anthropic.claude-3-sonnet'
            }
        }
    }
)

print(f"Bundle ID: {response['bundleId']}")
```

### Modifica della configurazione di crittografia su un pacchetto esistente
<a name="configuration-bundles-encryption-changing"></a>

È possibile modificare la configurazione di crittografia su un pacchetto esistente utilizzando: [UpdateConfigurationBundle](https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_UpdateConfigurationBundle.html)
+  **Aggiungi crittografia**: specifica una `kmsKeyArn` su un pacchetto creato senza una crittografia. Il servizio genera un nuovo DEK e crittografa le configurazioni dei componenti.
+  **Tasto di rotazione**: specifica un altro. `kmsKeyArn` Il servizio riavvolge il DEK esistente dalla vecchia chiave alla nuova chiave utilizzando. `kms:ReEncrypt` Il chiamante deve disporre delle autorizzazioni su entrambe le chiavi. Se la vecchia chiave non è disponibile (autorizzazioni disabilitate, eliminate o mancanti), l'aggiornamento avrà esito negativo.

**Nota**  
Non è possibile rimuovere la crittografia a chiave gestita dal cliente da un pacchetto di configurazione una volta aggiunta.

## Monitoraggio dell'utilizzo di KMS per i pacchetti di configurazione
<a name="configuration-bundles-encryption-monitoring"></a>

I seguenti nomi di CloudTrail eventi vengono visualizzati per le operazioni KMS dei pacchetti di configurazione:
+  `GenerateDataKey`— Quando si crea un pacchetto con una chiave gestita dal cliente o si aggiunge la crittografia a un pacchetto esistente. Il `encryptionContext` campo contiene. `aws:bedrock-agentcore:configurationBundleArn`
+  `Decrypt`— Durante il recupero del contenuto del pacchetto (GetConfigurationBundle, GetConfigurationBundleVersion) o l'aggiornamento di un pacchetto crittografato.
+  `ReEncrypt`— Quando si ruota la chiave KMS su un pacchetto esistente tramite. UpdateConfigurationBundle
+  `DescribeKey`— Durante la convalida della chiave al momento della creazione o dell'aggiornamento del pacchetto.

## Comportamento quando una chiave diventa non disponibile
<a name="configuration-bundles-encryption-unavailable"></a>

Se disabiliti o elimini la chiave KMS gestita dal cliente utilizzata da un pacchetto di configurazione:
+  **CreateConfigurationBundle**— Non riesce a convalidare con. `ValidationException`
+  **UpdateConfigurationBundle**— Fallisce perché il servizio non è in grado di decrittografare il DEK esistente per crittografare nuovamente i nuovi componenti. La rotazione della chiave fallisce anche perché la vecchia chiave non è disponibile per il riavvolgimento.
+  **GetConfigurationBundle / GetConfigurationBundleVersion**— Fallisce perché il servizio non è in grado di decrittografare le configurazioni del DEK o dei componenti.
+  **ListConfigurationBundles / ListConfigurationBundleVersions**— Ha successo perché l'elenco restituisce solo i metadati e non richiede operazioni KMS.
+  **DeleteConfigurationBundle**— Ha successo perché l'eliminazione non richiede la decrittografia dei dati del pacchetto.

Per ripristinare l'accesso, riattiva la chiave o aggiorna la politica della chiave per concedere le autorizzazioni richieste.