Administración de claves de Amazon SQS - Amazon Simple Queue Service

Administración de claves de Amazon SQS

Amazon SQS se integra con AWS Key Management Service (KMS) para administrar las claves de KMS para el cifrado del servidor (SSE). Consulte Cifrado en reposo en Amazon SQS 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 los permisos de AWS KMS

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 administrada por AWS 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 entre quienes realizan llamadas en función de sus credenciales de AWS, ya sea que utilicen diferentes cuentas de AWS, usuarios de IAM o roles de IAM. Además, el mismo rol de IAM con diferentes políticas de alcance se considerará como solicitantes distintos. Sin embargo, cuando se utilizan sesiones de rol de IAM, cambiar solo el RoleSessionName manteniendo el mismo rol de IAM y las mismas políticas de alcance no creará solicitantes distintos. Por lo tanto, al especificar las entidades principales de la política de claves de AWS KMS, evite basarse únicamente en las diferencias de RoleSessionName, ya que estas sesiones se considerarán como 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 en la Guía para desarrolladores de AWS Key Management Service.

nota

Aunque puede configurar permisos globales para realizar envíos a Amazon SQS, y recibir información de este, AWS KMS requiere que se indique explícitamente el ARN completo de las claves de KMS en regiones específicas de la sección Resource de una política de IAM.

Configurar permisos de KMS para servicios de AWS

Varios servicios de AWS actúan como orígenes de eventos que pueden enviar eventos a colas de Amazon SQS. Para permitir que estos orígenes de eventos funcionen con colas cifradas, debe crear una clave de KMS administrada por el cliente y agregar permisos en la política de claves para que el servicio utilice los métodos de la API de AWS KMS requeridos. 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 en la Guía para desarrolladores de AWS Key Management Service.

  2. Para permitir que el origen de eventos del servicio de AWS utilice los métodos de la API kms:Decrypt y kms:GenerateDataKey, agregue la siguiente instrucció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.

    Origen del evento Nombre del servicio
    Eventos de Amazon CloudWatch events.amazonaws.com
    Notificaciones de eventos de Amazon S s3.amazonaws.com
    Suscripciones a temas de Amazon SNS sns.amazonaws.com
  3. Configure una cola SSE existente mediante el ARN de su clave de KMS.

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

Configurar permisos de AWS KMS para los productores

Cuando caduca el periodo de reutilización de la clave de datos, 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" } ] }

Configurar permisos de AWS KMS para los consumidores

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, 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" } ] }

Configuración de permisos de AWS KMS con una protección de suplente confuso

Cuando la entidad principal de una instrucción de política de claves es una entidad principal de servicio de AWS, puede utilizar las claves de condición global aws:SourceArn o aws:SourceAccount para protegerse del escenario del suplente confuso. 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

  • Eventos de CloudWatch

  • 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

El periodo de reutilización de la clave de datos 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 genera más llamadas AWS KMS, lo que podría generar más cargos de los que cubre la capa gratuita.

  • 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 periodo de reutilización de la clave de datos, la siguiente llamada a SendMessage o SendMessageBatch normalmente desencadena una llamada al método de AWS KMS GenerateDataKey para obtener una nueva clave de datos. Además, las siguientes llamadas a SendMessage y ReceiveMessage desencadenarán una llamada a AWS KMS Decrypt para verificar la integridad de la clave de datos antes de usarla.

  • Las entidades principales (Cuentas de AWS o usuarios) no comparten claves de datos (los mensajes enviados por entidades principales únicas siempre obtienen claves de datos únicas). Por tanto, el volumen de llamadas a AWS KMS es un múltiplo del número de entidades principales únicas en uso durante el período de reutilización de la clave de datos.

Estimación de los costos de AWS KMS

Para predecir los costos y entender mejor la factura de AWS, es recomendable que sepa con qué frecuencia Amazon SQS usa la 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 (en segundos).

P es el número de entidades principales 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.

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.

Ejemplo 1: cálculo del número de llamadas a la API de AWS KMS con 2 entidades principales y 1 cola

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: cálculo del número de llamadas a la API de AWS KMS con varios productores y consumidores y 2 colas

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 KMSErrores

Al trabajar con Amazon SQS y AWS KMS, es posible que se produzcan errores. Las siguientes referencias describen los errores y sus posibles soluciones.