

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 claves de Amazon SQS
<a name="sqs-key-management"></a>

Amazon SQS se integra con el AWS Key Management Service (KMS) para administrar [las claves de KMS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys) para el cifrado del lado del servidor (SSE). Consulte [Cifrado en reposo en Amazon SQS](sqs-server-side-encryption.md) para obtener información sobre SSE y las definiciones de administración de claves. Amazon SQS utiliza las claves de KMS para validar y proteger las claves de datos que cifran y descifran los mensajes. En las siguientes secciones se proporciona información sobre cómo trabajar con las claves de KMS y las claves de datos en el servicio de Amazon SQS.

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

Cada clave de KMS debe tener una política de claves. Tenga en cuenta que no puede modificar la política de claves de una clave de KMS AWS gestionada para Amazon SQS. La política de esta clave de KMS incluye permisos para que todas las entidades principales de la cuenta (que tienen permiso para usar Amazon SQS) utilicen colas cifradas. 

 Amazon SQS distingue a las personas que llaman en función de sus AWS credenciales, ya sea que utilicen AWS cuentas, usuarios de IAM o funciones de IAM diferentes. Además, se considerará que el mismo rol de IAM con diferentes políticas de alcance son solicitantes distintos. Sin embargo, no se considerarán solicitantes distintos las sesiones de rol de IAM con un `RoleSessionName` diferente que mantengan el mismo rol de IAM y las mismas políticas de alcance. Por lo tanto, al especificar los principios de la política AWS KMS clave, evite basarse únicamente en `RoleSessionName` las diferencias, ya que estas sesiones se tratarán como si fuera el mismo solicitante. 

De forma alternativa, puede especificar los permisos necesarios en una política de IAM asignada a las entidades principales que producen y consumen mensajes cifrados. Para obtener más información, consulte [Uso de políticas de IAM con AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html) en la *Guía para desarrolladores de AWS Key Management Service *.

**nota**  
Si bien puede configurar los permisos globales para enviar y recibir desde Amazon SQS, es AWS KMS necesario nombrar explícitamente el ARN completo de las claves de KMS en regiones específicas en la `Resource` sección de una política de IAM.

### Configure los permisos de KMS para los servicios AWS
<a name="compatibility-with-aws-services"></a>

Varios AWS servicios actúan como fuentes de eventos que pueden enviar eventos a las colas de Amazon SQS. Para permitir que estas fuentes de eventos funcionen con colas cifradas, debe crear una clave de KMS administrada por el cliente y añadir permisos en la política de claves para que el servicio utilice los métodos de API necesarios AWS KMS . Realice los siguientes pasos para configurar los permisos.

**aviso**  
Al cambiar la clave de KMS para cifrar los mensajes de Amazon SQS, tenga en cuenta que los mensajes cifrados con la clave de KMS anterior permanecerán cifrados con esa clave. Para descifrar estos mensajes, debe conservar la antigua clave de KMS y asegurarse de que su política de claves concede a Amazon SQS los permisos para `kms:Decrypt` y `kms:GenerateDataKey`. Tras actualizar a una nueva clave de KMS para cifrar los mensajes nuevos, asegúrese de que todos los mensajes cifrados con la antigua clave de KMS se procesen y se eliminen de la cola antes de eliminar o deshabilitar la antigua clave de KMS.

1. Cree una clave de KMS 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 la fuente de eventos del AWS servicio utilice los métodos `kms:Decrypt` y `kms:GenerateDataKey` API, añada la siguiente declaración a la política de claves de KMS.

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

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
         "Statement": [{
            "Effect": "Allow",
            "Principal": {
               "Service": "service.amazonaws.com"
            },
            "Action": [
               "kms:Decrypt",
               "kms:GenerateDataKey"
            ],
            "Resource": "*"
          }]
   }
   ```

------

   Reemplace "service" (servicio) en el ejemplo anterior por *Service name (Nombre del servicio)* del origen del evento. Los orígenes de eventos incluyen los siguientes servicios.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html)

1.  [Configure una cola SSE existente](sqs-configure-sse-existing-queue.md) mediante el ARN de su clave de KMS.

1. Proporcione el ARN de la cola cifrada al origen de eventos.

### Configure AWS KMS los permisos para los productores
<a name="send-to-encrypted-queue"></a>

Cuando caduca el [periodo de reutilización de la clave de datos](#sqs-how-does-the-data-key-reuse-period-work), la siguiente llamada del productor a `SendMessage` o `SendMessageBatch` también desencadena llamadas a `kms:Decrypt` y `kms:GenerateDataKey`. La llamada a `kms:Decrypt` es para verificar la integridad de la nueva clave de datos antes de usarla. Por lo tanto, el productor debe tener los permisos `kms:Decrypt` y `kms:GenerateDataKey` para la clave de KMS. 

Agregue la siguiente instrucción a la política de IAM del productor. Recuerde utilizar los valores de ARN correctos para el recurso de clave y el recurso de cola.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-east-2:123456789012:key/111112222233333"
        },
        {
            "Effect": "Allow",
            "Action": [
                "sqs:SendMessage"
            ],
            "Resource": "arn:aws:sqs:*:123456789012:MyQueue"
        }
    ]
}
```

------

### Configure AWS KMS los permisos para los consumidores
<a name="receive-from-encrypted-queue"></a>

