

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Administración de las claves de cifrado y los costos de Amazon SNS
<a name="sns-key-management"></a>

En las siguientes secciones se proporciona información sobre cómo trabajar con claves administradas en AWS Key Management Service (AWS KMS).

**nota**  
Amazon SNS solo admite claves de KMS de cifrado simétricas. No puede utilizar ningún otro tipo de clave de KMS para cifrar los recursos del servicio. Para obtener ayuda para determinar si una clave de KMS es una clave de cifrado simétrica, consulte [Identificar claves de KMS asimétricas](https://docs.aws.amazon.com/kms/latest/developerguide/find-symm-asymm.html).

## Estimación de costos AWS KMS
<a name="sse-estimate-kms-usage-costs"></a>

Para predecir los costes y entender mejor tu AWS factura, quizá te interese saber con qué frecuencia Amazon SNS utiliza tu factura. AWS KMS key

**nota**  
Si bien la siguiente fórmula puede brindarle una muy buena idea de los costos esperados, los costos reales podrían ser más elevados debido a la naturaleza distribuida de Amazon SNS.

Para calcular el número de solicitudes de la API (`R`) *por tema*, utilice la siguiente fórmula:

```
R = B / D * (2 * P)
```

`B` es el período de facturación (en segundos).

`D` es el período de reutilización de claves de datos (en segundos, Amazon SNS reutiliza una clave de datos durante un máximo de 5 minutos).

`P` es el número de [entidades principales](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Principal) de publicación que realizan envíos al tema de Amazon SNS.

A continuación se muestran algunos cálculos de ejemplo. Para obtener información exacta sobre precios, consulte [Precios de AWS Key Management Service](https://aws.amazon.com/kms/pricing/).

### Ejemplo 1: Calcular el número de llamadas a la AWS KMS API para un editor y un tema
<a name="example-1-topic-1-publisher"></a>

En este ejemplo se presupone lo siguiente:
+ El período de facturación va del 1 al 31 de enero (2 678 400 segundos).
+ El periodo de reutilización de la clave de datos es de 5 minutos (300 segundos).
+ Hay 1 tema.
+ Hay una 1 entidad principal de publicación.

```
2,678,400 / 300 * (2 * 1) = 17,856
```

### Ejemplo 2: Calcular el número de llamadas a la AWS KMS API para varios editores y dos temas
<a name="example-2-topics-multiple-publishers"></a>

En este ejemplo se presupone lo siguiente:
+ El período de facturación va del 1 al 28 de febrero (2 419 200 segundos).
+ El periodo de reutilización de la clave de datos es de 5 minutos (300 segundos).
+ Hay 2 temas.
+ El primer tema tiene 3 entidades principales de publicación.
+ El segundo tema tiene 5 entidades principales de publicación.

```
(2,419,200 / 300 * (2 * 3)) + (2,419,200 / 300 * (2 * 5)) = 129,024
```

## Configuración de AWS KMS permisos
<a name="sns-what-permissions-for-sse"></a>

Antes de poder utilizar SSE, debe configurar AWS KMS key políticas que permitan el cifrado de temas y el cifrado y descifrado de mensajes. Para obtener ejemplos y más información sobre los permisos de AWS KMS , consulte [Permisos de API de AWS KMS : Referencia de recursos y acciones](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) en la *Guía para desarrolladores de AWS Key Management Service *. Para obtener más información sobre cómo configurar un tema de Amazon SNS con cifrado del servidor, consulte [Información adicional](sns-enable-encryption-for-topic.md#set-up-topic-with-sse).

**nota**  
También puede administrar los permisos para las claves de KMS de cifrado simétrico mediante políticas de IAM. Para obtener más información, consulte [Uso de políticas de IAM](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html) con. AWS KMS  
Si bien puede configurar los permisos globales para enviar y recibir desde Amazon SNS, es AWS KMS necesario mencionar explícitamente el ARN completo de regiones específicas KMSs en la `Resource` sección de una política de IAM.

También debe asegurarse de que las políticas clave del AWS KMS key permiten los permisos necesarios. Para ello, asigne un nombre a las principales que producen y consumen mensajes cifrados en Amazon SNS como usuarios de la política de claves de KMS. 

Como alternativa, puede especificar AWS KMS las acciones necesarias y el ARN de KMS en una política de IAM asignada a las entidades principales que publican y se suscriben para recibir mensajes cifrados en Amazon SNS. Para obtener más información, consulte [Administración del acceso a AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/control-access-overview.html#managing-access) en la *Guía para desarrolladores de AWS Key Management Service *.

Si selecciona una clave administrada por el cliente para el tema de Amazon SNS y utiliza alias para controlar el acceso a las claves KMS mediante políticas de IAM o políticas de claves de KMS con la clave de condición `kms:ResourceAliases`, asegúrese de que la clave administrada por el cliente seleccionada también tenga un alias asociado. Para obtener más información sobre el uso de alias para controlar el acceso a las claves KMS, consulte [Uso de alias para controlar el acceso a las claves KMS](https://docs.aws.amazon.com/kms/latest/developerguide/alias-authorization.html) en la *Guía para desarrolladores de AWS Key Management Service *.

### Permitir que un usuario envíe mensajes a un tema con SSE
<a name="send-to-encrypted-topic"></a>

El publicador debe tener los permisos `kms:GenerateDataKey*` y `kms:Decrypt` para AWS KMS key.

```
{
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "kms:GenerateDataKey*",
      "kms:Decrypt"
    ],
    "Resource": "arn:aws:kms:us-east-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
  }, {
    "Effect": "Allow",
    "Action": [
      "sns:Publish"
    ],
    "Resource": "arn:aws:sns:*:123456789012:MyTopic"
  }]
}
```

### Habilite la compatibilidad entre las fuentes de eventos de AWS los servicios y los temas cifrados
<a name="compatibility-with-aws-services"></a>

Varios AWS servicios publican eventos sobre temas de Amazon SNS. Para que estos orígenes de eventos funcionen con los temas cifrados, es preciso llevar a cabo los pasos que se describen a continuación:

1. Utilice una clave administrada por el cliente. Para obtener más información, consulte [Creación de claves](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) en la *Guía para desarrolladores de AWS Key Management Service *.

1. Para permitir que el AWS servicio tenga los `kms:Decrypt` permisos `kms:GenerateDataKey*` y, añada la siguiente declaración a la política de KMS.

   ```
   {
     "Statement": [{
       "Effect": "Allow",
       "Principal": {
         "Service": "service.amazonaws.com"
       },
       "Action": [
         "kms:GenerateDataKey*",
         "kms:Decrypt"
       ],
       "Resource": "*"
     }]
   }
   ```    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sns/latest/dg/sns-key-management.html)
**nota**  
Algunas fuentes de eventos de Amazon SNS requieren que proporciones un rol de IAM (en lugar del principal del servicio) en la política: AWS KMS key   
[Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ASGettingNotifications.html)
[Amazon Elastic Transcoder](https://docs.aws.amazon.com/elastictranscoder/latest/developerguide/notifications.html)
[AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/approvals.html#approvals-configuration-options)
[AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/notifications-for-AWS-Config.html)
[AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.managing.sns.html)
[AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sns-rule.html)
[Generador de Imágenes de EC2](https://docs.aws.amazon.com/imagebuilder/latest/userguide/ibhow-integrations.html#integ-sns-encrypted)

1. Agregue las claves de condición `aws:SourceAccount` y `aws:SourceArn` a la política de recursos de KMS para proteger aún más la clave de KMS de los ataques de [suplente confuso](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Consulte la lista de documentación específica del servicio (arriba) para obtener detalles exactos de cada caso.
**importante**  
En algunos temas `aws:SourceAccount``aws:SourceArn`, no se admite la adición de los valores, y `aws:SourceOrgID` a una AWS KMS política. EventBridge-to-encrypted

   ```
   {
     "Effect": "Allow",
     "Principal": {
       "Service": "service.amazonaws.com"
     },
     "Action": [
       "kms:GenerateDataKey*",
       "kms:Decrypt"
     ],
     "Resource": "*",
     "Condition": {
       "StringEquals": {
         "aws:SourceAccount": "customer-account-id"
       },
       "ArnLike": {
         "aws:SourceArn": "arn:aws:service:region:customer-account-id:resource-type:customer-resource-id"
       }
     }
   }
   ```

1. [Habilite SSE para el tema](sns-enable-encryption-for-topic.md) mediante la KMS.

1. Proporcione el ARN del tema cifrado al origen de eventos.

## AWS KMS errores
<a name="sse-troubleshooting-errors"></a>

Cuando trabaja con Amazon SNS AWS KMS, es posible que se produzcan errores. En la siguiente lista se describen los errores y sus posibles soluciones.

**KMSAccessDeniedException**  
El texto cifrado hace referencia a una clave que no existe o a la que no tiene acceso.  
Código de estado HTTP: 400

**KMSDisabledExcepción**  
La solicitud se rechazó porque la KMS especificada no está habilitada.  
Código de estado HTTP: 400

**KMSInvalidStateException**  
La solicitud se rechazó porque el estado del recurso especificado no es válido para esta solicitud. Para obtener más información, consulte [Estados de clave de AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) en la *Guía para desarrolladores de AWS Key Management Service *.  
Código de estado HTTP: 400

**KMSNotFoundException**  
La solicitud se rechazó porque la entidad o el recurso especificado no se encontraron.  
Código de estado HTTP: 400

**KMSOptInRequired**  
El identificador de clave de AWS acceso necesita una suscripción al servicio.  
Código de estado HTTP: 403

**KMSThrottlingExcepción**  
La solicitud fue denegada debido a una limitación de la solicitud. Para obtener más información sobre la limitación, consulte [Cuotas](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html#requests-per-second) en la *Guía para desarrolladores de AWS Key Management Service *.  
Código de estado HTTP: 400