

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 policy chiave e autorizzazioni per la crittografia dei risultati di CloudFormation Hooks a riposo
<a name="hooks-kms-key-policy"></a>

Questo argomento descrive come impostare la politica AWS KMS chiave e le autorizzazioni necessarie quando si specifica una chiave gestita dal cliente per crittografare i dati delle annotazioni Hooks disponibile dall'API. [GetHookResult](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_GetHookResult.html) 

**Nota**  
CloudFormation Hooks non necessita di un'autorizzazione aggiuntiva per utilizzare l'impostazione predefinita per Chiave di proprietà di AWS crittografare i dati delle annotazioni nel tuo account.

**Topics**
+ [Panoramica di](#hooks-kms-overview)
+ [Utilizzo del contesto di crittografia per controllare l’accesso alla chiave gestita dal cliente](#hooks-encryption-context-security)
+ [Policy delle chiavi KMS gestite dal cliente](#hooks-policy-example-cmk-access)
+ [Autorizzazioni KMS per l'API `SetTypeConfiguration`](#hooks-policy-example-settypeconfiguration-permissions)
+ [Autorizzazioni KMS per l'API `GetHookResult`](#hooks-policy-example-gethookresult-permissions)

## Panoramica di
<a name="hooks-kms-overview"></a>

Quanto segue AWS KMS keys può essere utilizzato per crittografare i dati delle annotazioni Hook:
+ [Chiave di proprietà di AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)— Per impostazione predefinita, CloudFormation utilizza an Chiave di proprietà di AWS per crittografare i dati. Non è possibile visualizzare, gestire Chiavi di proprietà di AWS, utilizzare o controllare il loro utilizzo. Tuttavia, non è necessario eseguire una configurazione esplicita per proteggere la chiave utilizzata per crittografare i dati. Chiavi di proprietà di AWS sono forniti gratuitamente (senza canoni mensili o costi di utilizzo). A meno che non sia necessario verificare o controllare la chiave di crittografia che protegge i dati delle annotazioni, an Chiave di proprietà di AWS è una buona scelta.
+ [Chiave gestita dal cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk): CloudFormation supporta l'uso di una chiave simmetrica gestita dal cliente che puoi creare, possedere e gestire per aggiungere un secondo livello di crittografia rispetto a quella esistente. Chiave di proprietà di AWS AWS KMS si applicano costi. Per ulteriori informazioni, consultare [Creazione di chiavi](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) nella *Guida per gli sviluppatori AWS Key Management Service *. Per gestire la tua chiave, usa il AWS Key Management Service (AWS KMS) nella [AWS KMS console](https://console.aws.amazon.com/kms) AWS CLI, o nell' AWS KMS API. Per ulteriori informazioni, consulta la [Guida per gli sviluppatori di AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/).

Puoi configurare le chiavi gestite dal cliente durante la creazione e l'aggiornamento degli Hooks. Quando fornisci la chiave gestita dal cliente, CloudFormation utilizza questa chiave per crittografare i dati delle annotazioni prima di archiviarli. Quando successivamente si accede ai dati delle annotazioni durante l'operazione dell'`GetHookResult`API, li decrittografa CloudFormation automaticamente. Per informazioni sulla configurazione della chiave di crittografia per Hooks, consulta. [Riferimento alla sintassi dello schema di configurazione dell’hook](hook-configuration-schema.md)

**Importante**  
Tieni presente che l'`KmsKeyId`opzione per specificare una chiave gestita dal cliente è attualmente disponibile solo quando utilizzi AWS CLI per configurare il tuo Hook.

## Utilizzo del contesto di crittografia per controllare l’accesso alla chiave gestita dal cliente
<a name="hooks-encryption-context-security"></a>

CloudFormation Hooks include automaticamente il contesto di crittografia in ogni operazione di memorizzazione e recupero delle annotazioni. Ciò consente di impostare le condizioni del contesto di crittografia nella politica delle chiavi per garantire che la chiave possa essere utilizzata solo per Hook specifici:
+ `kms:EncryptionContext:aws:cloudformation:hooks:service`— Assicura che la chiave venga utilizzata solo dal servizio CloudFormation Hooks.
+ `kms:EncryptionContext:aws:cloudformation:account-id`— Impedisce l'utilizzo delle chiavi tra account abbinando il tuo Account AWS ID.
+ `kms:EncryptionContext:aws:cloudformation:arn`— Limita l'utilizzo a specifici Hooks utilizzando modelli ARN.

Queste condizioni forniscono una protezione aggiuntiva contro i confusi attacchi secondari collegando crittograficamente i dati crittografati allo specifico contesto Hook.

## Policy delle chiavi KMS gestite dal cliente
<a name="hooks-policy-example-cmk-access"></a>

Quando si crea una chiave gestita dal cliente, è necessario definirne la politica chiave per consentire al servizio CloudFormation Hooks di eseguire le operazioni. AWS KMS Per utilizzare la seguente politica chiave, sostituiscila *placeholder values* con le tue informazioni.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EnableIAMUserDescribeKey",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:role/ExampleRole"
      },
      "Action": "kms:DescribeKey",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "cloudformation.us-east-1.amazonaws.com"
        }
      }
    },
    {
      "Sid": "EnableIAMUserGenerateDataKey",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:role/ExampleRole"
      },
      "Action": "kms:GenerateDataKey",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "cloudformation.us-east-1.amazonaws.com",
          "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com",
          "kms:EncryptionContext:aws:cloudformation:123456789012": "123456789012"
        },
        "ArnLike": {
          "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:123456789012:hook/*"
        }
      }
    },
    {
      "Sid": "EnableIAMUserDecrypt",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:role/ExampleRole"
      },
      "Action": "kms:Decrypt",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "cloudformation.us-east-1.amazonaws.com"
        }
      }
    },
    {
      "Sid": "AllowHooksServiceDescribeKey",
      "Effect": "Allow",
      "Principal": {
        "Service": "hooks.cloudformation.amazonaws.com"
      },
      "Action": "kms:DescribeKey",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:cloudformation:*:123456789012:hook/*"
        }
      }
    },
    {
      "Sid": "AllowHooksService",
      "Effect": "Allow",
      "Principal": {
        "Service": "hooks.cloudformation.amazonaws.com"
      },
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012",
          "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com",
          "kms:EncryptionContext:aws:cloudformation:123456789012": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:cloudformation:*:123456789012:hook/*",
          "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:123456789012:hook/*"
        }
      }
    }
  ]
}
```

------

Questa policy concede le autorizzazioni sia ai ruoli IAM (prime tre istruzioni) che al servizio CloudFormation Hooks (ultime due istruzioni). La chiave di `kms:ViaService` condizione garantisce che la chiave KMS possa essere utilizzata solo tramite CloudFormation, impedendo chiamate dirette all'API KMS. Le operazioni chiave sono:
+ `kms:DescribeKey`— Convalida le proprietà chiave e i metadati. Questa operazione è in istruzioni separate perché non può essere utilizzata con le condizioni del contesto di crittografia.
+ `kms:GenerateDataKey`— Genera chiavi di crittografia dei dati per crittografare le annotazioni prima dell'archiviazione. Questa operazione include le condizioni del contesto di crittografia per il controllo degli accessi con ambito.
+ `kms:Decrypt`— Decripta i dati delle annotazioni precedentemente crittografati. Per i ruoli IAM, ciò include la condizione. `kms:ViaService` Per il responsabile del servizio, ciò include le condizioni del contesto di crittografia.

I tasti `aws:SourceAccount` and `aws:SourceArn` condition forniscono la protezione principale contro gli attacchi confusi dei vice agenti. Le condizioni del contesto di crittografia forniscono livelli di convalida aggiuntivi. Per ulteriori informazioni, consulta [Using aws:SourceArn or aws:SourceAccount condition keys](https://docs.aws.amazon.com/kms/latest/developerguide/least-privilege.html#least-privilege-source-arn) nella *AWS Key Management Service Developer Guide*.

**Importante**  
I ruoli di esecuzione degli hook non richiedono AWS KMS autorizzazioni. Il responsabile del servizio CloudFormation Hooks esegue tutte le AWS KMS operazioni.

## Autorizzazioni KMS per l'API `SetTypeConfiguration`
<a name="hooks-policy-example-settypeconfiguration-permissions"></a>

Durante la chiamata [SetTypeConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeConfiguration.html)API, CloudFormation convalida le autorizzazioni degli utenti per crittografare i dati delle annotazioni con la chiave specificata. AWS KMS Aggiungi la seguente policy IAM all'utente o al ruolo che configurerà la crittografia utilizzando l'API. `SetTypeConfiguration` Sostituisci *placeholder values* con le informazioni appropriate.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "cloudformation:SetTypeConfiguration",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "kms:DescribeKey",
      "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123"
    },
    {
      "Effect": "Allow",
      "Action": "kms:GenerateDataKey",
      "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123",
      "Condition": {
        "StringEquals": {
          "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com",
          "kms:EncryptionContext:aws:cloudformation:123456789012": "123456789012"
        },
        "ArnLike": {
          "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:123456789012:hook/*"
        }
      }
    }
  ]
}
```

------

## Autorizzazioni KMS per l'API `GetHookResult`
<a name="hooks-policy-example-gethookresult-permissions"></a>

[GetHookResult](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_GetHookResult.html)Per richiedere Hooks che utilizzano la chiave gestita dal cliente, gli utenti devono disporre `kms:Decrypt` dell'autorizzazione per tale chiave. Aggiungi la seguente policy IAM all'utente o al ruolo che `GetHookResult` chiamerà. Sostituisci `arn:aws:kms:us-east-1:123456789012:key/abc-123` con l'ARN della tua chiave gestita dal cliente.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "cloudformation:GetHookResult",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "kms:Decrypt",
      "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123"
    }
  ]
}
```

------