Cuando caduca el periodo de reutilización de la clave de datos, la siguiente llamada del cliente a `ReceiveMessage` también desencadena una llamada a `kms:Decrypt`, para verificar la integridad de la nueva clave de datos antes de usarla. Por lo tanto, el cliente debe tener el permiso `kms:Decrypt` para cualquier clave de KMS que se utilice para cifrar los mensajes en la cola especificada. Si la cola funciona como una [cola de mensajes fallidos](sqs-dead-letter-queues.md), el consumidor también debe tener el permiso `kms:Decrypt` para todas las clave de KMS que se utilicen para cifrar los mensajes en la cola de origen. Agregue la siguiente instrucción a la política de IAM del cliente. Recuerde utilizar los valores de ARN correctos para el recurso de clave y el recurso de cola.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-2:123456789012:key/111112222233333"
        },
        {
            "Effect": "Allow",
            "Action": [
                "sqs:ReceiveMessage"
            ],
            "Resource": "arn:aws:sqs:*:123456789012:MyQueue"
        }
    ]
}
```

------

### Configure AWS KMS los permisos con una confusa protección adjunta
<a name="sqs-adding-confused-deputy-protection"></a>

Cuando la entidad principal de una instrucción de política de claves es una [entidad principal de servicio de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services), puede utilizar las claves de condición global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) o [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) para protegerse del [escenario del suplente confuso](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Para utilizar estas claves de condición, establezca el valor al nombre de recurso de Amazon (ARN) o la cuenta del recurso que se está cifrando. Si no conoce el ARN del recurso, utilice `aws:SourceAccount` en su lugar. 

En esta política de claves de KMS, un recurso específico de un *servicio* que sea propiedad de la cuenta `111122223333` puede llamar a KMS para las acciones `Decrypt` y `GenerateDataKey`, que se producen durante el uso de SSE de Amazon SQS.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "sqs.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "*",
            "Condition": {
                "ArnEquals": {
                    "aws:SourceArn": [
                        "arn:aws:sqs:us-west-1:111122223333:resource"
                    ]
                }
            }
        }
    ]
}
```

------

Cuando se utilizan colas Amazon SQS habilitadas para SSE, los siguientes servicios admiten `aws:SourceArn`:
+ Amazon SNS
+ Amazon S3
+ CloudWatch Eventos
+ AWS Lambda
+ CodeBuild
+ Perfiles de clientes de Amazon Connect
+ AWS Auto Scaling
+ Amazon Chime

## Descripción del período de reutilización de la clave de datos
<a name="sqs-how-does-the-data-key-reuse-period-work"></a>

El [periodo de reutilización de la clave de datos](sqs-server-side-encryption.md#sqs-sse-key-terms) define la duración máxima de Amazon SQS para reutilizar la misma clave de datos. Cuando finaliza el periodo de reutilización de la clave de datos, Amazon SQS genera una nueva clave de datos. Tenga en cuenta las siguientes directrices sobre el periodo de reutilización.
+ Un período de reutilización más corto proporciona una mayor seguridad, pero se traduce en más llamadas AWS KMS, lo que puede conllevar gastos superiores al nivel gratuito.
+ Aunque la clave de datos se almacena en caché de forma independiente para el cifrado y el descifrado, el periodo de reutilización se aplica a ambas copias de la clave de datos.
+ Cuando finaliza el período de reutilización de la clave de datos, se realiza la siguiente llamada al método `SendMessage` o `SendMessageBatch` normalmente se activa una llamada al AWS KMS `GenerateDataKey` método para obtener una nueva clave de datos. Además, las siguientes llamadas a, `SendMessage` y cada una de ellas `ReceiveMessage` activará una llamada AWS KMS `Decrypt` a, para comprobar la integridad de la clave de datos antes de utilizarla.
+ [Los directores](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Principal) (Cuentas de AWS o los usuarios) no comparten claves de datos (los mensajes enviados por directores únicos siempre reciben claves de datos únicas). Por lo tanto, el volumen de llamadas a AWS KMS es un múltiplo del número de principales únicos que se utilizan durante el período de reutilización de las claves de datos.

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

Para predecir los costes y comprender mejor su AWS factura, quizá le interese saber con qué frecuencia Amazon SQS utiliza su clave de KMS.

**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 SQS.

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

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

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

`D` es el [período de reutilización de claves de datos](sqs-server-side-encryption.md#sqs-sse-key-terms) (en segundos).

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

`C` es el número de entidades principales de consumo que reciben información desde la cola de Amazon SQS.

**importante**  
En general, las entidades principales de producción generan el doble del costo que las de consumo. Para obtener más información, consulte [Descripción del período de reutilización de la clave de datos](#sqs-how-does-the-data-key-reuse-period-work).  
Si el productor y el consumidor tienen diferentes usuarios de , el costo aumenta.

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 2 directores y 1 cola
<a name="example-1-queue-2-principals"></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 está establecido en 5 minutos (300 segundos).
+ Hay una cola.
+ Hay una entidad principal de producción y una entidad principal de consumo.

```
(2,678,400 / 300) * (2 * 1 + 1) = 26,784
```

### Ejemplo 2: Calcular el número de llamadas a la AWS KMS API para varios productores y consumidores y 2 colas
<a name="example-2-queues-multiple-principals"></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 está establecido en 24 horas (86 400 segundos).
+ Hay 2 colas.
+ La primera cola tiene 3 entidades principales productoras y una entidad principal consumidora.
+ La segunda cola tiene 5 entidades principales productoras y 2 entidades principales consumidoras.

```
(2,419,200 / 86,400 * (2 * 3 + 1)) + (2,419,200 / 86,400 * (2 * 5 + 2)) = 532
```

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

Cuando trabaja con Amazon SQS AWS KMS, es posible que se produzcan errores. Las siguientes referencias describen los errores y sus posibles soluciones.
+ [Errores comunes de AWS KMS](https://docs.aws.amazon.com/kms/latest/APIReference/CommonErrors.html)
+ [Errores Decrypt de AWS KMS](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html#API_Decrypt_Errors)
+ [AWS KMS GenerateDataKey errores](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html#API_GenerateDataKey_Errors)