

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.

# Protección de datos en AWS IoT Core
<a name="data-protection"></a>

El modelo de [responsabilidad AWS compartida modelo](https://aws.amazon.com/compliance/shared-responsibility-model/) se aplica a la protección de datos en AWS IoT Core. Como se describe en este modelo, AWS es responsable de proteger la infraestructura global que ejecuta todos los Nube de AWS. Eres responsable de mantener el control sobre el contenido alojado en esta infraestructura. También eres responsable de las tareas de administración y configuración de seguridad para los Servicios de AWS que utiliza. Para obtener más información sobre la privacidad de los datos, consulte las [Preguntas frecuentes sobre la privacidad de datos](https://aws.amazon.com/compliance/data-privacy-faq/). Para obtener información sobre la protección de datos en Europa, consulte la publicación de blog sobre el [Modelo de responsabilidad compartida de AWS y GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) en el * Blog de seguridad de AWS *.

Con fines de protección de datos, le recomendamos que proteja Cuenta de AWS las credenciales y configure los usuarios individuales con AWS IAM Identity Center o AWS Identity and Access Management (IAM). De esta manera, solo se otorgan a cada usuario los permisos necesarios para cumplir sus obligaciones laborales. También recomendamos proteger sus datos de la siguiente manera:
+ Utiliza la autenticación multifactor (MFA) en cada cuenta.
+ Se utiliza SSL/TLS para comunicarse con AWS los recursos. Exigimos TLS 1.2 y recomendamos TLS 1.3.
+ Configure la API y el registro de actividad de los usuarios con AWS CloudTrail. Para obtener información sobre el uso de CloudTrail senderos para capturar AWS actividades, consulte [Cómo trabajar con CloudTrail senderos](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) en la *Guía del AWS CloudTrail usuario*.
+ Utilice soluciones de AWS cifrado, junto con todos los controles de seguridad predeterminados Servicios de AWS.
+ Utiliza servicios de seguridad administrados avanzados, como Amazon Macie, que lo ayuden a detectar y proteger la información confidencial almacenada en Amazon S3.
+ Si necesita módulos criptográficos validados por FIPS 140-3 para acceder a AWS través de una interfaz de línea de comandos o una API, utilice un punto final FIPS. Para obtener más información sobre los puntos de conexión de FIPS disponibles, consulte [Estándar de procesamiento de la información federal (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

Se recomienda encarecidamente no introducir nunca información confidencial o sensible, como por ejemplo, direcciones de correo electrónico de clientes, en etiquetas o campos de formato libre, tales como el campo **Nombre**. Esto incluye cuando trabaja con AWS IoT o Servicios de AWS utiliza la consola, la API o. AWS CLI AWS SDKs Cualquier dato que introduzca en etiquetas o campos de formato libre utilizados para los nombres se pueden emplear para los registros de facturación o diagnóstico. Si proporciona una URL a un servidor externo, recomendamos encarecidamente que no incluya información de credenciales en la URL a fin de validar la solicitud para ese servidor.

Para obtener más información sobre la protección de datos, consulte la entrada de blog relativa al [modelo de responsabilidad compartida de AWS y GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) en el *blog de seguridad de AWS *.

AWS IoT los dispositivos recopilan datos, los manipulan y, a continuación, los envían a otro servicio web. Es posible que decida almacenar algunos datos en su dispositivo durante un breve período de tiempo. Usted es responsable de proporcionar cualquier protección de datos sobre dichos datos en reposo. Cuando el dispositivo envía datos a AWS IoT, lo hace a través de una conexión TLS, como se explica más adelante en esta sección. AWS IoT los dispositivos pueden enviar datos a cualquier AWS servicio. Para obtener más información sobre la seguridad de los datos de cada servicio, consulta la documentación de ese servicio. AWS IoT se puede configurar para escribir registros en los CloudWatch registros y registrar las llamadas a la AWS IoT API en AWS CloudTrail. Para obtener más información sobre la seguridad de los datos de estos servicios, consulte [Autenticación y control de acceso para Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/auth-and-access-control-cw.html) y [Cifrado de archivos de CloudTrail registro con claves AWS KMS gestionadas](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/encrypting-cloudtrail-log-files-with-aws-kms.html).

## Cifrado de datos en AWS IoT
<a name="data-protection-encrypt"></a>

De forma predeterminada, todos los AWS IoT datos en tránsito y en reposo están cifrados. [Los datos en tránsito se cifran mediante TLS](transport-security.md) y los datos en reposo se cifran mediante claves AWS propias. AWS IoT admite la administración por el cliente AWS KMS keys (claves KMS) desde el Servicio de administración de AWS claves (AWS KMS). Sin embargo, Device Advisor y AWS IoT Wireless utilizan únicamente y Clave propiedad de AWS para cifrar los datos de los clientes.

 

# Seguridad del transporte en AWS IoT Core
<a name="transport-security"></a>

TLS (Transport Layer Security, Seguridad de la capa de transporte) es un protocolo criptográfico diseñado para una comunicación segura a través de una red informática. La puerta de enlace de AWS IoT Core dispositivos requiere que los clientes cifren todas las comunicaciones en tránsito mediante TLS para las conexiones de los dispositivos a la puerta de enlace. El TLS se utiliza para garantizar la confidencialidad de los protocolos de aplicación (MQTT, HTTP y) compatibles. WebSocket AWS IoT Core TLS se admite y está disponible en una serie de lenguajes de programación y sistemas operativos. Los datos que contiene AWS son cifrados por el servicio específico AWS . Para obtener más información sobre el cifrado de datos en otros AWS servicios, consulta la documentación de seguridad de ese servicio.

**Topics**
+ [Protocolos TLS](#tls-ssl-policy)
+ [Políticas de seguridad](#tls-policy-table)
+ [Notas importantes para la seguridad del transporte en AWS IoT Core](#tls-ssl-core)
+ [Seguridad de transporte para LoRa dispositivos inalámbricos WAN](#tls-lorawan)

## Protocolos TLS
<a name="tls-ssl-policy"></a>

AWS IoT Core admite las siguientes versiones del protocolo TLS:
+ TLS 1.3 
+ TLS 1.2

Con AWS IoT Core, puede configurar los ajustes de TLS (para TLS [1.2 y TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.2) [1.3](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.3)) en las configuraciones de dominio. Para obtener más información, consulte [Configuración de los ajustes de TLS en las configuraciones de dominio](iot-endpoints-tls-config.md).

## Políticas de seguridad
<a name="tls-policy-table"></a>

Una política de seguridad es una combinación de protocolos TLS y sus cifrados que determina qué protocolos y cifrados se admiten durante las negociaciones de TLS entre un cliente y un servidor. Puede configurar sus dispositivos para que utilicen políticas de seguridad predefinidas en función de sus necesidades. Tenga en cuenta que AWS IoT Core no admite políticas de seguridad personalizadas.

Al conectarlos a ellos, puedes elegir una de las políticas de seguridad predefinidas para tus dispositivos AWS IoT Core. Los nombres de las políticas de seguridad predefinidas más recientes AWS IoT Core incluyen información sobre la versión según el año y el mes en que se publicaron. La política de seguridad predefinida que se utiliza de forma predeterminada es `IoTSecurityPolicy_TLS13_1_2_2022_10`. Para especificar una política de seguridad, puede utilizar la AWS IoT consola o la AWS CLI. Para obtener más información, consulte [Configuración de los ajustes de TLS en las configuraciones de dominio](iot-endpoints-tls-config.md).

En la siguiente tabla se describen las políticas de seguridad predefinidas más recientes compatibles con AWS IoT Core . Se ha eliminado `IotSecurityPolicy_` de los nombres de política en la fila de encabezado para que quepan.


| **Política de seguridad** | TLS13\$11\$13\$12022\$110 | TLS13\$11\$12\$12022\$110 | TLS12\$11\$12\$12022\$110 | TLS12\$11\$10\$12016\$101\$1 | TLS12\$11\$10\$12015\$101\$1 | 
| --- | --- | --- | --- | --- | --- | 
| Puerto TCP |  443/8443/8883  |  443/8443/8883  |  443/8443/8883  | 443 | 8443/8883 | 443 | 8443/8883 | 
| Protocolos TLS | 
| TLS 1.2 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| TLS 1.3 | ✓ | ✓ |  |  |  |  |  | 
| Cifrados TLS | 
| TLS\$1AES\$1128\$1GCM\$1 SHA256 | ✓ | ✓ |  |  |  |  |  | 
| TLS\$1AES\$1256\$1GCM\$1 SHA384 | ✓ | ✓ |  |  |  |  |  | 
| TLS\$1 \$1 \$1 CHACHA20 POLY1305 SHA256 | ✓ | ✓ |  |  |  |  |  | 
| ECDHE-RSA- -GCM- AES128 SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- AES128 - SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- AES128 -SHA |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- AES256 -GCM- SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- AES256 - SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- AES256 -SHA |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES128-GCM- SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES128-SHA256 |  | ✓ | ✓ | ✓ |  | ✓ | ✓ | 
| AES128-SHA |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES256-GCM- SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES256-SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES256-SHA |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| DHE-RSA- -SHA AES256 |  |  |  |  |  | ✓ | ✓ | 
| ECDHE-ECDSA- AES128 -GCM- SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECDSA- - AES128 SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECDSA- -SHA AES128 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECDSA- -GCM- AES256 SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECDSA- - AES256 SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECDSA- -SHA AES256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 

**nota**  
`TLS12_1_0_2016_01`solo está disponible en las siguientes direcciones Regiones de AWS: ap-east-1, ap-northeast-2, ap-south-1, ap-southeast-2, ca-central-1, cn-north-1, cn-northwest-1, eu-northwest-1, eu-north-1, eu-west-2, eu-west-3, me-south-1 us-east-1, us-east-1, us-east-2, -1, -2, us-west-1. us-gov-west us-gov-west  
`TLS12_1_0_2015_01`solo está disponible en las siguientes direcciones Regiones de AWS: ap-northeast-1, ap-southeast-1, eu-central-1, eu-west-1, us-east-1, us-west-2.

## Notas importantes para la seguridad del transporte en AWS IoT Core
<a name="tls-ssl-core"></a>

En el caso de los dispositivos que se conectan AWS IoT Core mediante [MQTT](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html), TLS cifra la conexión entre los dispositivos y el intermediario y AWS IoT Core utiliza la autenticación del cliente TLS para identificar los dispositivos. Para obtener más información, consulta [Autenticación del cliente](https://docs.aws.amazon.com//iot/latest/developerguide/client-authentication.html). En el caso de los dispositivos que se conectan AWS IoT Core mediante [HTTP](https://docs.aws.amazon.com//iot/latest/developerguide/http.html), el TLS cifra la conexión entre los dispositivos y el intermediario, y la autenticación se delega a la versión 4 de Signature. AWS Para obtener más información, consulte [Firma de solicitudes con Signature Version 4](https://docs.aws.amazon.com//general/latest/gr/create-signed-request.html) en la *Referencia general de AWS *.

Al conectar dispositivos a AWS IoT Core, no es obligatorio enviar la [extensión de indicación del nombre del servidor (SNI), pero](https://tools.ietf.org/html/rfc3546#section-3.1) se recomienda encarecidamente. Para utilizar características como el [registro multicuenta](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html#multiple-account-cert), los [dominios personalizados](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable-custom.html), los [puntos de conexión de VPC](https://docs.aws.amazon.com//iot/latest/developerguide/IoTCore-VPC.html) y las [políticas de TLS configuradas](https://docs.aws.amazon.com//iot/latest/developerguide/iot-endpoints-tls-config.html), debe utilizar la extensión SNI y proporcionar la dirección completa del punto de conexión en el campo `host_name`. El campo `host_name` debe contener el punto de conexión al que está llamando. El punto de conexión tiene que ser uno de los siguientes:
+ El valor de `endpointAddress` devuelto por `aws iot [describe-endpoint](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-endpoint.html) --endpoint-type iot:Data-ATS`
+ El valor de `domainName` devuelto por `aws iot [describe-domain-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-domain-configuration.html) –-domain-configuration-name "domain_configuration_name"`

Las conexiones que intenten realizar dispositivos con un `host_name` valor incorrecto o no válido fallarán. AWS IoT Core registrará los errores CloudWatch para el tipo de autenticación de [autenticación personalizada](https://docs.aws.amazon.com//iot/latest/developerguide/custom-authentication.html).

AWS IoT Core no admite la [extensión SessionTicket TLS](https://www.ietf.org/rfc/rfc5077.txt).

## Seguridad de transporte para LoRa dispositivos inalámbricos WAN
<a name="tls-lorawan"></a>

LoRaLos dispositivos WAN siguen las prácticas de seguridad descritas en [LoRaWAN™ SECURITY: un documento técnico preparado para la LoRa Alianza™ por Gemalto, Actility y Semtech](https://lora-alliance.org/sites/default/files/2019-05/lorawan_security_whitepaper.pdf). 

Para obtener más información sobre la seguridad del transporte con dispositivos LoRa WAN, consulte Seguridad de los [datos y el transporte de la LoRa WAN](https://docs.aws.amazon.com/iot-wireless/latest/developerguide/iot-lorawan-security.html).

# Cifrado de datos en AWS IoT
<a name="data-encryption"></a>

La protección de datos se refiere a la protección de los datos mientras están en tránsito (a medida que viajan y vienen AWS IoT Core) y en reposo (mientras están almacenados en dispositivos u otros AWS servicios). Todos los datos enviados a AWS IoT Core se envían a través de una conexión TLS mediante MQTT, HTTPS y WebSocket los protocolos, lo que los hace seguros de forma predeterminada mientras están en tránsito. AWS IoT Core recopila datos de los dispositivos y, a continuación, los envía a otros AWS servicios para su posterior procesamiento. Para obtener más información acerca del cifrado de datos en otros servicios de AWS , consulte la documentación de seguridad de ese servicio. Para obtener más información, consulte [Cifrado de datos en reposo](encryption-at-rest.md).

FreeRTOS proporciona una biblioteca PKCS \$111 que resume el almacenamiento de claves, el acceso a objetos criptográficos y la administración de sesiones. Es su responsabilidad utilizar esta biblioteca para cifrar los datos en reposo en sus dispositivos. Para obtener más información, consulte [Biblioteca de estándar de criptografía de clave pública (PKCS) 11 de FreeRTOS](https://docs.aws.amazon.com/freertos/latest/userguide/security-pkcs.html).

# Cifrado de datos en reposo en AWS IoT Core
<a name="encryption-at-rest"></a>

De forma predeterminada, todos los AWS IoT Core datos en reposo se cifran mediante claves AWS propias. AWS IoT Core también admite claves simétricas administradas por el cliente desde AWS Key Management Service (AWS KMS). Con las claves gestionadas por el cliente, puedes crear, poseer y gestionar las AWS KMS claves de tu AWS cuenta. AWS IoT Core utilizará sus claves de KMS para cifrar sus datos en reposo. Tiene pleno control sobre estas claves de KMS, incluida la creación y el mantenimiento de sus políticas de claves. También puede configurar las políticas de IAM para los roles que acceden AWS KMS a fin de controlar los permisos de estas claves.

## AWS claves propias
<a name="aws-owned-keys"></a>

AWS las claves propias son un conjunto de claves de KMS que un AWS servicio posee y administra para su uso en varias AWS cuentas. AWS los servicios pueden usar claves AWS propias para proteger sus datos. De forma predeterminada, AWS IoT Core cifra los datos en reposo mediante claves AWS propias. Estas claves las administra el servicio. No puedes ver, administrar ni usar las claves AWS propias. Sin embargo, no es necesario realizar ninguna acción para proteger estas claves.

Para obtener más información sobre las claves AWS propias, consulta [las claves AWS propias](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-key) en la *Guía para AWS Key Management Service desarrolladores*.

## Claves administradas por el cliente
<a name="customer-managed-keys"></a>

Las claves administradas por el cliente son claves de KMS de su AWS cuenta que usted crea, posee y administra. Tiene pleno control sobre estas claves de AWS KMS , incluida la creación y el mantenimiento de sus políticas de claves. También puede configurar las políticas de IAM para los roles que acceden AWS KMS a fin de controlar los permisos de estas claves. Puede configurarlo AWS IoT Core para usar claves de KMS administradas por el cliente para cifrar sus datos.

Para obtener más información acerca de las claves administradas por el cliente, consulte [Claves administradas por el cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) en la *Guía para desarrolladores de AWS Key Management Service *.

Para habilitar la entrada de claves administradas por el cliente AWS IoT Core, sigue estos pasos:

**Topics**
+ [Paso 1: Crear una clave administrada por el cliente](#encryption-at-rest-cmk-create)
+ [Paso 2: Cree una función de IAM para conceder AWS IoT Core permisos de uso de la clave KMS](#create-an-iam-role)
+ [Paso 3: Opte por las claves gestionadas por el cliente en AWS IoT Core](#opt-in-customer-managed-keys)
+ [Paso 4: Se requieren permisos adicionales para las operaciones AWS IoT Core del plano de control](#cmk-control-plane-permissions)
+ [Paso 5: administración de claves](#understanding-key-health)
+ [Paso 6: supervisión del estado de las claves](#health-status-monitoring)

### Paso 1: Crear una clave administrada por el cliente
<a name="encryption-at-rest-cmk-create"></a>

Puede crear una clave simétrica gestionada por el cliente mediante la AWS KMS consola o los comandos AWS KMS CLI. La opción `keySpec` debe ser `SYMMETRIC_DEFAULT` y la opción `keyUsage` debe ser `ENCRYPT_DECRYPT`.

**nota**  
AWS IoT Core solo admite AWS KMS claves con especificaciones `SYMMETRIC_DEFAULT` clave y uso de claves para `ENCRYPT_DECRYPT` claves administradas por el cliente.

El siguiente es un ejemplo de AWS CLI comando para crear una clave KMS que se pueda usar con las claves administradas AWS IoT Core por el cliente.

```
aws kms create-key --key-spec SYMMETRIC_DEFAULT --key-usage ENCRYPT_DECRYPT --region us-west-2
```

A continuación, se muestra un ejemplo del resultado del comando.

```
{
    "KeyMetadata": {
        "AWSAccountId": "111122223333",
        "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
        "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
        "CreationDate": "2024-09-19T11:45:23.982000-07:00",
        "Enabled": true,
        "Description": "",
        "KeyUsage": "ENCRYPT_DECRYPT",
        "KeyState": "Enabled",
        "Origin": "AWS_KMS",
        "KeyManager": "CUSTOMER",
        "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT",
        "KeySpec": "SYMMETRIC_DEFAULT",
        "EncryptionAlgorithms": [
            "SYMMETRIC_DEFAULT"
        ],
        "MultiRegion": false
    }
}
```

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

#### Política de claves
<a name="key-policy"></a>

Al crear una clave administrada por el cliente, puede especificar una política de claves. Las políticas de clave controlan el acceso a la clave administrada por el cliente. Cada clave administrada por el cliente debe tener exactamente una política de clave, que contiene instrucciones que determinan quién puede usar la clave y cómo puede utilizarla. Para obtener más información, consulte [Políticas de claves](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) en la *Guía para desarrolladores de AWS Key Management Service *.

AWS IoT Core utiliza una función de IAM en su cuenta para acceder a la clave gestionada por el cliente. Si utiliza una política de claves personalizadas, asegúrese de que el rol de IAM creado en esta clave tenga los siguientes permisos:
+ `kms:DescribeKey`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`

### Paso 2: Cree una función de IAM para conceder AWS IoT Core permisos de uso de la clave KMS
<a name="create-an-iam-role"></a>

Si quieres AWS IoT Core usar la clave de KMS que has creado para cifrar tus datos en reposo, también tienes que crear un rol de IAM en tu cuenta, que AWS IoT Core puedes asumir que accederá a la clave de KMS.

El rol debe tener la siguiente política de confianza para poder AWS IoT Core asumirlo.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Principal": {
            "Service": "iot.amazonaws.com"
        },
        "Action": "sts:AssumeRole",
        "Condition": {
            "StringEquals": {
                "aws:SourceAccount": "111122223333"
            },
            "ArnLike": {
                "aws:SourceArn": "arn:aws:iot:us-west-2:111122223333:*"
            }
        }
    }
}
```

Asegúrese de que las políticas de IAM asociadas al rol de IAM tengan los siguientes permisos en la clave de KMS:
+ `kms:DescribeKey`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`

A continuación, se muestra un ejemplo de política de IAM con los permisos necesarios para las claves administradas por el cliente.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowIoTToAccessKMSResource",
            "Effect": "Allow",
            "Action": [
                "kms:DescribeKey",
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:ReEncryptTo",
                "kms:ReEncryptFrom",
                "kms:GenerateDataKeyWithoutPlaintext"
            ],
            "Resource": [
                "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
            ],
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:aws-crypto-ec:vendor": "iot.amazonaws.com"
                }
            }
        }
    ]
}
```

Para obtener más información, consulte [Creación de un rol para delegar permisos a un usuario de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) en la *Guía del usuario de AWS Identity and Access Management *.

### Paso 3: Opte por las claves gestionadas por el cliente en AWS IoT Core
<a name="opt-in-customer-managed-keys"></a>

Tras completar todos los pasos anteriores, ejecute el comando de la CLI `update-encryption-configuration` para habilitar el uso de las claves administradas por el cliente en AWS IoT Core. Al optar por las claves administradas por el cliente, todos AWS IoT Core los recursos de su AWS cuenta se cifrarán con la AWS KMS clave especificada.

1. Para habilitar el AWS IoT Core uso de claves administradas por el cliente AWS CLI, ejecute el comando `update-encryption-configuration` CLI.

   ```
   aws iot update-encryption-configuration --encryption-type "CUSTOMER_MANAGED_KMS_KEY" \
   --kms-access-role-arn "arn:aws:iam::111122223333:role/myrole" \
   --kms-key-arn "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" --region us-west-2
   ```

1. Para verificar el AWS IoT Core uso de las claves administradas por el cliente AWS CLI, ejecute el comando `describe-encryption-configuration` CLI:

   ```
   aws iot describe-encryption-configuration --region us-west-2
   ```

   Si ha activado las claves gestionadas por el cliente AWS IoT Core, el resultado puede tener el siguiente aspecto:

   ```
   {
       "encryptionType": "CUSTOMER_MANAGED_KMS_KEY",
       "kmsKeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
       "kmsAccessRoleArn": "arn:aws:iam::111122223333:role/myrole",
       "configurationDetails": {
           "configurationStatus": "HEALTHY"
       },
       "lastModifiedDate": "2024-09-26T22:01:02.365000-07:00"
   }
   ```

   El campo `lastModifiedDate` indica la fecha en la que se actualizó por última vez la configuración del cifrado.

   Si no ha habilitado las claves administradas por el cliente, el resultado puede tener el siguiente aspecto:

   ```
   {
       "encryptionType": "AWS_OWNED_KMS_KEY",
       "lastModifiedDate": "2024-09-26T22:01:02.365000-07:00"
   }
   ```

### Paso 4: Se requieren permisos adicionales para las operaciones AWS IoT Core del plano de control
<a name="cmk-control-plane-permissions"></a>

Tras optar por las claves administradas por el cliente, todos los AWS IoT Core recursos que pertenecen a su AWS cuenta se cifran con la clave KMS proporcionada. Todas las operaciones del plano de control ahora requieren que la persona que llama tenga `kms:Decrypt` permisos sobre la clave KMS, además de los permisos necesarios para la operación específica en el AWS IoT Core recurso. Si la persona que llama no tiene permiso `kms:Decrypt` y realiza una llamada a la API que requiere el cifrado o el descifrado de los datos (por ejemplo, `GetPolicy`), recibirá una `UnauthorizedException`.

Por ejemplo, al llamar a `GetPolicy`, necesita tanto el permiso `iot:GetPolicy` como el permiso `kms:Decrypt` para la clave de KMS administrada por el cliente para que la llamada a la API se realice correctamente.

**nota**  
Al actualizar los usuarios o funciones de IAM para conceder AWS KMS permisos sobre la clave utilizada en la configuración de cifrado, asegúrese de que la política de claves de KMS también conceda los permisos necesarios a los respectivos usuarios o funciones de IAM.

#### AWS KMS permisos para `UpdateEncryptionConfiguration`
<a name="kms-permissions-update-encryption-configuration"></a>

La llamada a la `UpdateEncryptionConfiguration` API necesita los siguientes AWS KMS permisos en la clave de KMS para poder optar por las claves administradas por el cliente o modificar la configuración de la clave:
+ `kms:DescribeKey`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`

#### AWS KMS permisos para todos los demás planos de control APIs
<a name="kms-permissions-control-plane-apis"></a>

La mayoría de los planos de control APIs requieren `kms:Decrypt` permisos cuando las claves administradas por el cliente están habilitadas. Sin embargo, algunos APIs no requieren estos permisos adicionales:

APIs que no requieren AWS KMS permisos  
Los `List*` y `Delete*` APIs no entran en este cubo. Los clientes siempre pueden invocar cualquier API del plano de control `List*` o `Delete*` y esas llamadas a la API se realizarán correctamente incluso si la persona que llama no tiene el permiso `kms:Decrypt`. Estas llamadas a la API se realizarán correctamente incluso si la clave gestionada por el cliente no está en buen estado `List*` y `Delete*` APIs no se realiza ningún descifrado.  
+ **Lista\$1 APIs**: todas las operaciones de listado (por ejemplo,,`ListThings`,`ListPolicies`) `ListCertificates`
+ **Eliminar\$1 APIs**: todas las operaciones de eliminación (por ejemplo,,,`DeleteThing`) `DeletePolicy` `DeleteCertificate`

### Paso 5: administración de claves
<a name="understanding-key-health"></a>

AWS IoT Core comprueba periódicamente la configuración de claves gestionadas por el cliente para garantizar que las operaciones de cifrado y descifrado no se vean afectadas. Estas comprobaciones de estado se realizan una vez por minuto y verifican AWS IoT Core la capacidad de los usuarios para acceder a la clave y utilizar tanto la AWS KMS clave como la función de IAM asociada para las operaciones de cifrado y descifrado.

HEALTHY  
AWS IoT Core puede acceder correctamente a la AWS KMS clave a través de la función de IAM especificada y realizar operaciones. encryption/decryption Todos los componentes funcionan correctamente.

UNHEALTHY  
AWS IoT Core no puede acceder a la AWS KMS clave ni utilizarla. Esto impide nuevas operaciones de cifrado y puede afectar a la funcionalidad del servicio. El campo `errorCode` indica si el problema está relacionado con la clave o con el rol de IAM.

#### Acciones de los clientes que pueden afectar al estado de la clave
<a name="customer-actions-affecting-health"></a>

Varias acciones de los clientes pueden provocar que el estado de la clave cambie de `HEALTHY` a `UNHEALTHY`:

Acciones relacionadas con las claves  
+ **Eliminar una AWS KMS clave**: cuando programas la eliminación de una clave, está en un `Pending deletion` estado y no se puede usar
+ **Deshabilitar una AWS KMS clave**: al deshabilitar una clave KMS, ya no se puede usar para operaciones de cifrado o descifrado
+ **Programación de la eliminación de la clave:** la clave queda inutilizable cuando se completa la eliminación.
+ **Modificación de la política de claves**: eliminar los permisos de acceso necesarios AWS IoT Core 
+ **Cambiar los permisos de uso de las claves**: restringir AWS KMS las acciones necesarias

Acciones relacionadas con los roles de IAM  
+ **Eliminar la función de IAM**: no AWS IoT Core se puede asumir la función para acceder a la clave
+ **Modificación de los permisos de los roles**: se eliminan AWS KMS los permisos necesarios de la política de roles
+ **Cambiar la política de confianza**: impedir que el AWS IoT Core servicio asuma el rol
+ **Añadir condiciones restrictivas**: condiciones que AWS IoT Core impiden el uso del rol

Acciones de cuentas  
+ **Cambios de acceso a las claves entre cuentas:** modificación de los permisos para las claves en otras cuentas.
+ Políticas **de control de servicios (SCPs): políticas** a nivel de la organización que restringen el acceso AWS KMS 
+ **Políticas de IAM de cuenta:** políticas que anulan el acceso a la clave o entran en conflicto con dicho acceso.

**importante**  
Cualquier cambio en las AWS KMS claves, las funciones de IAM o las políticas que utilice AWS IoT Core debe probarse primero en los entornos de desarrollo. Supervise de cerca el estado de salud clave después de realizar cualquier cambio para garantizar que AWS IoT Core la funcionalidad no se vea afectada.

#### Actualización de la configuración del cifrado
<a name="key-transition"></a>

Actualice la configuración de cifrado AWS IoT Core para cambiar de una clave administrada por el cliente a otra, o entre claves AWS propias y claves administradas por el cliente.

Para cambiar la configuración a otra clave administrada por el cliente:

1. Cree una nueva clave administrada por el cliente siguiendo los pasos que se indican en [Paso 1: Crear una clave administrada por el cliente](#encryption-at-rest-cmk-create).

1. Actualice la política de roles de IAM para incluir los permisos tanto para las claves antiguas como para las nuevas durante el periodo de actualización.

1. Actualice la configuración del cifrado para utilizar la nueva clave:

   ```
   aws iot update-encryption-configuration --encryption-type "CUSTOMER_MANAGED_KMS_KEY" \
   --kms-access-role-arn "arn:aws:iam::111122223333:role/myrole" \
   --kms-key-arn "arn:aws:kms:us-west-2:111122223333:key/new-key-id"
   ```

Para cambiar la configuración de claves administradas por el cliente a claves AWS propias:

```
aws iot update-encryption-configuration --encryption-type "AWS_OWNED_KMS_KEY"
```

**nota**  
Al actualizar la configuración del cifrado para las nuevas claves administradas por el cliente, asegúrese de que tanto las claves antiguas como las nuevas permanezcan accesibles para que la operación se lleve a cabo correctamente.

##### Escenarios de error más comunes e impactos
<a name="failure-scenarios"></a>

En la siguiente tabla se describen los escenarios de error más comunes cuando se eliminan o desactivan las claves:


| Escenario | Impacto inmediato | Consecuencias a largo plazo | 
| --- | --- | --- | 
|  Clave deshabilitada  |  Todas las encryption/decryption operaciones nuevas fallan inmediatamente  |  Interrupción del servicio hasta que se vuelva a habilitar o sustituir la clave  | 
|  Clave programada para su eliminación  |  El estado de la clave cambia a pendiente de eliminación y todas encryption/decryption las operaciones fallarán  |  Error automático del servicio cuando se completa la eliminación  | 
|  Clave eliminada permanentemente  |  Error inmediato y permanente de todas las operaciones  |  Pérdida permanente de datos e incapacidad para recuperar los datos cifrados  | 
|  Política de claves modificada incorrectamente  |  AWS IoT Core pierde los permisos de acceso a la clave  |  Se produce un error en el servicio hasta que se corrija la política  | 
|  Rol de IAM eliminado  |  AWS IoT Core no puede asumir el rol de acceso a la clave  |  Error al completar el servicio de cifrado  | 
|  El rol de IAM se ha modificado incorrectamente  |  AWS IoT Core no puede asumir el rol o usar el rol para acceder a la clave  |   Se produce un error en el servicio hasta que se corrija el rol de IAM  | 

##### Prevención y prácticas recomendadas
<a name="prevention-best-practices"></a>

Para evitar la eliminación o desactivación accidental de las claves y minimizar el riesgo de errores en el servicio:

Implementación de políticas de ciclo de vida de claves  
Establezca procedimientos claros para la creación, rotación y retirada de claves. Documente qué claves utilizan qué AWS IoT Core recursos y mantenga un inventario de las claves activas.

Uso de políticas de IAM para restringir la eliminación de claves  
Cree políticas de IAM que impidan que los usuarios no autorizados eliminen o deshabiliten las claves de cifrado críticas. Utilice condiciones que requieran una aprobación adicional para las operaciones de eliminación de claves.

Habilite el CloudTrail registro  
Supervise todas las operaciones AWS KMS clave CloudTrail para detectar actividades de administración de claves no autorizadas o accidentales. Configure alertas para la eliminación de claves, la deshabilitación o los cambios en las políticas.

Ejecución de pruebas en los procedimientos de sustitución de claves  
Realice pruebas periódicamente en los procedimientos de sustitución de claves en entornos que no sean de producción para asegurarse de que puede recuperarse rápidamente de los errores relacionados con las claves.

Mantenimiento de copias de seguridad de las claves  
Si bien no puede exportar el material AWS KMS clave, mantenga registros detallados de las claves ARNs, las políticas y las AWS IoT Core configuraciones asociadas para facilitar el reemplazo rápido de las claves si es necesario.

Supervisión del estado de las claves  
Supervise continuamente la métrica `CMK.Health` y configure alertas automatizadas para detectar los cambios en el estado de las claves. Implemente respuestas automatizadas para abordar rápidamente los problemas relacionados con las claves.

**importante**  
Realice pruebas siempre en los procedimientos de actualización de claves en los entornos de desarrollo antes de implementarlos en producción. Tenga un plan de reversión documentado y asegúrese de que los procedimientos de sustitución de claves se puedan ejecutar rápidamente en caso de emergencia.

### Paso 6: supervisión del estado de las claves
<a name="health-status-monitoring"></a>

Como parte de las comprobaciones periódicas AWS IoT Core , se emiten CloudWatch métricas y registros para proporcionar visibilidad del estado de la configuración de claves gestionada por el cliente

AWS IoT Core emite la `CMK.Health` métrica al CloudWatch menos una vez cada minuto. La métrica proporciona información sobre el estado de las claves administradas por el cliente que se utilizan AWS IoT Core para cifrar y descifrar los datos.

La métrica `CMK.Health` puede tener los siguientes valores:
+ El valor AWS IoT Core es`1`: puede utilizar las claves de cifrado correctamente para cifrar y descifrar sus datos.
+ El valor AWS IoT Core es`0`: no puede utilizar las claves de cifrado para cifrar y descifrar sus datos.

AWS IoT Core también emite registros AWS IoT V2 cuando cambia el estado de las claves de cifrado. Estos registros proporcionan detalles adicionales sobre la actualización del estado. Para ver estos registros, debe habilitar los registros de la AWS IoT versión 2. Los registros de `HEALTHY` se emiten en el nivel `INFO` y los registros de `UNHEALTHY` se emiten en el nivel `ERROR`. Para obtener más información sobre los niveles de registro, consulte [Niveles de registro](https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#log-level).

Los siguientes ejemplos son entradas de CloudWatch registro emitidas AWS IoT Core para indicar la actualización del estado de las claves gestionadas por el cliente.

Para supervisar los cambios de estado de la clave y responder a dichos cambios:

1. **Configure CloudWatch las alarmas** para la `CMK.Health` métrica:

   ```
   aws cloudwatch put-metric-alarm --region us-west-2 \
     --alarm-name "IoTCore-CMK-Health-Alert" \
     --alarm-description "Alert when IoT Core CMK health is unhealthy" \
     --metric-name "CMK.Health" \
     --namespace "AWS/IoT" \
     --statistic "Minimum" \
     --period 300 \
     --evaluation-periods 1 \
     --threshold 1 \
     --comparison-operator "LessThanThreshold" \
     --alarm-actions "arn:aws:sns:us-west-2:111122223333:iot-alerts"
   ```

1. **Habilite AWS IoT el registro** de la versión 2 para capturar eventos detallados de cambios en el estado de salud con códigos y mensajes de error.

1. **Compruebe el estado de la configuración** para solucionar problemas:

   ```
   aws iot describe-encryption-configuration --region us-west-2
   ```

1. **Investigue el estado UNHEALTHY** examinando el campo `errorCode`:
   + `KMS_KEY_VALIDATION_ERROR`— Problema con la AWS KMS clave (deshabilitada, eliminada o problemas de política)
   + `ROLE_VALIDATION_ERROR`: problema con el rol de IAM (eliminado, problemas de política o problemas de confianza)

#### De UNHEALTHY a HEALTHY
<a name="unhealthy-to-healthy"></a>

Cuando el estado de las claves de cifrado se actualice de `UNHEALTHY` a`HEALTHY`, AWS IoT Core emitirá un mensaje de AWS IoT registro de la versión 2 con el siguiente formato.

```
{
    "timestamp": "2017-08-10 15:37:23.476",
    "logLevel": "INFO",
    "traceId": "8421693b-f4f0-4e4a-9235-0cff8bab897d",
    "accountId": "111122223333",
    "status": "SUCCESS",
    "cmkStatus": "HEALTHY",
    "kmsKeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "kmsAccessRoleArn": "arn:aws:iam::111122223333:role/myrole",
    "eventType": "CmkHealthCheck"
}
```

#### De HEALTHY a UNHEALTHY
<a name="healthy-to-unhealthy"></a>

Cuando el estado de las claves de cifrado se actualice de `HEALTHY` a`UNHEALTHY`, AWS IoT Core emitirá un mensaje de AWS IoT registro de la versión 2 con el siguiente formato.

```
{
    "timestamp": "2017-08-10 15:37:23.476",
    "logLevel": "ERROR",
    "traceId": "8421693b-f4f0-4e4a-9235-0cff8bab897d",
    "accountId": "111122223333",
    "status": "FAILURE",
    "cmkStatus": "UNHEALTHY",
    "errorCode": "KMS_KEY_VALIDATION_ERROR / ROLE_VALIDATION_ERROR",
    "errorMessage": "Error message on why there was a failure",
    "kmsKeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "kmsAccessRoleArn": "arn:aws:iam::111122223333:role/myrole",
    "eventType": "CmkHealthCheck"
}
```

**aviso**  
Cuando la clave está en buen estado`UNHEALTHY`, AWS IoT Core las operaciones fallan inmediatamente. Si esto ocurre, revise las configuraciones de la clave, los permisos de los roles de IAM y las políticas. Supervise la métrica `CMK.Health` para ver si hay cambios en el estado. Si se siguen produciendo un error en las operaciones después de revisar las configuraciones, póngase en contacto con el administrador de la cuenta o con el [Centro de AWS Support](https://console.aws.amazon.com/support/home#/) para obtener asistencia adicional.

#### AWS CloudTrail eventos
<a name="aws-cloudtrail-events"></a>

También puede supervisar el uso AWS IoT Core de la clave KMS para las operaciones de cifrado y descifrado. AWS IoT Core realizará `DescribeKey` `Decrypt``ReEncrypt`, y `GenerateDataKeyWithoutPlaintext` operaciones en su clave KMS para cifrar o descifrar los datos pertenecientes a su AWS cuenta almacenada en reposo.

Hay CloudTrail eventos para`DescribeKey`, `Decrypt``ReEncrypt`, y. `GenerateDataKeyWithoutPlaintext` Estos eventos supervisan AWS KMS las operaciones solicitadas AWS IoT Core para acceder a los datos cifrados por la clave gestionada por el cliente.

##### `Decrypt`Ejemplo de
<a name="decrypt"></a>

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
        "accountId": "111122223333",
        "accessKeyId": "*********************",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
                "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
                "accountId": "111122223333",
                "userName": "*****"
            },
            "attributes": {
                "creationDate": "2024-09-16T20:23:39Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "iot.amazonaws.com"
    },
    "eventTime": "2024-09-16T20:32:48Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "iot.amazonaws.com",
    "userAgent": "iot.amazonaws.com",
    "requestParameters": {
        "encryptionContext": {
            "kms-arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "aws-crypto-ec:vendor": "iot.amazonaws.com",
            "branch-key-id": "111122223333",
            "type": "branch:ACTIVE"
        },
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT",
        "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    },
    "responseElements": null,
    "requestID": "1afb6d98-8388-455d-8b48-e62c9e0cf7f4",
    "eventID": "b59a5f16-0d98-46d8-a590-0e040a48b39b",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```