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
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.
Estimación de los costos de AWS KMS
Para predecir los costes y entender mejor la factura de AWS, es posible que quiera saber con qué frecuencia Amazon SNS usa la 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 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
Ejemplo 1: Cálculo del número de llamadas a la API de AWS KMS con 1 publicador y 1 tema
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: Cálculo del número de llamadas a la API de AWS KMS con varios publicadores y 2 temas
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 los permisos de AWS KMS
Para poder usar SSE, debe configurar las políticas de AWS KMS key para permitir el cifrado de los 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 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.
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 con AWS KMS.
Aunque puede configurar permisos globales para realizar envíos a Amazon SNS, y recibir información de este, AWS KMS requiere que se indique explícitamente el ARN completo de las KMS en regiones específicas de la sección Resource de una política de IAM.
Se debe asegurar también de que las políticas de claves de AWS KMS key concedan 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.
Si lo desea, también puede especificar las acciones de AWS KMS necesarias y el ARN de KMS en una política de IAM asignada a las entidades principales que publican mensajes cifrados en Amazon SNS y se suscriben para recibirlos. Para obtener más información, consulte Administración del acceso a AWS KMS 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 en la Guía para desarrolladores de AWS Key Management Service.
Permitir que un usuario envíe mensajes a un tema con SSE
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" }] }
Habilitar la compatibilidad entre los orígenes de eventos de los servicios de AWS y los temas cifrados
Varios servicios de AWS publican eventos en los 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:
-
Utilice una clave 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.
-
Para permitir que el servicio de AWS disponga de los permisos
kms:GenerateDataKey*ykms:Decrypt, agregue la siguiente instrucción a la política de la KMS.{ "Statement": [{ "Effect": "Allow", "Principal": { "Service": "service.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*" }] }Origen del evento Entidad principal de servicio Amazon CloudWatch cloudwatch.amazonaws.com.rproxy.govskope.caEventos de Amazon CloudWatch events.amazonaws.com.rproxy.govskope.caAWS CodeCommit codecommit.amazonaws.com.rproxy.govskope.caAWS Database Migration Service dms.amazonaws.com.rproxy.govskope.caAWS Directory Service ds.amazonaws.com.rproxy.govskope.caAmazon DynamoDB dynamodb.amazonaws.com.rproxy.govskope.caAmazon Inspector inspector.amazonaws.com.rproxy.govskope.caAmazon Redshift redshift.amazonaws.com.rproxy.govskope.caAmazon RDS events---rds.amazonaws.com.rproxy.govskope.caAmazon Glacier glacier.amazonaws.com.rproxy.govskope.caAmazon Simple Email Service ses.amazonaws.com.rproxy.govskope.caAmazon Simple Storage Service s3.amazonaws.com.rproxy.govskope.caAWS Snowball Edge importexport.amazonaws.com.rproxy.govskope.caAWS Systems Manager Incident Manager AWS Systems Manager Incident Manager consta de dos principios de servicio:
ssm-incidents.amazonaws.com;ssm-contacts.amazonaws.com.rproxy.govskope.canota
Para algunas fuentes de eventos de Amazon SNS, se debe proporcionar un rol de IAM (en lugar de la entidad principal de servicio) en la política de AWS KMS key:
-
Agregue las claves de condición
aws:SourceAccountyaws:SourceArna la política de recursos de KMS para proteger aún más la clave de KMS de los ataques de suplente confuso. Consulte la lista de documentación específica del servicio (arriba) para obtener detalles exactos de cada caso.importante
Agregar
aws:SourceAccount,aws:SourceArnyaws:SourceOrgIDa una política de AWS KMS no se admite para temas cifrados de EventBridge.{ "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" } } } -
Habilite SSE para el tema mediante la KMS.
-
Proporcione el ARN del tema cifrado al origen de eventos.
AWS KMSErrores
Al trabajar con Amazon SNS y 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
- KMSDisabledException
-
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 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 ID de clave de acceso de AWS necesita una suscripción al servicio.
Código de estado HTTP: 403
- KMSThrottlingException
-
La solicitud fue denegada debido a una limitación de la solicitud. Para obtener más información sobre la limitación, consulte Cuotas en la Guía para desarrolladores de AWS Key Management Service.
Código de estado HTTP: 400