

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.

# Seguridad en AWS IoT
<a name="security"></a>

La seguridad en la nube AWS es la máxima prioridad. Como AWS cliente, usted se beneficia de una arquitectura de centro de datos y red diseñada para cumplir con los requisitos de las organizaciones más sensibles a la seguridad.

La seguridad es una responsabilidad compartida entre usted AWS y usted. El [modelo de responsabilidad compartida](https://aws.amazon.com/compliance/shared-responsibility-model/) la describe como seguridad *de* la nube y seguridad *en* la nube:
+ **Seguridad de la nube**: AWS es responsable de proteger la infraestructura que ejecuta AWS los servicios en la AWS nube. AWS también le proporciona servicios que puede utilizar de forma segura. Auditores independientes prueban y verifican periódicamente la eficacia de nuestra seguridad en el marco de los [programas de conformidad de AWS](https://aws.amazon.com/compliance/programs/). Para obtener más información sobre los programas de conformidad aplicables AWS IoT, consulte los [AWS servicios incluidos en el ámbito de aplicación por programa de conformidad](https://aws.amazon.com/compliance/services-in-scope/).
+ **Seguridad en la nube**: su responsabilidad viene determinada por el AWS servicio que utilice. También es responsable de otros factores, incluida la confidencialidad de los datos, los requisitos de la empresa y la legislación y los reglamentos vigentes. 

Esta documentación le ayuda a comprender cómo aplicar el modelo de responsabilidad compartida cuando se utiliza AWS IoT. Los siguientes temas muestran cómo configurarlo AWS IoT para cumplir sus objetivos de seguridad y conformidad. También aprenderá a utilizar otros AWS servicios que le ayudan a supervisar y proteger sus AWS IoT recursos. 

**Topics**
+ [AWS IoT seguridad](iot-security.md)
+ [Autenticación](authentication.md)
+ [Autorización](iot-authorization.md)
+ [Protección de datos en AWS IoT Core](data-protection.md)
+ [Gestión de identidad y acceso para AWS IoT](security-iam.md)
+ [Registro y supervisión](security-logging.md)
+ [Validación del cumplimiento de AWS IoT Core](compliance.md)
+ [La resiliencia en el núcleo del AWS IoT](disaster-recovery-resiliency.md)
+ [Uso AWS IoT Core con puntos finales de VPC de interfaz](IoTCore-VPC.md)
+ [Seguridad de la infraestructura en AWS IoT](infrastructure-security.md)
+ [Supervisión de la seguridad de las flotas o dispositivos de producción con Core AWS IoT](security-monitoring.md)
+ [Mejores prácticas de seguridad en AWS IoT Core](security-best-practices.md)
+ [AWS formación y certificación](#iot-security-training)

# AWS IoT seguridad
<a name="iot-security"></a>

Cada dispositivo o cliente conectado debe tener una credencial con la que interactuar con AWS IoT. Todo el tráfico entrante y saliente AWS IoT se envía de forma segura a través de Transport Layer Security (TLS). AWS Los mecanismos de seguridad en la nube protegen los datos cuando se mueven entre otros AWS servicios AWS IoT y otros.

![\[AWS IoT flujos de trabajo de seguridad que incluyen las credenciales con las que interactuar AWS IoT, la seguridad de la capa de transporte para proteger la conexión y los mecanismos de seguridad AWS en la nube para proteger los datos.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/thunderball-overview.png)

+ Es responsable de administrar las credenciales del dispositivo (certificados X.509, credenciales de AWS , identidades de Amazon Cognito, identidades federadas o tokens de autenticación personalizados) y las políticas de AWS IoT. También es el responsable de asignar identidades exclusivas a cada uno de los dispositivos y de administrar los permisos de cada dispositivo o un grupo de dispositivos.
+ Sus dispositivos se conectan AWS IoT mediante certificados X.509 o identidades de Amazon Cognito a través de una conexión TLS segura. Durante la investigación y el desarrollo, y en el caso de algunas aplicaciones que utilizan o utilizan la API WebSockets, también puede autenticarse mediante usuarios y grupos de IAM o mediante tokens de autenticación personalizados. Para obtener más información, consulte [Usuarios, grupos y roles de IAM](iam-users-groups-roles.md).
+ Al utilizar la AWS IoT autenticación, el agente de mensajes es responsable de autenticar tus dispositivos, ingerir de forma segura los datos de los dispositivos y conceder o denegar los permisos de acceso que especifiques para tus dispositivos mediante políticas. AWS IoT 
+ Al utilizar la autenticación personalizada, un autorizador personalizado se encarga de autenticar tus dispositivos y de conceder o denegar los permisos de acceso que especifiques para tus dispositivos mediante AWS IoT políticas de IAM.
+ El motor de AWS IoT reglas reenvía los datos de los dispositivos a otros dispositivos u otros AWS servicios de acuerdo con las reglas que usted defina. Se utiliza AWS Identity and Access Management para transferir datos de forma segura a su destino final. Para obtener más información, consulte [Gestión de identidad y acceso para AWS IoT](security-iam.md).

# Autenticación
<a name="authentication"></a>

La autenticación es un mecanismo en el que se verifica la identidad de un cliente o un servidor. La autenticación del servidor es el proceso en el que los dispositivos u otros clientes se aseguran de que se están comunicando con un AWS IoT punto final real. La autenticación de clientes es el proceso mediante el cual los dispositivos u otros clientes se autentican. AWS IoT

## Información general del certificado X.509
<a name="x509-certificate-overview"></a>

Los certificados X.509 son certificados digitales que utilizan el [estándar de infraestructura de clave pública X.509](https://en.wikipedia.org/wiki/X.509) para asociar una clave pública a una identidad contenida en un certificado. Los certificados X.509 se generan a través de una entidad de confianza conocida como autoridad de certificación (CA). La CA administra uno o varios certificados especiales llamados certificados de CA, que utiliza para generar certificados X.509. Solo la autoridad de certificación tiene acceso a los certificados de CA. Las cadenas de certificados X.509 se utilizan tanto para la autenticación del servidor por parte de los clientes como para la autenticación del cliente por parte del servidor.

# Autenticación del servidor
<a name="server-authentication"></a>

Cuando el dispositivo u otro cliente intente conectarse AWS IoT Core, el AWS IoT Core servidor enviará un certificado X.509 que el dispositivo utilizará para autenticar el servidor. La autenticación se lleva a cabo en la capa TLS mediante la validación de la [cadena de certificados X.509](x509-client-certs.md). Este es el mismo método que utiliza el navegador cuando visita una URL HTTPS. Si desea utilizar certificados de su propia autoridad de certificación, consulte [Administración de sus certificados de entidad de certificación](manage-your-CA-certs.md).

Cuando sus dispositivos u otros clientes establecen una conexión TLS con un AWS IoT Core terminal, AWS IoT Core presenta una cadena de certificados que los dispositivos utilizan para comprobar que se están comunicando con otro servidor AWS IoT Core y no con otro servidor que se hace pasar por él. AWS IoT Core La cadena que se presenta depende de una combinación del tipo de terminal al que se conecta el dispositivo y del [conjunto de cifrado](transport-security.md) que el cliente y el cliente AWS IoT Core negociaron durante el protocolo de enlace TLS.

## Tipo de punto de conexión
<a name="endpoint-types"></a>

AWS IoT Core admite. `iot:Data-ATS` `iot:Data-ATS`los puntos finales presentan un certificado de servidor firmado por una CA de [Amazon Trust Services](https://www.amazontrust.com/repository/).

Los certificados presentados por los puntos de conexión de ATS están firmados por Starfield. Algunas implementaciones de cliente TLS requieren la validación de la raíz de confianza y requieren que los certificados de CA de Starfield estén instalados en los almacenes de confianza del cliente.

**aviso**  
No se recomienda utilizar un método de fijación de certificados que aplica hash en todo el certificado (incluido el nombre del emisor, etc.) porque esto provocará un error en la verificación del certificado porque los certificados ATS que proporcionamos están firmados de forma cruzada por Starfield y tienen un nombre de emisor diferente.

**importante**  
Utilice puntos de conexión `iot:Data-ATS`. Los certificados de Symantec y Verisign han quedado obsoletos y ya no son compatibles con. AWS IoT Core

Puede utilizar el comando `describe-endpoint` para crear el punto de conexión de ATS.

```
aws iot describe-endpoint --endpoint-type iot:Data-ATS
```

El comando `describe-endpoint` devuelve un punto de conexión en el formato siguiente.

```
account-specific-prefix.iot.your-region.amazonaws.com
```

**nota**  
La primera vez que se llama a `describe-endpoint`, se crea un punto de conexión. Todas las llamadas posteriores a `describe-endpoint` devuelven el mismo punto de conexión.

**nota**  
**Para ver su `iot:Data-ATS` dispositivo de punto final en la AWS IoT Core consola, seleccione Configuración.** La consola solo muestra el punto de conexión `iot:Data-ATS`.

### Creación de un `IotDataPlaneClient` con el AWS SDK para Java
<a name="java-client"></a>

Para crear un `IotDataPlaneClient` que utilice un punto de conexión `iot:Data-ATS`, debe hacer lo siguiente. 
+ Cree un `iot:Data-ATS` punto final mediante la [DescribeEndpoint](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeEndpoint.html)API.
+ Especifique ese punto de conexión al crear el `IotDataPlaneClient`.

En el ejemplo siguiente se realizan ambas operaciones.

```
public void setup() throws Exception {
        IotClient client = IotClient.builder().credentialsProvider(CREDENTIALS_PROVIDER_CHAIN).region(Region.US_EAST_1).build();
        String endpoint = client.describeEndpoint(r -> r.endpointType("iot:Data-ATS")).endpointAddress();
        iot = IotDataPlaneClient.builder()
                                .credentialsProvider(CREDENTIALS_PROVIDER_CHAIN)
                                .endpointOverride(URI.create("https://" + endpoint))
                                .region(Region.US_EAST_1)
                                .build();
}
```

## Certificados de entidad de certificación para autenticación de servidor
<a name="server-authentication-certs"></a>

Según el tipo de punto final de datos que utilice y el conjunto de cifrado que haya negociado, los certificados de autenticación AWS IoT Core del servidor se firman con uno de los siguientes certificados de CA raíz:

**Puntos de enlace de Amazon Trust Services (preferidos)**

**nota**  
Es posible que tenga que hacer clic con el botón derecho en estos enlaces y seleccionar **Guardar enlace como...** para guardar estos certificados como archivos.
+ Clave RSA de 2048 bits: [https://www.amazontrust.com/repository/AmazonRootCA1.pem](https://www.amazontrust.com/repository/AmazonRootCA1.pem).
+ Clave RSA de 4096 bits: Amazon Root CA 2. Reservado para uso futuro.
+ Clave ECC de 256 bits: [https://www.amazontrust.com/repository/AmazonRootCA3.pem](https://www.amazontrust.com/repository/AmazonRootCA3.pem).
+ Clave ECC de 384 bits: Amazon Root CA 4. Reservado para uso futuro.

Todos estos certificados tienen firma cruzada del [ Certificado Starfield Root CA](https://www.amazontrust.com/repository/SFSRootCAG2.pem). Todas AWS IoT Core las nuevas regiones, a partir del lanzamiento del 9 de mayo de 2018 AWS IoT Core en la región de Asia Pacífico (Bombay), solo ofrecen certificados ATS.

**VeriSign Endpoints (heredado)**
+ Clave RSA de 2048 bits: certificado de CA raíz [G5 primaria pública de VeriSign clase 3](https://www.digicert.com/kb/digicert-root-certificates.htm)

## Directrices de autenticación de servidores
<a name="server-authentication-guidelines"></a>

Hay muchas variables que pueden afectar a la capacidad de un dispositivo para validar el certificado de autenticación del servidor de AWS IoT Core . Por ejemplo, los dispositivos pueden tener demasiada memoria limitada para contener todos los certificados de CA raíz posibles, o los dispositivos pueden implementar un método no estándar de validación de certificados. Por estas razones, sugerimos seguir estas directrices:
+ Le recomendamos que utilice el punto de conexión ATS e instale todos los certificados de CA raíz de Amazon Root CA compatibles.
+ Si no puede almacenar todos estos certificados en su dispositivo y si sus dispositivos no utilizan la validación basada en ECC, puede omitir los certificados [https://www.amazontrust.com/repository/AmazonRootCA3.pem](https://www.amazontrust.com/repository/AmazonRootCA3.pem) y [https://www.amazontrust.com/repository/AmazonRootCA4.pem](https://www.amazontrust.com/repository/AmazonRootCA4.pem) de ECC. Si sus dispositivos no implementan una validación de certificados basada en RSA, puede omitir los certificados [https://www.amazontrust.com/repository/AmazonRootCA1.pem](https://www.amazontrust.com/repository/AmazonRootCA1.pem) y [https://www.amazontrust.com/repository/AmazonRootCA2.pem](https://www.amazontrust.com/repository/AmazonRootCA2.pem) de RSA. Es posible que tenga que hacer clic con el botón derecho en estos enlaces y seleccionar **Guardar enlace como...** para guardar estos certificados como archivos.
+ Si tiene problemas de validación de certificados de servidor al conectarse a su punto de conexión de ATS, intente agregar el certificado Amazon Root CA correspondiente con firma cruzada a su almacén de confianza. Es posible que tenga que hacer clic con el botón derecho en estos enlaces y seleccionar **Guardar enlace como...** para guardar estos certificados como archivos.
  + [Amazon Root CA 1 con firma cruzada](https://www.amazontrust.com/repository/G2-RootCA1.pem)
  + [Amazon Root CA 2 con firma cruzada](https://www.amazontrust.com/repository/G2-RootCA2.pem): reservado para futura utilización.
  + [Amazon Root CA 3 con firma cruzada](https://www.amazontrust.com/repository/G2-RootCA3.pem)
  + [Amazon Root CA 4 con firma cruzada: reservado para futura utilización.](https://www.amazontrust.com/repository/G2-RootCA4.pem)
+ Si experimenta problemas de validación de certificados de servidor, es posible que el dispositivo deba confiar explícitamente en la CA raíz. Intente agregar el [https://www.amazontrust.com/repository/SFSRootCAG2.pem](https://www.amazontrust.com/repository/SFSRootCAG2.pem) a su almacén de confianza.
+ Si sigue teniendo problemas después de ejecutar los pasos anteriores, póngase en contacto con [AWS Developer Support](https://aws.amazon.com/premiumsupport/plans/developers/). 

**nota**  
Los certificados de CA tienen una fecha de vencimiento posterior que no pueden usar para validar un certificado del servidor. Los certificados de CA podrían tener que reemplazarse antes de su fecha de vencimiento. Asegúrese de que puede actualizar los certificados de entidad de certificación raíz en todos sus dispositivos o clientes para asegurarse de que la conectividad se mantenga y esté al día de las prácticas recomendadas de seguridad.

**nota**  
Cuando se conecte con AWS IoT Core el código de su dispositivo, pase el certificado a la API que está utilizando para conectarse. La API que use variará según el SDK. Para obtener más información, consulta el [AWS IoT Core dispositivo SDKs](iot-sdks.md).

# Autenticación del cliente
<a name="client-authentication"></a>

AWS IoT admite tres tipos de principios de identidad para la autenticación de dispositivos o clientes:
+ [Certificados de cliente X.509](x509-client-certs.md)
+ [Usuarios, grupos y roles de IAM](iam-users-groups-roles.md)
+ [Identidades de Amazon Cognito](cognito-identities.md)

Estas identidades se pueden usar con dispositivos, aplicaciones móviles, web o de escritorio. Incluso los puede usar un usuario que escribe AWS IoT comandos de la interfaz de línea de comandos (CLI). Por lo general, AWS IoT los dispositivos utilizan certificados X.509, mientras que las aplicaciones móviles utilizan las identidades de Amazon Cognito. Las aplicaciones web y de escritorio usan identidades federadas o de IAM. Los comandos de la AWS CLI utilizan IAM. Para obtener más información acerca de las identidades de IAM, consulte [Gestión de identidad y acceso para AWS IoT](security-iam.md).

# Certificados de cliente X.509
<a name="x509-client-certs"></a>

Los certificados X.509 permiten AWS IoT autenticar las conexiones de clientes y dispositivos. Los certificados de cliente deben estar registrados AWS IoT antes de que un cliente pueda comunicarse con ellos. AWS IoT Un certificado de cliente se puede registrar en varios Cuenta de AWS s de la misma región Región de AWS para facilitar el traslado de dispositivos entre Cuenta de AWS los de la misma región. Para obtener más información, consulte [Uso de certificados de cliente X.509 en varios Cuenta de AWS s con registro de varias cuentas](#multiple-account-cert). 

Se recomienda que cada dispositivo o cliente reciba un certificado único para permitir acciones de administración de clientes precisas, incluida la revocación de certificados. Los dispositivos y los clientes deben ser compatibles con la rotación y la sustitución de certificados para garantizar un buen funcionamiento cuando los certificados caduquen.

Para obtener más información sobre el uso de certificados X.509 con el fin de admitir más de unos pocos dispositivos, consulte [Aprovisionamiento de dispositivos](iot-provision.md) para revisar las distintas opciones de aprovisionamiento y administración de certificados que admite AWS IoT .

**AWS IoT admite los siguientes tipos de certificados de cliente X.509:**
+  Certificados X.509 generados por AWS IoT
+  Certificados X.509 firmados por una entidad emisora de certificados registrada en. AWS IoT
+  Certificados X.509 firmados por una entidad de certificación que no está registrada con AWS IoT.

En esta sección se describe cómo administrar certificados X.509 en AWS IoT. Puede utilizar la AWS IoT consola o AWS CLI realizar las siguientes operaciones de certificación:
+ [Cree certificados de AWS IoT cliente](device-certs-create.md)
+ [Creación de sus propios certificados de cliente](device-certs-your-own.md)
+ [Registrar un certificado de cliente](register-device-cert.md)
+ [Activar o desactivar un certificado de cliente](activate-or-deactivate-device-cert.md)
+ [Revocar un certificado de cliente](revoke-ca-cert.md)

Para obtener más información sobre los AWS CLI comandos que realizan estas operaciones, consulte la [referencia de AWS IoT CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/index.html).

## Uso de certificados de cliente X.509
<a name="x509-client-cert-basics"></a>

Los certificados X.509 autentican las conexiones de clientes y dispositivos a. AWS IoT Los certificados X.509 ofrecen varios beneficios con respecto a otros mecanismos de identificación y autenticación. Los certificados X.509 permiten usar claves asimétricas con los dispositivos. Por ejemplo, podría forzar claves privadas en un almacenamiento seguro en un dispositivo para que el material criptográfico confidencial nunca salga del dispositivo. Los certificados X.509 proporcionan una autenticación del cliente más fiable que los otros sistemas, como el nombre de usuario y la contraseña o los tokens de portador, ya que la clave privada jamás abandona el dispositivo.

AWS IoT autentica los certificados de cliente mediante el modo de autenticación de cliente del protocolo TLS. La compatibilidad con TLS está disponible en numerosos lenguajes de programación y sistemas operativos, y se utiliza generalmente para cifrar datos. En la autenticación de clientes TLS, AWS IoT solicita un certificado de cliente X.509 y valida el estado del certificado y lo Cuenta de AWS compara con un registro de certificados. A continuación, pide al cliente que demuestre que es propietario de la clave privada que corresponde a la clave pública contenida en el certificado. AWS IoT exige que los clientes envíen la [extensión de indicación del nombre del servidor (SNI)](https://tools.ietf.org/html/rfc3546#section-3.1) al protocolo Transport Layer Security (TLS). Para obtener más información sobre la configuración de la extensión SNI, consulte [Seguridad del transporte en AWS IoT Core](transport-security.md).

Para facilitar una conexión segura y coherente del cliente con el AWS IoT núcleo, un certificado de cliente X.509 debe tener lo siguiente:
+ Registrado en AWS IoT Core. Para obtener más información, consulte [Registrar un certificado de cliente](register-device-cert.md).
+ Tener un estado `ACTIVE`. Para obtener más información, consulte [Activar o desactivar un certificado de cliente](activate-or-deactivate-device-cert.md).
+ No haber alcanzado aún la fecha de caducidad del certificado.

Puede crear certificados de cliente que utilicen la entidad de certificación Amazon Root y puede utilizar sus propios certificados de cliente firmados por otra entidad de certificación (CA). Para obtener más información sobre el uso de la AWS IoT consola para crear certificados que usen la CA raíz de Amazon, consulte[Cree certificados de AWS IoT cliente](device-certs-create.md). Para obtener más información sobre el uso de sus propios certificados X.509, consulte [Creación de sus propios certificados de cliente](device-certs-your-own.md).

La fecha y hora de caducidad de los certificados firmados por un certificado de entidad de certificación se establecen en el momento de su creación. Los certificados X.509 generados por AWS IoT vencen a medianoche (UTC) del 31 de diciembre de 2049 (2049-12-31T 23:59:59 Z).

AWS IoT Device Defender puede realizar auditorías en sus dispositivos Cuenta de AWS y en sus dispositivos, de acuerdo con las mejores prácticas comunes de seguridad de IoT. Esto incluye administrar las fechas de caducidad de los certificados X.509 firmados por su entidad de certificación o la entidad de certificación de Amazon Root. Para obtener más información sobre la administración de la fecha de vencimiento de un certificado, consulte [El certificado de dispositivo está caducando](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-device-cert-approaching-expiration.html) y [El certificado de entidad de certificación está caducando](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-ca-cert-approaching-expiration.html).

En el AWS IoT blog oficial, se profundiza en la gestión de la rotación de certificados de dispositivos y las mejores prácticas de seguridad en [Cómo gestionar la rotación de certificados de dispositivos de IoT mediante el uso AWS IoT](https://aws.amazon.com/blogs/iot/how-to-manage-iot-device-certificate-rotation-using-aws-iot/).

## Uso de certificados de cliente X.509 en varios Cuenta de AWS s con registro de varias cuentas
<a name="multiple-account-cert"></a>

El registro de varias cuentas permite mover dispositivos entre sus Cuenta de AWS en la misma región o en regiones diferentes. Puede registrar, probar y configurar un dispositivo en una cuenta de preproducción y, a continuación, registrar y utilizar el mismo dispositivo y certificado de dispositivo en una cuenta de producción. También puede registrar el certificado de cliente en el dispositivo o los certificados del dispositivo sin una CA en la que esté registrada. AWS IoT Para obtener más información, consulte [Registrar un certificado de cliente firmado por una entidad de certificación no registrada (CLI)](manual-cert-registration.md#manual-cert-registration-noca-cli).

**nota**  
Los certificados utilizados para el registro de varias cuentas son compatibles con los tipos de puntos de conexión `iot:Data-ATS`, `iot:Data` (heredados), `iot:Jobs` y `iot:CredentialProvider`. Para obtener más información sobre los puntos finales de los AWS IoT dispositivos, consulte[AWS IoT datos del dispositivo y puntos finales de servicio](iot-connect-devices.md#iot-connect-device-endpoints).

Los dispositivos que utilizan el registro de varias cuentas deben enviar la [extensión de indicación del nombre del servidor (SNI)](https://tools.ietf.org/html/rfc3546#section-3.1) al protocolo Transport Layer Security (TLS) y proporcionar la dirección completa del punto final en el `host_name` campo cuando se conecten a. AWS IoT AWS IoT utiliza la dirección del punto final `host_name` para enrutar la conexión a la cuenta correcta. AWS IoT Los dispositivos existentes que no envíen una dirección de punto de conexión válida en `host_name` seguirán funcionando, pero no podrán utilizar las características que requiere esta información. Para obtener más información acerca de la extensión SNI y para aprender a identificar la dirección del punto de conexión del campo `host_name`, consulte [Seguridad del transporte en AWS IoT Core](transport-security.md). 

**Para utilizar el registro de varias cuentas**

1. Puede registrar los certificados de dispositivo con una entidad de certificación. Puede registrar la CA emisora de certificados en varias cuentas en modo `SNI_ONLY` y utilizar esa entidad de certificación para registrar el mismo certificado de cliente en varias cuentas. Para obtener más información, consulte [Registro de un certificado de entidad de certificación en modo SNI\$1ONLY (CLI) - Recomendado](manage-your-CA-certs.md#register-CA-cert-SNI-cli).

1. Puede registrar los certificados de dispositivo sin una entidad de certificación. Consulte [Registro de un certificado de cliente firmado por una entidad de certificación no registrada (CLI)](manual-cert-registration.md#manual-cert-registration-noca-cli). El registro de una entidad de certificación es opcional. No es necesario que registre la CA con la que firmó los certificados del dispositivo AWS IoT.

## Los algoritmos de firma de certificados son compatibles con AWS IoT
<a name="x509-cert-algorithms"></a>

AWS IoT admite los siguientes algoritmos de firma de certificados:
+ SHA256CON RSA
+ SHA384CON RSA
+ SHA512CON RSA
+ SHA256WITHRSAANDMGF1 (RSASSA-PSS)
+ SHA384WITHRSAANDMGF1 (RSASSA-PSS)
+ SHA512WITHRSAANDMGF1 (RSASSA-PSS)
+ DSA\$1WITH\$1 SHA256
+ ECDSA-CON- SHA256
+ ECDSA-CON- SHA384
+ ECDSA-CON- SHA512

Para obtener más información acerca de la autenticación y la seguridad de los certificados, consulte [Calidad de la clave del certificado del dispositivoy](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-device-cert-key-quality.html).

**nota**  
La solicitud de firma de certificado (CSR) debe incluir una clave pública. Puede tratarse de una clave RSA con una longitud de al menos 2048 bits o una clave ECC de curvas NIST P-256, NIST P-384 o NIST P-521. Para obtener más información, consulte [CreateCertificateFromCsr](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCertificateFromCsr.html) en la *Guía de referencia de la API de AWS IoT *.

## Algoritmos clave compatibles con AWS IoT
<a name="x509-cert-key-algorithms"></a>

En la siguiente tabla se muestra cómo se admiten los algoritmos de clave:


****  

| Algoritmo clave | Algoritmo de firma de certificados | Versión de TLS | ¿Se admite? Yes o No | 
| --- | --- | --- | --- | 
| RSA con un tamaño de clave de al menos 2048 bits | Todos | TLS 1.2 y TLS 1.3 | Sí | 
| ECC NIST P-256/P-384/P-521 | Todos | TLS 1.2 y TLS 1.3 | Sí | 
| RSA-PSS con un tamaño de clave de al menos 2048 bits | Todos | TLS 1.2 | No | 
| RSA-PSS con un tamaño de clave de al menos 2048 bits | Todos | TLS 1.3 | Sí | 

Para crear un certificado mediante la [CreateCertificateFromCSR](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateCertificateFromCsr.html), puede utilizar un algoritmo de clave compatible para generar una clave pública para su CSR. Para registrar su propio certificado mediante [RegisterCertificate](https://docs.aws.amazon.com//iot/latest/apireference/API_RegisterCertificate.html)una [RegisterCertificateWithoutCA](https://docs.aws.amazon.com//iot/latest/apireference/API_RegisterCertificateWithoutCA.html), puede utilizar un algoritmo de clave compatible para generar una clave pública para el certificado.

Para obtener más información, consulte [Security policies](https://docs.aws.amazon.com//iot/latest/developerguide/transport-security.html#tls-policy-table).

# Cree certificados de AWS IoT cliente
<a name="device-certs-create"></a>

AWS IoT proporciona certificados de cliente firmados por la autoridad de certificación (CA) raíz de Amazon.

En este tema se describe cómo crear un certificado de cliente firmado por la entidad de certificación Amazon Root y descargar los archivos de certificado. Después de crear los archivos de certificado de cliente, debe instalarlos en el cliente.

**nota**  
Cada certificado de cliente X.509 proporcionado por él AWS IoT contiene los atributos de emisor y sujeto que usted estableció en el momento de la creación del certificado. Los atributos del certificado solo son inmutables una vez creado el certificado.

Puede usar la AWS IoT consola o la AWS CLI para crear un AWS IoT certificado firmado por la autoridad de certificación raíz de Amazon.

## Cree un AWS IoT certificado (consola)
<a name="device-certs-create-console"></a>

**Para crear un AWS IoT certificado mediante la AWS IoT consola**

1. Inicie sesión en la [AWS IoT consola Consola de administración de AWS y ábrala](https://console.aws.amazon.com/iot/home).

1. En el panel de navegación, elija **Seguridad**, **Certificados** y, a continuación, elija **Crear**.

1. Elija **One-click certificate creation (recommended) [Creación de un certificado con un clic (recomendado)]** - **Create certificate (Crear certificado)**.

1. En la página **Certificado creado**, descargue los archivos de certificado del cliente para el objeto, la clave pública y la clave privada en una ubicación segura. Estos certificados generados por solo AWS IoT están disponibles para su uso con AWS IoT los servicios.

   Si necesita además el archivo de certificado de entidad de certificación de Amazon Root, esta página también tiene el enlace a la página desde la que puede descargarlo.

1. Ahora se ha creado y registrado un certificado de cliente con AWS IoT. Debe activar el certificado antes de usarlo en un cliente.

    Elija **Activar** para activar el certificado de cliente ahora. Si no desea activar el certificado ahora, consulte [Activar un certificado de cliente (consola)](activate-or-deactivate-device-cert.md#activate-device-cert-console) para saber cómo activarlo más adelante.

   

1. Si desea asociar una política al certificado, elija **Asociar una política**.

   Si no desea asociar una política ahora, elija **Hecho** para finalizar. Puede asociar una política más adelante.

Después de completar el procedimiento, instale los archivos de certificado en el cliente.

## Crear un AWS IoT certificado (CLI)
<a name="device-certs-create-cli"></a>

 AWS CLI Proporciona el **[create-keys-and-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/create-keys-and-certificate.html)** comando para crear certificados de cliente firmados por la autoridad de certificación raíz de Amazon. No obstante, este comando no descarga el archivo de certificado de entidad de certificación de Amazon Root. Puede descargar el archivo de certificado de entidad de certificación de Amazon Root desde [Certificados de entidad de certificación para autenticación de servidor](server-authentication.md#server-authentication-certs). 

Este comando crea archivos de claves privadas, claves públicas y certificados X.509, y registra y activa el certificado con AWS IoT ellos.

```
aws iot create-keys-and-certificate \
    --set-as-active \
    --certificate-pem-outfile certificate_filename.pem \
    --public-key-outfile public_filename.key \
    --private-key-outfile private_filename.key
```

Si no desea activar el certificado al crearlo y registrarlo, este comando crea archivos de clave privada, clave pública y certificado X.509 y registra el certificado, pero no lo activa. [Activar un certificado de cliente (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli) describe cómo activar el certificado más adelante.

```
aws iot create-keys-and-certificate \
    --no-set-as-active \
    --certificate-pem-outfile certificate_filename.pem \
    --public-key-outfile public_filename.key \
    --private-key-outfile private_filename.key
```



Instale los archivos de certificado en el cliente.

# Creación de sus propios certificados de cliente
<a name="device-certs-your-own"></a>

AWS IoT admite certificados de cliente firmados por cualquier autoridad de certificación (CA) raíz o intermedia. AWS IoT utiliza los certificados de CA para comprobar la propiedad de los certificados. Para utilizar certificados de dispositivo firmados por una entidad emisora de certificados que no sea la entidad de certificación de Amazon, el certificado de la entidad emisora debe estar registrado en ella AWS IoT para que podamos comprobar la propiedad del certificado del dispositivo.

AWS IoT admite varias formas de traer tus propios certificados (BYOC): 
+ En primer lugar, registre la entidad de certificación que se utiliza para firmar los certificados de los clientes y, a continuación, registre los certificados de los clientes por separado. Si desea registrar el dispositivo o el cliente en su certificado de cliente cuando se conecte por primera vez AWS IoT (también conocido como [aprovisionamiento justo a tiempo](https://docs.aws.amazon.com//iot/latest/developerguide/jit-provisioning.html)), debe registrar la CA firmante AWS IoT y activar el registro automático.
+ Si no puede registrar la CA emisora de certificados, puede optar por registrar los certificados de cliente sin la CA. En el caso de los dispositivos registrados sin una CA, tendrá que presentar la [indicación de nombre del servidor (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) al conectarlos a AWS IoT.

**nota**  
Para registrar los certificados de cliente mediante una CA, debe registrar la CA firmante y no con ninguna otra AWS IoT CAs entidad jerárquica.

**nota**  
Un certificado de entidad de certificación se puede registrar en modo `DEFAULT` solo mediante una cuenta en una región. Un certificado de entidad de certificación se puede registrar en modo `SNI_ONLY` mediante varias cuentas en una región. 

Para obtener más información acerca del uso de certificados X.509 con el fin de admitir más de unos pocos dispositivos, consulte [Aprovisionamiento de dispositivos](iot-provision.md) para revisar las diferentes opciones de administración y aprovisionamiento de certificados que admite AWS IoT .

**Topics**
+ [Administración de sus certificados de entidad de certificación](manage-your-CA-certs.md)
+ [Crear un certificado de cliente mediante el certificado de entidad de certificación](create-device-cert.md)

# Administración de sus certificados de entidad de certificación
<a name="manage-your-CA-certs"></a>

En esta sección se describen las tareas comunes para administrar sus propios certificados de entidad de certificación.

Puede registrar su entidad emisora de certificados (CA) AWS IoT si utiliza certificados de cliente firmados por una entidad emisora de certificados que AWS IoT no los reconoce.

Si desea que los clientes registren automáticamente sus certificados de cliente AWS IoT cuando se conecten por primera vez, la CA que firmó los certificados de cliente debe estar registrada AWS IoT. De lo contrario, no es necesario registrar el certificado de entidad de certificación que firmó los certificados de cliente.

**nota**  
Un certificado de entidad de certificación se puede registrar en modo `DEFAULT` solo mediante una cuenta en una región. Un certificado de entidad de certificación se puede registrar en modo `SNI_ONLY` mediante varias cuentas en una región.

**Topics**
+ [Creación de un certificado de entidad de certificación](#create-your-CA-cert)
+ [Registro del certificado CA](#register-CA-cert)
+ [Desactivar un certificado de entidad de certificación](#deactivate-ca-cert)

## Creación de un certificado de entidad de certificación
<a name="create-your-CA-cert"></a>

Si no dispone de certificado de entidad de certificación, puede crear uno con las herramientas de [OpenSSL v1.1.1i](https://www.openssl.org/).

**nota**  
No puede realizar este procedimiento en la AWS IoT consola.

**Para crear un certificado de entidad de certificación con las herramientas de [OpenSSL v1.1.1i](https://www.openssl.org/)**

1. Genere un par de claves.

   ```
   openssl genrsa -out root_CA_key_filename.key 2048
   ```

1. Utilice la clave privada del par de claves para generar un certificado de entidad de certificación.

   ```
   openssl req -x509 -new -nodes \
       -key root_CA_key_filename.key \
       -sha256 -days 1024 \
       -out root_CA_cert_filename.pem
   ```

## Registro del certificado CA
<a name="register-CA-cert"></a>

Estos procedimientos describen cómo registrar un certificado de una autoridad de certificación (CA) que no es la CA de Amazon. AWS IoT Core utiliza certificados de CA para verificar la propiedad de los certificados. Para usar certificados de dispositivo firmados por una CA que no sea la CA de Amazon, debes registrar el certificado de CA con el AWS IoT Core fin de comprobar la propiedad del certificado del dispositivo.

### Registro de un certificado de entidad de certificación (consola).
<a name="register-CA-cert-console"></a>

**nota**  
Para registrar un certificado de entidad de certificación en la consola, comience en la consola en [Registro de un certificado de entidad de certificación](https://console.aws.amazon.com//iot/home#/create/cacertificate). Puede registrar su entidad emisora de certificados en el modo multicuenta y sin necesidad de proporcionar un certificado de verificación ni de acceder a la clave privada. Una entidad emisora de certificados se puede registrar en el modo multicuenta mediante varias Cuentas de AWS en la misma Región de AWS. Puede registrar su entidad emisora de certificados en el modo de cuenta única proporcionando un certificado de verificación y una prueba de propiedad de la clave privada de la entidad emisora de certificados.

### Registro de un certificado de entidad de certificación (CLI)
<a name="register-CA-cert-cli"></a>

Puede registrar un certificado de entidad de certificación en el modo `DEFAULT` o el modo `SNI_ONLY`. Una CA se puede registrar en `DEFAULT` modo uno Cuenta de AWS a uno Región de AWS. Una CA se puede registrar en `SNI_ONLY` modo varias veces Cuentas de AWS en la misma modalidad Región de AWS. Para obtener más información acerca del modo de certificados de CA, consulte [certificateMode](https://docs.aws.amazon.com//iot/latest/apireference/API_CACertificateDescription.html#iot-Type-CACertificateDescription-certificateMode).

**nota**  
Se recomienda registrar una entidad emisora de certificados en el modo `SNI_ONLY`. No necesita proporcionar un certificado de verificación ni acceder a la clave privada, y puede registrar la CA varias veces Cuentas de AWS en la misma Región de AWS.

#### Registro de un certificado de entidad de certificación en modo SNI\$1ONLY (CLI) - Recomendado
<a name="register-CA-cert-SNI-cli"></a>

**Requisitos previos**

Asegúrese de que dispone de lo siguiente en el ordenador antes de continuar:
+ El archivo de certificado de entidad de certificación raíz (al que se hace referencia en el siguiente ejemplo como `root_CA_cert_filename.pem`).
+ [OpenSSL v1.1.1i](https://www.openssl.org/) o versiones posteriores.

**Para registrar un certificado de CA en `SNI_ONLY` modo mediante el AWS CLI**

1. Registre el certificado de CA con AWS IoT. Con el comando **register-ca-certificate**, introduzca el nombre del archivo del certificado de entidad de certificación. Para obtener más información, consulte [register-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html) en la *Referencia de comandos de la AWS CLI *.

   ```
   aws iot register-ca-certificate \
       --ca-certificate file://root_CA_cert_filename.pem \
       --certificate-mode SNI_ONLY
   ```

   Si se ejecuta correctamente, este comando devuelve el*certificateId*.

1. En este momento, el certificado de CA se ha registrado AWS IoT pero está inactivo. El certificado de entidad de certificación debe estar activo antes de poder registrar los certificados de cliente firmados por él.

   Este paso activa el certificado de entidad de certificación.

   Para activar el certificado de entidad de certificación, utilice el comando **update-certificate** del modo siguiente. Para obtener más información, consulte [update-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) en la *Referencia de comandos de la AWS CLI *.

   ```
   aws iot update-ca-certificate \
       --certificate-id certificateId \
       --new-status ACTIVE
   ```

Utilice el comando **describe-ca-certificate** para ver el estado del certificado de entidad de certificación. Para obtener más información, consulte [describe-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) en la *Referencia de comandos de la AWS CLI *.

#### Registro de un certificado de entidad de certificación en modo `DEFAULT` (CLI)
<a name="register-CA-cert-default-cli"></a>

**Requisitos previos**

Asegúrese de que dispone de lo siguiente en el ordenador antes de continuar:
+ El archivo de certificado de entidad de certificación raíz (al que se hace referencia en el siguiente ejemplo como `root_CA_cert_filename.pem`).
+ El archivo de clave privada del certificado de entidad de certificación raíz (al que se hace referencia en el siguiente ejemplo como `root_CA_key_filename.key`).
+ [OpenSSL v1.1.1i](https://www.openssl.org/) o versiones posteriores.

**Para registrar un certificado de CA en `DEFAULT` modo mediante el AWS CLI**

1. Para obtener un código de registro AWS IoT, utilice**get-registration-code**. Guarde el `registrationCode` devuelto para usarlo como `Common Name` del certificado de verificación de clave privada. Para obtener más información, consulte [get-registration-code](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/get-registration-code.html) en la *Referencia de comandos de la AWS CLI *.

   ```
   aws iot get-registration-code
   ```

1. Genere un par de claves para el certificado de verificación de clave privada:

   ```
   openssl genrsa -out verification_cert_key_filename.key 2048
   ```

1. Cree una solicitud de firma de certificado (CSR) para el certificado de verificación de clave privada. Establezca el campo `Common Name` del certificado en el `registrationCode` devuelto por **get-registration-code**.

   ```
   openssl req -new \
       -key verification_cert_key_filename.key \
       -out verification_cert_csr_filename.csr
   ```

   Se le solicita información, incluido el `Common Name` del certificado.

   ```
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:
       State or Province Name (full name) []:
       Locality Name (for example, city) []:
       Organization Name (for example, company) []:
       Organizational Unit Name (for example, section) []:
       Common Name (e.g. server FQDN or YOUR name) []:your_registration_code
       Email Address []:
   
       Please enter the following 'extra' attributes
       to be sent with your certificate request
       A challenge password []:
       An optional company name []:
   ```

1. Utilice la CSR para crear un certificado de verificación de la clave privada:

   ```
   openssl x509 -req \
       -in verification_cert_csr_filename.csr \
       -CA root_CA_cert_filename.pem \
       -CAkey root_CA_key_filename.key \
       -CAcreateserial \
       -out verification_cert_filename.pem \
       -days 500 -sha256
   ```

1. Registre el certificado de CA con AWS IoT. Pase el nombre de archivo del certificado de entidad de certificación y el nombre de archivo del certificado de verificación de clave privada al comando **register-ca-certificate**, tal como sigue: Para obtener más información, consulte [register-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html) en la *Referencia de comandos de la AWS CLI *.

   ```
   aws iot register-ca-certificate \
       --ca-certificate file://root_CA_cert_filename.pem \
       --verification-cert file://verification_cert_filename.pem
   ```

   Este comando devuelve el*certificateId*, si tiene éxito.

1. En este momento, el certificado de CA se ha registrado AWS IoT pero no está activo. El certificado de entidad de certificación debe estar activo antes de poder registrar los certificados de cliente firmados por él.

   Este paso activa el certificado de entidad de certificación.

   Para activar el certificado de entidad de certificación, utilice el comando **update-certificate** del modo siguiente. Para obtener más información, consulte [update-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) en la *Referencia de comandos de la AWS CLI *.

   ```
   aws iot update-ca-certificate \
       --certificate-id certificateId \
       --new-status ACTIVE
   ```

Utilice el comando **describe-ca-certificate** para ver el estado del certificado de entidad de certificación. Para obtener más información, consulte [describe-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) en la *Referencia de comandos de la AWS CLI *.

### Creación un certificado de verificación de CA para registrarlo en la consola
<a name="create-CA-verification-cert"></a>

**nota**  
Este procedimiento solo se utiliza si va a registrar un certificado de CA desde la AWS IoT consola.  
Si no ha realizado este procedimiento desde la AWS IoT consola, inicie el proceso de registro del certificado de CA en la consola en [Registrar el certificado de CA](https://console.aws.amazon.com//iot/home#/create/cacertificate). 

Asegúrese de que dispone de lo siguiente en el mismo ordenador antes de continuar:
+ El archivo de certificado de entidad de certificación raíz (al que se hace referencia en el siguiente ejemplo como `root_CA_cert_filename.pem`).
+ El archivo de clave privada del certificado de entidad de certificación raíz (al que se hace referencia en el siguiente ejemplo como `root_CA_key_filename.key`).
+ [OpenSSL v1.1.1i](https://www.openssl.org/) o versiones posteriores.

**Para usar la interfaz de línea de comandos con el fin de crear un certificado de verificación de CA para registrar su certificado de entidad de certificación en la consola:**

1. Reemplace `verification_cert_key_filename.key` por el nombre del archivo de clave del certificado de verificación que quiera crear (por ejemplo, **verification\$1cert.key**). Luego ejecute este comando para generar un par de claves para el certificado de verificación de clave privada:

   ```
   openssl genrsa -out verification_cert_key_filename.key 2048
   ```

1. Reemplace `verification_cert_key_filename.key` por el nombre del archivo de clave que creó en el paso 1.

   Reemplace `verification_cert_csr_filename.csr` por el nombre del archivo de solicitud de firma de certificado (CSR) que quiera crear. Por ejemplo, **verification\$1cert.csr**.

   Ejecute el comando para crear el archivo CSR.

   ```
   openssl req -new \
       -key verification_cert_key_filename.key \
       -out verification_cert_csr_filename.csr
   ```

   El comando le solicita información adicional que se explica más adelante.

1. En la AWS IoT consola, en el contenedor del **certificado de verificación**, copie el código de registro.

1. La información que le solicita el comando **openssl** se muestra en el siguiente ejemplo. A excepción del campo `Common Name`, puede introducir sus propios valores o mantenerlos vacíos.

   En el campo `Common Name`, pegue el código de registro que copió en el paso anterior.

   ```
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:
       State or Province Name (full name) []:
       Locality Name (for example, city) []:
       Organization Name (for example, company) []:
       Organizational Unit Name (for example, section) []:
       Common Name (e.g. server FQDN or YOUR name) []:your_registration_code
       Email Address []:
   
       Please enter the following 'extra' attributes
       to be sent with your certificate request
       A challenge password []:
       An optional company name []:
   ```

   Al terminar, el comando crea el archivo CSR.

1. Reemplace `verification_cert_csr_filename.csr` por el `verification_cert_csr_filename.csr` que utilizó en el paso anterior.

   Reemplace `root_CA_cert_filename.pem` por el nombre del archivo de del certificado de entidad de certificación que quiera registrar.

   Reemplace `root_CA_key_filename.key` por el nombre del archivo de clave privada del certificado de entidad de certificación.

   Reemplace `verification_cert_filename.pem` por el nombre del archivo de clave del certificado de verificación que quiera crear. Por ejemplo, **verification\$1cert.pem**.

   ```
   openssl x509 -req \
       -in verification_cert_csr_filename.csr \
       -CA root_CA_cert_filename.pem \
       -CAkey root_CA_key_filename.key \
       -CAcreateserial \
       -out verification_cert_filename.pem \
       -days 500 -sha256
   ```

1. Cuando se complete el comando OpenSSL, debería tener estos archivos listos para usarlos cuando regrese a la consola.
   + Su archivo de certificado de entidad de certificación (`root_CA_cert_filename.pem` utilizado en el comando anterior).
   + El certificado de verificación que creó en el paso anterior (*verification\$1cert\$1filename.pem*utilizado en el comando anterior)

## Desactivar un certificado de entidad de certificación
<a name="deactivate-ca-cert"></a>

Cuando un certificado de una entidad emisora de certificados (CA) está habilitado para el registro automático de certificados de cliente, AWS IoT comprueba el certificado de la CA para asegurarse de que la CA lo está`ACTIVE`. Si el certificado de CA lo está`INACTIVE`, AWS IoT no permite registrar el certificado de cliente.

Al establecer el certificado de entidad de certificación como `INACTIVE`, impide que los certificados de cliente nuevos emitidos por la entidad de certificación se registren automáticamente.

**nota**  
Todos los certificados de dispositivo registrados que haya firmado el certificado de entidad de certificación en riesgo siguen funcionando hasta que revoque explícitamente cada uno de ellos.

### Desactivar un certificado de entidad de certificación (consola)
<a name="deactivate-ca-cert-console"></a>

**Para desactivar un certificado de CA mediante la consola AWS IoT**

1. Inicie sesión en la [AWS IoT consola Consola de administración de AWS](https://console.aws.amazon.com/iot/home) y ábrala.

1. En el panel de navegación izquierdo, selecciona **Seguro** y elige **CAs**.

1. En la lista de autoridades de certificación, busque la que desea desactivar y elija el icono de los puntos suspensivos para abrir el menú de opciones.

1. En el menú de opciones, elija **Deactivate (Desactivar)**.

La entidad de certificación debe mostrarse como **Inactive (Inactiva)** en la lista.

**nota**  
La AWS IoT consola no proporciona una forma de enumerar los certificados firmados por la entidad emisora de certificados que ha desactivado. Para obtener una opción de AWS CLI para enumerar esos certificados, consulte [Desactivar un certificado de entidad de certificación (CLI)](#deactivate-ca-cert-cli).

### Desactivar un certificado de entidad de certificación (CLI)
<a name="deactivate-ca-cert-cli"></a>

 AWS CLI Proporciona el [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html)comando para desactivar un certificado de CA.

```
aws iot update-ca-certificate \
    --certificate-id certificateId \
    --new-status INACTIVE
```

Utilice el comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-certificates-by-ca.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-certificates-by-ca.html) para obtener una lista de todos los certificados de cliente registrados firmados por la entidad de certificación especificada. Por cada certificado de cliente firmado por el certificado de entidad de certificación especificado, puede utilizar el comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) para revocar el certificado de cliente y evitar que este se use.

Utilice el comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) para ver el estado del certificado de entidad de certificación.

# Crear un certificado de cliente mediante el certificado de entidad de certificación
<a name="create-device-cert"></a>

Puede utilizar su propia entidad de certificación (CA) para crear certificados de cliente. El certificado de cliente debe estar registrado en él AWS IoT antes de usarlo. Para obtener información acerca de las opciones de registro de los certificados de cliente, consulte [Registrar un certificado de cliente](register-device-cert.md).

## Crear un certificado de cliente (CLI)
<a name="create-device-cert-cli"></a>

**nota**  
No puede realizar este procedimiento en la AWS IoT consola.

**Para crear un certificado de cliente mediante el AWS CLI**

1. Genere un par de claves.

   ```
   openssl genrsa -out device_cert_key_filename.key 2048
   ```

1. Cree una CSR para el certificado de cliente.

   ```
   openssl req -new \
       -key device_cert_key_filename.key \
       -out device_cert_csr_filename.csr
   ```

   Se le solicita que indique información, tal y como se muestra aquí:

   ```
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:
       State or Province Name (full name) []:
       Locality Name (for example, city) []:
       Organization Name (for example, company) []:
       Organizational Unit Name (for example, section) []:
       Common Name (e.g. server FQDN or YOUR name) []:
       Email Address []:
   
       Please enter the following 'extra' attributes
       to be sent with your certificate request
       A challenge password []:
       An optional company name []:
   ```

1. Cree un certificado de cliente a partir de la CSR.

   ```
   openssl x509 -req \
       -in device_cert_csr_filename.csr \
       -CA root_CA_cert_filename.pem \
       -CAkey root_CA_key_filename.key \
       -CAcreateserial \
       -out device_cert_filename.pem \
       -days 500 -sha256
   ```

 En este momento, se ha creado el certificado de cliente, pero aún no se ha registrado en él AWS IoT. Para obtener información acerca de cómo y cuándo registrar el certificado de cliente, consulte [Registrar un certificado de cliente](register-device-cert.md). 

# Registrar un certificado de cliente
<a name="register-device-cert"></a>

Los certificados de cliente deben estar registrados AWS IoT para permitir las comunicaciones entre el cliente y AWS IoT. Puede registrar cada certificado de cliente manualmente o puede configurar los certificados de cliente para que se registren automáticamente cuando el cliente se conecte AWS IoT por primera vez.

 Si desea que los clientes y dispositivos registren sus certificados de cliente cuando se conecten por primera vez, debe usar [Registro del certificado CA](manage-your-CA-certs.md#register-CA-cert) para firmar el certificado de cliente con AWS IoT en las regiones en las que desea usarlo. La CA Amazon Root se registra automáticamente en AWS IoT. 

Los certificados de cliente se pueden compartir Cuentas de AWS entre distintas regiones. Los procedimientos de estos temas deben realizarse en cada cuenta y región en la que desee utilizar el certificado de cliente. El registro de un certificado de cliente en una cuenta o región no es reconocido automáticamente por otra.

**nota**  
Los clientes que utilizan el protocolo Transport Layer Security (TLS) para conectarse a AWS IoT deben admitir la [extensión de indicación de nombre de servidor (SNI)](https://tools.ietf.org/html/rfc3546#section-3.1) para TLS. Para obtener más información, consulte [Seguridad del transporte en AWS IoT Core](transport-security.md).

**Topics**
+ [Registrar manualmente un certificado de cliente](manual-cert-registration.md)
+ [Registre un certificado de cliente cuando el cliente se conecte al AWS IoT just-in-time registro (JITR)](auto-register-device-cert.md)

# Registrar manualmente un certificado de cliente
<a name="manual-cert-registration"></a>

Puede registrar un certificado de cliente manualmente mediante la AWS IoT consola y AWS CLI.

El procedimiento de registro que se utilice depende de si el certificado será compartido por Cuenta de AWS s y Regions. El registro de un certificado de cliente en una cuenta o región no es reconocido automáticamente por otra.

Los procedimientos de este tema deben realizarse en cada cuenta y región en la que desee utilizar el certificado de cliente. Los certificados de cliente se pueden compartir entre Cuenta de AWS sí y entre regiones. 

## Registro manual un certificado de cliente firmado por una entidad de certificación registrada (consola)
<a name="manual-cert-registration-console"></a>

**nota**  
Antes de realizar este procedimiento, asegúrese de tener el archivo.pem del certificado de cliente y de que el certificado de cliente ha sido firmado por una entidad emisora de certificados en la que se haya [registrado](manage-your-CA-certs.md#register-CA-cert). AWS IoT

**Para registrar un certificado existente AWS IoT mediante la consola**

1. Inicie sesión en la consola AWS de administración y abra la [AWS IoT consola](https://console.aws.amazon.com/iot/home).

1. En el panel de navegación, en la sección **Administrar**, elija **Seguridad** y luego **Certificados**.

1. En la página **Certificados** del cuadro de diálogo **Certificados**, seleccione **Agregar certificado** y, a continuación, seleccione **Registrar certificados**.

1. En la página **Registrar certificado** del cuadro de diálogo **Certificados para cargar**, haga lo siguiente:
   + Seleccione **La CA está registrada en AWS IoT**.
   + En **Elija un certificado de CA**, seleccione su **autoridad de certificación**. 
     + Seleccione **Registrar una nueva CA** para registrar una nueva **autoridad de certificación** en la que no esté registrada en AWS IoT.
     + Deje en blanco la opción **Elija un certificado de CA** si su autoridad de certificación es la **autoridad de certificación Amazon Root**.
   + Seleccione un máximo de 10 certificados para cargarlos y registrarlos AWS IoT.
     + Utilice los archivos de certificado que creó en [Cree certificados de AWS IoT cliente](device-certs-create.md) y [Crear un certificado de cliente mediante el certificado de entidad de certificación](create-device-cert.md).
   + Elija **Activar** o **Desactivar**. Si selecciona **Desactivar**, [Activar o desactivar un certificado de cliente](activate-or-deactivate-device-cert.md) explica cómo activar el certificado después de registrarlo.
   + Elija **Registrar**.

En la página **Certificados** en el cuadro de diálogo **Certificados**, ahora aparecerán los certificados registrados.

## Registro manual un certificado de cliente firmado por una entidad de certificación no registrada (consola)
<a name="manual-cert-registration-console-noca"></a>

**nota**  
Antes de realizar este procedimiento, asegúrese de que tiene el archivo .pem del certificado de cliente.

**Para registrar un certificado existente AWS IoT mediante la consola**

1. Inicie sesión en la consola AWS de administración y abra la [AWS IoT consola](https://console.aws.amazon.com/iot/home).

1. En el panel de navegación izquierdo, elija **Security (Seguridad)**, elija **Certificates (Certificados)** y, a continuación, elija **Crear**.

1. En **Crear un certificado**, busque la entrada **Usar mi certificado** y elija **Comenzar**.

1. En **Seleccionar una entidad de certificación**, elija **Siguiente**.

1.  En **Registrar certificados de dispositivo existentes**, elija **Seleccionar certificados** y seleccione hasta 10 archivos de certificado para registrar. 

1.  Después de cerrar el cuadro de diálogo de archivo, seleccione si desea activar o revocar los certificados de cliente cuando los registre.

   Si no activa un certificado cuando se registra, [Activar un certificado de cliente (consola)](activate-or-deactivate-device-cert.md#activate-device-cert-console) describe cómo activarlo más adelante. 

   Si un certificado se revoca cuando se registra, no se puede activar más tarde.

   Después de elegir los archivos de certificado que desea registrar y seleccionar las acciones que desea realizar después del registro, elija **Registrar certificados**.

Los certificados de cliente registrados correctamente aparecen en la lista de certificados.

## Registro de un certificado de cliente firmado por una entidad de certificación registrada (CLI)
<a name="manual-cert-registration-cli"></a>

**nota**  
Antes de realizar este procedimiento, asegúrese de que tiene el archivo .pem de la entidad de certificación y el archivo .pem del certificado de cliente. El certificado de cliente debe estar firmado por una entidad de certificación (CA) en la que se haya [registrado AWS IoT](manage-your-CA-certs.md#register-CA-cert).

Utilice el comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate.html) para registrar, pero no activar, un certificado de cliente.

```
aws iot register-certificate \
    --certificate-pem file://device_cert_filename.pem \
    --ca-certificate-pem file://ca_cert_filename.pem
```

El certificado de cliente está registrado AWS IoT, pero aún no está activo. Consulte [Activar un certificado de cliente (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli) para obtener más información sobre cómo activarlo más adelante.

También puede activar el certificado de cliente cuando lo registre utilizando este comando.

```
aws iot register-certificate \
    --set-as-active \
    --certificate-pem file://device_cert_filename.pem \
    --ca-certificate-pem file://ca_cert_filename.pem
```

Para obtener más información sobre cómo activar el certificado para poder usarlo como conexión AWS IoT, consulte [Activar o desactivar un certificado de cliente](activate-or-deactivate-device-cert.md)

## Registro de un certificado de cliente firmado por una entidad de certificación no registrada (CLI)
<a name="manual-cert-registration-noca-cli"></a>

**nota**  
Antes de llevar a cabo este procedimiento, asegúrese de que tiene el archivo .pem del certificado.

Utilice el comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate-without-ca.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate-without-ca.html) para registrar, pero no activar, un certificado de cliente.

```
aws iot register-certificate-without-ca \
    --certificate-pem file://device_cert_filename.pem
```

El certificado de cliente está registrado AWS IoT, pero aún no está activo. Consulte [Activar un certificado de cliente (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli) para obtener más información sobre cómo activarlo más adelante.

También puede activar el certificado de cliente cuando lo registre utilizando este comando.

```
aws iot register-certificate-without-ca \
    --status ACTIVE \
    --certificate-pem file://device_cert_filename.pem
```

Para obtener más información sobre cómo activar el certificado para poder utilizarlo como conexión AWS IoT, consulte[Activar o desactivar un certificado de cliente](activate-or-deactivate-device-cert.md).

# Registre un certificado de cliente cuando el cliente se conecte al AWS IoT just-in-time registro (JITR)
<a name="auto-register-device-cert"></a>

Puede configurar un certificado de CA para permitir que los certificados de cliente con los que ha firmado se registren AWS IoT automáticamente la primera vez que el cliente se conecte. AWS IoT

Para registrar los certificados de cliente cuando un cliente se conecte AWS IoT por primera vez, debe habilitar el registro automático del certificado de CA y configurar la primera conexión del cliente para proporcionar los certificados necesarios.

## Configurar un certificado de entidad de certificación para admitir el registro automático (consola)
<a name="enable-auto-registration-console"></a>

**Para configurar un certificado de CA para que admita el registro automático de certificados de cliente mediante la AWS IoT consola**

1. Inicie sesión en la consola AWS de administración y abra la [AWS IoT consola](https://console.aws.amazon.com/iot/home).

1. En el panel de navegación izquierdo, selecciona **Seguro** y elige **CAs**.

1. En la lista de entidades de certificación, busque aquella para la que desea habilitar el registro automático y abra el menú de opciones mediante el icono de puntos suspensivos.

1. En el menú de opciones, elija **Enable auto-registration (Habilitar registro automático)**.

**nota**  
El estado de registro automático no se muestra en la lista de entidades de certificación. Para ver el estado de registro automático de una entidad de certificación, debe abrir la página **Details (Detalles)** de la entidad de certificación.

## Configurar un certificado de entidad de certificación para admitir el registro automático (CLI)
<a name="enable-auto-registration-cli"></a>

Si ya ha registrado su certificado de CA AWS IoT, utilice el [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html)comando para establecer el certificado `autoRegistrationStatus` de CA en`ENABLE`.

```
aws iot update-ca-certificate \
--certificate-id caCertificateId \
--new-auto-registration-status ENABLE
```

Si desea habilitar `autoRegistrationStatus` al registrar el certificado de entidad de certificación, utilice el comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html).

```
aws iot register-ca-certificate \
--allow-auto-registration  \
--ca-certificate file://root_CA_cert_filename.pem \
--verification-cert file://verification_cert_filename.pem
```

Utilice el comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) para ver el estado del certificado de entidad de certificación.

## Configurar la primera conexión de un cliente para el registro automático
<a name="configure-auto-reg-first-connect"></a>

Cuando un cliente intenta conectarse AWS IoT por primera vez, el certificado de cliente firmado por su certificado de CA debe estar presente en el cliente durante el protocolo de enlace de Transport Layer Security (TLS).

Cuando el cliente se conecte AWS IoT, utilice el certificado de cliente que creó en [Crear certificados de AWS IoT cliente o Crear sus propios certificados](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-create.html) [de cliente](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-your-own.html). AWS IoT reconoce el certificado de CA como un certificado de CA registrado, registra el certificado de cliente y establece su estado en`PENDING_ACTIVATION`. Esto significa que el certificado de cliente se registró automáticamente y que está a la espera de su activación. El estado del certificado de cliente debe ser `ACTIVE` antes de que se pueda usar para conectarse a AWS IoT. Consulte [Activar o desactivar un certificado de cliente](activate-or-deactivate-device-cert.md) para obtener información sobre la activación de un certificado de cliente.

**nota**  
Puede aprovisionar los dispositivos mediante la función de AWS IoT Core just-in-time registro (JITR) sin tener que enviar toda la cadena de confianza en el momento de la primera conexión de los dispositivos. AWS IoT Core La presentación del certificado de entidad de certificación es opcional, pero es necesario que el dispositivo envíe la [extensión Indicación del nombre del servidor (SNI)](https://datatracker.ietf.org/doc/html/rfc3546#section-3.1) cuando se conecte.

Cuando registra AWS IoT automáticamente un certificado o cuando un cliente presenta un certificado en ese `PENDING_ACTIVATION` estado, AWS IoT publica un mensaje sobre el siguiente tema de MQTT:

`$aws/events/certificates/registered/caCertificateId`

Donde `caCertificateId` es el ID del certificado de entidad de certificación que generó el certificado de cliente.

El mensaje publicado en este tema tiene la estructura siguiente:

```
{
        "certificateId": "certificateId",
        "caCertificateId": "caCertificateId",
        "timestamp": timestamp,
        "certificateStatus": "PENDING_ACTIVATION",
        "awsAccountId": "awsAccountId",
        "certificateRegistrationTimestamp": "certificateRegistrationTimestamp"
}
```

Puede crear una regla que escuche este tema y realice algunas acciones. Le recomendamos crear una regla de Lambda que verifique que el certificado de cliente no se encuentre en una lista de revocación de certificados (CRL), active el certificado y cree una política y la asocie a este. La política determina a qué recursos puede tener acceso el cliente. Si la política que va a crear requiere el ID de cliente de los dispositivos que se conectan, puede utilizar la función clientid() de la regla para recuperar el ID de cliente. Un ejemplo de definición de regla sería el siguiente:

```
SELECT *,
   clientid() as clientid
from $aws/events/certificates/registered/caCertificateId
```

En este ejemplo, la regla se suscribe al tema de JITR `$aws/events/certificates/registered/caCertificateID` y utiliza la función clientid() para recuperar el ID de cliente. A continuación, la regla agrega el ID de cliente a la carga útil de JITR. Para obtener más información sobre la función clientid() de la regla, consulte [clientid()](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-clientid).

Para obtener más información sobre cómo crear una regla Lambda que escuche el `$aws/events/certificates/registered/caCertificateID` tema y lleve a cabo estas acciones, consulte [just-in-time Registro de certificados de cliente](https://aws.amazon.com/blogs/iot/just-in-time-registration-of-device-certificates-on-aws-iot/) en. AWS IoT

Si se produce algún error o excepción durante el registro automático de los certificados de cliente, AWS IoT envía eventos o mensajes a sus CloudWatch registros en Logs. Para obtener más información sobre cómo configurar los registros de tu cuenta, consulta la [ CloudWatch documentación de Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/).

# Administración de certificados de cliente
<a name="manage-device-cert"></a>

AWS IoT proporciona funciones para gestionar los certificados de los clientes.

**Topics**
+ [Activar o desactivar un certificado de cliente](activate-or-deactivate-device-cert.md)
+ [Asociar un objeto o una política a un certificado de cliente](attach-to-cert.md)
+ [Revocar un certificado de cliente](revoke-ca-cert.md)
+ [Transferir un certificado a otra cuenta](transfer-cert.md)

# Activar o desactivar un certificado de cliente
<a name="activate-or-deactivate-device-cert"></a>

AWS IoT comprueba que un certificado de cliente esté activo cuando autentica una conexión.

Puede crear y registrar certificados de cliente sin activarlos para que no se puedan usar hasta que desee usarlos. También puede desactivar los certificados de cliente activos para deshabilitarlos temporalmente. Por último, puede revocar certificados de cliente para evitar que se utilicen en el futuro. 

## Activar un certificado de cliente (consola)
<a name="activate-device-cert-console"></a>

**Para activar un certificado de cliente mediante la consola AWS IoT**

1. Inicie sesión en la consola AWS de administración y abra la [AWS IoT consola](https://console.aws.amazon.com/iot/home).

1. En el panel de navegación de la izquierda, elija **Secure (Seguridad)** y, a continuación, elija **Certificates (Certificados)**.

1. En la lista de certificados, busque el certificado que desea activar y abra el menú de opciones mediante el icono de puntos suspensivos.

1. En el menú de opciones, elija **Activate (Activar)**.

El certificado debe aparecer como **Active (Activo)** en la lista de certificados.

## Desactivar un certificado de cliente (consola)
<a name="deactivate-device-cert-console"></a>

**Para desactivar un certificado de cliente mediante la consola AWS IoT**

1. Inicie sesión en la consola AWS de administración y abra la [AWS IoT consola](https://console.aws.amazon.com/iot/home).

1. En el panel de navegación de la izquierda, elija **Secure (Seguridad)** y, a continuación, elija **Certificates (Certificados)**.

1. En la lista de certificados, busque el certificado que desea desactivar y abra el menú de opciones mediante el icono de puntos suspensivos.

1. En el menú de opciones, elija **Deactivate (Desactivar)**.

El certificado debe aparecer como **Inactive (Inactivo)** en la lista de certificados.

## Activar un certificado de cliente (CLI)
<a name="activate-device-cert-cli"></a>

 AWS CLI Proporciona el [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)comando para activar un certificado.

```
aws iot update-certificate \
    --certificate-id certificateId \
    --new-status ACTIVE
```

Si el comando se realizó correctamente, el estado del certificado será `ACTIVE`. Ejecute [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) para ver el estado del certificado.

```
aws iot describe-certificate \
    --certificate-id certificateId
```

## Desactivar un certificado de cliente (CLI)
<a name="deactivate-device-cert-cli"></a>

 AWS CLI Proporciona el [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)comando para desactivar un certificado.

```
aws iot update-certificate \
    --certificate-id certificateId \
    --new-status INACTIVE
```

Si el comando se realizó correctamente, el estado del certificado será `INACTIVE`. Ejecute [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) para ver el estado del certificado.

```
aws iot describe-certificate \
    --certificate-id certificateId
```

# Asociar un objeto o una política a un certificado de cliente
<a name="attach-to-cert"></a>

Al crear y registrar un certificado independiente de AWS IoT un objeto, no tendrá políticas que autoricen ninguna AWS IoT operación ni estará asociado a ningún AWS IoT objeto. En esta sección se describe cómo agregar estas relaciones a un certificado registrado.

**importante**  
Para completar estos procedimientos, debe haber creado ya el objeto o la política que desea asociar al certificado.

El certificado autentica un dispositivo AWS IoT para que pueda conectarse. Al asociar el certificado a un recurso de objeto, se establece la relación entre el dispositivo (mediante el certificado) y el recurso de objeto. Para autorizar al dispositivo a realizar AWS IoT acciones, como permitir que el dispositivo se conecte y publique mensajes, se debe adjuntar una política adecuada al certificado del dispositivo. 

## Asociar un objeto a un certificado de cliente (consola)
<a name="attach-to-cert-thing-console"></a>

Necesitará el nombre de la cosa para completar este procedimiento.

**Para asociar un objeto a un certificado registrado**

1. Inicie sesión en la consola AWS de administración y abra la [AWS IoT consola](https://console.aws.amazon.com/iot/home).

1. En el panel de navegación de la izquierda, elija **Secure (Seguridad)** y, a continuación, elija **Certificates (Certificados)**.

1. En la lista de certificados, busque el certificado al que desea asociar una política, elija el icono de puntos suspensivos para abrir el menú de opciones del certificado y elija **Attach thing (Asociar objeto)**.

1. En la ventana emergente, busque el nombre de la cosa que desea asociar al certificado, elija su casilla de verificación y elija **Asociar**.

El objeto debería aparecer ahora en la lista de objetos de la página de detalles del certificado.

## Asociar una política a un certificado de cliente (consola)
<a name="attach-to-cert-policy-console"></a>

Necesitará el nombre de la cosa de política para completar este procedimiento.

**Para asociar un objeto de política a un certificado registrado**

1. Inicie sesión en la consola AWS de administración y abra la [AWS IoT consola](https://console.aws.amazon.com/iot/home).

1. En el panel de navegación de la izquierda, elija **Secure (Seguridad)** y, a continuación, elija **Certificates (Certificados)**.

1. En la lista de certificados, busque el certificado al que desea asociar una política, elija el icono de puntos suspensivos para abrir el menú de opciones del certificado y elija **Attach policy (Asociar política)**. 

1. En la ventana emergente, busque el nombre de la política que desea asociar al certificado, elija su casilla de verificación y elija **Asociar**.

El objeto de política debería aparecer ahora en la lista de políticas de la página de detalles del certificado.

## Asociar un objeto a un certificado de cliente (CLI)
<a name="attach-to-cert-thing-cli"></a>

 AWS CLI Proporciona el [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-thing-principal.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-thing-principal.html)comando para adjuntar un objeto a un certificado.

```
aws iot attach-thing-principal \
    --principal certificateArn \
    --thing-name thingName
```

## Asociar una política a un certificado de cliente (CLI)
<a name="attach-to-cert-policy-cli"></a>

 AWS CLI Proporciona el [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-policy.html)comando para adjuntar un objeto de política a un certificado.

```
aws iot attach-policy \
    --target certificateArn \
    --policy-name policyName
```

# Revocar un certificado de cliente
<a name="revoke-ca-cert"></a>

Si detecta actividad sospechosa en un certificado de cliente registrado, puede revocarlo para que no se pueda volver a utilizar.

**nota**  
Una vez revocado un certificado, su estado no se puede cambiar. Es decir, el estado del certificado no se puede cambiar a `Active` ni a ningún otro estado.

## Revocar un certificado de cliente (consola)
<a name="revoke-device-cert-console"></a>

**Para revocar un certificado de cliente mediante la consola AWS IoT**

1. Inicie sesión en la consola AWS de administración y abra la [AWS IoT consola](https://console.aws.amazon.com/iot/home).

1. En el panel de navegación de la izquierda, elija **Secure (Seguridad)** y, a continuación, elija **Certificates (Certificados)**.

1. En la lista de certificados, busque el certificado que desea revocar y abra el menú de opciones mediante el icono de puntos suspensivos.

1. En el menú de opciones, elija **Revoke (Revocar)**.

Si el certificado se revocó correctamente, se mostrará como **Revoked (Revocado)** en la lista de certificados.

## Revocar un certificado de cliente (CLI)
<a name="revoke-device-cert-cli"></a>

 AWS CLI Proporciona el [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)comando para revocar un certificado.

```
aws iot update-certificate \
    --certificate-id certificateId \
    --new-status REVOKED
```

Si el comando se realizó correctamente, el estado del certificado será `REVOKED`. Ejecute [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) para ver el estado del certificado.

```
aws iot describe-certificate \
    --certificate-id certificateId
```

# Transferir un certificado a otra cuenta
<a name="transfer-cert"></a>

Los certificados X.509 que pertenecen a uno se Cuenta de AWS pueden transferir a otro. Cuenta de AWS

**Para transferir un certificado X.509 de uno a otro Cuenta de AWS**

1. [Comenzar una transferencia de certificado](#transfer-cert-init)

   El certificado debe estar desactivado y separado de todas las políticas y elementos antes de iniciar la transferencia.

1. [Aceptar o rechazar una transferencia de certificado](#transfer-cert-accept)

   La cuenta receptora debe aceptar o rechazar explícitamente el certificado transferido. Una vez que la cuenta receptora acepte el certificado, este debe activarse antes de su uso.

1. [Cancelar una transferencia de certificado](#transfer-cert-cancel)

   La cuenta de origen puede cancelar una transferencia si el certificado no ha sido aceptado.

## Comenzar una transferencia de certificado
<a name="transfer-cert-init"></a>

Puede empezar a transferir un certificado a otro Cuenta de AWS mediante la [AWS IoT consola](https://console.aws.amazon.com/iot/home) o el AWS CLI.

### Comenzar una transferencia de certificado (consola)
<a name="transfer-cert-init-console"></a>

Para completar este procedimiento, necesitará el ID del certificado que desea transferir.

Realice este procedimiento desde la cuenta con el certificado que desee transferir.

**Para empezar a transferir un certificado a otro Cuenta de AWS**

1. Inicie sesión en la consola AWS de administración y abra la [AWS IoT consola](https://console.aws.amazon.com/iot/home).

1. En el panel de navegación de la izquierda, elija **Secure (Seguridad)** y, a continuación, elija **Certificates (Certificados)**.

   Elija el certificado con el estado **activo** o **inactivo** que desee transferir y abra su página de detalles.

1. En la página **Detalles** del certificado, en el menú **Acciones**, si la opción **Desactivar** está disponible, elija la opción **Desactivar** para desactivar el certificado.

1. En la página **Detalles** del certificado, en el menú de la izquierda, seleccione **Políticas**.

1. En la página **Políticas** del certificado, si hay alguna política asociada al certificado, desasocie cada una de ellas abriendo el menú de opciones de la política y seleccionando **Desasociar**.

   El certificado no debe tener ninguna política asociada para poder continuar.

1. En la página **Políticas** del certificado, en el menú de la izquierda, seleccione **Objetos**.

1. En la página **Objetos** del certificado, si hay algún objeto asociado al certificado, desasocie cada uno de ellos abriendo el menú de opciones de la cosa y seleccionando **Desasociar**.

   El certificado no debe tener ningún objeto asociado para poder continuar.

1. En la página **Objetos** del certificado, en el menú de la izquierda, seleccione **Detalles**.

1. En la página **Detalles** del certificado, en el menú **Acciones**, seleccione **Iniciar transferencia** para abrir el cuadro de diálogo **Iniciar transferencia**.

1. En el cuadro de diálogo **Iniciar la transferencia**, introduzca el Cuenta de AWS número de la cuenta que recibirá el certificado y un mensaje breve opcional.

1. Seleccione **Iniciar transferencia** para transferir el certificado.

La consola debería mostrar un mensaje que indique si la transferencia se ha realizado correctamente o no. Si se inició la transferencia, el estado del certificado se actualiza a **Transferido**.

### Comenzar una transferencia de certificado (CLI)
<a name="transfer-cert-init-cli"></a>

Para completar este procedimiento, necesitará el certificado que desea transferir *certificateId* y el certificado. *certificateArn*

Realice este procedimiento desde la cuenta con el certificado que desee transferir.

**Para empezar a transferir un certificado a otra AWS cuenta**

1. Utilice el comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) para desactivar el certificado.

   ```
   aws iot update-certificate --certificate-id certificateId --new-status INACTIVE
   ```

1. Desasocie todas las políticas.

   1. Use el comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-attached-policies.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-attached-policies.html) para enumerar las políticas asociadas al certificado.

      ```
      aws iot list-attached-policies --target certificateArn
      ```

   1. Para cada política asociada, utilice el comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-policy.html) para desasociar la política.

      ```
      aws iot detach-policy --target certificateArn --policy-name policy-name
      ```

1. Desasocie todos los objetos.

   1. Use el comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-principal-things.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-principal-things.html) para enumerar los objetos asociados al certificado.

      ```
      aws iot list-principal-things --principal certificateArn
      ```

   1. Para cada objeto asociado, utilice el comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-thing-principal.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-thing-principal.html) para desasociar el objeto.

      ```
      aws iot detach-thing-principal --principal certificateArn --thing-name thing-name
      ```

1. Use el comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/transfer-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/transfer-certificate.html) para iniciar la transferencia del certificado.

   ```
   aws iot transfer-certificate --certificate-id certificateId --target-aws-account account-id
   ```

## Aceptar o rechazar una transferencia de certificado
<a name="transfer-cert-accept"></a>

Puede aceptar o rechazar un certificado que le haya sido transferido Cuenta de AWS desde otra persona Cuenta de AWS mediante la [AWS IoT consola](https://console.aws.amazon.com/iot/home) o el AWS CLI.

### Aceptar o rechazar una transferencia de certificado (consola)
<a name="transfer-cert-accept-console"></a>

Para completar este procedimiento, necesitará el ID del certificado que se le transfirió a su cuenta.

Realice este procedimiento desde la cuenta receptora a la que se transfirió el certificado.

**Para aceptar o rechazar un certificado que se ha transferido a su Cuenta de AWS**

1. Inicie sesión en la consola AWS de administración y abra la [AWS IoT consola](https://console.aws.amazon.com/iot/home).

1. En el panel de navegación de la izquierda, elija **Secure (Seguridad)** y, a continuación, elija **Certificates (Certificados)**.

   Elija el certificado con el estado **Pendiente de transferencia** que desee aceptar o rechazar y abra su página de detalles.

1. En la página **Detalles** del certificado, en el menú **Acciones**:
   + Para aceptar el certificado, elija **Aceptar transferencia**.
   + Si no quiere aceptar el certificado, elija **Rechazar transferencia**.

### Aceptar o rechazar una transferencia de certificado (CLI)
<a name="transfer-cert-accept-cli"></a>

Para completar este procedimiento, necesitará el certificado *certificateId* de transferencia que desee aceptar o rechazar.

Realice este procedimiento desde la cuenta receptora a la que se transfirió el certificado.

**Para aceptar o rechazar un certificado que se ha transferido a su Cuenta de AWS**

1. Para aceptar el certificado, use el comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/accept-certificate-transfer.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/accept-certificate-transfer.html).

   ```
   aws iot accept-certificate-transfer --certificate-id certificateId
   ```

1. Para rechazar el certificado, use el comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/reject-certificate-transfer.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/reject-certificate-transfer.html).

   ```
   aws iot reject-certificate-transfer --certificate-id certificateId
   ```

## Cancelar una transferencia de certificado
<a name="transfer-cert-cancel"></a>

Puede cancelar la transferencia de un certificado antes de que se haya aceptado mediante la [consola de AWS IoT](https://console.aws.amazon.com/iot/home) o la AWS CLI.

### Comenzar una transferencia de certificado (consola)
<a name="transfer-cert-cancel-console"></a>

Para completar este procedimiento, necesitará el ID de la transferencia de certificado que quiera cancelar.

Realice este procedimiento desde la cuenta con la que inició la transferencia del certificado.

**Para cancelar una transferencia de certificado**

1. Inicie sesión en la consola AWS de administración y abra la [AWS IoT consola](https://console.aws.amazon.com/iot/home).

1. En el panel de navegación de la izquierda, elija **Secure (Seguridad)** y, a continuación, elija **Certificates (Certificados)**.

   Elija el certificado con el estado **Transferido** cuya transferencia desee cancelar y abra su menú de opciones.

1. En el menú de opciones del certificado, elija la opción **Revocar transferencia** para cancelar la transferencia del certificado.
**importante**  
Tenga cuidado de no confundir la opción **Revocar transferencia** con la opción **Revocar**.  
La opción **Revocar transferencia** cancela la transferencia del certificado, mientras que la opción **Revocar** hace que el certificado quede inutilizable de forma irreversible para AWS IoT. 

### Cancelar una transferencia de certificado (CLI)
<a name="transfer-cert-cancel-cli"></a>

Para completar este procedimiento, necesitará el certificado *certificateId* de transferencia que desee cancelar.

Realice este procedimiento desde la cuenta con la que inició la transferencia del certificado.

Utilice el comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/cancel-certificate-transfer.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/cancel-certificate-transfer.html) para cancelar la transferencia del certificado.

```
aws iot cancel-certificate-transfer --certificate-id certificateId
```

# Validación personalizada de certificados de cliente
<a name="customize-client-auth"></a>

AWS IoT Core admite la validación personalizada de certificados de cliente para los certificados de cliente X.509, lo que mejora la administración de la autenticación de los clientes. Este método de validación de certificados también se conoce como comprobaciones de certificados previas a la autenticación, en las que se evalúan los certificados de los clientes en función de sus propios criterios (definidos en una función de Lambda) y se revocan los certificados de los clientes o el certificado de la entidad de certificación que los firma para impedir que los clientes se conecten a AWS IoT Core. Por ejemplo, puede crear sus propias comprobaciones de revocación de certificados para validar el estado de los certificados con las autoridades de validación que admiten los puntos de conexión [Protocolo de verificación de certificados en línea (OCSP)](https://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol) o [Listas de revocación de certificados (CRL)](https://en.wikipedia.org/wiki/Certificate_revocation_list) e impedir las conexiones de los clientes con certificados revocados. Los criterios utilizados para evaluar los certificados de los clientes se definen en una función de Lambda (también conocida como Lambda de autenticación previa). Debe utilizar los puntos de conexión establecidos en las configuraciones de dominio y el [tipo de autenticación](protocols.md#connection-protocol-auth-mode) debe ser el certificado X.509. Además, los clientes deben proporcionar la extensión de [indicación del nombre del servidor (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) al conectarse a. AWS IoT Core

**nota**  
Esta función no se admite en las AWS GovCloud (US) regiones.

**Topics**
+ [Paso 1: registre sus certificados de cliente X.509 en AWS IoT Core](#client-auth-cert-verification)
+ [Paso 2: creación de una función de Lambda](#customize-client-auth-lambda)
+ [Paso 3: AWS IoT Autorizar la invocación de la función Lambda](#customize-client-configuration-grant-permission)
+ [Paso 4: establecimiento de una configuración de autenticación para un dominio](#customize-client-configuration)

## Paso 1: registre sus certificados de cliente X.509 en AWS IoT Core
<a name="client-auth-cert-verification"></a>

Si aún no lo ha hecho, registre y active sus [certificados de cliente X.509](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) con. AWS IoT Core De no ser así, vaya al siguiente paso.

Para registrar y activar sus certificados de cliente con ellos AWS IoT Core, siga estos pasos:

1. Si [crea certificados de cliente directamente con AWS IoT](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-create.html). Estos certificados de cliente se registrarán automáticamente en AWS IoT Core.

1. Si [crea sus propios certificados de cliente](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-your-own.html), siga [estas instrucciones para registrarlos AWS IoT Core](https://docs.aws.amazon.com//iot/latest/developerguide/register-device-cert.html).

1. Siga [estas instrucciones](https://docs.aws.amazon.com//iot/latest/developerguide/activate-or-deactivate-device-cert.html) para activar sus certificados de cliente.

## Paso 2: creación de una función de Lambda
<a name="customize-client-auth-lambda"></a>

Debe crear una función de Lambda que verifique certificados y que se llame cada vez que un cliente intente conectarse al punto de conexión configurado. Al crear esta función de Lambda, siga las instrucciones generales de [Creación de su primera función de Lambda](https://docs.aws.amazon.com//lambda/latest/dg/getting-started.html). Además, asegúrese de que la función de Lambda cumpla con los formatos de solicitud y respuesta esperados de la siguiente manera:

**Ejemplo de evento de la función de Lambda**

```
{
	"connectionMetadata": {
		"id": "string"
	},
	"principalId": "string",
	"serverName": "string",
	"clientCertificateChain": [
		"string",
		"string"
	]
}
```

`connectionMetadata`  
Metadatos o información adicional relacionada con la conexión del cliente a AWS IoT Core.

`principalId`  
Es el identificador de la entidad principal asociado al cliente en la conexión TLS.

`serverName`  
Es la cadena de nombre de host [Indicación del nombre del servidor (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1). AWS IoT Core requiere que los dispositivos envíen la [extensión SNI](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) al protocolo de seguridad de la capa de transporte (TLS) y proporcionen la dirección completa del punto de conexión en el campo `host_name`.

`clientCertificateChain`  
Matriz de cadenas que representa la cadena de certificados X.509 del cliente. 

**Ejemplo de respuesta de la función de Lambda**

```
{
	"isAuthenticated": "boolean"
}
```

`isAuthenticated`  
Es un valor booleano que indica si la solicitud se ha autenticado.

**nota**  
En la respuesta de Lambda, `isAuthenticated` debe ser `true` para continuar con la autenticación y autorización. De lo contrario, se puede desactivar el certificado de cliente de IoT y bloquear la autenticación personalizada con certificados de cliente X.509 para una mayor autenticación y autorización.

## Paso 3: AWS IoT Autorizar la invocación de la función Lambda
<a name="customize-client-configuration-grant-permission"></a>

[Tras crear la función Lambda, debe conceder permiso AWS IoT para invocarla mediante el comando CLI add-permission.](https://docs.aws.amazon.com//cli/latest/reference/lambda/add-permission.html) Tenga en cuenta que esta función de Lambda se invocará en cada intento de conexión al punto de conexión configurado. Para obtener más información, consulte [AWS IoT Autorizar la invocación de la función Lambda](custom-auth-authorize.md).

## Paso 4: establecimiento de una configuración de autenticación para un dominio
<a name="customize-client-configuration"></a>

En la siguiente sección se describe cómo establecer una configuración de autenticación para un dominio personalizado mediante la AWS CLI.

### Establecimiento de la configuración del certificado de cliente para un dominio (CLI)
<a name="customize-client-auth-cli"></a>

Si no tiene ninguna configuración de dominio, utilice el comando de la CLI [https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html) para crear una. Si ya tiene una configuración de dominio, utilice el comando de la CLI [https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html) para actualizar la configuración del certificado de cliente de un dominio. Debe añadir el ARN de la función de Lambda que ha creado en el paso anterior.

```
aws iot create-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type AWS_X509|CUSTOM_AUTH_X509 \
    --application-protocol SECURE_MQTT|HTTPS \
    --client-certificate-config 'clientCertificateCallbackArn":"arn:aws:lambda:us-east-2:123456789012:function:my-function:1"}'
```

```
aws iot update-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type AWS_X509|CUSTOM_AUTH_X509 \
    --application-protocol SECURE_MQTT|HTTPS \
    --client-certificate-config '{"clientCertificateCallbackArn":"arn:aws:lambda:us-east-2:123456789012:function:my-function:1"}'
```

`domain-configuration-name`  
Es el nombre de la configuración del dominio.

`authentication-type`  
Es el tipo de autenticación de la configuración del dominio. Para obtener más información, consulte [Choosing an authentication type](protocols.md#connection-protocol-auth-mode).

`application-protocol`  
Es el protocolo de aplicación con el que los dispositivos se comunican con AWS IoT Core. Para obtener más información, consulte [Choosing an application protocol](protocols.md#protocol-selection).

`client-certificate-config`  
Objeto que especifica la configuración de autenticación de cliente de un dominio.

`clientCertificateCallbackArn`  
El nombre de recurso de Amazon (ARN) de la función Lambda que se AWS IoT invoca en la capa TLS cuando se establece una nueva conexión. Para personalizar la autenticación del cliente y realizar una validación de certificados de cliente personalizada, debe añadir el ARN de la función de Lambda que creó en el paso anterior.

*Para obtener más información, consulte [CreateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateDomainConfiguration.html)y consulte la referencia [UpdateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateDomainConfiguration.html)de la API.AWS IoT * Para obtener más información sobre la configuración de dominios, consulte [Domain configurations](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html).

# Usuarios, grupos y roles de IAM
<a name="iam-users-groups-roles"></a>

Los usuarios, grupos y roles de IAM son los mecanismos estándar de administración de identidades y autenticación en AWS. Puede utilizarlos para conectarse a interfaces AWS IoT HTTP mediante el AWS SDK y AWS CLI.

Las funciones de IAM también te permiten acceder AWS IoT a otros AWS recursos de tu cuenta en tu nombre. Por ejemplo, si desea que un dispositivo publique su estado en una tabla de DynamoDB, las funciones de IAM AWS IoT le permiten interactuar con Amazon DynamoDB. Para obtener más información, consulte [Roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html).

En el caso de las conexiones de un intermediario de mensajes a través de HTTP, AWS IoT autentica a los usuarios, grupos y roles mediante el proceso de firma de la versión 4 de Signature. Para obtener más información, consulte [Firmar solicitudes AWS de API](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html).

Al usar la versión 4 de AWS Signature con AWS IoT, los clientes deben admitir lo siguiente en su implementación de TLS:
+ TLS 1.2
+ Validación de la firma de certificado SHA-256 RSA
+ Uno de los conjuntos de cifrado de la sección de compatibilidad del conjunto de cifrado TLS

Para obtener información, consulte [Gestión de identidad y acceso para AWS IoT](security-iam.md).

# Identidades de Amazon Cognito
<a name="cognito-identities"></a>

Amazon Cognito Identity le permite crear AWS credenciales temporales con privilegios limitados para utilizarlas en aplicaciones móviles y web. Cuando se utiliza una identidad de Amazon Cognito, se crean grupos de identidades que generan identidades únicas para los usuarios y se autentican con proveedores de identidades como Iniciar sesión con Amazon, Facebook y Google. También puede usar identidades de Amazon Cognito con sus propias identidades autenticadas por el desarrollador. Para obtener más información, consulte [Amazon Cognito Identity](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html).

Para usar una identidad de Amazon Cognito, se debe definir un grupo de identidades de Amazon Cognito asociado a un rol de IAM. La función de IAM está asociada a una política de IAM que otorga permisos a las identidades de su grupo de identidades para acceder a AWS recursos como los servicios de llamadas. AWS 

Amazon Cognito Identity crea identidades no autenticadas y autenticadas. Las identidades no autenticadas se utilizan para los usuarios invitados de una aplicación móvil o web que desean usar la aplicación sin iniciar sesión. Los usuarios no autenticados solo reciben los permisos especificados en la política de IAM asociada al grupo de identidades.

Cuando utilice identidades autenticadas, además de la política de IAM adjunta al grupo de identidades, debe adjuntar una AWS IoT política a una identidad de Amazon Cognito. Para adjuntar una AWS IoT política, utilice la [ AttachPolicy](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachPolicy.html)API y conceda permisos a un usuario individual de su aplicación. AWS IoT Puedes usar la AWS IoT política para asignar permisos específicos a clientes específicos y sus dispositivos.

Los usuarios autenticados y no autenticados son tipos de identidad diferentes. Si no adjuntas una AWS IoT política a Amazon Cognito Identity, un usuario autenticado no podrá obtener la autorización AWS IoT y no tendrá acceso a AWS IoT los recursos ni a las acciones. Para obtener más información sobre la creación de políticas para las identidades de Amazon Cognito, consulte [Ejemplos de política de publicación/suscripción](pub-sub-policy.md) y [Autorización con identidades de Amazon Cognito](cog-iot-policies.md).

![\[Aplicación que accede a un dispositivo con identidad de Amazon Cognito.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/device-cognito.png)


# Autenticación y autorización personalizada
<a name="custom-authentication"></a>

 AWS IoT Core le permite definir autorizadores personalizados para que pueda gestionar la autenticación y la autorización de sus propios clientes. Esto resulta útil cuando necesita utilizar mecanismos de autenticación distintos de los que son compatibles de AWS IoT Core forma nativa. (Para obtener más información sobre los mecanismos compatibles de forma nativa, consulte [Autenticación del cliente](client-authentication.md)).  

 Por ejemplo, si va a migrar los dispositivos existentes sobre el terreno AWS IoT Core y estos dispositivos utilizan un token de portador personalizado o un nombre de usuario y una contraseña de MQTT para autenticarse, puede migrarlos a ellos AWS IoT Core sin tener que proporcionarles nuevas identidades. Puede utilizar la autenticación personalizada con cualquiera de los protocolos de comunicación compatibles. AWS IoT Core Para obtener más información acerca de los protocolos compatibles con AWS IoT Core , consulte [Protocolos de comunicación de dispositivos](protocols.md). 

**Topics**
+ [Comprender el flujo de trabajo de autenticación personalizada](custom-authorizer.md)
+ [Creación y administración de autorizadores personalizados (CLI)](config-custom-auth.md)
+ [Autenticación personalizada con certificados de cliente X.509](custom-auth-509cert.md)
+ [Conectarse a AWS IoT Core mediante una autenticación personalizada](custom-auth.md)
+ [Resolución de problemas de sus autorizadores](custom-auth-troubleshooting.md)

# Comprender el flujo de trabajo de autenticación personalizada
<a name="custom-authorizer"></a>

La autenticación personalizada le permite definir cómo autenticar y autorizar a los clientes mediante [recursos de autorizador](https://docs.aws.amazon.com/iot/latest/apireference/API_AuthorizerDescription.html).  Cada autorizador contiene una referencia a una función de Lambda administrada por el cliente, una clave pública opcional para validar las credenciales del dispositivo e información de configuración adicional. El siguiente diagrama ilustra el flujo de trabajo de autorización para la autenticación personalizada en AWS IoT Core.

![\[Flujo de trabajo de autorización personalizado para la autenticación personalizada en AWS IoT Core.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/custom-authentication.png)


## AWS IoT Core flujo de trabajo personalizado de autenticación y autorización
<a name="custom-authentication-workflow"></a>

En la siguiente lista se explica cada paso del flujo de trabajo de autenticación y autorización personalizada.

1. Un dispositivo se conecta al punto final de AWS IoT Core datos de un cliente mediante uno de los dispositivos compatibles[Protocolos de comunicación de dispositivos](protocols.md). El dispositivo pasa las credenciales a los campos de cabecera o a los parámetros de consulta de la solicitud (para los protocolos HTTP Publish o MQTT a través de WebSockets protocolos), o al campo de nombre de usuario y contraseña del mensaje MQTT CONNECT (para MQTT y MQTT a través de protocolos). WebSockets 

1. AWS IoT Core comprueba una de estas dos condiciones:
   + La solicitud entrante especifica un autorizador.
   + El punto final de AWS IoT Core datos que recibe la solicitud tiene un autorizador predeterminado configurado para ello.

   Si AWS IoT Core encuentra un autorizador de alguna de estas formas, AWS IoT Core activa la función Lambda asociada al autorizador.

1.  (Opcional) Si ha activado la firma por token, AWS IoT Core valida la firma de la solicitud mediante la clave pública almacenada en el autorizador antes de activar la función Lambda. Si se produce un error en la validación, AWS IoT Core detiene la solicitud sin invocar la función de Lambda.  

1. La función de Lambda recibe las credenciales y los metadatos de conexión de la solicitud y toma una decisión de autenticación.

1. La función Lambda devuelve los resultados de la decisión de autenticación y un documento de AWS IoT Core política que especifica qué acciones están permitidas en la conexión. La función Lambda también devuelve información que especifica la frecuencia con la que se AWS IoT Core revalidan las credenciales de la solicitud mediante la invocación de la función Lambda.

1. AWS IoT Core evalúa la actividad de la conexión con la política que ha recibido de la función Lambda.

1. Después de establecer la conexión e invocar inicialmente al autorizador personalizado de Lambda, la siguiente invocación se puede retrasar hasta cinco minutos en las conexiones inactivas sin ninguna operación de MQTT. A continuación, las invocaciones posteriores seguirán el intervalo de actualización de su autorizador de Lambda personalizado. Este enfoque puede evitar invocaciones excesivas que podrían superar el límite de simultaneidad de Lambda de su empresa. Cuenta de AWS

## Consideraciones de escalado
<a name="custom-authentication-scaling"></a>

 Como una función de Lambda gestiona la autenticación y la autorización de su autorizador, está sujeta a los límites de precios y servicios de Lambda, como la tasa de ejecución simultánea. Para obtener más información, consulte [Precios de Lambda](https://aws.amazon.com/lambda/pricing/). Puede administrar la carga de la función de Lambda ajustando los parámetros `refreshAfterInSeconds` y `disconnectAfterInSeconds` de la respuesta de la función de Lambda. Para obtener más información acerca del contenido de la respuesta de una función de Lambda, consulte [Definición de la función de Lambda](custom-auth-lambda.md).

**nota**  
Si deja habilitada la firma, puede evitar que clientes no reconocidos activen su Lambda de forma excesiva. Tenga esto en cuenta antes de deshabilitar el inicio de sesión en su autorizador.

**nota**  
El límite de tiempo de espera de la función de Lambda para el autorizador personalizado es de 5 segundos.

# Creación y administración de autorizadores personalizados (CLI)
<a name="config-custom-auth"></a>

AWS IoT Core implementa esquemas de autenticación y autorización personalizados mediante autorizadores personalizados. Un autorizador personalizado es un AWS IoT Core recurso que le brinda la flexibilidad de definir e implementar las reglas y políticas en función de sus requisitos específicos. Para crear un autorizador personalizado con step-by-step instrucciones, consulte el [tutorial: Creación de un autorizador personalizado](https://docs.aws.amazon.com//iot/latest/developerguide/custom-auth-tutorial.html) para. AWS IoT Core

Cada autorizador está formado por los siguientes componentes: 
+  *Nombre*: cadena única definida por el usuario que identifica al autorizador.
+  *ARN de la función de Lambda*: el nombre de recurso de Amazon (ARN) de la función de Lambda que implementa la lógica de autorización y autenticación.  
+  *Nombre de la clave del token*: el nombre de la clave que se utiliza para extraer el token de los encabezados HTTP, los parámetros de consulta o el nombre de usuario de MQTT CONNECT con el fin de realizar la validación de la firma. Este valor es obligatorio si la firma está habilitada en el autorizador. 
+  *Indicador de deshabilitación de firma (opcional)*: valor booleano que especifica si se debe deshabilitar el requisito de firma en las credenciales. Esto resulta útil en situaciones en las que no tiene sentido firmar las credenciales, como los esquemas de autenticación que utilizan el nombre de usuario y la contraseña de MQTT. El valor predeterminado es `false`, por lo que la firma está habilitada de forma predeterminada. 
+  *Clave pública de firma del token*: la clave pública que AWS IoT Core utiliza para validar la firma del token. Su longitud mínima es de 2048 bits. Este valor es obligatorio si la firma está habilitada en el autorizador.  

Lambda cobra por el número de veces que se ejecuta la función de Lambda y por el tiempo que tarda en ejecutarse el código de la función. Para obtener más información acerca de los precios de Lambda, consulte [Precios de Lambda](https://aws.amazon.com/lambda/pricing/). Para obtener más información acerca de la creación de funciones de Lambda, consulte la [Guía para desarrolladores de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/).

**nota**  
Si deja habilitada la firma, puede evitar que clientes no reconocidos activen su Lambda de forma excesiva. Tenga esto en cuenta antes de deshabilitar el inicio de sesión en su autorizador.

**nota**  
El límite de tiempo de espera de la función de Lambda para el autorizador personalizado es de 5 segundos.

**Topics**
+ [Definición de la función de Lambda](custom-auth-lambda.md)
+ [Creación de un autorizador](custom-auth-create-authorizer.md)
+ [Autorizar la invocación AWS IoT de la función Lambda](custom-auth-authorize.md)
+ [Probar los autorizadores](custom-auth-testing.md)
+ [Administración de puntos de conexión](custom-auth-manage.md)

# Definición de la función de Lambda
<a name="custom-auth-lambda"></a>

 Cuando AWS IoT Core invoca al autorizador, activa la Lambda asociada al autorizador con un evento que contiene el siguiente objeto JSON. El objeto JSON de ejemplo contiene todos los campos posibles. No se incluye ningún campo que no sea relevante para la solicitud de conexión.

```
{
    "token" :"aToken",
    "signatureVerified": Boolean, // Indicates whether the device gateway has validated the signature.
    "protocols": ["tls", "http", "mqtt"], // Indicates which protocols to expect for the request.
    "protocolData": {
        "tls" : {
            "serverName": "serverName" // The server name indication (SNI) host_name string.
        },
        "http": {
            "headers": {
                "#{name}": "#{value}"
            },
            "queryString": "?#{name}=#{value}"
        },
        "mqtt": {
            "username": "myUserName",
            "password": "myPassword", // A base64-encoded string.
            "clientId": "myClientId" // Included in the event only when the device sends the value.
        }
    },
    "connectionMetadata": {
        "id": UUID // The connection ID. You can use this for logging.
    },
}
```

 La función de Lambda debe usar esta información para autenticar la conexión entrante y decidir qué acciones se permiten en la conexión. La función debe enviar una respuesta que contenga los siguientes valores. 
+  `isAuthenticated`: un valor booleano que indica si la solicitud se ha autenticado.
+  `principalId`: una cadena alfanumérica que actúa como identificador del token enviado por la solicitud de autorización personalizada. El valor debe ser una cadena alfanumérica entre 1 y 128 caracteres, y debe coincidir con este patrón de expresión regular (regex): `([a-zA-Z0-9]){1,128}`. No se permite el uso de caracteres especiales que no sean alfanuméricos con el in. `principalId` AWS IoT Core Consulte la documentación de otros AWS servicios si se permiten caracteres especiales no alfanuméricos para el. `principalId`
+  `policyDocuments`: Una lista de documentos de políticas con formato JSON Para obtener más información sobre la creación de AWS IoT Core políticas, consulte. AWS IoT Core [AWS IoT Core políticas](iot-policies.md) El número máximo de documentos de políticas es de 10. Cada documento de política puede contener un máximo de 2048 caracteres.
+  `disconnectAfterInSeconds`: un entero que especifica la duración máxima (en segundos) de la conexión a la puerta de enlace de AWS IoT Core . El valor mínimo es de 300 segundos y el máximo es de 86 400 segundos. El valor predeterminado es 86 400.
**nota**  
El valor de `disconnectAfterInSeconds` (devuelto por la función de Lambda) se determina cuando se establece la conexión. Este valor no se puede modificar durante las siguientes invocaciones de Lambda de actualización de políticas.
+  `refreshAfterInSeconds`: un entero que especifica el intervalo entre las actualizaciones de la política. Cuando pasa este intervalo, AWS IoT Core invoca la función de Lambda para permitir la actualización de las políticas. El valor mínimo es de 300 segundos y el máximo es de 86 400 segundos. 

  El siguiente objeto JSON contiene un ejemplo de una respuesta que la función de Lambda puede enviar. 

 **\$1 "isAuthenticated":true, //A Boolean that determines whether client can connect. "principalId": "xxxxxxxx",  //A string that identifies the connection in logs. "disconnectAfterInSeconds": 86400,  "refreshAfterInSeconds": 300,   "policyDocuments": [       \$1         "Version": "2012-10-17",         "Statement": [            \$1               "Action": "iot:Publish",               "Effect": "Allow",               "Resource": "arn:aws:iot:us-east-1:<your\$1aws\$1account\$1id>:topic/customauthtesting"             \$1          ]        \$1     ] \$1**

 El `policyDocument` valor debe contener un documento de política válido AWS IoT Core . Para obtener más información sobre AWS IoT Core las políticas, consulte[AWS IoT Core políticas](iot-policies.md). En MQTT sobre TLS y MQTT sobre WebSockets conexiones, almacena en AWS IoT Core caché esta política durante el intervalo especificado en el valor del campo. `refreshAfterInSeconds` En el caso de las conexiones HTTP, se invoca la función de Lambda para cada solicitud de autorización, a menos que su dispositivo utilice conexiones HTTP persistentes (también denominadas HTTP keep-alive o reutilización de conexiones HTTP). Puede optar por habilitar el almacenamiento en caché al configurar el autorizador. Durante este intervalo, AWS IoT Core autoriza las acciones en una conexión establecida en contra de esta política en caché sin volver a activar la función Lambda. Si se producen errores durante la autenticación personalizada, AWS IoT Core finaliza la conexión. AWS IoT Core también termina la conexión si ha estado abierta durante más tiempo que el valor especificado en el `disconnectAfterInSeconds` parámetro. 

 A continuación, se JavaScript incluye un ejemplo de función Lambda de Node.js que busca una contraseña en el mensaje de MQTT Connect con un valor `test` de y devuelve una política que concede permiso AWS IoT Core para conectarse con un cliente `myClientName` denominado y publicar en un tema que contenga el mismo nombre de cliente. Si no encuentra la contraseña esperada, devuelve una política que deniega esas dos acciones. 

```
// A simple Lambda function for an authorizer. It demonstrates 
// how to parse an MQTT password and generate a response.

exports.handler = function(event, context, callback) { 
    var uname = event.protocolData.mqtt.username;
    var pwd = event.protocolData.mqtt.password;
    var buff = new Buffer(pwd, 'base64');
    var passwd = buff.toString('ascii');
    switch (passwd) { 
        case 'test': 
            callback(null, generateAuthResponse(passwd, 'Allow')); 
            break;
        default: 
            callback(null, generateAuthResponse(passwd, 'Deny'));  
    }
};

// Helper function to generate the authorization response.
var generateAuthResponse = function(token, effect) { 
    var authResponse = {}; 
    authResponse.isAuthenticated = true; 
    authResponse.principalId = 'TEST123'; 
    
    var policyDocument = {}; 
    policyDocument.Version = '2012-10-17';		 	 	 
    policyDocument.Statement = []; 
    var publishStatement = {}; 
    var connectStatement = {};
    connectStatement.Action = ["iot:Connect"];
    connectStatement.Effect = effect;
    connectStatement.Resource = ["arn:aws:iot:us-east-1:123456789012:client/myClientName"];
    publishStatement.Action = ["iot:Publish"]; 
    publishStatement.Effect = effect; 
    publishStatement.Resource = ["arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"]; 
    policyDocument.Statement[0] = connectStatement;
    policyDocument.Statement[1] = publishStatement; 
    authResponse.policyDocuments = [policyDocument]; 
    authResponse.disconnectAfterInSeconds = 3600; 
    authResponse.refreshAfterInSeconds = 300;
    
    return authResponse; 
}
```

 La función de Lambda anterior devuelve el siguiente JSON cuando recibe la contraseña esperada de `test` en el mensaje MQTT Connect. Los valores de las propiedades `password` y `principalId` serán los valores del mensaje MQTT Connect.

```
{
  "password": "password",
  "isAuthenticated": true,
  "principalId": "principalId",
  "policyDocuments": [
    {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
        {
          "Action": "iot:Connect",
          "Effect": "Allow",
          "Resource": "*"
        },
        {
          "Action": "iot:Publish",
          "Effect": "Allow",
          "Resource": "arn:aws:iot:region:accountId:topic/telemetry/${iot:ClientId}"
        },
        {
          "Action": "iot:Subscribe",
          "Effect": "Allow",
          "Resource": "arn:aws:iot:region:accountId:topicfilter/telemetry/${iot:ClientId}"
        },
        {
          "Action": "iot:Receive",
          "Effect": "Allow",
          "Resource": "arn:aws:iot:region:accountId:topic/telemetry/${iot:ClientId}"
        }
      ]
    }
  ],
  "disconnectAfterInSeconds": 3600,
  "refreshAfterInSeconds": 300
}
```

# Creación de un autorizador
<a name="custom-auth-create-authorizer"></a>

 [Puede crear un autorizador mediante la API. CreateAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateAuthorizer.html) En el siguiente ejemplo, se describe el comando. 

```
aws iot create-authorizer
--authorizer-name MyAuthorizer
--authorizer-function-arn arn:aws:lambda:us-west-2:<account_id>:function:MyAuthorizerFunction  //The ARN of the Lambda function.
[--token-key-name MyAuthorizerToken //The key used to extract the token from headers.
[--token-signing-public-keys FirstKey=
 "-----BEGIN PUBLIC KEY-----
  [...insert your public key here...] 
  -----END PUBLIC KEY-----"
[--status ACTIVE]
[--tags <value>]
[--signing-disabled | --no-signing-disabled]
```

Puede utilizar el parámetro `signing-disabled` para deshabilitar la validación de firmas en cada invocación de su autorizador. Le recomendamos encarecidamente que no deshabilite la firma a menos que sea necesario. La validación de firmas lo protege contra las invocaciones excesivas de su función de Lambda desde dispositivos desconocidos. No se puede actualizar el estado `signing-disabled` de un autorizador una vez creado. Para cambiar este comportamiento, debe crear otro autorizador personalizado con un valor de parámetro `signing-disabled` diferente. 

Los valores de los parámetros `tokenKeyName` y `tokenSigningPublicKeys` son opcionales si se deshabilita la firma. Son valores obligatorios si la firma está habilitada. 

Tras crear la función Lambda y el autorizador personalizado, debe conceder explícitamente al AWS IoT Core servicio permiso para invocar la función en su nombre. Puede hacerlo con el siguiente comando. 

**nota**  
Es posible que el punto de conexión predeterminado de IoT no admita el uso de autorizadores personalizados con funciones de Lambda. En su lugar, puede usar las configuraciones de dominio para definir un nuevo punto de conexión y, a continuación, especificarlo para el autorizador personalizado.

```
aws lambda add-permission --function-name <lambda_function_name>
--principal iot.amazonaws.com --source-arn <authorizer_arn>
--statement-id Id-123 --action "lambda:InvokeFunction"
```

# Autorizar la invocación AWS IoT de la función Lambda
<a name="custom-auth-authorize"></a>

En esta sección, concederá el permiso del recurso de autorizador personalizado que acaba de crear para ejecutar la función de Lambda. Para conceder el permiso, puede utilizar el comando de la CLI [add-permission](https://docs.aws.amazon.com//cli/latest/reference/lambda/add-permission.html).

**Conceda permiso a su función Lambda mediante el AWS CLI**

1. Después de insertar sus valores, introduzca el siguiente comando. Tenga en cuenta que el valor `statement-id` debe ser único. Reemplace `Id-1234` por el valor exacto que tiene; de lo contrario, podría producirse un error `ResourceConflictException`.

   ```
   aws lambda add-permission  \
   --function-name "custom-auth-function" \
   --principal "iot.amazonaws.com" \
   --action "lambda:InvokeFunction" \
   --statement-id "Id-1234" \
   --source-arn authorizerArn
   ```

1. Si el comando tiene éxito, devuelve una declaración de permiso, como la de este ejemplo. Puede continuar con la siguiente sección para probar el autorizador personalizado.

   ```
   {
       "Statement": "{\"Sid\":\"Id-1234\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iot.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function\",\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function\"}}}"
   }
   ```

   Si el comando no tiene éxito, devuelve un error, como en este ejemplo. Tendrá que revisar y corregir el error antes de continuar.

   ```
   An error occurred (AccessDeniedException) when calling the AddPermission operation: User: arn:aws:iam::57EXAMPLE833:user/EXAMPLE-1 is not authorized to perform: lambda:AddPer
   mission on resource: arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function
   ```

# Probar los autorizadores
<a name="custom-auth-testing"></a>

 Puede usar la [TestInvokeAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_TestInvokeAuthorizer.html)API para probar los valores de invocación y retorno de su autorizador. Esta API te permite especificar los metadatos del protocolo y probar la validación de la firma en tu autorizador.

En las siguientes pestañas se muestra cómo utilizarla AWS CLI para probar el autorizador.

------
#### [ Unix-like ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER \
--token TOKEN_VALUE --token-signature TOKEN_SIGNATURE
```

------
#### [ Windows CMD ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER ^
--token TOKEN_VALUE --token-signature TOKEN_SIGNATURE
```

------
#### [ Windows PowerShell ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER `
--token TOKEN_VALUE --token-signature TOKEN_SIGNATURE
```

------

El valor del parámetro `token-signature` es el token firmado. Para obtener información sobre cómo obtener este valor, consulte [Firmar el token](custom-auth.md#custom-auth-token-signature).

Si el autorizador utiliza un nombre de usuario y una contraseña, puede transmitir esta información mediante el parámetro `--mqtt-context`. Las siguientes pestañas muestran cómo usar la API `TestInvokeAuthorizer` para enviar un objeto JSON que contenga un nombre de usuario, una contraseña y un nombre de cliente a su autorizador personalizado.

------
#### [ Unix-like ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER  \
--mqtt-context '{"username": "USER_NAME", "password": "dGVzdA==", "clientId":"CLIENT_NAME"}'
```

------
#### [ Windows CMD ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER  ^
--mqtt-context '{"username": "USER_NAME", "password": "dGVzdA==", "clientId":"CLIENT_NAME"}'
```

------
#### [ Windows PowerShell ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER  `
--mqtt-context '{"username": "USER_NAME", "password": "dGVzdA==", "clientId":"CLIENT_NAME"}'
```

------

Los datos de usuario deben estar codificados en base64. El siguiente ejemplo muestra cómo codificar una contraseña en un entorno similar a Unix.

```
echo -n PASSWORD | base64
```

# Administración de puntos de conexión
<a name="custom-auth-manage"></a>

 Puede administrar sus autorizadores mediante lo siguiente. APIs 
+ [ListAuthorizers](https://docs.aws.amazon.com/iot/latest/apireference/API_ListAuthorizers.html): Muestra todos los autorizadores de tu cuenta.
+  [DescribeAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeAuthorizer.html): Muestra las propiedades del autorizador especificado. Estos valores incluyen la fecha de creación, la fecha de la última modificación y otros atributos.
+ [SetDefaultAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_SetDefaultAuthorizer.html): Especifica el autorizador predeterminado para los puntos finales de AWS IoT Core datos. AWS IoT Core utiliza este autorizador si un dispositivo no transfiere AWS IoT Core las credenciales y no especifica un autorizador. Para obtener más información sobre el uso de AWS IoT Core credenciales, consulte. [Autenticación del cliente](client-authentication.md)
+ [UpdateAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateAuthorizer.html): cambia el estado, el nombre de la clave del token o las claves públicas del autorizador especificado.
+  [DeleteAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteAuthorizer.html): elimina el autorizador especificado. 

**nota**  
 No se puede actualizar el requisito de firma de un autorizador. Esto significa que no es posible deshabilitar el inicio de sesión en un autorizador existente que lo requiera. Tampoco se puede requerir el inicio de sesión en un autorizador existente que no lo requiera. 

# Autenticación personalizada con certificados de cliente X.509
<a name="custom-auth-509cert"></a>

Al conectar dispositivos a AWS IoT Core, tiene varios [tipos de autenticación disponibles](protocols.md#connection-protocol-auth-mode). Puede usar [certificados de cliente X.509](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html), que se pueden usar para autenticar las conexiones de clientes y dispositivos, o definir [autorizadores personalizados](https://docs.aws.amazon.com//iot/latest/developerguide/custom-authentication.html) para administrar su propia lógica de autenticación y autorización de clientes. En este tema se explica cómo utilizar la autenticación personalizada con los certificados de cliente X.509.

El uso de la autenticación personalizada con certificados X.509 puede resultar útil si ya ha autenticado sus dispositivos con certificados X.509 y desea realizar validaciones adicionales y autorizaciones personalizadas. Por ejemplo, si almacena los datos de sus dispositivos, como sus números de serie, en el certificado de cliente X.509, una vez AWS IoT Core autenticado el certificado de cliente X.509, puede utilizar un autorizador personalizado para identificar dispositivos específicos en función de la información almacenada en el campo del certificado. CommonName El uso de la autenticación personalizada con los certificados X.509 puede mejorar la gestión de la seguridad de los dispositivos al conectarlos AWS IoT Core y proporciona más flexibilidad a la hora de gestionar la lógica de autenticación y autorización. AWS IoT Core [admite la autenticación personalizada con certificados X.509 mediante el certificado X.509 y el tipo de autenticación con autorizador personalizado, que funciona tanto con el protocolo [MQTT como con el protocolo HTTPS](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html).](https://docs.aws.amazon.com//iot/latest/developerguide/http.html) Para obtener más información sobre los tipos de autenticación y los protocolos de aplicación que admiten los puntos de conexión de los dispositivos de AWS IoT Core , consulte [Protocolos de comunicación de dispositivos](https://docs.aws.amazon.com//iot/latest/developerguide/protocols.html).

**nota**  
Las regiones no admiten la autenticación personalizada con certificados de cliente X.509. AWS GovCloud (US) 

**importante**  
Debe usar un punto de conexión creado con [configuraciones de dominio](iot-custom-endpoints-configurable.md). Además, los clientes deben proporcionar la extensión de [indicación del nombre del servidor (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) al conectarse a. AWS IoT Core

**Topics**
+ [Paso 1: registre sus certificados de cliente X.509 con AWS IoT Core](#custom-auth-509cert-client)
+ [Paso 2: creación de una función de Lambda](#custom-auth-509cert-lambda)
+ [Paso 3: creación de un autorizador personalizado](#custom-auth-509cert-authorizer)
+ [Paso 4: definición del tipo de autenticación y el protocolo de aplicación en una configuración de dominio](#custom-auth-509cert-domainconfig)

## Paso 1: registre sus certificados de cliente X.509 con AWS IoT Core
<a name="custom-auth-509cert-client"></a>

Si aún no lo ha hecho, registre y active sus [certificados de cliente X.509](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) con. AWS IoT Core De no ser así, vaya al siguiente paso.

Para registrar y activar sus certificados de cliente con ellos AWS IoT Core, siga estos pasos:

1. Si [crea certificados de cliente directamente con AWS IoT](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-create.html). Estos certificados de cliente se registrarán automáticamente en AWS IoT Core.

1. Si [crea sus propios certificados de cliente](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-your-own.html), siga [estas instrucciones para registrarlos AWS IoT Core](https://docs.aws.amazon.com//iot/latest/developerguide/register-device-cert.html).

1. Siga [estas instrucciones](https://docs.aws.amazon.com//iot/latest/developerguide/activate-or-deactivate-device-cert.html) para activar sus certificados de cliente.

## Paso 2: creación de una función de Lambda
<a name="custom-auth-509cert-lambda"></a>

AWS IoT Core utiliza autorizadores personalizados para implementar esquemas de autenticación y autorización personalizados. Un autorizador personalizado está asociado a una función de Lambda que determina si un dispositivo está autenticado y qué operaciones puede realizar el dispositivo. Cuando un dispositivo se conecta a AWS IoT Core, AWS IoT Core recupera los detalles del autorizador, incluidos el nombre del autorizador y la función Lambda asociada, e invoca la función Lambda. La función de Lambda recibe un evento que contiene un objeto JSON con los datos del certificado de cliente X.509 del dispositivo. La función de Lambda utiliza este objeto JSON del evento para evaluar la solicitud de autenticación, decidir las acciones que se van a realizar y enviar una respuesta.

### Ejemplo de evento de la función de Lambda
<a name="custom-auth-509cert-event"></a>

El siguiente objeto JSON de ejemplo contiene todos los campos posibles que se pueden incluir. El objeto JSON real solo contendrá los campos relevantes para la solicitud de conexión específica.

```
{
	"token": "aToken",
	"signatureVerified": true,
	"protocols": [
		"tls",
		"mqtt"
	],
	"protocolData": {
		"tls": {
			"serverName": "serverName",
			"x509CertificatePem": "x509CertificatePem",
			"principalId": "principalId"
		},
		"mqtt": {
			"clientId": "myClientId",
                     "username": "myUserName",
                     "password": "myPassword"
		}
	},
	"connectionMetadata": {
		"id": "UUID"
	}
}
```

`signatureVerified`  
Es un valor booleano que indica si la firma del token configurada en el autorizador se verifica o no antes de invocar la función de Lambda del autorizador. Si el autorizador está configurado para desactivar la firma de token, este campo será falso. 

`protocols`  
Es una matriz que contiene los protocolos esperados para la solicitud.

`protocolData`  
Es un objeto que contiene información de los protocolos utilizados en la conexión. Proporciona detalles específicos del protocolo que pueden ser útiles para la autenticación, la autorización y mucho más.  
`tls`: este objeto contiene información relacionada con el protocolo TLS (seguridad de la capa de transporte).   
+ `serverName`: es la cadena de nombre de host [Indicación del nombre del servidor (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1). AWS IoT Core requiere que los dispositivos envíen la [extensión SNI](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) al protocolo de seguridad de la capa de transporte (TLS) y proporcionen la dirección completa del punto de conexión en el campo `host_name`.
+ `x509CertificatePem`: es el certificado X.509 en formato PEM, que se utiliza para la autenticación de cliente en la conexión TLS.
+ `principalId`: es el identificador de la entidad principal asociado al cliente en la conexión TLS.
`mqtt`: este objeto incluye información relacionada con el protocolo MQTT.  
+ `clientId`: solo es necesario incluir una cadena en caso de que el dispositivo envíe este valor.
+ `username`: es el nombre de usuario proporcionado en el paquete MQTT Connect.
+ `password`: es la contraseña proporcionada en el paquete MQTT Connect.

`connectionMetadata`  
Son los metadatos de la conexión.  
`id`: es el identificador de conexión, que puede utilizar para registrarse y solucionar problemas.

**nota**  
En este objeto JSON del evento, `x509CertificatePem` y `principalId` son dos campos nuevos en la solicitud. El valor de `principalId` es el mismo que el valor de `certificateId`. Para obtener más información, consulte [Certificate](https://docs.aws.amazon.com//iot/latest/apireference/API_Certificate.html).

### Ejemplo de respuesta de la función de Lambda
<a name="custom-auth-509cert-response"></a>

La función de Lambda debe usar información del objeto JSON del evento para autenticar la conexión entrante y decidir qué acciones se permiten en la conexión.

El siguiente objeto JSON contiene un ejemplo de una respuesta que puede enviar la función de Lambda.

```
{
	"isAuthenticated": true,
	"principalId": "xxxxxxxx",
	"disconnectAfterInSeconds": 86400,
	"refreshAfterInSeconds": 300,
	"policyDocuments": [
		{
			"Version": "2012-10-17",		 	 	 
			"Statement": [
				{
					"Effect": "Allow",
					"Action": "iot:Publish",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topic/customauthtesting"
				}
			]
		}
	]
}
```

En este ejemplo, esta función debe enviar una respuesta que contenga los siguientes valores.

`isAuthenticated`  
Es un valor booleano que indica si la solicitud se ha autenticado.

`principalId`  
Es una cadena alfanumérica que actúa como identificador del token enviado por la solicitud de autorización personalizada. El valor debe ser una cadena alfanumérica con un mínimo de 1 y un máximo de 128 caracteres. Identifica la conexión en los registros. El valor de `principalId` debe ser el mismo que el valor de `principalId` en el objeto JSON del evento (es decir, el CertificateID del certificado X.509).

`policyDocuments`  
Una lista de documentos de políticas con formato JSON. AWS IoT Core El valor es opcional y admite [variables de política de objetos](https://docs.aws.amazon.com//iot/latest/developerguide/thing-policy-variables.html) y [variables de política de certificados](https://docs.aws.amazon.com//iot/latest/developerguide/cert-policy-variables.html). El número máximo de documentos de políticas es de 10. Cada documento de política puede contener un máximo de 2048 caracteres. Si tiene varias políticas asociadas a su certificado de cliente y a la función de Lambda, el permiso es una recopilación de todas las políticas. [Para obtener más información sobre la creación de AWS IoT Core políticas, consulte Políticas.](https://docs.aws.amazon.com//iot/latest/developerguide/iot-policies.html)

`disconnectAfterInSeconds`  
Un entero que especifica la duración máxima (en segundos) de la conexión a la AWS IoT Core puerta de enlace. El valor mínimo es 300 segundos y el máximo, 86 400 segundos. `disconnectAfterInSeconds` es para toda la vida útil de una conexión y no se actualiza al actualizar la política de forma consecutiva.

`refreshAfterInSeconds`  
Es un entero que especifica el intervalo entre las actualizaciones de la política. Cuando pasa este intervalo, AWS IoT Core invoca la función Lambda para permitir la actualización de las políticas. El valor mínimo es de 300 segundos y el máximo es de 86 400 segundos.

### Ejemplo de función de Lambda
<a name="custom-auth-509cert-js-example"></a>

A continuación, se muestra una función de Lambda Node.js de ejemplo. La función examina el certificado X.509 del cliente y extrae la información relevante, como el número de serie, la huella digital y el nombre del sujeto. Si la información extraída coincide con los valores esperados, el cliente podrá conectarse. Este mecanismo garantiza que solo los clientes autorizados con certificados válidos puedan establecer una conexión.

```
const crypto = require('crypto');

exports.handler = async (event) => {
    
    // Extract the certificate PEM from the event
    const certPem = event.protocolData.tls.x509CertificatePem;
    
    // Parse the certificate using Node's crypto module
    const cert = new crypto.X509Certificate(certPem);
    
    var effect = "Deny";
    // Allow permissions only for a particular certificate serial, fingerprint, and subject
    if (cert.serialNumber === "7F8D2E4B9C1A5036DE8F7C4B2A91E5D80463BC9A1257" // This is a random serial
       && cert.fingerprint === "F2:9A:C4:1D:B5:E7:08:3F:6B:D0:4E:92:A7:C1:5B:8D:16:0F:E3:7A" // This is a random fingerprint
       && cert.subject === "allow.example.com") {
      effect = "Allow";
    }
    
    return generateAuthResponse(event.protocolData.tls.principalId, effect);
};


// Helper function to generate the authorization response.
function generateAuthResponse(principalId, effect) {
    const authResponse = {
        isAuthenticated: true,
        principalId,
        disconnectAfterInSeconds: 3600,
        refreshAfterInSeconds: 300,
        policyDocuments: [
          {
            Version: "2012-10-17",		 	 	 
            Statement: [
              {
                Action: ["iot:Connect"],
                Effect: effect,
                Resource: [
                  "arn:aws:iot:us-east-1:123456789012:client/myClientName"
                ]
              },
              {
                Action: ["iot:Publish"],
                Effect: effect,
                Resource: [
                  "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
                ]
              },
              {
                Action: ["iot:Subscribe"],
                Effect: effect,
                Resource: [
                   "arn:aws:iot:us-east-1:123456789012:topicfilter/telemetry/myClientName"
                ]
              },
              {
                Action: ["iot:Receive"],
                Effect: effect,
                Resource: [
                   "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
                ]
              }
            ]
          }
        ]
      };

  return authResponse;
}
```

La función de Lambda anterior devuelve el siguiente JSON cuando recibe un certificado con el número de serie, la huella digital y el sujeto esperados. El valor de `x509CertificatePem` será el certificado de cliente proporcionado en el protocolo de enlace TLS. Para obtener más información, consulte [Defining your Lambda function](https://docs.aws.amazon.com//iot/latest/developerguide/config-custom-auth.html#custom-auth-lambda).

```
{
	"isAuthenticated": true,
	"principalId": "principalId in the event JSON object",
	"policyDocuments": [
		{
			"Version": "2012-10-17",		 	 	 
			"Statement": [
				{
					"Action": "iot:Connect",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:client/myClientName"
				},
				{
					"Action": "iot:Publish",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
				},
				{
					"Action": "iot:Subscribe",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/telemetry/myClientName"
				},
				{
					"Action": "iot:Receive",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
				}
			]
		}
	],
	"disconnectAfterInSeconds": 3600,
	"refreshAfterInSeconds": 300
}
```

## Paso 3: creación de un autorizador personalizado
<a name="custom-auth-509cert-authorizer"></a>

Tras [definir la función de Lambda](#custom-auth-509cert-lambda), cree un autorizador personalizado para administrar su propia lógica de autenticación y autorización de clientes. Puede seguir las instrucciones detalladas en el [Step 3: Create a customer authorizer resource and its authorization](https://docs.aws.amazon.com//iot/latest/developerguide/custom-auth-tutorial.html#custom-auth-tutorial-authorizer). Para obtener más información, consulte [Creating an authorizer](https://docs.aws.amazon.com//iot/latest/developerguide/config-custom-auth.html). 

En el proceso de creación del autorizador personalizado, debe conceder el permiso de AWS IoT para invocar la función de Lambda una vez creada. Para obtener instrucciones detalladas, consulte [AWS IoT Autorizar la invocación de la función Lambda](custom-auth-authorize.md).

## Paso 4: definición del tipo de autenticación y el protocolo de aplicación en una configuración de dominio
<a name="custom-auth-509cert-domainconfig"></a>

Para autenticar los dispositivos mediante la autenticación personalizada con certificados de cliente X.509, debe establecer el tipo de autenticación y el protocolo de aplicación en una configuración de dominio y debe enviar la extensión SNI. El valor de `authenticationType` debe ser `CUSTOM_AUTH_X509` y el valor de `applicationProtocol` puede ser `SECURE_MQTT` o `HTTPS`.

### Definición del tipo de autenticación y el protocolo de aplicación en una configuración de dominio (CLI)
<a name="custom-auth-509cert-cli"></a>

Si no tiene una configuración de dominio, utilice el comando [https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html) para crear una. El valor de `authenticationType` debe ser `CUSTOM_AUTH_X509` y el valor de `applicationProtocol` puede ser `SECURE_MQTT` o `HTTPS`.

```
aws iot create-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type CUSTOM_AUTH_X509 \  
    --application-protocol SECURE_MQTT \ 
    --authorizer-config '{
        "defaultAuthorizerName": my-custom-authorizer
    }'
```

Si ya tiene una configuración de dominio, utilice el comando [https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html) para actualizar `authenticationType` y `applicationProtocol`, si es necesario. Tenga en cuenta que no puede cambiar el tipo o el protocolo de autenticación en el punto de conexión predeterminado (`iot:Data-ATS`).

```
aws iot update-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type CUSTOM_AUTH_X509 \  
    --application-protocol SECURE_MQTT \
    --authorizer-config '{
        "defaultAuthorizerName": my-custom-authorizer
    }'
```

`domain-configuration-name`  
Es el nombre de la configuración del dominio.

`authentication-type`  
Es el tipo de autenticación de la configuración del dominio. Para obtener más información, consulte [Choosing an authentication type](protocols.md#connection-protocol-auth-mode).

`application-protocol`  
Es el protocolo de aplicación con el que los dispositivos se comunican con AWS IoT Core. Para obtener más información, consulte [Choosing an application protocol](protocols.md#protocol-selection).

`--authorizer-config`  
Es un objeto que especifica la configuración del autorizador en una configuración de dominio.

`defaultAuthorizerName`  
Es el nombre del autorizador para una configuración de dominio.

*Para obtener más información, consulte [CreateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateDomainConfiguration.html)y [UpdateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateDomainConfiguration.html)desde la referencia de la AWS IoT API.* Para obtener más información sobre la configuración de dominios, consulte [Domain configurations](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html).

# Conectarse a AWS IoT Core mediante una autenticación personalizada
<a name="custom-auth"></a>

 Los dispositivos se pueden conectar AWS IoT Core mediante una autenticación personalizada con cualquier protocolo AWS IoT Core compatible con la mensajería del dispositivo. Para obtener más información acerca de los protocolos de comunicación compatibles, consulte [Protocolos de comunicación de dispositivos](protocols.md).  Los datos de conexión que se transfieren a la función de Lambda de su autorizador dependen del protocolo que utilice. Para obtener más información acerca de cómo crear la función de Lambda de su autorizador, consulte [Definición de la función de Lambda](custom-auth-lambda.md). En las secciones siguientes se explica cómo conectarse para autenticarse mediante cada protocolo compatible.

## HTTPS
<a name="custom-auth-http"></a>

Los dispositivos a los que se envían datos AWS IoT Core mediante la [API de publicación HTTP](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_Publish.html) pueden transferir las credenciales a través de los encabezados de las solicitudes o de los parámetros de consulta en sus solicitudes HTTP POST. Los dispositivos pueden especificar un autorizador para invocarlo mediante el encabezado `x-amz-customauthorizer-name` o el parámetro de consulta. Si tiene habilitada la firma por token en su autorizador, debe pasar `token-key-name` y `x-amz-customauthorizer-signature` en los encabezados de las solicitudes o en los parámetros de consulta. Tenga en cuenta que el `token-signature` valor debe estar codificado en una URL cuando se utilice JavaScript desde el navegador.

**nota**  
El autorizador del cliente para el protocolo HTTPS solo admite operaciones de publicación. Para obtener más información acerca del protocolo HTTP, consulte [Protocolos de comunicación de dispositivos](protocols.md).

Los siguientes ejemplos de solicitudes muestran cómo se transfieren estos parámetros tanto en los encabezados de las solicitudes como en los parámetros de consulta. 

```
//Passing credentials via headers
POST /topics/topic?qos=qos HTTP/1.1
Host: your-endpoint 
x-amz-customauthorizer-signature: token-signature
token-key-name: token-value 
x-amz-customauthorizer-name: authorizer-name

//Passing credentials via query parameters
POST /topics/topic?qos=qos&x-amz-customauthorizer-signature=token-signature&token-key-name=token-value HTTP/1.1
```

## MQTT
<a name="custom-auth-mqtt"></a>

 Los dispositivos que se conectan AWS IoT Core mediante una conexión MQTT pueden pasar las credenciales a través de los `password` campos `username` y de los mensajes MQTT. De forma opcional, el valor de `username` también puede contener una cadena de consulta que transfiere valores adicionales (como un token, una firma y el nombre del autorizador) a su autorizador. Puede utilizar esta cadena de consulta si desea utilizar un esquema de autenticación basado en símbolos en lugar de valores `username` y `password`.  

**nota**  
 Los datos del campo de contraseña están codificados en base64 mediante. AWS IoT Core Debe descodificarlos con la función de Lambda. 

 El siguiente ejemplo contiene una cadena `username` con parámetros adicionales que especifican un token y una firma.  

```
username?x-amz-customauthorizer-name=authorizer-name&x-amz-customauthorizer-signature=token-signature&token-key-name=token-value
```

Para invocar un autorizador, los dispositivos que se conecten AWS IoT Core mediante MQTT y la autenticación personalizada deben conectarse al puerto 443. También deben pasar la extensión TLS de negociación de protocolos de capa de aplicación (ALPN) con un valor de `mqtt` y la extensión de indicación del nombre del servidor (SNI) con el nombre de host de su terminal de datos. AWS IoT Core Para evitar posibles errores, el valor de `x-amz-customauthorizer-signature` debe estar codificado como URL. También recomendamos encarecidamente que los valores de `x-amz-customauthorizer-name` y `token-key-name` estén codificados como URL. Para obtener más información acerca de estos valores, consulte[Protocolos de comunicación de dispositivos](protocols.md). V2 [SDK de dispositivos, SDK para móviles y cliente de dispositivo de AWS IoT](iot-sdks.md) puede configurar estas dos extensiones. 

## MQTT ha terminado WebSockets
<a name="custom-auth-websockets"></a>

 Los dispositivos que se conectan AWS IoT Core mediante MQTT Over WebSockets pueden transferir las credenciales de una de las dos maneras siguientes. 
+ Mediante los encabezados de las solicitudes o los parámetros de consulta de la solicitud HTTP UPGRADE para establecer la WebSockets conexión.
+ A través de los campos `username` y `password` del mensaje MQTT CONNECT.

 Si pasa las credenciales a través del mensaje de conexión de MQTT, se requieren las extensiones TLS ALPN y SNI. Para obtener más información, consulte [MQTT](#custom-auth-mqtt). El siguiente ejemplo ilustra cómo pasar credenciales a través de la solicitud de actualización de HTTP. 

```
GET /mqtt HTTP/1.1
Host: your-endpoint 
Upgrade: WebSocket 
Connection: Upgrade 
x-amz-customauthorizer-signature: token-signature
token-key-name: token-value 
sec-WebSocket-Key: any random base64 value 
sec-websocket-protocol: mqtt 
sec-WebSocket-Version: websocket version
```

## Firmar el token
<a name="custom-auth-token-signature"></a>

Debe firmar el token con la clave privada del par de claves pública-privada que utilizó en la llamada a `create-authorizer`. Los siguientes ejemplos muestran cómo crear la firma simbólica mediante un comando similar a Unix y. JavaScript Utilizan el algoritmo hash SHA-256 para codificar la firma.

------
#### [ Command line ]

```
echo -n TOKEN_VALUE | openssl dgst -sha256 -sign PEM encoded RSA private key | openssl base64
```

------
#### [ JavaScript ]

```
const crypto = require('crypto')

const key = "PEM encoded RSA private key"

const k = crypto.createPrivateKey(key)
let sign = crypto.createSign('SHA256')
sign.write(t)
sign.end()
const s = sign.sign(k, 'base64')
```

------

# Resolución de problemas de sus autorizadores
<a name="custom-auth-troubleshooting"></a>

 En este tema se explican los problemas más comunes que pueden causar problemas en los flujos de trabajo de autenticación personalizada y los pasos para resolverlos. **Para solucionar los problemas de forma más eficaz, habilite CloudWatch los registros AWS IoT Core y establezca el nivel de registro en DEBUG.** Puede habilitar CloudWatch los registros en la AWS IoT Core consola () [https://console.aws.amazon.com/iot/](https://console.aws.amazon.com/iot/). Para obtener más información acerca de cómo habilitar y configurar registros de AWS IoT Core, consulte [Configure el AWS IoT registro](configure-logging.md). 

**nota**  
Si deja el nivel de registro en **DEBUG** durante períodos prolongados, es CloudWatch posible que se almacenen grandes cantidades de datos de registro. Esto puede aumentar sus CloudWatch cargos. Considere la posibilidad de utilizar el registro basado en recursos para aumentar la verbosidad solo para los dispositivos de un grupo de objetos concreto. Para obtener más información sobre el registro basado en recursos, consulte [Configure el AWS IoT registro](configure-logging.md). Además, cuando haya terminado de solucionar problemas, reduzca el nivel de registro a un nivel menos detallado.

Antes de empezar a solucionar problemas, consulte [Comprender el flujo de trabajo de autenticación personalizada](custom-authorizer.md) para obtener una visión general del proceso de autenticación personalizada. Esto le ayudará a entender dónde buscar el origen del problema.

En este tema se analizan las dos áreas siguientes para que las investigue.
+ Cuestiones relacionadas con la función de Lambda de su autorizador.
+ Problemas relacionados con el dispositivo.

## Comprobar si hay problemas con la función de Lambda de su autorizador
<a name="custom-auth-troubleshooting-lambda"></a>

Lleve a cabo los siguientes pasos para asegurarse de que los intentos de conexión de sus dispositivos estén invocando la función de Lambda.

1. Compruebe qué función de Lambda está asociada a su autorizador.

   Puede hacerlo llamando a la [DescribeAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeAuthorizer.html)API o haciendo clic en el autorizador deseado en la sección **Segura** de la AWS IoT Core consola.

1. Compruebe las métricas de invocación de la función de Lambda. Para ello, siga estos pasos.

   1. Abra la AWS Lambda consola ([https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)) y seleccione la función asociada a su autorizador.

   1. Seleccione la pestaña **Monitorizar** y consulte las métricas correspondientes al período de tiempo correspondiente a su problema.

1. Si no ve ninguna invocación, compruebe que AWS IoT Core tiene permiso para invocar la función Lambda. Si ve invocaciones, vaya directamente al siguiente paso. Lleve a cabo los siguientes pasos para comprobar que la función de Lambda tiene los permisos necesarios.

   1. Seleccione la pestaña **Permisos** para su función en la consola. AWS Lambda 

   1. Busque la sección **Política basada en recursos** en la parte inferior de la página. Si la función de Lambda tiene los permisos necesarios, la política tiene el aspecto que se muestra en el siguiente ejemplo.  
****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Id": "default",
        "Statement": [
          {
            "Sid": "Id123",
            "Effect": "Allow",
            "Principal": {
              "Service": "iot.amazonaws.com"
            },
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:us-east-1:111111111111:function:FunctionName",
            "Condition": {
              "ArnLike": {
                "AWS:SourceArn": "arn:aws:iot:us-east-1:111111111111:authorizer/AuthorizerName"
              },
              "StringEquals": {
                "AWS:SourceAccount": "111111111111"
              }
            }
          }
        ]
      }
      ```

   1. Esta política concede al AWS IoT Core director el `InvokeFunction` permiso para desempeñar sus funciones. Si no lo ves, tendrás que añadirlo mediante la [AddPermission](https://docs.aws.amazon.com/lambda/latest/dg/API_AddPermission.html)API. El siguiente ejemplo le muestra cómo hacerlo utilizando la AWS CLI.

      ```
      aws lambda add-permission --function-name FunctionName --principal iot.amazonaws.com --source-arn AuthorizerARn --statement-id Id-123 --action "lambda:InvokeFunction"
      ```

1. Si ve invocaciones, compruebe que no haya errores. Un error podría indicar que la función Lambda no gestiona correctamente el evento de conexión que se AWS IoT Core le envía.

   Para obtener información sobre cómo gestionar el evento en la función de Lambda, consulte [Definición de la función de Lambda](custom-auth-lambda.md). Puedes usar la función de prueba de la AWS Lambda consola ([https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)) para codificar los valores de prueba de la función y asegurarte de que la función gestiona los eventos correctamente.

1. Si ve invocaciones sin errores, pero sus dispositivos no pueden conectarse (ni publicar, suscribirse ni recibir mensajes), el problema podría deberse a que la política que devuelve la función de Lambda no concede permisos para las acciones que los dispositivos están intentando realizar. Lleve a cabo los siguientes pasos para determinar si hay algún problema con la política que devuelve la función.

   1. Utilice una consulta de Amazon CloudWatch Logs Insights para escanear los registros durante un período breve y comprobar si hay errores. El siguiente ejemplo de consulta ordena los eventos por marca de tiempo y busca errores.

      ```
      display clientId, eventType, status, @timestamp | sort @timestamp desc | filter status = "Failure"    
      ```

   1. Actualice la función Lambda para registrar los datos a los que regresa AWS IoT Core y el evento que activa la función. Puede usar estos registros para inspeccionar la política que crea la función.

1. Si ve invocaciones sin errores, pero sus dispositivos no pueden conectarse (ni publicar, suscribirse ni recibir mensajes), otro motivo puede ser que la función de Lambda supere el límite de tiempo de espera. El límite de tiempo de espera de la función de Lambda para el autorizador personalizado es de 5 segundos. Puede comprobar la duración de la función en CloudWatch registros o métricas. 

## Investigar problemas con los dispositivos
<a name="custom-auth-troubleshooting-investigate"></a>

Si no encuentra problemas al invocar la función de Lambda o con la política que devuelve la función, busque problemas con los intentos de conexión de sus dispositivos. Las solicitudes de conexión mal formadas pueden provocar que AWS IoT Core no se active el autorizador. Se pueden producir problemas de conexión tanto en la capa TLS como en la de aplicación.

**Posibles problemas con la capa TLS:**
+ Los clientes deben incluir un encabezado de nombre de host (HTTP, MQTT over WebSockets) o la extensión TLS con indicación del nombre del servidor (HTTP, MQTT over WebSockets, MQTT) en todas las solicitudes de autenticación personalizadas. En ambos casos, el valor transferido debe coincidir con uno de los extremos de datos de su cuenta. AWS IoT Core Estos son los puntos de conexión que se devuelven al ejecutar los siguientes comandos de la CLI.
  + `aws iot describe-endpoint --endpoint-type iot:Data-ATS`
  + `aws iot describe-endpoint --endpoint-type iot:Data`(para puntos VeriSign finales antiguos)
+ Los dispositivos que utilizan una autenticación personalizada para las conexiones MQTT también deben pasar la extensión TLS de negociación de protocolo de capa de aplicación (ALPN) con un valor de `mqtt`.
+ La autenticación personalizada actualmente solo está disponible en el puerto 443.

**Posibles problemas en la capa de aplicación:**
+ Si la firma está habilitada (el campo `signingDisabled` es falso en su autorizador), busque los siguientes problemas de firma.
  + Asegúrese de pasar la firma simbólica en el encabezado `x-amz-customauthorizer-signature` o en un parámetro de cadena de consulta.
  + Asegúrese de que el servicio no firme un valor distinto del token.
  + Asegúrese de pasar el token al encabezado o parámetro de consulta que especificó en el campo `token-key-name` de su autorizador.
+ Asegúrese de que el nombre del autorizador que pasa en el encabezado `x-amz-customauthorizer-name` o la cadena de consulta es válido o de que ha definido un autorizador predeterminado para su cuenta.

# Autorización
<a name="iot-authorization"></a>

Autorización es el proceso de concesión de permisos a una identidad autenticada. Usted concede permisos de AWS IoT Core uso AWS IoT Core y políticas de IAM. En este tema se abordan las políticas de AWS IoT Core . Para obtener más información sobre las políticas de IAM, consulte [Gestión de identidad y acceso para AWS IoT](security-iam.md) y [¿Cómo AWS IoT funciona con IAM](security_iam_service-with-iam.md).

AWS IoT Core las políticas determinan lo que puede hacer una identidad autenticada. Los dispositivos y las aplicaciones móviles, web y de escritorio utilizan identidades autenticadas. Una identidad autenticada puede incluso ser un usuario que escribe comandos AWS IoT Core CLI. Una identidad solo puede ejecutar AWS IoT Core operaciones si tiene una política que le conceda permiso para realizar esas operaciones.

Tanto AWS IoT Core las políticas como las políticas de IAM se utilizan AWS IoT Core para controlar las operaciones que puede realizar una identidad (también denominada *principal*). El tipo de política que utilice depende del tipo de identidad con la que se autentique. AWS IoT Core

AWS IoT Core las operaciones se dividen en dos grupos: 
+ La API del plano de control le permite realizar tareas administrativas, como crear o actualizar certificados, objetos, reglas, etc.
+ La API del plano de datos le permite enviar y recibir datos AWS IoT Core. 

El tipo de política que utilice depende de si utiliza la API del plano de control o la del plano de datos.

En la tabla siguiente se muestran los tipos de identidad, los protocolos que utilizan y los tipos de políticas que se pueden utilizar para la autorización.


**AWS IoT Core Tipos de API y políticas del plano de datos**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/iot-authorization.html)


**AWS IoT Core Tipos de API y políticas del plano de control**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/iot-authorization.html)

AWS IoT Core las políticas se adjuntan a los certificados X.509, a las identidades de Amazon Cognito o a los grupos de cosas. Las políticas de IAM están asociadas a un usuario, grupo o rol de IAM. Si utiliza la AWS IoT consola o la AWS IoT Core CLI para adjuntar la política (a un certificado, Amazon Cognito Identity o un grupo de cosas), utilizará una AWS IoT Core política. De lo contrario, utilizará una política de IAM. AWS IoT Core las políticas asociadas a un grupo de cosas se aplican a cualquier cosa dentro de ese grupo de cosas. Para que la AWS IoT Core política surta efecto, el nombre de la cosa `clientId` y el de la cosa deben coincidir.

Las autorizaciones basadas en políticas son una herramienta muy eficaz. Le dan un control completo sobre lo que un dispositivo, usuario o aplicación puede hacer en AWS IoT Core. Por ejemplo, pensemos en un dispositivo al que se conecta AWS IoT Core mediante un certificado. Puede permitir que el dispositivo tenga acceso a todos los temas MQTT, o bien puede restringir su acceso a un único tema. O tomemos, por ejemplo, el caso de un usuario que ejecute comandos de la CLI en una línea de comandos. Al usar una política, puede permitir o denegar el acceso al usuario a cualquier comando o AWS IoT Core recurso. También puede controlar el acceso de una aplicación a los recursos de AWS IoT Core .

Los cambios realizados en una política pueden tardar unos minutos en hacerse efectivos debido a la forma en que se almacenan en caché en AWS IoT los documentos de la política. Es decir, es posible que el acceso a un recurso al que se haya concedido acceso recientemente tarde unos minutos y que se pueda acceder a un recurso durante varios minutos después de que se haya revocado su acceso.

## AWS formación y certificación
<a name="iot-authorization-training"></a>

Para obtener información sobre la autorización AWS IoT Core, realice el curso [Profundiza en la AWS IoT Core autenticación y la autorización](https://www.aws.training/Details/Curriculum?id=42335) en el sitio web de AWS formación y certificación.

# AWS IoT Core políticas
<a name="iot-policies"></a>

AWS IoT Core las políticas son documentos JSON. Siguen las mismas convenciones que las políticas de IAM. AWS IoT Core admite políticas con nombre específico, por lo que muchas identidades pueden hacer referencia al mismo documento de política. Las políticas con nombre cuentan con varias versiones para facilitar su restauración.

AWS IoT Core las políticas le permiten controlar el acceso al plano AWS IoT Core de datos. El plano de datos de AWS IoT Core se compone de operaciones que le permiten conectarse con el agente de mensajes de AWS IoT Core , enviar y recibir mensajes MQTT y obtener o actualizar la sombra de dispositivo de un objeto.

Una AWS IoT Core política es un documento JSON que contiene una o más declaraciones de políticas. Cada instrucción contiene:
+ `Effect`, que especifica si se permite o se deniega la acción.
+ `Action`, que especifica la acción que la política permite o deniega.
+ `Resource`, que especifica los recursos en los que se permite o se deniega la acción.

Los cambios realizados en una política pueden tardar entre 6 y 8 minutos en hacerse efectivos debido a la forma en que se almacenan en AWS IoT caché los documentos de la política. Es decir, es posible que el acceso a un recurso al que se haya concedido acceso recientemente tarde unos minutos y que se pueda acceder a un recurso durante varios minutos después de que se haya revocado su acceso.

AWS IoT Core las políticas se pueden adjuntar a los certificados X.509, a las identidades de Amazon Cognito y a los grupos de cosas. Las políticas asociadas a un grupo de objetos se aplican a cualquier objeto dentro de ese grupo. Para que la política surta efecto, `clientId` y el nombre de la cosa deben coincidir. Las políticas de AWS IoT Core siguen la misma lógica de evaluación de políticas que las políticas de IAM. De forma predeterminada, todas las políticas se deniegan implícitamente. Un permiso explícito en cualquier política basada en identidades o recursos anula el comportamiento predeterminado. Una denegación explícita en cualquier política invalida cualquier permiso concedido. Para obtener más información, consulte [Lógica de evaluación de políticas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow) en la *Guía del usuario de AWS Identity and Access Management *.

**Topics**
+ [AWS IoT Core acciones políticas](iot-policy-actions.md)
+ [AWS IoT Core recursos de acción](iot-action-resources.md)
+ [AWS IoT Core variables de política](iot-policy-variables.md)
+ [Prevención de la sustitución confusa entre servicios](cross-service-confused-deputy-prevention.md)
+ [AWS IoT Core ejemplos de políticas](example-iot-policies.md)
+ [Autorización con identidades de Amazon Cognito](cog-iot-policies.md)

# AWS IoT Core acciones políticas
<a name="iot-policy-actions"></a>

 AWS IoT Core define las siguientes acciones de política:Acciones de política de MQTT

`iot:Connect`  
Representa el permiso para conectarse al agente de AWS IoT Core mensajes. El permiso `iot:Connect` se comprueba cada vez que se envía una solicitud `CONNECT` al agente. El agente de mensajes no permite que haya dos clientes con el mismo ID de cliente conectados simultáneamente. Después de que el segundo cliente se conecta, el agente cierra la conexión existente. Utilice el permiso `iot:Connect` para garantizar que solo puedan conectarse los clientes autorizados que utilizan un ID de cliente específico.

`iot:DeleteConnection`  
Representa el permiso para desconectarse de un cliente de MQTT conectado desde AWS IoT Core. El permiso `iot:DeleteConnection` se comprueba cada vez que se presenta una solicitud para desconectar un cliente de forma ineludible. Al desconectar un cliente, AWS IoT Core cierra la conexión de red del cliente y, si lo desea, limpia el estado de la sesión.

`iot:GetRetainedMessage`  
Representa el permiso para obtener el contenido de un único mensaje retenido. Los mensajes retenidos son los mensajes que se publicaron con el indicador RETAIN establecido y almacenados por AWS IoT Core. Para obtener permiso y obtener una lista de todos los mensajes retenidos de la cuenta, consulte [iot:ListRetainedMessages](#action_listretainedmessages).

`iot:ListRetainedMessages`  
Representa el permiso para recuperar información resumida sobre los mensajes retenidos de la cuenta, pero no el contenido de los mensajes. Los mensajes retenidos son los mensajes que se publicaron con el indicador RETAIN establecido y almacenados por AWS IoT Core. El ARN del recurso especificado para esta acción debe ser `*`. Para tener permiso y obtener el contenido de un único mensaje retenido, consulte [iot:GetRetainedMessage](#action_getretainpublish).

`iot:Publish`  
Representa el permiso de publicar en un tema MQTT. Este permiso se comprueba cada vez que se envía una solicitud PUBLISH al agente. Puede utilizarlo para permitir a los clientes publicar en determinados patrones de tema.  
Para conceder el permiso `iot:Publish`, también debe otorgar el permiso `iot:Connect`.

`iot:Receive`  
Representa el permiso para recibir un mensaje de AWS IoT Core. El permiso `iot:Receive` se confirma cada vez que se entrega un mensaje a un cliente. Dado que este permiso se comprueba en cada entrega, puede utilizarlo para revocar permisos a clientes que están suscritos en ese momento a un tema.

`iot:RetainPublish`  
Representa el permiso para publicar un mensaje MQTT con el indicador RETAIN activado.  
Para conceder el permiso `iot:RetainPublish`, también debe otorgar el permiso `iot:Publish`.

`iot:Subscribe`  
Representa el permiso para suscribirse a un filtro de temas. Este permiso se comprueba cada vez que se envía una solicitud SUBSCRIBE al agente. Utilícelo para permitir a los clientes suscribirse a temas que coinciden con patrones de tema específicos.  
Para conceder el permiso `iot:Subscribe`, también debe otorgar el permiso `iot:Connect`.Acciones de política de sombra de dispositivo

`iot:DeleteThingShadow`  
Representa el permiso para eliminar la sombra de dispositivo de un objeto. El permiso `iot:DeleteThingShadow` se comprueba cada vez que se presenta una solicitud para eliminar el contenido de la sombra de dispositivo de un objeto.

`iot:GetThingShadow`  
Representa el permiso para recuperar la sombra de dispositivo de un objeto. El permiso `iot:GetThingShadow` se comprueba cada vez que se presenta una solicitud para eliminar el contenido de la sombra de dispositivo de un objeto.

`iot:ListNamedShadowsForThing`  
Representa el permiso para enumerar las sombras de un objeto. El permiso `iot:ListNamedShadowsForThing` se comprueba cada vez que se presenta una solicitud para enumerar las sombras de un objeto.

`iot:UpdateThingShadow`  
Representa el permiso para actualizar la sombra de un dispositivo. El permiso `iot:UpdateThingShadow` se comprueba cada vez que se presenta una solicitud para actualizar el contenido de la sombra de dispositivo.

**nota**  
Las acciones de política de ejecución de trabajo se aplican únicamente al punto de conexión HTTP TLS. Si utiliza el punto de conexión MQTT, debe utilizar las acciones de política MQTT definidas en este tema.  
Para ver un ejemplo de una política de ejecución de tareas que lo demuestre, compruebe [Ejemplo de políticas de trabajos básica](basic-jobs-example.md) si funciona con el protocolo MQTT.Acciones AWS IoT Core políticas de Job Executions

`iotjobsdata:DescribeJobExecution`  
Representa el permiso para recuperar una ejecución de trabajo para un objeto determinado. El permiso `iotjobsdata:DescribeJobExecution` se comprueba cada vez que se presenta una solicitud para obtener la ejecución de un trabajo.

`iotjobsdata:GetPendingJobExecutions`  
Representa el permiso para recuperar la lista de trabajos que no están en un estado final para un objeto. El permiso `iotjobsdata:GetPendingJobExecutions` se comprueba cada vez que se presenta una solicitud para recuperar la lista. 

`iotjobsdata:UpdateJobExecution`  
Representa el permiso para actualizar una ejecución de trabajo. El permiso `iotjobsdata:UpdateJobExecution` se comprueba cada vez que se presenta una solicitud para actualizar el estado de una ejecución de trabajo.

`iotjobsdata:StartNextPendingJobExecution`  
Representa el permiso para obtener e iniciar la próxima ejecución de trabajo pendiente para un objeto, es decir, para actualizar una ejecución de trabajo con un estado QUEUED a IN\$1PROGRESS. El permiso `iotjobsdata:StartNextPendingJobExecution` se comprueba cada vez que se presenta una solicitud para iniciar la siguiente ejecución de trabajo pendiente.AWS IoT Core Acción política sobre el proveedor de credenciales

`iot:AssumeRoleWithCertificate`  
Representa el permiso para llamar al proveedor de AWS IoT Core credenciales para que asuma una función de IAM con la autenticación basada en certificados. El `iot:AssumeRoleWithCertificate` permiso se comprueba cada vez que se solicita al proveedor de AWS IoT Core credenciales que asuma un rol.

# AWS IoT Core recursos de acción
<a name="iot-action-resources"></a>

Para especificar un recurso para una acción AWS IoT Core política, utilice el nombre de recurso de Amazon (ARN) del recurso. Todos los recursos ARNs siguen el siguiente formato:

```
arn:partition:iot:region:AWS-account-ID:Resource-type/Resource-name
```

En la tabla siguiente se muestra el recurso que debe especificarse para cada tipo de acción. Los ejemplos de ARN son para el ID de cuenta `123456789012`, en la partición `aws` y específicos de la región `us-east-1`. Para obtener más información sobre los formatos ARNs, consulte [Amazon Resource Names (ARNs)](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference-arns.html) en la Guía del AWS Identity and Access Management usuario.


| Action | Tipo de recurso | Nombre del recurso | Ejemplo de ARN | 
| --- | --- | --- | --- | 
| iot:Connect | client |  El ID de cliente del cliente  | arn:aws:iot:us-east-1:123456789012:client/myClientId | 
| iot:DeleteConnection | client |  El ID de cliente del cliente  | arn:aws:iot:us-east-1:123456789012:client/myClientId | 
| iot:DeleteThingShadow | thing |  El nombre de la cosa y el nombre de la sombra, si corresponde  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne arn:aws:iot:us-east-1:123456789012:thing/thingOne/shadowOne  | 
| iotjobsdata:DescribeJobExecution | thing |  El nombre de la cosa  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iotjobsdata:GetPendingJobExecutions | thing |  El nombre de la cosa  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iot:GetRetainedMessage | topic |  Un tema de mensaje retenido  |  arn:aws:iot:us-east-1:123456789012:topic/myTopicName  | 
| iot:GetThingShadow | thing |  El nombre de la cosa y el nombre de la sombra, si corresponde  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne arn:aws:iot:us-east-1:123456789012:thing/thingOne/shadowOne  | 
| iot:ListNamedShadowsForThing | Todos | Todos |  \$1 | 
| iot:ListRetainedMessages | Todos | Todos |  \$1 | 
| iot:Publish | topic |  Una cadena de tema  | arn:aws:iot:us-east-1:123456789012:topic/myTopicName | 
| iot:Receive | topic |  Una cadena de tema  | arn:aws:iot:us-east-1:123456789012:topic/myTopicName | 
| iot:RetainPublish | topic |  Un tema para publicar con el conjunto de indicadores RETAIN  |  arn:aws:iot:us-east-1:123456789012:topic/myTopicName  | 
| iotjobsdata:StartNextPendingJobExecution | thing |  El nombre de la cosa  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iot:Subscribe | topicfilter | Una cadena de filtro de temas | arn:aws:iot:us-east-1:123456789012:topicfilter/myTopicFilter | 
| iotjobsdata:UpdateJobExecution | thing |  El nombre de la cosa  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iot:UpdateThingShadow | thing |  El nombre de la cosa y el nombre de la sombra, si corresponde  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne arn:aws:iot:us-east-1:123456789012:thing/thingOne/shadowOne  | 
| iot:AssumeRoleWithCertificate | rolealias |  El alias de rol que apunta al ARN de rol  |  arn:aws:iot:us-east-1:123456789012:rolealias/CredentialProviderRole\$1alias | 

# AWS IoT Core variables de política
<a name="iot-policy-variables"></a>

AWS IoT Core define las variables de política que se pueden utilizar en AWS IoT Core las políticas del `Condition` bloque `Resource` o. Cuando se evalúa una política, las variables de política se sustituyen por valores reales. Por ejemplo, si un dispositivo está conectado al agente de AWS IoT Core mensajes con un ID de cliente de 100-234-3456, la variable de política se sustituye en el documento de `iot:ClientId` política por 100-234-3456.

AWS IoT Core las políticas pueden utilizar caracteres comodín y seguir una convención similar a la de las políticas de IAM. La inserción de un `*` (asterisco) en la cadena se puede tratar como un comodín, ya que coincide con cualquier carácter. Por ejemplo, se puede utilizar `*` para describir varios nombres de temas de MQTT en el atributo `Resource` de una política. Los caracteres `+` y `#` se tratan como cadenas literales en una política. Para ver un ejemplo de política que muestra cómo usar caracteres comodín, consulte [Uso de caracteres comodín en MQTT y en las políticas AWS IoT Core](pub-sub-policy.md#pub-sub-policy-cert).

También puede utilizar variables políticas predefinidas con valores fijos para representar caracteres que de otro modo tendrían un significado especial. Estos caracteres especiales incluyen `$(*)`, `$(?)` y `$($)`. Para obtener más información sobre las variables de política y los caracteres especiales, consulte [Elementos de la política de IAM: variables y etiquetas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html) y [Creación de una condición con varias claves o valores](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html).

**Topics**
+ [Variables de política básicas AWS IoT Core](basic-policy-variables.md)
+ [Variables de la política de objeto](thing-policy-variables.md)
+ [Variables de AWS IoT Core política de certificados X.509](cert-policy-variables.md)

# Variables de política básicas AWS IoT Core
<a name="basic-policy-variables"></a>

AWS IoT Core define las siguientes variables de política básicas:
+ `aws:SourceIp`: la dirección IP del cliente conectado al agente de AWS IoT Core mensajes.
+ `iot:ClientId`: es el ID de cliente que se utiliza para conectarse con el agente de mensajes de AWS IoT Core .
+ `iot:DomainName`: el nombre de dominio del cliente al que está conectado AWS IoT Core.

**Topics**
+ [Ejemplos de `ClientId` y variables de política `SourceIp`](#basic-policy-variables-example)
+ [Ejemplos de la variable de política `iot:DomainName`](#basic-policy-variables-example-domain)

## Ejemplos de `ClientId` y variables de política `SourceIp`
<a name="basic-policy-variables-example"></a>

La siguiente AWS IoT Core política muestra una política que utiliza variables de política. `aws:SourceIp`se puede usar en el elemento Condición de tu política para permitir que los directores realicen solicitudes a la API solo dentro de un rango de direcciones específico. Para ver ejemplos, consulte [Autorizar a los usuarios y los servicios en la nube a usar Jobs AWS IoT](iam-policy-users-jobs.md).

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/clientid1"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:ClientId}"
			],
			"Condition": {
				"IpAddress": {
					"aws:SourceIp": "123.45.167.89"
				}
			}
		}
	]
}
```

En estos ejemplos, `${iot:ClientId}` se sustituye por el ID del cliente conectado al agente de AWS IoT Core mensajes cuando se evalúa la política. Cuando utiliza variables de la política como `${iot:ClientId}`, puede abrir de forma accidental el acceso a temas que no quería incluir. Por ejemplo, si utiliza una política que utiliza `${iot:ClientId}` para especificar un filtro de temas:

```
{
	"Effect": "Allow",
	"Action": [
		"iot:Subscribe"
	],
	"Resource": [
		"arn:aws:iot:us-east-1:123456789012:topicfilter/my/${iot:ClientId}/topic"
	]
}
```

Un cliente puede conectarse usando `+` como ID de cliente. Esto puede permitir al usuario suscribirse a cualquier tema que coincida con el filtro de temas `my/+/topic`. Para protegerse contra estas brechas de seguridad, utilice la acción `iot:Connect` política para controlar qué cliente IDs se puede conectar. Por ejemplo, esta política permite conectarse únicamente a los clientes cuyo ID de cliente sea `clientid1`:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/clientid"
			]
		}
	]
}
```

**nota**  
No se recomienda utilizar la variable de política `${iot:ClientId}` con `Connect`. No se comprueba el valor de `ClientId`, por lo que un asociador con un identificador de cliente diferente puede superar la validación pero provocar la desconexión. Como cualquier `ClientId` está permitido, si se establece un ID de cliente aleatorio, se pueden omitir las políticas de los grupos de objetos.

## Ejemplos de la variable de política `iot:DomainName`
<a name="basic-policy-variables-example-domain"></a>

Puede agregar la variable de política `iot:DomainName` para restringir los dominios que se pueden usar. Agregar la variable de política `iot:DomainName` permite que los dispositivos se conecten solo a determinados puntos de conexión configurados.

La siguiente política permite que los dispositivos se conecten al dominio especificado.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": {
		"Sid": "AllowConnectionsToSpecifiedDomain",
		"Effect": "Allow",
		"Action": [
			"iot:Connect"
		],
		"Resource": "arn:aws:iot:us-east-1:123456789012:client/clientid",
		"Condition": {
			"StringEquals": {
				"iot:DomainName": "d1234567890abcdefghij-ats.iot.us-east-1.amazonaws.com"
			}
		}
	}
}
```

La siguiente política impide que los dispositivos se conecten al dominio especificado.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": {
		"Sid": "DenyConnectionsToSpecifiedDomain",
		"Effect": "Deny",
		"Action": [
			"iot:Connect"
		],
		"Resource": "arn:aws:iot:us-east-1:123456789012:client/clientid",
		"Condition": {
			"StringEquals": {
				"iot:DomainName": "d1234567890abcdefghij-ats.iot.us-east-1.amazonaws.com"
			}
		}
	}
}
```

Para obtener más información acerca de los operadores de condición de las políticas, consulte [Elementos de la política de JSON de IAM: operadores de condición](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html). Para obtener más información sobre las configuraciones de dominios, consulte [What is a domain configuration?](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html).

# Variables de la política de objeto
<a name="thing-policy-variables"></a>

Las variables de política de cosas permiten escribir AWS IoT Core políticas que concedan o denieguen permisos en función de las propiedades de las cosas, como los nombres, los tipos y los valores de los atributos de las cosas. Puede usar variables de política de cosas para aplicar la misma política y controlar muchos AWS IoT Core dispositivos. Para obtener más información acerca del aprovisionamiento de dispositivos, consulte [Aprovisionamiento de dispositivos](iot-provision.html).

Si utiliza una asociación de objetos no exclusiva, se puede asociar el mismo certificado a varios objetos. Para mantener una asociación clara y evitar posibles conflictos, debe hacer coincidir el ID de cliente con el nombre del objeto. En este caso, el nombre de la cosa se obtiene del ID de cliente del `Connect` mensaje MQTT que se envía cuando una cosa se conecta a AWS IoT Core ella.

Tenga en cuenta lo siguiente cuando utilice variables en las políticas de AWS IoT Core .
+ Utilice la [AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html)API para adjuntar certificados o principios (identidades autenticadas de Amazon Cognito) a un objeto.
+ Si existe una asociación de objetos no exclusiva, al reemplazar los nombres de objeto con variables de política de objeto, el valor de `clientId` en el mensaje de conexión de MQTT o la conexión TLS deben coincidir exactamente con el nombre del objeto.

Las siguientes variables de política de objeto están disponibles:
+ `iot:Connection.Thing.ThingName`

  Esto se traduce en el nombre del elemento del AWS IoT Core registro para el que se está evaluando la política. AWS IoT Core usa el certificado que presenta el dispositivo cuando se autentica para determinar qué se debe usar para verificar la conexión. Esta variable de política solo está disponible cuando un dispositivo se conecta a través de MQTT o MQTT a través del protocolo. WebSocket 
+ `iot:Connection.Thing.ThingTypeName`

  Esta variable se resuelve en el tipo de objeto asociado al objeto para el que se evalúa la política. El ID de cliente de la WebSocket conexión MQTT/ debe ser el mismo que el nombre del elemento. Esta variable de política solo está disponible cuando se conecta a través de MQTT o MQTT a través del protocolo. WebSocket
+ `iot:Connection.Thing.Attributes[attributeName]`

  Esta variable se resuelve en el valor del atributo especificado asociado al objeto para el que se evalúa la política. Un objeto puede tener hasta 50 atributos. Cada atributo está disponible como una variable de política: `iot:Connection.Thing.Attributes[attributeName]` donde *attributeName* está el nombre del atributo. El ID de cliente de la MQTT/WebSocket conexión debe ser el mismo que el nombre de la cosa. Esta variable de política solo está disponible cuando se conecta a través de MQTT o MQTT a través del WebSocket protocolo.
+ `iot:Connection.Thing.IsAttached`

  `iot:Connection.Thing.IsAttached: ["true"]`obliga a que solo los dispositivos que estén registrados AWS IoT y conectados a la red principal puedan acceder a los permisos incluidos en la política. Puede utilizar esta variable para impedir que un dispositivo se conecte AWS IoT Core si presenta un certificado que no esté adjunto a un elemento de IoT en el AWS IoT Core registro. Esta variable tiene valores que `false` indican que el elemento de conexión está adjunto al certificado `true` o a la identidad de Amazon Cognito en el registro mediante la API. [AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html) El nombre de la cosa se toma como identificador de cliente. 

Si el ID de cliente coincide con el nombre de objeto o si asocia el certificado a un objeto de forma exclusiva, el uso de variables de política en la definición de la política puede simplificar la administración de políticas. En lugar de crear políticas individuales para cada elemento de IoT, puede definir una única política mediante las variables de política del objeto. Esta política se puede aplicar a todos los dispositivos de forma dinámica. A continuación, se muestra un ejemplo de política que muestra cómo funciona. Para obtener más información, consulte [Asociar cualquier AWS IoT cosa a una conexión de cliente MQTT](exclusive-thing.md).

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Condition": {
				"StringLike": {
					"iot:ClientId": "*${iot:Connection.Thing.Attributes[envType]}"
				}
			},
			"Effect": "Allow",
			"Action": "iot:Connect",
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/*"
		}
	]
}
```

Este ejemplo de política permite que las cosas se conecten AWS IoT Core si su ID de cliente termina con el valor de su atributo. `envType` Solo se permitirá la conexión a los objetos con un patrón de ID de cliente que coincide.

# Variables de AWS IoT Core política de certificados X.509
<a name="cert-policy-variables"></a>

Las variables de política de certificados X.509 ayudan a escribir AWS IoT Core políticas. Estas políticas conceden permisos en función de los atributos del certificado X.509. En las siguientes secciones se describe cómo se pueden utilizar estas variables de política de certificado.

**importante**  
Si el certificado X.509 no incluye un atributo de certificado concreto, pero la variable de política de certificados correspondiente se utiliza en el documento de política, la evaluación de la política podría provocar un comportamiento inesperado.

## CertificateId
<a name="cert-policy-variables-certid"></a>

En la [RegisterCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCertificate.html)API, `certificateId` aparece en el cuerpo de la respuesta. Para obtener información sobre su certificado, utilice el formulario `certificateId` in [DescribeCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeCertificate.html).

## Atributos de emisor
<a name="issuer-attributes"></a>

Las siguientes variables AWS IoT Core de política permiten permitir o denegar permisos, en función de los atributos del certificado establecidos por el emisor del certificado.
+ `iot:Certificate.Issuer.DistinguishedNameQualifier`
+ `iot:Certificate.Issuer.Country`
+ `iot:Certificate.Issuer.Organization`
+ `iot:Certificate.Issuer.OrganizationalUnit`
+ `iot:Certificate.Issuer.State`
+ `iot:Certificate.Issuer.CommonName`
+ `iot:Certificate.Issuer.SerialNumber`
+ `iot:Certificate.Issuer.Title`
+ `iot:Certificate.Issuer.Surname`
+ `iot:Certificate.Issuer.GivenName`
+ `iot:Certificate.Issuer.Initials`
+ `iot:Certificate.Issuer.Pseudonym`
+ `iot:Certificate.Issuer.GenerationQualifier` 

## Atributos de sujeto
<a name="subject-attributes"></a>

Las siguientes variables AWS IoT Core de política permiten conceder o denegar permisos, en función de los atributos del sujeto del certificado establecidos por el emisor del certificado.
+ `iot:Certificate.Subject.DistinguishedNameQualifier`
+ `iot:Certificate.Subject.Country`
+ `iot:Certificate.Subject.Organization`
+ `iot:Certificate.Subject.OrganizationalUnit`
+ `iot:Certificate.Subject.State`
+ `iot:Certificate.Subject.CommonName`
+ `iot:Certificate.Subject.SerialNumber`
+ `iot:Certificate.Subject.Title`
+ `iot:Certificate.Subject.Surname`
+ `iot:Certificate.Subject.GivenName`
+ `iot:Certificate.Subject.Initials`
+ `iot:Certificate.Subject.Pseudonym`
+ `iot:Certificate.Subject.GenerationQualifier` 

Los certificados X.509 permiten que estos atributos contengan uno o varios valores. De forma predeterminada, las variables de política de cada atributo de varios valores devuelven el primer valor. Por ejemplo, el atributo `Certificate.Subject.Country` podría contener una lista de nombres de países, pero cuando se evalúa en una política, `iot:Certificate.Subject.Country` se reemplaza por el nombre del primer país.

Puede solicitar un valor de atributo específico distinto del primero mediante un índice de base uno. Por ejemplo, `iot:Certificate.Subject.Country.1` se sustituye por el nombre del segundo país en el atributo `Certificate.Subject.Country`. Si especifica un valor de índice que no existe (por ejemplo, si pide un tercer valor cuando el atributo solo tiene dos valores asignados), no se realizará ninguna sustitución y la autorización dará un resultado erróneo. Puede utilizar el sufijo `.List` en el nombre de la variable de política para especificar todos los valores del atributo.

## Atributos de nombre alternativo del emisor
<a name="issuer-alternate-name-attributes"></a>

Las siguientes variables AWS IoT Core de política permiten conceder o denegar permisos, en función de los atributos de nombre alternativo del emisor establecidos por el emisor del certificado.
+ `iot:Certificate.Issuer.AlternativeName.RFC822Name`
+ `iot:Certificate.Issuer.AlternativeName.DNSName`
+ `iot:Certificate.Issuer.AlternativeName.DirectoryName`
+ `iot:Certificate.Issuer.AlternativeName.UniformResourceIdentifier`
+ `iot:Certificate.Issuer.AlternativeName.IPAddress`

## Atributos de nombre alternativo de sujeto
<a name="subject-alternate-name-attributes"></a>

Las siguientes variables AWS IoT Core de política permiten conceder o denegar permisos, en función de los atributos del nombre alternativo del sujeto establecidos por el emisor del certificado.
+ `iot:Certificate.Subject.AlternativeName.RFC822Name`
+ `iot:Certificate.Subject.AlternativeName.DNSName`
+ `iot:Certificate.Subject.AlternativeName.DirectoryName`
+ `iot:Certificate.Subject.AlternativeName.UniformResourceIdentifier`
+ `iot:Certificate.Subject.AlternativeName.IPAddress`

## Otros atributos
<a name="other-attributes"></a>

Puede utilizarlas `iot:Certificate.SerialNumber` para permitir o denegar el acceso a AWS IoT Core los recursos, en función del número de serie de un certificado. La variable de política `iot:Certificate.AvailableKeys` contiene el nombre de todas las variables de política de certificado que contienen valores.

# Uso de variables de política de certificado X.509
<a name="use-policy-variables"></a>

En este tema se explica cómo utilizar las variables de política de certificados. Las variables de política de certificado X.509 son esenciales para crear políticas de AWS IoT Core que concedan permisos basados en los atributos de certificado X.509. Si el certificado X.509 no incluye un atributo de certificado concreto, pero la variable de política de certificados correspondiente se utiliza en el documento de política, la evaluación de la política podría provocar un comportamiento inesperado. Esto se debe a que la variable de política que falta no se evalúa en la instrucción de la política.

**Topics**
+ [Ejemplo de certificado X.509](#certificate-example)
+ [Uso de los atributos del emisor del certificado como variables de política de certificados](#issuer-attributes-policy)
+ [Uso de los atributos del sujeto del certificado como variables de política de certificados](#subject-attributes-policy)
+ [Uso de los atributos del nombre alternativo del emisor del certificado como variables de la política de certificados](#issuer-alternate-name-attributes-policy)
+ [Uso de los atributos del nombre alternativo del sujeto del certificado como variables de la política de certificados](#subject-alternate-name-attributes-policy)
+ [Uso de otro atributo del certificado como variable de política de certificados](#other-attributes-policy)
+ [Limitaciones aplicables a las variables de política de certificado X.509](#policy-limits)
+ [Ejemplos de políticas que utilizan variables de política de certificados](#example-attributes-policy)

## Ejemplo de certificado X.509
<a name="certificate-example"></a>

Un certificado X.509 típico puede tener el siguiente aspecto. Este certificado de ejemplo incluye los atributos del certificado. Durante la evaluación de las políticas de AWS IoT Core , los siguientes atributos del certificado se rellenarán como variables de la política de certificado: `Serial Number`, `Issuer`, `Subject`, `X509v3 Issuer Alternative Name` y `X509v3 Subject Alternative Name`.

```
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            92:12:85:cb:b7:a5:e0:86
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=IoT Devices, OU=SmartHome, ST=WA, CN=IoT Devices Primary CA, 
				GN=Primary CA1/initials=XY/dnQualifier=Example corp,
				SN=SmartHome/ title=CA1/pseudonym=Primary_CA/generationQualifier=2/serialNumber=987		
        Validity
            Not Before: Mar 26 03:25:40 2024 GMT
            Not After : Apr 28 03:25:40 2025 GMT
        Subject: C=US, O=IoT Devices, OU=LightBulb, ST=NY, CN=LightBulb Device Cert, 
				GN=Bulb/initials=ZZ/dnQualifier=Bulb001, 
				SN=Multi Color/title=RGB/pseudonym=RGB Device/generationQualifier=4/serialNumber=123
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    << REDACTED >>
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            X509v3 Key Usage: 
                Digital Signature, Non Repudiation, Key Encipherment
            X509v3 Subject Alternative Name: 
                DNS:example.com, IP Address:1.2.3.4, URI:ResourceIdentifier001, email:device1@example.com, DirName:/C=US/O=IoT/OU=SmartHome/CN=LightBulbCert
            X509v3 Issuer Alternative Name: 
                DNS:issuer.com, IP Address:5.6.7.8, URI:PrimarySignerCA, email:primary@issuer.com, DirName:/C=US/O=Issuer/OU=IoT Devices/CN=Primary Issuer CA
    Signature Algorithm: sha256WithRSAEncryption
         << REDACTED >>
```

## Uso de los atributos del emisor del certificado como variables de política de certificados
<a name="issuer-attributes-policy"></a>

La siguiente tabla proporciona detalles sobre cómo se rellenarán los atributos del emisor del certificado en una AWS IoT Core política.


**Atributos del emisor que se deben rellenar en una política**  

| Atributos del emisor de certificados | Variables de política de certificados | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/use-policy-variables.html)  | 

## Uso de los atributos del sujeto del certificado como variables de política de certificados
<a name="subject-attributes-policy"></a>

La siguiente tabla proporciona detalles sobre cómo se rellenarán los atributos del sujeto del certificado en una AWS IoT Core política.


**Atributos del sujeto que se van a rellenar en una política**  

| Atributos del sujeto del certificado | Variables de política de certificados | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/use-policy-variables.html)  | 

## Uso de los atributos del nombre alternativo del emisor del certificado como variables de la política de certificados
<a name="issuer-alternate-name-attributes-policy"></a>

En la siguiente tabla se proporcionan detalles sobre cómo se rellenan los atributos del nombre alternativo del emisor de certificados en una política de AWS IoT Core .


**Atributos del nombre alternativo del emisor que se deben rellenar en una política**  

| Nombre alternativo del emisor de X509v3 | Atributo de una política | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/use-policy-variables.html)  | 

## Uso de los atributos del nombre alternativo del sujeto del certificado como variables de la política de certificados
<a name="subject-alternate-name-attributes-policy"></a>

En la siguiente tabla se proporcionan detalles sobre cómo se rellenan los atributos del nombre alternativo del sujeto de certificados en una política de AWS IoT Core .


**Atributos del nombre alternativo del sujeto que se deben rellenar en una política**  

| Nombre alternativo del sujeto de X509v3 | Atributo de una política | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/use-policy-variables.html)  | 

## Uso de otro atributo del certificado como variable de política de certificados
<a name="other-attributes-policy"></a>

La siguiente tabla proporciona detalles sobre cómo se rellenarán los demás atributos del certificado en una AWS IoT Core política.


**Otros atributos que se deben rellenar en una política**  

| Otro atributo de certificado | Variable de política de certificado | 
| --- | --- | 
|  `Serial Number: 92:12:85:cb:b7:a5:e0:86`  |  `iot:Certificate.SerialNumber = 10525622389124227206`  | 

## Limitaciones aplicables a las variables de política de certificado X.509
<a name="policy-limits"></a>

Las siguientes limitaciones se aplican a las variables de política de certificado X.509:

Variables de política que faltan  
Si el certificado X.509 no incluye un atributo de certificado concreto, pero la variable de política de certificados correspondiente se utiliza en el documento de política, la evaluación de la política podría provocar un comportamiento inesperado. Esto se debe a que la variable de política que falta no se evalúa en la instrucción de la política.

 SerialNumber Formato de certificado  
AWS IoT Core trata el número de serie del certificado como la representación en cadena de un entero decimal. Por ejemplo, si una política solo permite conexiones con un identificador de cliente que coincida con el número de serie del certificado, el identificador de cliente debe ser el número de serie en formato decimal.

Caracteres comodín  
Si los atributos de certificado contienen caracteres de certificado, la variable de política no se sustituirá por el valor de atributo del certificado. Esto dejará el texto `${policy-variable}` en el documento de política. Esto puede producir un error de autorización. Se pueden utilizar los siguientes caracteres comodín: `*`, `$`, `+`, `?` y `#`.

Campos de matriz  
Los atributos de certificado que contienen matrices se limitan a cinco elementos. No se tendrán en cuenta los elementos adicionales.

Longitud de cadena  
Todos los valores de cadena están limitados a 1024 caracteres. Si un atributo de certificado contiene una cadena de más de 1024 caracteres, la variable de política no se sustituirá por el valor de atributo del certificado. Esto dejará el texto `${policy-variable}` en el documento de política. Esto puede producir un error de autorización.

Caracteres especiales  
Cualquier carácter especial, como `,`, `"`, `\`, `+`, `=`, `<`, `>` y `;` debe tener el prefijo de una barra invertida (`\`) cuando se utiliza en una variable de política. Por ejemplo, `Amazon Web Services O=Amazon.com Inc. L=Seattle ST=Washington C=US` se convierte en `Amazon Web Service O\=Amazon.com Inc. L\=Seattle ST\=Washington C\=US`.

## Ejemplos de políticas que utilizan variables de política de certificados
<a name="example-attributes-policy"></a>

El siguiente documento de política permite las conexiones con un ID de cliente que coincida con el número de serie del certificado y la publicación en el tema que coincida con el patrón `${iot:Certificate.Subject.Organization}/device-stats/${iot:ClientId}/*`. 

**importante**  
Si el certificado X.509 no incluye un atributo de certificado concreto, pero la variable de política de certificados correspondiente se utiliza en el documento de política, la evaluación de la política podría provocar un comportamiento inesperado. Esto se debe a que la variable de política que falta no se evalúa en la instrucción de la política. Por ejemplo, si asocia el siguiente documento de política a un certificado que no contiene el atributo `iot:Certificate.Subject.Organization`, las variables de la política de certificado `iot:Certificate.Subject.Organization` no se rellenarán durante la evaluación de la política.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Certificate.SerialNumber}"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/${iot:Certificate.Subject.Organization}/device-stats/${iot:ClientId}/*"
			]
		}
	]
}
```

También puede usar el [operador de condición Null](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null) para asegurarse de que las variables de política de certificados utilizadas en una política se rellenen durante la evaluación de la política. El siguiente documento de política permite `iot:Connect` con certificados solo cuando están presentes los atributos número de serie del certificado y nombre común del sujeto del certificado.

Todas las variables de la política de certificados tienen valores de cadena, por lo que se admiten todos [los operadores de condición de cadena](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String).

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/*"
			],
			"Condition": {
				"Null": {
					"iot:Certificate.SerialNumber": "false",
					"iot:Certificate.Subject.CommonName": "false"
				}
			}
		}
	]
}
```

# Prevención de la sustitución confusa entre servicios
<a name="cross-service-confused-deputy-prevention"></a>

El *problema de la sustitución confusa* es un problema de seguridad en el que una entidad que no tiene permiso para realizar una acción puede obligar a una entidad con más privilegios a realizar la acción. En AWS, la suplantación de identidad entre servicios puede provocar el confuso problema de un diputado. La suplantación entre servicios puede producirse cuando un servicio (el *servicio que lleva a cabo las llamadas*) llama a otro servicio (el *servicio al que se llama*). El servicio que lleva a cabo las llamadas se puede manipular para utilizar sus permisos a fin de actuar en función de los recursos de otro cliente de una manera en la que no debe tener permiso para acceder. Para evitarlo, AWS proporciona herramientas que le ayudan a proteger sus datos para todos los servicios con entidades principales de servicio a las que se les ha dado acceso a los recursos de su cuenta. 

Para limitar los permisos que AWS IoT otorga otro servicio al recurso, se recomienda utilizar las claves de contexto de condición [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)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)y las claves contextuales globales en las políticas de recursos. Si se utilizan ambas claves contextuales de condición global, el valor `aws:SourceAccount` y la cuenta del valor `aws:SourceArn` deben utilizar el mismo ID de cuenta cuando se utilicen en la misma declaración de política.

La forma más eficaz de protegerse contra el problema de la sustitución confusa es utilizar la clave de contexto de condición global de `aws:SourceArn` con el nombre de recurso de Amazon (ARN) completo del recurso. Para AWS IoT ello, `aws:SourceArn` debe cumplir con el formato: `arn:aws:iot:region:account-id:resource-type/resource-id` para permisos específicos del recurso o`arn:aws:iot:region:account-id:*`. El identificador del recurso puede ser el nombre o el identificador del recurso permitido o una declaración comodín del recurso permitido. IDs Asegúrese de que *region* coincida con su AWS IoT región y con el ID de su *account-id* cuenta de cliente. 

El siguiente ejemplo muestra cómo evitar el confuso problema de los diputados mediante el uso de las claves de contexto `aws:SourceArn` y condición `aws:SourceAccount` global de la política de confianza de AWS IoT roles. Para obtener más ejemplos, consulte [Ejemplos detallados de prevención del suplente confuso](#cross-service-confused-deputy-prevention-examples).

****  

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

**nota**  
Si recibe errores de denegación de acceso, puede deberse a que la integración del servicio con AWS Security Token Service (STS) no admita las claves de contexto `aws:SourceArn` y `aws:SourceAccount`.

## Ejemplos detallados de prevención del suplente confuso
<a name="cross-service-confused-deputy-prevention-examples"></a>

**En esta sección se proporcionan ejemplos detallados de cómo evitar el confuso problema de los diputados mediante el uso de las claves de contexto `aws:SourceArn` y condición `aws:SourceAccount` global de la política de confianza de AWS IoT roles.**
+ [Aprovisionamiento de flotas](#cross-service-confused-deputy-prevention-fleet-provision)
+ [JITP](#cross-service-confused-deputy-prevention-JITP)
+ [Proveedor de credenciales](#cross-service-confused-deputy-prevention-credential-provider)

### Aprovisionamiento de flotas
<a name="cross-service-confused-deputy-prevention-fleet-provision"></a>

Puede configurar el [aprovisionamiento de flotas](https://docs.aws.amazon.com/iot/latest/developerguide/iot-provision.html) con un recurso de plantilla de aprovisionamiento. Cuando una plantilla de aprovisionamiento hace referencia a un rol de aprovisionamiento, la política de confianza de ese rol puede incluir las claves de condición `aws:SourceArn` y `aws:SourceAccount`. Estas claves limitan los recursos para los que la configuración puede invocar la solicitud `sts:AssumeRole`.

El rol con la siguiente política de confianza solo lo puede asumir la entidad principal de IoT (`iot.amazonaws.com`) para la plantilla de aprovisionamiento especificada en el `SourceArn`.

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":"iot.amazonaws.com"
         },
         "Action":"sts:AssumeRole",
         "Condition":{
            "StringEquals":{
               "aws:SourceAccount":"123456789012"
        },
            "ArnLike":{
               "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:provisioningtemplate/example_template"
        }
         }
      }
   ]
}
```

### JITP
<a name="cross-service-confused-deputy-prevention-JITP"></a>

En el [just-in-time aprovisionamiento (JITP)](https://docs.aws.amazon.com//iot/latest/developerguide/jit-provisioning.html), puede utilizar la plantilla de aprovisionamiento como un recurso independiente de la CA o definir el cuerpo de la plantilla y la función como parte de la configuración del certificado de la CA. El valor de la política de confianza `aws:SourceArn` en el AWS IoT rol depende de cómo se defina la plantilla de aprovisionamiento.

#### Definición de la plantilla de aprovisionamiento como un recurso independiente
<a name="cross-service-confused-deputy-prevention-JITP-template"></a>

Si define la plantilla de aprovisionamiento como un recurso independiente, el valor de `aws:SourceArn` puede ser `"arn:aws:iot:region:account-id:provisioningtemplate/example_template"`. Puede usar el mismo ejemplo de política en [Aprovisionamiento de flotas](#cross-service-confused-deputy-prevention-fleet-provision).

#### Definición de la plantilla de aprovisionamiento en un certificado de CA
<a name="cross-service-confused-deputy-prevention-JITP-CA"></a>

Si define la plantilla de aprovisionamiento en un recurso de certificado de CA, el valor de `aws:SourceArn` puede ser `"arn:aws:iot:region:account-id:cacert/cert_id"` o `"arn:aws:iot:region:account-id:cacert/*"`. Puede usar un comodín si desconoce el identificador del recurso (como el ID de un certificado de CA) en el momento de la creación.

El rol con la siguiente política de confianza solo lo puede asumir la entidad principal de IoT (`iot.amazonaws.com`) para el certificado de CA especificado en el `SourceArn`.

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":"iot.amazonaws.com"
         },
         "Action":"sts:AssumeRole",
         "Condition":{
            "StringEquals":{
               "aws:SourceAccount":"123456789012"
        },
            "ArnLike":{
               "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:cacert/8ecde6884f3d87b1125ba31ac3fcb13d7016de7f57cc904fe1cb97c6ae98196e"
        }
         }
      }
   ]
}
```

Al crear un certificado de CA, puede hacer referencia a un rol de aprovisionamiento en la configuración de registro. La política de confianza del rol de aprovisionamiento puede utilizar el `aws:SourceArn` para restringir los recursos de los que se puede asumir el rol. [Sin embargo, durante la CACertificate llamada de registro inicial para registrar el certificado de CA, no tendría que especificar el ARN del certificado de CA en la `aws:SourceArn` condición.](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html)

Para solucionar este problema, es decir, para especificar la política de confianza de la función de aprovisionamiento para el certificado de CA específico con el que está registrado AWS IoT Core, puede hacer lo siguiente:
+ En primer lugar, llama a [Register CACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html) sin proporcionar el `RegistrationConfig` parámetro.
+ Una vez registrado el certificado de CA AWS IoT Core, llame a [Update CACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCACertificate.html) en él.

  En la CACertificate llamada de actualización, proporcione una `RegistrationConfig` que incluya la política de confianza de la función de aprovisionamiento `aws:SourceArn` establecida en el ARN del certificado de CA recién registrado.

### Proveedor de credenciales
<a name="cross-service-confused-deputy-prevention-credential-provider"></a>

Para el [proveedor de AWS IoT Core credenciales](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.html), utilice el mismo Cuenta de AWS que utiliza para crear el alias del rol y especifique una sentencia que coincida con el ARN del recurso del tipo de recurso rolealias en. `aws:SourceAccount` `aws:SourceArn` Al crear un rol de IAM para usarlo con el proveedor de AWS IoT Core credenciales, debe incluir en la `aws:SourceArn` condición de cualquier alias ARNs de rol que pueda necesitar asumir el rol, autorizando así la solicitud de servicios cruzados. `sts:AssumeRole`

El rol con la siguiente política de confianza solo lo puede asumir la entidad principal del proveedor de credenciales de AWS IoT Core (`credentials.iot.amazonaws.com`) para el roleAlias especificado en el `SourceArn`. Si una entidad principal intenta obtener las credenciales de un alias de rol distinto del especificado en la condición `aws:SourceArn`, se denegará la solicitud, incluso si ese otro alias de rol hace referencia al mismo rol de IAM.

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "credentials.iot.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:iot:us-east-1:123456789012:rolealias/example_rolealias"
        }
      }
    }
  ]
}
```

# AWS IoT Core ejemplos de políticas
<a name="example-iot-policies"></a>

Los ejemplos de políticas de esta sección ilustran los documentos de políticas que se utilizan para completar tareas comunes en AWS IoT Core. Puede utilizarlos como ejemplos para empezar a crear las políticas para sus soluciones.<a name="example-iot-policies-elements"></a>

Los ejemplos de esta sección utilizan estos elementos de política:
+ [AWS IoT Core acciones políticas](iot-policy-actions.md)
+ [AWS IoT Core recursos de acción](iot-action-resources.md)
+ [AWS IoT ejemplos de políticas basadas en la identidad](security_iam_id-based-policy-examples.md)
+ [Variables de política básicas AWS IoT Core](basic-policy-variables.md)
+ [Variables de AWS IoT Core política de certificados X.509](cert-policy-variables.md)

**Topics**
+ [Ejemplos de política de conexión](connect-policy.md)
+ [Ejemplos de política de publicación/suscripción](pub-sub-policy.md)
+ [Ejemplos de políticas de conexión y publicación](connect-and-pub.md)
+ [Ejemplos de políticas de mensajes retenidos](retained-message-policy-examples.md)
+ [Ejemplos de políticas de certificado](certificate-policy-examples.md)
+ [Ejemplos de políticas de objeto](thing-policy-examples.md)
+ [Ejemplo de políticas de trabajos básica](basic-jobs-example.md)

# Ejemplos de política de conexión
<a name="connect-policy"></a>

La siguiente política deniega el permiso al cliente IDs `client1` y `client2` al que conectarse AWS IoT Core, al tiempo que permite que los dispositivos se conecten mediante un ID de cliente. El ID de cliente coincide con el nombre de un elemento registrado en el AWS IoT Core registro y adjunto al principal que se utiliza para la conexión:

**nota**  
En el caso de los dispositivos registrados, recomendamos que utilice [variables de política de objetos](thing-policy-variables.md) para las acciones de `Connect` y que los asocie a la entidad principal que se utiliza para la conexión.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Deny",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/client1",
				"arn:aws:iot:us-east-1:123456789012:client/client2"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			],
			"Condition": {
				"Bool": {
					"iot:Connection.Thing.IsAttached": "true"
				}
			}
		}
	]
}
```

La siguiente política otorga permiso para conectarse AWS IoT Core con el ID de cliente`client1`. Este ejemplo de política es para dispositivos no registrados.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/client1"
			]
		}
	]
}
```

## Ejemplos de políticas de sesiones persistentes de MQTT
<a name="persistent-sessions-examples"></a>

`connectAttributes` le permite especificar qué atributos quiere usar en su mensaje de conexión en sus políticas de IAM, como `PersistentConnect` y `LastWill`. Para obtener más información, consulte [Uso de connectAttributes](mqtt.md#connect-attribute).

La siguiente política permite conectarse con la característica `PersistentConnect`:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect"
					]
				}
			}
		}
	]
}
```

La siguiente política no permite `PersistentConnect`, pero se permiten otras características:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringNotEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect"
					]
				}
			}
		}
	]
}
```

La política anterior también puede expresarse utilizando `StringEquals`, se permite cualquier otra característica, incluidas las nuevas:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1"
        },
        {
            "Effect": "Deny",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:ConnectAttributes": [
                        "PersistentConnect"
                    ]
            }
        }
        }
    ]
}
```

La siguiente política permite la conexión mediante `PersistentConnect` y `LastWill`, pero no se permite ninguna otra característica nueva:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect",
						"LastWill"
					]
				}
			}
		}
	]
}
```

La siguiente política permite la conexión limpia por parte de clientes con o sin `LastWill`, no se permitirá ninguna otra característica:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "iot:Connect"
        ],
        "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
        "Condition": {
            "StringEquals": {
                "iot:ConnectAttributes": "LastWill"
        }
        }
    }]
}
```

La siguiente política solo permite la conexión mediante las características predeterminadas:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": []
				}
			}
		}
	]
}
```

La siguiente política permite conectarse únicamente con `PersistentConnect`, se permite cualquier característica nueva siempre que la conexión utilice `PersistentConnect`:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:ConnectAttributes": [
                        "PersistentConnect"
                    ]
            }
        }
        }
    ]
}
```

La siguiente política establece que la conexión debe tener uso de `PersistentConnect` y `LastWill`, no se permite ninguna característica nueva:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect",
						"LastWill"
					]
				}
			}
		},
		{
			"Effect": "Deny",
			"Action": [
				"iot:Connect"
			],
			"Resource": "*",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect"
					]
				}
			}
		},
		{
			"Effect": "Deny",
			"Action": [
				"iot:Connect"
			],
			"Resource": "*",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"LastWill"
					]
				}
			}
		},
		{
			"Effect": "Deny",
			"Action": [
				"iot:Connect"
			],
			"Resource": "*",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": []
				}
			}
		}
	]
}
```

La siguiente política no debe tener `PersistentConnect` pero puede tener `LastWill`, no se permite ninguna otra característica nueva:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:ConnectAttributes": [
                        "PersistentConnect"
                    ]
            }
        }
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
            "Condition": {
                "ForAllValues:StringEquals": {
                    "iot:ConnectAttributes": [
                        "LastWill"
                    ]
            }
        }
        }
    ]
}
```

La siguiente política solo permite que los clientes que tengan un `LastWill` con tema `"my/lastwill/topicName"`, se permite cualquier característica siempre que utilice el tema `LastWill`:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
            "Condition": {
                "ArnEquals": {
                "iot:LastWillTopic": "arn:aws:iot:us-east-1:123456789012:topic/my/lastwill/topicName"
            }
        }
        }
    ]
}
```

La siguiente política permite conectarse únicamente con un `LastWillTopic` específico, se permite cualquier característica nueva siempre que la conexión utilice `LastWillTopic`:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
            "Condition": {
                "ArnEquals": {
                "iot:LastWillTopic": "arn:aws:iot:us-east-1:123456789012:topic/my/lastwill/topicName"
            }
        }
        },
        {
            "Effect": "Deny",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:ConnectAttributes": [
                        "PersistentConnect"
                    ]
            }
        }
        }
    ]
}
```

# Ejemplos de política de publicación/suscripción
<a name="pub-sub-policy"></a>

La política que utilices depende de la forma a la que te conectes AWS IoT Core. Puedes conectarte AWS IoT Core mediante un cliente MQTT, HTTP o WebSocket. Al conectarse con un cliente MQTT, se autenticará con un certificado X.509. Cuando se conecta a través de HTTP o el WebSocket protocolo, se autentica con Signature Version 4 y Amazon Cognito. 

**nota**  
En el caso de los dispositivos registrados, recomendamos que utilice [variables de política de objetos](thing-policy-variables.md) para las acciones de `Connect` y que los asocie a la entidad principal que se utiliza para la conexión. 

**Topics**
+ [Uso de caracteres comodín en MQTT y en las políticas AWS IoT Core](#pub-sub-policy-cert)
+ [Políticas para publicar, suscribirse y recibir mensajes sobre temas to/from específicos](#pub-sub-specific-topic)
+ [Políticas para publicar, suscribirse y recibir mensajes y temas con un prefijo específico to/from](#pub-sub-policy-specific-topic-prefix)
+ [Políticas para publicar, suscribirse y recibir mensajes: temas específicos de cada dispositivo to/from](#pub-sub-specific-topic-device)
+ [Políticas para publicar, suscribirse y recibir mensajes, to/from temas con el atributo «thing» en el nombre del tema](#pub-sub-topic-attribute)
+ [Políticas para denegar la publicación de mensajes en subtemas del nombre de un tema](#pub-sub-deny-publish)
+ [Políticas para denegar la recepción de mensajes de subtemas del nombre de un tema](#pub-sub-deny-receive)
+ [Políticas para suscribirse a temas con caracteres comodín de MQTT](#pub-sub-topic-wildcard)
+ [Políticas para HTTP y clientes WebSocket](#pub-sub-policy-cognito)

## Uso de caracteres comodín en MQTT y en las políticas AWS IoT Core
<a name="pub-sub-policy-cert"></a>

MQTT y AWS IoT Core las políticas tienen caracteres comodín diferentes y debe elegirlos tras considerarlos detenidamente. En MQTT, los caracteres comodín se `#` utilizan en `+` los [filtros de temas de MQTT para suscribirse a varios nombres de temas](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html#topicfilters). AWS IoT Core [las políticas utilizan `*` y `?` como caracteres comodín y siguen las convenciones de las políticas de IAM.](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html#policies-grammar-json) En un documento de política el `*` representa cualquier combinación de caracteres y un signo de interrogación `?` representa cualquier carácter único. En los documentos de política, los caracteres comodín MQTT `+` y `#` se consideran caracteres sin ningún significado especial. Para describir varios nombres de temas y filtros de temas en el atributo `resource` de una política, utilice los caracteres comodín `*` y `?` en lugar de los caracteres comodín de MQTT.

Al elegir caracteres comodín para usarlos en un documento de política, tenga en cuenta que el carácter `*` no se limita a un único nivel de tema. El carácter `+` se limita a un único nivel de tema en un filtro de temas de MQTT. Para limitar una especificación de comodín a un único nivel de filtro de temas de MQTT, considere la posibilidad de utilizar varios caracteres `?`. Para obtener más información sobre el uso de caracteres comodín en un recurso de políticas y más ejemplos de sus coincidencias, consulte [Uso de caracteres comodín](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_resource.html#reference_policies_elements_resource_wildcards) en un recurso. ARNs

En la siguiente tabla se muestran los distintos caracteres comodín que se utilizan en MQTT y en las políticas de AWS IoT Core de los clientes de MQTT.


| Carácter comodín | ¿Es un carácter comodín de MQTT? | Ejemplo en MQTT | ¿Es un carácter AWS IoT Core comodín de política | Ejemplo de AWS IoT Core políticas para clientes de MQTT | 
| --- | --- | --- | --- | --- | 
| \$1 | Sí | some/\$1 | No | N/A | 
| \$1 | Sí | some/\$1/topic | No | N/A | 
| \$1 | No | N/A | Sí | `topicfilter/some/*/topic` `topicfilter/some/sensor*/topic`  | 
| ? | No | N/A | Sí |  `topic/some/?????/topic` `topicfilter/some/sensor???/topic`  | 

## Políticas para publicar, suscribirse y recibir mensajes sobre temas to/from específicos
<a name="pub-sub-specific-topic"></a>

A continuación se muestran ejemplos de dispositivos registrados y no registrados para publicar, suscribir y recibir mensajes to/from del tema denominado «some\$1specific\$1topic». Los ejemplos también destacan que `Publish` y `Receive` utilizan “topic” como recurso y `Subscribe` utiliza “topicfilter” como recurso.

------
#### [ Registered devices ]

Para los dispositivos registrados en el AWS IoT Core registro, la siguiente política permite que los dispositivos se conecten con un ClientiD que coincida con el nombre de un elemento del registro. También proporciona permisos `Publish`, `Subscribe` y `Receive` para el tema denominado “some\$1specific\$1topic”.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			],
			"Condition": {
				"Bool": {
					"iot:Connection.Thing.IsAttached": "true"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Subscribe"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topicfilter/some_specific_topic"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Receive"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic"
			]
		}
	]
}
```

------
#### [ Unregistered devices ]

En el caso de los dispositivos que no están registrados en el AWS IoT Core registro, la siguiente política permite que los dispositivos se conecten mediante el ClientID1, el ClientID2 o el ClientID3. También proporciona permisos `Publish`, `Subscribe` y `Receive` para el tema denominado “some\$1specific\$1topic”.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/clientId1",
                "arn:aws:iot:us-east-1:123456789012:client/clientId2",
                "arn:aws:iot:us-east-1:123456789012:client/clientId3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topicfilter/some_specific_topic"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic"
            ]
        }
    ]
}
```

------

## Políticas para publicar, suscribirse y recibir mensajes y temas con un prefijo específico to/from
<a name="pub-sub-policy-specific-topic-prefix"></a>

A continuación se muestran ejemplos de dispositivos registrados y no registrados para publicar, suscribir y recibir mensajes con to/from temas con el prefijo «topic\$1prefix».

**nota**  
Observe el uso del carácter comodín `*` en este ejemplo. Si bien el carácter comodín `*` es útil para permitir el uso de varios nombres de temas en una sola instrucción, puede tener consecuencias imprevistas, ya que proporciona a los dispositivos más privilegios de los necesarios. Por lo tanto, le recomendamos que utilice únicamente el carácter comodín `*` después de considerarlo detenidamente.

------
#### [ Registered devices ]

Para los dispositivos registrados en el AWS IoT Core registro, la siguiente política permite que los dispositivos se conecten con un ClientiD que coincida con el nombre de un elemento del registro. También proporciona permisos `Publish`, `Subscribe` y `Receive` para los temas con el prefijo «topic\$1prefix».

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			],
			"Condition": {
				"Bool": {
					"iot:Connection.Thing.IsAttached": "true"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish",
				"iot:Receive"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/topic_prefix*"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Subscribe"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix*"
			]
		}
	]
}
```

------
#### [ Unregistered devices ]

En el caso de los dispositivos que no están registrados en el AWS IoT Core registro, la siguiente política permite que los dispositivos se conecten mediante el ClientID1, el ClientID2 o el ClientID3. También proporciona permisos `Publish`, `Subscribe` y `Receive` para los temas con el prefijo «topic\$1prefix».

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/clientId1",
                "arn:aws:iot:us-east-1:123456789012:client/clientId2",
                "arn:aws:iot:us-east-1:123456789012:client/clientId3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish",
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/topic_prefix*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix*"
            ]
        }
    ]
}
```

------

## Políticas para publicar, suscribirse y recibir mensajes: temas específicos de cada dispositivo to/from
<a name="pub-sub-specific-topic-device"></a>

A continuación, se muestran ejemplos de dispositivos registrados y no registrados para publicar, suscribir y recibir mensajes to/from sobre temas específicos del dispositivo en cuestión.

------
#### [ Registered devices ]

Para los dispositivos registrados en el AWS IoT Core registro, la siguiente política permite que los dispositivos se conecten con un ClientiD que coincida con el nombre de un elemento del registro. Da permiso para publicar en un tema de objeto específico (`sensor/device/${iot:Connection.Thing.ThingName}`) y también para suscribirse y recibir información del tema de objeto específico (`command/device/${iot:Connection.Thing.ThingName}`). Si el nombre del elemento en el registro es «cosa1", el dispositivo podrá publicar en el tema" 1". sensor/device/thing1". The device will also be able to subscribe to and receive from the topic "command/device/thing

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			],
			"Condition": {
				"Bool": {
					"iot:Connection.Thing.IsAttached": "true"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/sensor/device/${iot:Connection.Thing.ThingName}"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Subscribe"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topicfilter/command/device/${iot:Connection.Thing.ThingName}"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Receive"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/command/device/${iot:Connection.Thing.ThingName}"
			]
		}
	]
}
```

------
#### [ Unregistered devices ]

En el caso de los dispositivos que no están registrados en el AWS IoT Core registro, la siguiente política permite que los dispositivos se conecten mediante el ClientID1, el ClientID2 o el ClientID3. Da permiso para publicar en un tema de cliente específico (`sensor/device/${iot:ClientId}`) y también para suscribirse y recibir información del tema de cliente específico (`command/device/${iot:ClientId}`). Si el dispositivo se conecta con ClientID como ClientID1, podrá publicar en el tema "1". sensor/device/clientId El dispositivo también podrá suscribirse y recibir información del tema `device/clientId1/command`.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/clientId1",
                "arn:aws:iot:us-east-1:123456789012:client/clientId2",
                "arn:aws:iot:us-east-1:123456789012:client/clientId3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/sensor/device/${iot:Connection.Thing.ThingName}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topicfilter/command/device/${iot:Connection.Thing.ThingName}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/command/device/${iot:Connection.Thing.ThingName}"
            ]
        }
    ]
}
```

------

## Políticas para publicar, suscribirse y recibir mensajes, to/from temas con el atributo «thing» en el nombre del tema
<a name="pub-sub-topic-attribute"></a>

A continuación se muestra un ejemplo de dispositivos registrados para publicar, suscribir y recibir mensajes, to/from temas cuyos nombres incluyen atributos.

**nota**  
Los atributos de objeto solo existen para los dispositivos registrados en el registro de AWS IoT Core . No existe un ejemplo correspondiente a los dispositivos no registrados.

------
#### [ Registered devices ]

Para los dispositivos registrados en el AWS IoT Core registro, la siguiente política permite que los dispositivos se conecten con un ClientiD que coincida con el nombre de un elemento del registro. Da permiso para publicar en el tema (`sensor/${iot:Connection.Thing.Attributes[version]}`) y suscribirse y recibir información del tema (`command/${iot:Connection.Thing.Attributes[location]}`) si el nombre del tema incluye atributos de objeto. Si el nombre del objeto en el registro es «`version=v1`y»`location=Seattle`, el dispositivo podrá publicar en el tema "»sensor/v1", and subscribe to and receive from the topic "command/Seattle.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			],
			"Condition": {
				"Bool": {
					"iot:Connection.Thing.IsAttached": "true"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/sensor/${iot:Connection.Thing.Attributes[version]}"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Subscribe"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topicfilter/command/${iot:Connection.Thing.Attributes[location]}"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Receive"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/command/${iot:Connection.Thing.Attributes[location]}"
			]
		}
	]
}
```

------
#### [ Unregistered devices ]

Como los atributos de objetos solo existen para los dispositivos registrados en el registro de AWS IoT Core , no existe un ejemplo correspondiente para los dispositivos no registrados.

------

## Políticas para denegar la publicación de mensajes en subtemas del nombre de un tema
<a name="pub-sub-deny-publish"></a>

A continuación, se muestran ejemplos de dispositivos registrados y no registrados para publicar mensajes en todos los temas, excepto en algunos subtemas.

------
#### [ Registered devices ]

Para los dispositivos registrados en el AWS IoT Core registro, la siguiente política permite que los dispositivos se conecten con un ClientiD que coincida con el nombre de un elemento del registro. Da permiso para publicar en todos los temas con el prefijo «departament/», pero no en el subtema «department/admins».

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			],
			"Condition": {
				"Bool": {
					"iot:Connection.Thing.IsAttached": "true"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/department/*"
			]
		},
		{
			"Effect": "Deny",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/department/admins"
			]
		}
	]
}
```

------
#### [ Unregistered devices ]

En el caso de los dispositivos que no están registrados en el AWS IoT Core registro, la siguiente política permite que los dispositivos se conecten mediante el ClientID1, el ClientID2 o el ClientID3. Da permiso para publicar en todos los temas con el prefijo «departament/», pero no en el subtema «department/admins».

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/clientId1",
                "arn:aws:iot:us-east-1:123456789012:client/clientId2",
                "arn:aws:iot:us-east-1:123456789012:client/clientId3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/department/*"
            ]
        },
        {
            "Effect": "Deny",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/department/admins"
            ]
        }
    ]
}
```

------

## Políticas para denegar la recepción de mensajes de subtemas del nombre de un tema
<a name="pub-sub-deny-receive"></a>

A continuación se muestran ejemplos para que dispositivos registrados y no registrados se suscriban y reciban mensajes de temas con prefijos específicos, excepto determinados subtemas.

------
#### [ Registered devices ]

Para los dispositivos registrados en el AWS IoT Core registro, la siguiente política permite que los dispositivos se conecten con un ClientiD que coincida con el nombre de un elemento del registro. La política permite a los dispositivos suscribirse a cualquier tema con el prefijo «topic\$1prefix». Al utilizarla `NotResource` en la declaración for`iot:Receive`, permitimos que el dispositivo reciba mensajes de todos los temas a los que esté suscrito, excepto los temas con el prefijo «topic\$1». prefix/restricted". For example, with this policy, devices can subscribe to "topic\$1prefix/topic1" and even "topic\$1prefix/restricted", however, they will only receive messages from the topic "topic\$1prefix/topic1" and no messages from the topic "topic\$1prefix/restricted

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			],
			"Condition": {
				"Bool": {
					"iot:Connection.Thing.IsAttached": "true"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": "iot:Subscribe",
			"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix/*"
		},
		{
			"Effect": "Allow",
			"Action": "iot:Receive",
			"NotResource": "arn:aws:iot:us-east-1:123456789012:topic/topic_prefix/restricted/*"
		}
	]
}
```

------
#### [ Unregistered devices ]

En el caso de los dispositivos que no estén registrados en el AWS IoT Core registro, la siguiente política permite que los dispositivos se conecten mediante el ClientID1, el ClientID2 o el ClientID3. La política permite a los dispositivos suscribirse a cualquier tema con el prefijo «topic\$1prefix». Al utilizarla `NotResource` en la declaración for`iot:Receive`, permitimos que el dispositivo reciba mensajes de todos los temas a los que esté suscrito, excepto los temas con el prefijo «topic\$1». prefix/restricted". For example, with this policy, devices can subscribe to "topic\$1prefix/topic1" and even "topic\$1prefix/restricted". However, they will only receive messages from the topic "topic\$1prefix/topic1" and no messages from the topic "topic\$1prefix/restricted

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/clientId1",
                "arn:aws:iot:us-east-1:123456789012:client/clientId2",
                "arn:aws:iot:us-east-1:123456789012:client/clientId3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iot:Subscribe",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix/*"
        },
        {
            "Effect": "Allow",
            "Action": "iot:Receive",
            "NotResource": "arn:aws:iot:us-east-1:123456789012:topic/topic_prefix/restricted/*"
        }
    ]
}
```

------

## Políticas para suscribirse a temas con caracteres comodín de MQTT
<a name="pub-sub-topic-wildcard"></a>

Los caracteres comodín \$1 y \$1 de MQTT se tratan como cadenas literales, pero no se tratan como caracteres comodín cuando se utilizan en políticas. AWS IoT Core En MQTT, \$1 y \$1 se tratan como caracteres comodín solo cuando se suscribe a un filtro de tema, pero se tratan como cadenas literales en todos los demás contextos. Le recomendamos que utilice estos caracteres comodín MQTT únicamente como parte de AWS IoT Core las políticas tras considerarlos detenidamente.

A continuación se muestran ejemplos de elementos registrados y no registrados que utilizan caracteres comodín de MQTT en las políticas. AWS IoT Core Estos caracteres comodín se tratan como cadenas literales.

------
#### [ Registered devices ]

Para los dispositivos registrados en el AWS IoT Core registro, la siguiente política permite que los dispositivos se conecten con un ClientiD que coincida con el nombre de un elemento del registro. La política permite que los dispositivos se suscriban a los temas «department/\$1/employees» y «location/\$1». Como los términos \$1 y \$1 se consideran cadenas literales en AWS IoT Core las políticas, los dispositivos pueden suscribirse al tema «departamento/\$1/empleados», pero no también al tema «». department/engineering/employees". Similarly, devices can subscribe to the topic "location/\$1" but not to the topic "location/Seattle". However, once the device subscribes to the topic "department/\$1/employees", the policy will allow them to receive messages from the topic "department/engineering/employees". Similarly, once the device subscribes to the topic "location/\$1", they will receive messages from the topic "location/Seattle

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			],
			"Condition": {
				"Bool": {
					"iot:Connection.Thing.IsAttached": "true"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": "iot:Subscribe",
			"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/department/+/employees"
		},
		{
			"Effect": "Allow",
			"Action": "iot:Subscribe",
			"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/location/#"
		},
		{
			"Effect": "Allow",
			"Action": "iot:Receive",
			"Resource": "arn:aws:iot:us-east-1:123456789012:topic/*"
		}
	]
}
```

------
#### [ Unregistered devices ]

En el caso de los dispositivos que no están registrados en el AWS IoT Core registro, la siguiente política permite que los dispositivos se conecten mediante el ClientID1, el ClientID2 o el ClientID3. La política permite que los dispositivos se suscriban a los temas de «department/\$1/employees» y «location/\$1». Como los términos \$1 y \$1 se consideran cadenas literales en AWS IoT Core las políticas, los dispositivos pueden suscribirse al tema «departamento/\$1/empleados», pero no también al tema «». department/engineering/employees". Similarly, devices can subscribe to the topic "location/\$1" but not "location/Seattle". However, once the device subscribes to the topic "department/\$1/employees", the policy will allow them to receive messages from the topic "department/engineering/employees". Similarly, once the device subscribes to the topic "location/\$1", they will receive messages from the topic "location/Seattle

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/clientId1",
                "arn:aws:iot:us-east-1:123456789012:client/clientId2",
                "arn:aws:iot:us-east-1:123456789012:client/clientId3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iot:Subscribe",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/department/+/employees"
        },
        {
            "Effect": "Allow",
            "Action": "iot:Subscribe",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/location/#"
        },
        {
            "Effect": "Allow",
            "Action": "iot:Receive",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topic/*"
        }
    ]
}
```

------

## Políticas para HTTP y clientes WebSocket
<a name="pub-sub-policy-cognito"></a>

Cuando se conecta a través de HTTP o el WebSocket protocolo, se autentica con Signature Version 4 y Amazon Cognito. Las identidades de Amazon Cognito pueden ser autenticadas o no autenticadas. Las identidades autenticadas pertenecen a los usuarios que se han autenticado mediante un proveedor de identidad compatible. Las identidades no autenticadas suelen pertenecer a usuarios invitados que no se autentiquen con un proveedor de identidades. Amazon Cognito proporciona un identificador y AWS credenciales únicos para admitir identidades no autenticadas. Para obtener más información, consulte [Autorización con identidades de Amazon Cognito](cog-iot-policies.md).

Para las siguientes operaciones, AWS IoT Core utiliza AWS IoT Core políticas asociadas a las identidades de Amazon Cognito a través de la `AttachPolicy` API. Esto reduce los permisos asociados al grupo de identidades de Amazon Cognito con identidades autenticadas.
+ `iot:Connect`
+ `iot:Publish`
+ `iot:Subscribe`
+ `iot:Receive`
+ `iot:GetThingShadow`
+ `iot:UpdateThingShadow`
+ `iot:DeleteThingShadow`

Esto significa que una identidad de Amazon Cognito necesita el permiso de la política de rol de IAM y la política de AWS IoT Core . La política de roles de IAM se adjunta al grupo y la AWS IoT Core política a Amazon Cognito Identity a través AWS IoT Core `AttachPolicy` de la API.

Los usuarios autenticados y no autenticados son tipos de identidad diferentes. Si no adjuntas una AWS IoT política a Amazon Cognito Identity, un usuario autenticado no podrá obtener la autorización AWS IoT y no tendrá acceso a AWS IoT los recursos ni a las acciones.

**nota**  
Para otras AWS IoT Core operaciones o para identidades no autenticadas, AWS IoT Core no limita los permisos asociados a la función del grupo de identidades de Amazon Cognito. Para las identidades autenticadas y sin autenticar, esta es la política más permisiva que recomendamos asociar al rol del grupo de Amazon Cognito.

**HTTP**

Para permitir que identidades de Amazon Cognito sin autenticar publiquen mensajes sobre HTTP en un tema específico de la identidad de Amazon Cognito, asocie la política de IAM siguiente al rol de grupo de identidades de Amazon Cognito:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/${cognito-identity.amazonaws.com:sub}"
            ]
        }
    ]
}
```

Para permitir la autenticación de usuarios, asocie la política anterior al rol del grupo de Amazon Cognito Identity y a Amazon Cognito Identity mediante la API. AWS IoT Core [AttachPolicy](https://docs.aws.amazon.com//iot/latest/apireference/API_AttachPolicy.html)

**nota**  
Al autorizar las identidades de Amazon Cognito AWS IoT Core , tiene en cuenta ambas políticas y concede los privilegios mínimos especificados. Solo se permite una acción si ambas políticas permiten la acción solicitada. Si una de ellas no permite una acción, esa acción no se autoriza.

**MQTT**

Para permitir que las identidades de Amazon Cognito no autenticadas publiquen mensajes de MQTT WebSocket sobre un tema específico de Amazon Cognito Identity en su cuenta, adjunte la siguiente política de IAM al rol del grupo de Amazon Cognito Identity:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${cognito-identity.amazonaws.com:sub}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${cognito-identity.amazonaws.com:sub}"]
        }
    ]
}
```

Para permitir la autenticación de usuarios, asocie la política anterior al rol del grupo de Amazon Cognito Identity y a Amazon Cognito Identity mediante la API. AWS IoT Core [AttachPolicy](https://docs.aws.amazon.com//iot/latest/apireference/API_AttachPolicy.html)

**nota**  
Al autorizar las identidades de Amazon Cognito AWS IoT Core , tiene en cuenta ambas y concede los privilegios mínimos especificados. Solo se permite una acción si ambas políticas permiten la acción solicitada. Si una de ellas no permite una acción, esa acción no se autoriza.

# Ejemplos de políticas de conexión y publicación
<a name="connect-and-pub"></a>

En el caso de los dispositivos registrados como elementos del AWS IoT Core registro, la siguiente política concede permiso para conectarse AWS IoT Core con un ID de cliente que coincida con el nombre de la cosa y restringe el dispositivo a la publicación en un tema de MQTT específico para el ID de cliente o el nombre de la cosa. Para que la conexión se realice correctamente, el nombre de la cosa debe estar registrado en el AWS IoT Core registro y autenticarse con una identidad o un principal asociado a la cosa:

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:topic/${iot:Connection.Thing.ThingName}"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Connect"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
      ]
    }
  ]
}
```

En el caso de los dispositivos que no están registrados como cosas en el AWS IoT Core registro, la siguiente política concede permiso para conectarse AWS IoT Core con un ID de cliente `client1` y restringe el dispositivo a la publicación en un tema de MQTT específico del ID de cliente:

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:topic/${iot:ClientId}"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Connect"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:client/client1"
      ]
    }
  ]
}
```

# Ejemplos de políticas de mensajes retenidos
<a name="retained-message-policy-examples"></a>

El uso de [mensajes retenidos](mqtt.md#mqtt-retain) requiere políticas específicas. Los mensajes retenidos son mensajes MQTT publicados con el indicador RETAIN establecido y almacenados por. AWS IoT Core En esta sección se presentan ejemplos de políticas que permiten el uso común de los mensajes retenidos.

**Topics**
+ [Política para conectar y publicar mensajes retenidos](#retained-message-policy-examples-publish)
+ [Política para conectar y publicar mensajes retenidos Will](#retained-message-policy-examples-publish-lwt)
+ [Política para enumerar y obtener mensajes retenidos](#retained-message-policy-examples-list-get)

## Política para conectar y publicar mensajes retenidos
<a name="retained-message-policy-examples-publish"></a>

Para que un dispositivo publique los mensajes retenidos, debe poder conectarse, publicar (cualquier mensaje MQTT) y publicar los mensajes retenidos en MQTT. La siguiente política concede estos permisos para el tema: `device/sample/configuration` al cliente **device1**. Para ver otro ejemplo que concede permiso para conectarse, consulte [Ejemplos de políticas de conexión y publicación](connect-and-pub.md).

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/device1"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish",
				"iot:RetainPublish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/device/sample/configuration"
			]
		}
	]
}
```

## Política para conectar y publicar mensajes retenidos Will
<a name="retained-message-policy-examples-publish-lwt"></a>

Los clientes pueden configurar un mensaje que AWS IoT Core se publicará cuando el cliente se desconecte inesperadamente. MQTT llama a este tipo de mensaje un [mensaje *Will*](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Will_Flag). Un cliente debe tener una condición adicional agregada a su permiso de conexión para poder incluirlo. 

El siguiente documento de política otorga a todos los clientes permiso para conectarse y publicar un mensaje Will, identificado por su tema, `will`, que AWS IoT Core también conservará.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/device1"
			],
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"LastWill"
					]
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish",
				"iot:RetainPublish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/will"
			]
		}
	]
}
```

## Política para enumerar y obtener mensajes retenidos
<a name="retained-message-policy-examples-list-get"></a>

Los servicios y las aplicaciones pueden acceder a los mensajes retenidos sin necesidad de utilizar un cliente MQTT llamando a [https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_ListRetainedMessages.html](https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_ListRetainedMessages.html) y [https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_GetRetainedMessage.html](https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_GetRetainedMessage.html). Los servicios y las aplicaciones que invocan estas acciones deben autorizarse mediante una política como la del ejemplo siguiente.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:ListRetainedMessages"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/device1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:GetRetainedMessage"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/foo"
            ]
        }
    ]
}
```

# Ejemplos de políticas de certificado
<a name="certificate-policy-examples"></a>

En el caso de los dispositivos registrados en el AWS IoT Core registro, la siguiente política otorga permiso para conectarse AWS IoT Core con un ID de cliente que coincida con el nombre de una cosa y para publicar en un tema cuyo nombre sea igual al `certificateId` del certificado que el dispositivo utilizó para autenticarse:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:CertificateId}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
        }
    ]
}
```

En el caso de los dispositivos que no están registrados en el AWS IoT Core registro, la siguiente política otorga permiso para conectarse AWS IoT Core con el cliente IDs `client1``client2`,, `client3` y publicar en un tema cuyo nombre sea igual al `certificateId` del certificado que el dispositivo utilizó para autenticarse:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:CertificateId}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1",
                "arn:aws:iot:us-east-1:123456789012:client/client2",
                "arn:aws:iot:us-east-1:123456789012:client/client3"
            ]
        }
    ]
}
```

Para los dispositivos registrados en el AWS IoT Core registro, la siguiente política otorga permiso para conectarse AWS IoT Core con un ID de cliente que coincida con el nombre de la cosa y para publicar en un tema cuyo nombre sea igual al `CommonName` campo del asunto del certificado que el dispositivo utilizó para autenticarse:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:Certificate.Subject.CommonName}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
        }
    ]
}
```

**nota**  
En este ejemplo, el nombre común del sujeto del certificado se utiliza como identificador de tema, partiendo del supuesto de que el nombre común del sujeto es único para cada certificado registrado. Si los certificados se comparten entre varios dispositivos, el nombre común del asunto es el mismo para todos los dispositivos que comparten este certificado, lo que permite publicar privilegios en el mismo tema desde varios dispositivos (no se recomienda).

Para los dispositivos que no están registrados en el AWS IoT Core registro, la siguiente política otorga permiso para conectarse AWS IoT Core con el cliente IDs `client1``client2`,, `client3` y publicar en un tema cuyo nombre sea igual al `CommonName` campo del asunto del certificado que el dispositivo utilizó para autenticarse:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:Certificate.Subject.CommonName}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1",
                "arn:aws:iot:us-east-1:123456789012:client/client2",
                "arn:aws:iot:us-east-1:123456789012:client/client3"
            ]
        }
    ]
}
```

**nota**  
En este ejemplo, el nombre común del sujeto del certificado se utiliza como identificador de tema, partiendo del supuesto de que el nombre común del sujeto es único para cada certificado registrado. Si los certificados se comparten entre varios dispositivos, el nombre común del asunto es el mismo para todos los dispositivos que comparten este certificado, lo que permite publicar privilegios en el mismo tema desde varios dispositivos (no se recomienda).

En el caso de los dispositivos registrados en el AWS IoT Core registro, la siguiente política otorga permiso para conectarse AWS IoT Core con un ID de cliente que coincida con el nombre de la cosa y para publicar en un tema cuyo nombre lleve el prefijo `admin/` cuando el certificado utilizado para autenticar el dispositivo tenga el `Subject.CommonName.2` campo establecido en`Administrator`:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/admin/*"],
            "Condition": {
                "StringEquals": {
                    "iot:Certificate.Subject.CommonName.2": "Administrator"
            }
        }
        }
    ]
}
```

En el caso de los dispositivos que no están registrados en el AWS IoT Core registro IDs `client1``client2`, la siguiente política otorga permiso para conectarse AWS IoT Core con el cliente `client3` y publicar en un tema cuyo nombre lleve el prefijo `admin/` cuando el certificado utilizado para autenticar el dispositivo tenga el `Subject.CommonName.2` campo establecido en`Administrator`:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1",
                "arn:aws:iot:us-east-1:123456789012:client/client2",
                "arn:aws:iot:us-east-1:123456789012:client/client3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/admin/*"],
            "Condition": {
                "StringEquals": {
                    "iot:Certificate.Subject.CommonName.2": "Administrator"
            }
        }
        }
    ]
}
```

En el caso de los dispositivos registrados en el AWS IoT Core registro, la siguiente política permite que un dispositivo utilice su nombre para publicar sobre un tema específico, lo que `admin/` consiste en indicar `ThingName` cuándo el certificado utilizado para autenticar el dispositivo tiene alguno de sus `Subject.CommonName` campos configurado en: `Administrator`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/admin/${iot:Connection.Thing.ThingName}"],
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:Certificate.Subject.CommonName.List": "Administrator"
            }
        }
        }
    ]
}
```

En el caso de los dispositivos que no estén registrados en el AWS IoT Core registro IDs `client1``client2`, la siguiente política otorga permiso para conectarse AWS IoT Core con el cliente `client3` y publicar en el tema `admin` cuando el certificado utilizado para autenticar el dispositivo tenga alguno de sus `Subject.CommonName` campos configurado en: `Administrator`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1",
                "arn:aws:iot:us-east-1:123456789012:client/client2",
                "arn:aws:iot:us-east-1:123456789012:client/client3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/admin"],
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:Certificate.Subject.CommonName.List": "Administrator"
            }
        }
        }
    ]
}
```

# Ejemplos de políticas de objeto
<a name="thing-policy-examples"></a>

La siguiente política permite que un dispositivo se conecte si el certificado con el que se autenticó AWS IoT Core está adjunto al elemento para el que se está evaluando la política:

****  

```
{  
    "Version":"2012-10-17",		 	 	 
    "Statement":[
        {  
            "Effect":"Allow",
            "Action":["iot:Connect"],
            "Resource":[ "*" ],
            "Condition": {
                "Bool": {
                    "iot:Connection.Thing.IsAttached": ["true"]
            }
        }
        }
    ]
}
```

La siguiente política permite que un dispositivo publique si el certificado está asociado a un objeto con un tipo de objeto en particular y si el objeto tiene un atributo de `attributeName` con valor `attributeValue`. Para obtener más información acerca de las variables de políticas, consulte [Variables de política de objeto](thing-policy-variables.md).

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish"
      ],
      "Resource": "arn:aws:iot:us-east-1:123456789012:topic/device/stats",
      "Condition": {
        "StringEquals": {
          "iot:Connection.Thing.Attributes[attributeName]": "attributeValue",
          "iot:Connection.Thing.ThingTypeName": "Thing_Type_Name"
        },
        "Bool": {
          "iot:Connection.Thing.IsAttached": "true"
        }
      }
    }
  ]
}
```

La siguiente política permite que un dispositivo publique en un tema que comience con un atributo de ese objeto. Si el certificado del dispositivo no está asociado al objeto, esta variable no se resolverá y generará un error de acceso denegado. Para obtener más información acerca de las variables de políticas, consulte [Variables de política de objeto](thing-policy-variables.md).

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish"
      ],
      "Resource": "arn:aws:iot:us-east-1:123456789012:topic/${iot:Connection.Thing.Attributes[attributeName]}/*"
    }
  ]
}
```

# Ejemplo de políticas de trabajos básica
<a name="basic-jobs-example"></a>

En este ejemplo se muestran las declaraciones de políticas necesarias para que un objetivo de trabajo que sea un único dispositivo pueda recibir una solicitud de trabajo y comunicar el estado de ejecución del trabajo con AWS IoT.

*us-west-2:57EXAMPLE833*Sustitúyalo por el tuyo Región de AWS, dos puntos (:)) y tu Cuenta de AWS número de 12 dígitos y, a continuación, *uniqueThingName* sustitúyelo por el nombre del recurso que representa el dispositivo. AWS IoT

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:client/uniqueThingName"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:topic/test/dc/pubtopic",
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/job/*",
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/jobExecution/*",
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName/jobs/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:topicfilter/test/dc/subtopic",
                "arn:aws:iot:us-west-2:123456789012:topicfilter/$aws/events/jobExecution/*",
                "arn:aws:iot:us-west-2:123456789012:topicfilter/$aws/things/uniqueThingName/jobs/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:topic/test/dc/subtopic",
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName/jobs/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iotjobsdata:DescribeJobExecution",
                "iotjobsdata:GetPendingJobExecutions",
                "iotjobsdata:StartNextPendingJobExecution",
                "iotjobsdata:UpdateJobExecution"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName"
            ]
        }
    ]
}
```

# Autorización con identidades de Amazon Cognito
<a name="cog-iot-policies"></a>

Hay dos tipos de identidades de Amazon Cognito: autenticadas y sin autenticar. Si la aplicación admite identidades de Amazon Cognito no autenticadas, no se realiza ninguna autenticación, por lo que no se sabe quién es el usuario. 

**Identidades no autenticadas:** en el caso de las identidades de Amazon Cognito no autenticadas, se conceden permisos asociando un rol de IAM a un grupo de identidades no autenticadas. Le recomendamos que solo conceda acceso a aquellos recursos que desee que estén disponibles para usuarios desconocidos.

**importante**  
Para los usuarios de Amazon Cognito no autenticados que se conecten AWS IoT Core a, le recomendamos que dé acceso a recursos muy limitados en las políticas de IAM.

**Identidades autenticadas:** para las identidades autenticadas de Amazon Cognito, debe especificar los permisos en dos lugares. 
+ Asocie una política de IAM al grupo autenticado de identidades de Amazon Cognito y
+ Adjunte una AWS IoT Core política a Amazon Cognito Identity (usuario autenticado).

## Ejemplos de políticas para usuarios de Amazon Cognito autenticados y no autenticados que se conectan a AWS IoT Core
<a name="cog-iot-policies-auth-unauth-examples"></a>

El siguiente ejemplo muestra los permisos tanto en la política de IAM como en la política de IoT de una identidad de Amazon Cognito. El usuario autenticado quiere publicar en un tema específico de un dispositivo (por ejemplo). device/DEVICE\$1ID/status

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/Client_ID"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/device/Device_ID/status"
            ]
        }
    ]
}
```

El siguiente ejemplo muestra los permisos en una política de IAM de un rol no autenticado de Amazon Cognito. El usuario no autenticado desea publicar en temas no específicos de un dispositivo que no requieren autenticación.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/non_device_specific_topic"
            ]
        }
    ]
}
```

## GitHub ejemplos
<a name="cog-iot-policies-github"></a>

Los siguientes ejemplos de aplicaciones web GitHub muestran cómo incorporar políticas adjuntas a los usuarios autenticados en el proceso de registro y autenticación de los usuarios.
+ [Uso de la aplicación web MQTT publish/subscribe React y el AWS AmplifySDK de AWS IoT Device para JavaScript](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-cp)
+ [Aplicación web MQTT publish/subscribe React que utiliza AWS AmplifySDK de AWS IoT Device para JavaScript, la y una función Lambda](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-lambda)

Amplify es un conjunto de herramientas y servicios que le ayuda a crear aplicaciones web y móviles que se integran con AWS los servicios. Para obtener más información acerca de Amplify, consulte la [Documentación de Amplify Framework](https://docs.amplify.aws/).

En los dos ejemplos se realizan los siguientes pasos.

1. Cuando un usuario se registra para obtener una cuenta, la aplicación crea una identidad y un grupo de usuarios de Amazon Cognito.

1. Cuando un usuario se autentica, la aplicación crea y asocia una política a la identidad. Esto otorga al usuario permisos de publicación y suscripción.

1. El usuario puede utilizar la aplicación para publicar temas de MQTT y suscribirse a ellos.

El primer ejemplo utiliza la operación de la API `AttachPolicy` directamente dentro de la operación de autenticación. El siguiente ejemplo muestra cómo implementar esta llamada a la API dentro de una aplicación web de React que usa Amplify y el SDK de AWS IoT Device para JavaScript.

```
function attachPolicy(id, policyName) {
    var Iot = new AWS.Iot({region: AWSConfiguration.region, apiVersion: AWSConfiguration.apiVersion, endpoint: AWSConfiguration.endpoint});
    var params = {policyName: policyName, target: id};

    console.log("Attach IoT Policy: " + policyName + " with cognito identity id: " + id);
    Iot.attachPolicy(params, function(err, data) {
         if (err) {
               if (err.code !== 'ResourceAlreadyExistsException') {
                  console.log(err);
               }
          }
         else  {
            console.log("Successfully attached policy with the identity", data);
         }
     });
}
```

Este código aparece en el [AuthDisplayarchivo.js.](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-cp/blob/d1c307b36357be934db9dda020140fa337709cd9/src/AuthDisplay.js#L45)

El segundo ejemplo implementa la operación de la API `AttachPolicy` en una función de Lambda. El siguiente ejemplo muestra cómo Lambda utiliza esta llamada a la API.

```
iot.attachPolicy(params, function(err, data) {
     if (err) {
           if (err.code !== 'ResourceAlreadyExistsException') {
              console.log(err);
              res.json({error: err, url: req.url, body: req.body});
           }
      }
     else  {
        console.log(data);
        res.json({success: 'Create and attach policy call succeed!', url: req.url, body: req.body});
     }
 });
```

Este código aparece dentro de la función `iot.GetPolicy` en el archivo [app.js](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-lambda/blob/e493039581d2aff0faa3949086deead20a2c5385/amplify/backend/function/amplifyiotlambda/src/app.js#L50).

**nota**  
Cuando llama a la función con AWS las credenciales que obtiene a través de los grupos de identidades de Amazon Cognito, el objeto de contexto de la función Lambda contiene un valor para. `context.cognito_identity_id` Para obtener más información, consulte lo siguiente.   
[AWS Lambda objeto de contexto en Node.js](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-context.html)
[AWS Lambda objeto de contexto en Python](https://docs.aws.amazon.com/lambda/latest/dg/python-context.html)
[AWS Lambda objeto de contexto en Ruby](https://docs.aws.amazon.com/lambda/latest/dg/ruby-context.html)
[AWS Lambda objeto de contexto en Java](https://docs.aws.amazon.com/lambda/latest/dg/java-context.html)
[AWS Lambda objeto de contexto en Go](https://docs.aws.amazon.com/lambda/latest/dg/golang-context.html)
[AWS Lambda objeto de contexto en C\$1](https://docs.aws.amazon.com/lambda/latest/dg/csharp-context.html)
[AWS Lambda objeto de contexto en PowerShell](https://docs.aws.amazon.com/lambda/latest/dg/powershell-context.html)

# Autorizar llamadas directas a los AWS servicios mediante el proveedor de AWS IoT Core credenciales
<a name="authorizing-direct-aws"></a>

Los dispositivos pueden usar certificados X.509 para conectarse AWS IoT Core mediante los protocolos de autenticación mutua TLS. Otros AWS servicios no admiten la autenticación basada en certificados, pero se pueden llamar a ellos mediante AWS credenciales en formato [AWS Signature](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) Version 4. El [algoritmo Signature de la versión 4](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) normalmente requiere que la persona que llama tenga un identificador de clave de acceso y una clave de acceso secreta. AWS IoT Core tiene un proveedor de credenciales que le permite utilizar el [certificado X.509](x509-client-certs.html) integrado como identidad única del dispositivo para AWS autenticar las solicitudes. Así se elimina la necesidad de almacenar un ID de clave de acceso y una clave de acceso secreta en el dispositivo.

El proveedor de credenciales autentica a un intermediario mediante un certificado X.509 y emite un token de seguridad temporal con privilegios limitados. El token se puede usar para firmar y autenticar cualquier solicitud. AWS Esta forma de autenticar sus AWS solicitudes requiere que cree y configure un [rol AWS Identity and Access Management (de IAM)](https://docs.aws.amazon.com/service-authorization/latest/reference/id_roles.html) y que adjunte las políticas de IAM adecuadas al rol para que el proveedor de credenciales pueda asumir el rol en su nombre. Para obtener más información sobre AWS IoT Core e IAM, consulte [Gestión de identidad y acceso para AWS IoT](security-iam.md).

 AWS IoT requiere que los dispositivos envíen la [extensión de indicación del nombre del servidor (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) al protocolo Transport Layer Security (TLS) y proporcionen la dirección completa del punto final en el campo. `host_name` El campo `host_name` debe contener el punto de conexión al que está llamando y debe ser:
+ El `endpointAddress` devuelto por `aws iot [describe-endpoint](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-endpoint.html) --endpoint-type iot:CredentialProvider`.

Las conexiones que intenten realizar los dispositivos sin el valor de `host_name` correcto fallarán.

En el siguiente diagrama se ilustra el flujo de trabajo del proveedor de credenciales.

![\[AWS IoT Core flujo de trabajo del proveedor de credenciales.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/credentials-provider-diagram.png)


1. El AWS IoT Core dispositivo realiza una solicitud HTTPS al proveedor de credenciales para obtener un token de seguridad. La solicitud incluye el certificado X.509 del dispositivo para autenticación.

1. El proveedor de credenciales reenvía la solicitud al módulo de AWS IoT Core autenticación y autorización para validar el certificado y comprobar que el dispositivo tiene permiso para solicitar el token de seguridad.

1. Si el certificado es válido y tiene permiso para solicitar un token de seguridad, el módulo de AWS IoT Core autenticación y autorización se devuelve correctamente. De lo contrario, envía una excepción al dispositivo.

1. Después de validar correctamente el certificado, el proveedor de credenciales invoca a [AWS Security Token Service (AWS STS)](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) para asumir el rol de IAM que creó para el mismo.

1. AWS STS devuelve un token de seguridad temporal con privilegios limitados al proveedor de credenciales.

1. El proveedor de credenciales devuelve el token de seguridad al dispositivo.

1. El dispositivo usa el token de seguridad para firmar una AWS solicitud con la versión 4 de AWS Signature.

1. El servicio solicitado invoca a IAM para validar la firma y autorizar la solicitud frente a políticas de acceso asociadas al rol de IAM que creó para el proveedor de credenciales.

1. Si IAM valida la firma correctamente y autoriza la solicitud, la solicitud se realiza correctamente. De lo contrario, IAM envía una excepción.

En la siguiente sección se describe cómo utilizar un certificado para obtener un token de seguridad. Se ha escrito suponiendo que ya ha [registrado un dispositivo](register-device.html) y [creado y activado su propio certificado](device-certs-your-own.html) para el mismo.

## Cómo utilizar un certificado para obtener un token de seguridad
<a name="authorizing-direct-aws.walkthrough"></a>

1. Configure el rol de IAM que el proveedor de credenciales asume en nombre de su dispositivo. Asocie la siguiente política de confianza al rol.   
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Principal": {"Service": "credentials.iot.amazonaws.com"},
           "Action": "sts:AssumeRole"
       }
   }
   ```

   Para cada AWS servicio al que desee llamar, adjunte una política de acceso al rol. El proveedor de credenciales admite las siguientes variables de políticas:
   + `credentials-iot:ThingName`
   + `credentials-iot:ThingTypeName`
   + `credentials-iot:AwsCertificateId`

   Cuando el dispositivo proporciona el nombre de objeto en su solicitud a un servicio de AWS , el proveedor de credenciales agrega `credentials-iot:ThingName` y `credentials-iot:ThingTypeName` como variables de contexto para el token de seguridad. El proveedor de credenciales proporciona `credentials-iot:AwsCertificateId` como una variable de contexto incluso si el dispositivo no proporciona el nombre de la cosa en la solicitud. Transfiera el nombre de la cosa como valor del encabezado de solicitud HTTP `x-amzn-iot-thingname`.

   Estas tres variables solo funcionan para las políticas de IAM, no para las políticas de AWS IoT Core .

1. Asegúrese de que el usuario que realiza el siguiente paso (la creación de un alias de rol) tiene permiso para transferir a AWS IoT Core el rol que se acaba de crear. La siguiente política otorga ambos `iam:GetRole` `iam:PassRole` permisos a un AWS usuario. El permiso `iam:GetRole` permite al usuario obtener información acerca del rol que acaba de crear. El `iam:PassRole` permiso permite al usuario transferir la función a otro AWS servicio.  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": [
               "iam:GetRole",
               "iam:PassRole"
           ],
           "Resource": "arn:aws:iam::123456789012:role/your role name"
       }
   }
   ```

1. Cree un alias de AWS IoT Core rol. El dispositivo que va a realizar llamadas directas a AWS los servicios debe saber qué función ARN utilizar al conectarse. AWS IoT Core La codificación de forma rígida de un ARN de rol no es una buena solución, ya que requiere actualizar el dispositivo cada vez que el ARN del rol cambia. Una solución mejor consiste en utilizar la API `CreateRoleAlias` para crear un alias de rol que apunte al ARN del rol. Si el ARN del rol cambia, solo tiene que actualizar el alias de rol. No es necesario realizar ningún cambio en el dispositivo. Esta API adopta los siguiente parámetros:  
`roleAlias`  
Obligatorio. Una cadena arbitraria que identifica el alias del rol. Sirve como clave principal en el modelo de datos del alias de rol. Contiene 1-128 caracteres y debe incluir únicamente caracteres alfanuméricos y los símbolos =, @ y -. Se permiten los caracteres alfabéticos en mayúsculas y minúsculas. Los nombres de alias de roles distinguen entre mayúsculas y minúsculas.  
`roleArn`  
Obligatorio. El ARN del rol al que hace referencia el alias del rol.  
`credentialDurationSeconds`  
Opcional. El tiempo (en segundos) que la credencial es válida. El valor mínimo es de 900 segundos (15 minutos). El valor máximo es de 43 200 segundos (12 horas). El valor predeterminado es de 3600 segundos (1 hora).   
El proveedor de AWS IoT Core credenciales puede emitir una credencial con una duración máxima de 43.200 segundos (12 horas). Hacer que la credencial sea válida durante un máximo de 12 horas puede ayudar a reducir el número de llamadas al proveedor de credenciales al almacenar la credencial en caché durante más tiempo.  
El valor `credentialDurationSeconds` debe ser menor o igual que la duración máxima de la sesión del rol de IAM a la que hace referencia el alias del rol. Para obtener más información, consulte [Modificación de la duración máxima de sesión (AWS API) de un rol](https://docs.aws.amazon.com//IAM/latest/UserGuide/roles-managingrole-editing-api.html#roles-modify_max-session-duration-api) en la Guía del usuario de AWS Identity and Access Management.

   Para obtener más información acerca esta API, consulte [CreateRoleAlias](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateRoleAlias.html). 

1. Asocie una política al certificado de dispositivo. La política asociada al certificado del dispositivo debe conceder permiso al dispositivo para asumir el rol. Para ello, puede conceder permiso para la acción `iot:AssumeRoleWithCertificate` al alias de rol, como en el ejemplo siguiente.  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "iot:AssumeRoleWithCertificate",
               "Resource": "arn:aws:iot:us-east-1:123456789012:rolealias/your role alias"
           }
       ]
   }
   ```

1. Realice una solicitud HTTPS al proveedor de credenciales para obtener un token de seguridad. Proporcione la información siguiente:
   + *Certificado*: dado que se trata de una solicitud HTTP a través de autenticación mutua de TLS, debe proporcionar el certificado y la clave privada a su cliente al realizar la solicitud. Utilice el mismo certificado y la misma clave privada con los que registró el certificado AWS IoT Core.

     Para asegurarse de que el dispositivo se está comunicando con AWS IoT Core (y no con un servicio que se hace pasar por él), consulte [Autenticación de servidor](x509-client-certs.html#server-authentication), siga los enlaces para descargar los certificados de CA correspondientes y, a continuación, cópielos en su dispositivo.
   + *RoleAlias*: el nombre del alias de rol que creó para el proveedor de credenciales. Los nombres de los alias de los roles distinguen entre mayúsculas y minúsculas y deben coincidir con el alias de rol en el que se creó AWS IoT Core.
   + *ThingName*: El nombre de la cosa que creaste cuando la registraste AWS IoT Core . Esto se transfiere como valor del encabezado HTTP `x-amzn-iot-thingname`. Este valor solo es obligatorio si se utilizan los atributos de las cosas como variables de política en nuestras AWS IoT Core políticas de IAM.
**nota**  
Los *ThingName*datos que proporcione `x-amzn-iot-thingname` deben coincidir con el nombre del recurso AWS IoT Thing asignado a un certificado. Si no coincide, se devuelve un error 403.

   Ejecute el siguiente comando AWS CLI para obtener el punto final del proveedor de credenciales para su Cuenta de AWS. Para obtener más información acerca esta API, consulte [DescribeEndpoint](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeEndpoint.html). Para ver los puntos de conexión activados para FIPS, consulte [Puntos de conexión de proveedores de credenciales de AWS IoT Core](iot-connect-fips.md#iot-connect-fips-credential).

   ```
   aws iot describe-endpoint --endpoint-type iot:CredentialProvider
   ```

   El siguiente objeto de JSON es la salida de ejemplo del comando **describe-endpoint**. Contiene el `endpointAddress` que utiliza para solicitar un token de seguridad.

   ```
   {
       "endpointAddress": "your_aws_account_specific_prefix.credentials.iot.your region.amazonaws.com"
   }
   ```

   Utilice el punto de conexión para realizar una solicitud HTTPS al proveedor de credenciales para devolver un token de seguridad. El ejemplo de comando siguiente utiliza `curl`, pero puede utilizar cualquier cliente HTTP.
**nota**  
El nombre de *RoleAlias* distingue entre mayúsculas y minúsculas y debe coincidir con el alias del rol creado en. AWS IoT

   ```
   curl --cert your certificate --key your private key -H "x-amzn-iot-thingname: your thing name" --cacert AmazonRootCA1.pem https://your endpoint /role-aliases/your role alias/credentials
   ```

   Este comando devuelve un objeto de token de seguridad objeto que contiene un `accessKeyId`, una `secretAccessKey`, un `sessionToken` y un vencimiento. El siguiente objeto de JSON es la salida de ejemplo del comando `curl`.

   ```
       {"credentials":{"accessKeyId":"access key","secretAccessKey":"secret access key","sessionToken":"session token","expiration":"2018-01-18T09:18:06Z"}}
   ```

   A continuación, puede usar los `sessionToken` valores `accessKeyId``secretAccessKey`, y para firmar las solicitudes de los AWS servicios. Para ver una end-to-end demostración, consulte [Cómo eliminar la necesidad de AWS credenciales codificadas en los dispositivos mediante el uso de la entrada del blog sobre el proveedor de AWS IoT credenciales](https://aws.amazon.com/blogs/security/how-to-eliminate-the-need-for-hardcoded-aws-credentials-in-devices-by-using-the-aws-iot-credentials-provider/) en el blog de *AWS seguridad*.

# Acceso entre cuentas con IAM
<a name="cross-account-access"></a>

AWS IoT Core le permite permitir a un director publicar o suscribirse a un tema que esté definido en un tema que Cuenta de AWS no sea propiedad del director. El acceso entre cuentas se configura creando una política de IAM y un rol de IAM y, a continuación, asociando la política al rol.

En primer lugar, cree una política de IAM administrada por el cliente tal como se describe en [Creación de políticas de IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_create.html), tal y como haría para otros usuarios y certificados en su cuenta de Cuenta de AWS. 

En el caso de los dispositivos registrados en el AWS IoT Core registro, la siguiente política otorga permiso a los dispositivos que se conecten AWS IoT Core mediante un ID de cliente que coincida con el nombre del dispositivo y a que publiquen en el `my/topic/thing-name ` lugar donde *thing-name* está el nombre del dispositivo:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:Connection.Thing.ThingName}"
            ]
        }
    ]
}
```

En el caso de los dispositivos que no estén registrados en el AWS IoT Core registro, la siguiente política permite que un dispositivo utilice el nombre de la cosa `client1` registrado en el AWS IoT Core registro de su cuenta (123456789012) para conectarse a AWS IoT Core un tema específico del ID de cliente cuyo nombre lleve el prefijo: `my/topic/`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:ClientId}"
            ]
        }
    ]
}
```

A continuación, siga los pasos que se indican en [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). Especifique el ID de la cuenta de Cuenta de AWS con la que quiere compartir el acceso. A continuación, en el último paso, asocie al rol la política que acaba de crear. Si posteriormente debe modificar el ID de cuenta de AWS al que concede acceso, puede utilizar el siguiente formato de política de confianza: 

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": { 
                "AWS": "arn:aws:iam::567890123456:user/MyUser"
        },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

# 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"
}
```

# Gestión de identidad y acceso para AWS IoT
<a name="security-iam"></a>

AWS Identity and Access Management (IAM) es una herramienta Servicio de AWS que ayuda al administrador a controlar de forma segura el acceso a AWS los recursos. Los administradores de IAM controlan quién puede *autenticarse (iniciar* sesión) y quién puede *autorizarse* (tener permisos) para usar los recursos. AWS IoT La IAM es una Servicio de AWS opción que puede utilizar sin coste adicional.

**Topics**
+ [Público](#security_iam_audience)
+ [Autenticación con identidades de IAM](#security_iam_authentication)
+ [Administración del acceso con políticas](#security_iam_access-manage)
+ [¿Cómo AWS IoT funciona con IAM](security_iam_service-with-iam.md)
+ [AWS IoT ejemplos de políticas basadas en la identidad](security_iam_id-based-policy-examples.md)
+ [AWS políticas gestionadas para AWS IoT](security-iam-awsmanpol.md)
+ [Solución de problemas AWS IoT de identidad y acceso](security_iam_troubleshoot.md)

## Público
<a name="security_iam_audience"></a>

La forma de usar AWS Identity and Access Management (IAM) varía según la función que desempeñes:
+ **Usuario del servicio:** solicite permisos al administrador si no puede acceder a las características (consulte [Solución de problemas AWS IoT de identidad y acceso](security_iam_troubleshoot.md)).
+ **Administrador del servicio:** determine el acceso de los usuarios y envíe las solicitudes de permiso (consulte [¿Cómo AWS IoT funciona con IAM](security_iam_service-with-iam.md)).
+ **Administrador de IAM:** escriba políticas para administrar el acceso (consulte [AWS IoT ejemplos de políticas basadas en la identidad](security_iam_id-based-policy-examples.md)).

## Autenticación con identidades de IAM
<a name="security_iam_authentication"></a>

 AWS IoT Las identidades pueden ser certificados de dispositivo (X.509), identidades de Amazon Cognito o usuarios o grupos de IAM. En este tema se analizan únicamente identidades de IAM. Para obtener más información sobre las demás identidades AWS IoT compatibles, consulte. [Autenticación del cliente](client-authentication.md)

La autenticación es la forma de iniciar sesión AWS con sus credenciales de identidad. Debe autenticarse como usuario de Usuario raíz de la cuenta de AWS IAM o asumir una función de IAM.

Puede iniciar sesión como una identidad federada con las credenciales de una fuente de identidad, como AWS IAM Identity Center (IAM Identity Center), la autenticación de inicio de sesión único o las credenciales. Google/Facebook Para obtener más información sobre el inicio de sesión, consulte [Cómo iniciar sesión en la Cuenta de AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de AWS Sign-In *.

Para el acceso programático, AWS proporciona un SDK y una CLI para firmar criptográficamente las solicitudes. Para obtener más información, consulte [AWS Signature Version 4 para solicitudes de API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) en la *Guía del usuario de IAM*.

### Cuenta de AWS usuario root
<a name="security_iam_authentication-rootuser"></a>

 Al crear un Cuenta de AWS, se comienza con una identidad de inicio de sesión denominada *usuario Cuenta de AWS raíz* que tiene acceso completo a todos Servicios de AWS los recursos. Se recomiendaencarecidamente que no utilice el usuario raíz para las tareas diarias. Para ver la lista completa de las tareas que requieren credenciales de usuario raíz, consulte [Tareas que requieren credenciales de usuario raíz](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) en la *Guía del usuario de IAM*. 

### Usuarios y grupos de IAM
<a name="security_iam_authentication-iamuser"></a>

Un *[usuario de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)* es una identidad con permisos específicos para una sola persona o aplicación. Recomendamos el uso de credenciales temporales en lugar de usuarios de IAM con credenciales de larga duración. Para obtener más información, consulte [Exigir a los usuarios humanos que utilicen la federación con un proveedor de identidad para acceder AWS mediante credenciales temporales](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) en la Guía del *usuario de IAM*.

Un [https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) especifica un conjunto de usuarios de IAM y facilita la administración de los permisos para grupos grandes de usuarios. Para obtener más información, consulte [Casos de uso para usuarios de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) en la *Guía del usuario de IAM*.

### Roles de IAM
<a name="security_iam_authentication-iamrole"></a>

Un *[Rol de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)* es una identidad con permisos específicos que proporciona credenciales temporales. Puede asumir un rol [cambiando de un rol de usuario a uno de IAM (consola)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) o llamando a una AWS CLI operación de AWS API. Para obtener más información, consulte [Métodos para asumir un rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) en la *Guía del usuario de IAM*.

Los roles de IAM son útiles para el acceso de usuario federado, los permisos de usuario de IAM temporales, el acceso entre cuentas, el acceso entre servicios y las aplicaciones que se ejecutan en Amazon EC2. Para obtener más información, consulte [Acceso a recursos entre cuentas en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) en la *Guía del usuario de IAM*.

## Administración del acceso con políticas
<a name="security_iam_access-manage"></a>

El acceso se controla AWS creando políticas y adjuntándolas a AWS identidades o recursos. Una política define los permisos cuando están asociados a una identidad o un recurso. AWS evalúa estas políticas cuando un director hace una solicitud. La mayoría de las políticas se almacenan AWS como documentos JSON. Para obtener más información sobre los documentos de políticas de JSON, consulte [Información general de políticas de JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) en la *Guía del usuario de IAM*.

Mediante las políticas, los administradores especifican quién tiene acceso a qué, definiendo qué **entidad principal** puede realizar **acciones** sobre qué **recursos** y en qué **condiciones**.

De forma predeterminada, los usuarios y los roles no tienen permisos. Un administrador de IAM crea políticas de IAM y las agrega a roles, que los usuarios pueden asumir posteriormente. Las políticas de IAM definen permisos independientemente del método que se utilice para realizar la operación.

### Políticas basadas en identidades
<a name="security_iam_access-manage-id-based-policies"></a>

Las políticas basadas en identidad son documentos de política de permisos JSON que asocia a una identidad (usuario, grupo o rol). Estas políticas controlan qué acciones pueden realizar las identidades, en qué recursos y en qué condiciones. Para obtener más información sobre cómo crear una política basada en la identidad, consulte [Definición de permisos de IAM personalizados con políticas administradas por el cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) en la *Guía del usuario de IAM*.

Las políticas basadas en identidad pueden ser *políticas insertadas* (incrustadas directamente en una sola identidad) o *políticas administradas* (políticas independientes asociadas a varias identidades). Para obtener información sobre cómo elegir entre políticas administradas e insertadas, consulte [Selección entre políticas administradas y políticas insertadas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html) en la *Guía del usuario de IAM*.

### Políticas basadas en recursos
<a name="security_iam_access-manage-resource-based-policies"></a>

Las políticas basadas en recursos son documentos de políticas JSON que se asocian a un recurso. Los ejemplos incluyen las *Políticas de confianza de roles* de IAM y las *Políticas de bucket* de Amazon S3. En los servicios que admiten políticas basadas en recursos, los administradores de servicios pueden utilizarlos para controlar el acceso a un recurso específico. Debe [especificar una entidad principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) en una política basada en recursos.

Las políticas basadas en recursos son políticas insertadas que se encuentran en ese servicio. No puedes usar políticas AWS gestionadas de IAM en una política basada en recursos.

### Listas de control de acceso () ACLs
<a name="security_iam_access-manage-acl"></a>

Las listas de control de acceso (ACLs) controlan qué responsables (miembros de la cuenta, usuarios o roles) tienen permisos para acceder a un recurso. ACLs son similares a las políticas basadas en recursos, aunque no utilizan el formato de documento de políticas JSON.

Amazon S3 y Amazon VPC son ejemplos de servicios compatibles. AWS WAF ACLs Para obtener más información ACLs, consulte la [descripción general de la lista de control de acceso (ACL)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html) en la *Guía para desarrolladores de Amazon Simple Storage Service*.

### Otros tipos de políticas
<a name="security_iam_access-manage-other-policies"></a>

AWS admite tipos de políticas adicionales que pueden establecer los permisos máximos otorgados por los tipos de políticas más comunes:
+ **Límites de permisos:** establecen los permisos máximos que una política basada en identidad puede conceder a una entidad de IAM. Para obtener más información, consulte [Límites de permisos para las entidades de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) en la *Guía del usuario de IAM*.
+ **Políticas de control de servicios (SCPs)**: especifican los permisos máximos para una organización o unidad organizativa en AWS Organizations. Para obtener más información, consulte [Políticas de control de servicios](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) en la *Guía del usuario de AWS Organizations *.
+ **Políticas de control de recursos (RCPs)**: establece los permisos máximos disponibles para los recursos de tus cuentas. Para obtener más información, consulte [Políticas de control de recursos (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) en la *Guía del AWS Organizations usuario*.
+ **Políticas de sesión:** políticas avanzadas que se pasan como parámetro cuando se crea una sesión temporal para un rol o un usuario federado. Para obtener más información, consulte [Políticas de sesión](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) en la *Guía del usuario de IAM*.

### Varios tipos de políticas
<a name="security_iam_access-manage-multiple-policies"></a>

Cuando se aplican varios tipos de políticas a una solicitud, los permisos resultantes son más complicados de entender. Para saber cómo se AWS determina si se debe permitir una solicitud cuando se trata de varios tipos de políticas, consulte la [lógica de evaluación de políticas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) en la *Guía del usuario de IAM*.

# ¿Cómo AWS IoT funciona con IAM
<a name="security_iam_service-with-iam"></a>

Antes de utilizar IAM para gestionar el acceso AWS IoT, debe saber qué funciones de IAM están disponibles para su uso. AWS IoT*Para obtener una visión general de cómo funcionan con IAM AWS IoT y otros AWS servicios, consulte [AWS Servicios que funcionan con IAM en la Guía del usuario de IAM](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_aws-services-that-work-with-iam.html).*

**Topics**
+ [AWS IoT políticas basadas en la identidad](#security_iam_service-with-iam-id-based-policies)
+ [AWS IoT políticas basadas en recursos](#security_iam_service-with-iam-resource-based-policies)
+ [Autorización basada en etiquetas AWS IoT](#security_iam_service-with-iam-tags)
+ [AWS IoT Funciones de IAM](#security_iam_service-with-iam-roles)

## AWS IoT políticas basadas en la identidad
<a name="security_iam_service-with-iam-id-based-policies"></a>

Con las políticas basadas en identidad de IAM, puede especificar las acciones permitidas o denegadas y los recursos, además de las condiciones en las que se permiten o deniegan las acciones. AWS IoT admite acciones, recursos y claves de condiciones específicos. Para obtener información sobre todos los elementos que utiliza en una política JSON, consulte [Referencia de los elementos de las políticas JSON de IAM](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_elements.html) en la *Guía del usuario de IAM*.

### Acciones
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

Los administradores pueden usar las políticas de AWS JSON para especificar quién tiene acceso a qué. Es decir, qué **entidad principal** puede realizar **acciones** en qué **recursos** y en qué **condiciones**.

El elemento `Action` de una política JSON describe las acciones que puede utilizar para conceder o denegar el acceso en una política. Incluya acciones en una política para conceder permisos y así llevar a cabo la operación asociada.

La siguiente tabla muestra las acciones de IAM IoT, la AWS IoT API asociada y el recurso que manipula la acción.


****  

| Acciones de políticas | AWS IoT API | Recursos | 
| --- | --- | --- | 
| IoT: AcceptCertificateTransfer | AcceptCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  La Cuenta de AWS especificada en el ARN debe ser la cuenta a la que se transfiere el certificado.   | 
| IoT: AddThingToThingGroup | AddThingToThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: AssociateTargetsWithJob | AssociateTargetsWithJob | none  | 
| IoT: AttachPolicy | AttachPolicy |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` o `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: AttachPrincipalPolicy | AttachPrincipalPolicy |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: AttachSecurityProfile | AttachSecurityProfile |  `arn:aws:iot:region:account-id:securityprofile/security-profile-name` `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT: AttachThingPrincipal | AttachThingPrincipal |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: CancelCertificateTransfer | CancelCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  La Cuenta de AWS especificada en el ARN debe ser la cuenta a la que se transfiere el certificado.   | 
| IoT: CancelJob | CancelJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: CancelJobExecution | CancelJobExecution |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ClearDefaultAuthorizer | ClearDefaultAuthorizer | Ninguno | 
| IoT: CreateAuthorizer | CreateAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name`  | 
| IoT: CreateCertificateFromCsr | CreateCertificateFromCsr | \$1 | 
| IoT: CreateDimension | CreateDimension | `arn:aws:iot:region:account-id:dimension/dimension-name` | 
| IoT: CreateJob | CreateJob |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name` `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT: CreateJobTemplate | CreateJobTemplate |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT: CreateKeysAndCertificate | CreateKeysAndCertificate | \$1 | 
| IoT: CreatePolicy | CreatePolicy | `arn:aws:iot:region:account-id:policy/policy-name` | 
| IoT: CreatePolicyVersion | CreatePolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  Debe ser una AWS IoT política, no una política de IAM.   | 
| IoT: CreateRoleAlias | CreateRoleAlias |  (parámetro: roleAlias) `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: CreateSecurityProfile | CreateSecurityProfile |  `arn:aws:iot:region:account-id:securityprofile/security-profile-name` `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT: CreateThing | CreateThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: CreateThingGroup | CreateThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` para el grupo que se está crenado y para el grupo principal, si se utiliza  | 
| IoT: CreateThingType | CreateThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: CreateTopicRule | CreateTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: DeleteAuthorizer | DeleteAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-name`  | 
| IoT: eliminar CACertificate | Eliminar CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT: DeleteCertificate | DeleteCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DeleteDimension | DeleteDimension |  `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT: DeleteJob | DeleteJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: DeleteJobTemplate | DeleteJobTemplate |  `arn:aws:iot:region:account-id:job/job-template-id`  | 
| IoT: DeleteJobExecution | DeleteJobExecution |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: DeletePolicy | DeletePolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: DeletePolicyVersion | DeletePolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: DeleteRegistrationCode | DeleteRegistrationCode | \$1 | 
| IoT: DeleteRoleAlias | DeleteRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: DeleteSecurityProfile | DeleteSecurityProfile |  `arn:aws:iot:region:account-id:securityprofile/security-profile-name` `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT: DeleteThing | DeleteThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: DeleteThingGroup | DeleteThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DeleteThingType | DeleteThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: DeleteTopicRule | DeleteTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: eliminar V2 LoggingLevel | Eliminar V2 LoggingLevel |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DeprecateThingType | DeprecateThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: DescribeAuthorizer | DescribeAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name` (parámetro: authorizerName) none  | 
| IoT: describe CACertificate | Describa CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT: DescribeCertificate | DescribeCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DescribeDefaultAuthorizer | DescribeDefaultAuthorizer | Ninguno  | 
| IoT: DescribeEndpoint | DescribeEndpoint | \$1 | 
| IoT: DescribeEventConfigurations | DescribeEventConfigurations | none  | 
| IoT: DescribeIndex | DescribeIndex |  `arn:aws:iot:region:account-id:index/index-name`  | 
| IoT: DescribeJob | DescribeJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: DescribeJobExecution | DescribeJobExecution | Ninguno | 
| IoT: DescribeJobTemplate | DescribeJobTemplate |  `arn:aws:iot:region:account-id:job/job-template-id`  | 
| IoT: DescribeRoleAlias | DescribeRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: DescribeThing | DescribeThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: DescribeThingGroup | DescribeThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DescribeThingRegistrationTask | DescribeThingRegistrationTask | Ninguno | 
| IoT: DescribeThingType | DescribeThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: DetachPolicy | DetachPolicy |  `arn:aws:iot:region:account-id:cert/cert-id` o `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DetachPrincipalPolicy | DetachPrincipalPolicy |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DetachSecurityProfile | DetachSecurityProfile |  `arn:aws:iot:region:account-id:securityprofile/security-profile-name` `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT: DetachThingPrincipal | DetachThingPrincipal |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DisableTopicRule | DisableTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: EnableTopicRule | EnableTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: GetEffectivePolicies | GetEffectivePolicies |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: GetIndexingConfiguration | GetIndexingConfiguration | Ninguno | 
| IoT: GetJobDocument | GetJobDocument |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: GetLoggingOptions | GetLoggingOptions | \$1 | 
| IoT: GetPolicy | GetPolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: GetPolicyVersion | GetPolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: GetRegistrationCode | GetRegistrationCode | \$1 | 
| IoT: GetTopicRule | GetTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: ListAttachedPolicies | ListAttachedPolicies |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` o `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: ListAuthorizers | ListAuthorizers | Ninguno | 
| IoT: lista CACertificates | Lista CACertificates | \$1 | 
| IoT: ListCertificates | ListCertificates | \$1 | 
| IoT: ListCertificatesBy CA | ListCertificatesByCA | \$1 | 
| IoT: ListIndices | ListIndices | Ninguno | 
| IoT: ListJobExecutionsForJob | ListJobExecutionsForJob | Ninguno | 
| IoT: ListJobExecutionsForThing | ListJobExecutionsForThing | Ninguno | 
| IoT: ListJobs | ListJobs |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` si se utiliza thingGroupName el parámetro  | 
| IoT: ListJobTemplates | ListJobs | Ninguno | 
| IoT: ListOutgoingCertificates | ListOutgoingCertificates | \$1 | 
| IoT: ListPolicies | ListPolicies | \$1 | 
| IoT: ListPolicyPrincipals | ListPolicyPrincipals | \$1 | 
| IoT: ListPolicyVersions | ListPolicyVersions |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: ListPrincipalPolicies | ListPrincipalPolicies |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: ListPrincipalThings | ListPrincipalThings |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: ListRoleAliases | ListRoleAliases | Ninguno | 
| IoT: ListTargetsForPolicy | ListTargetsForPolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: ListThingGroups | ListThingGroups | Ninguno | 
| IoT: ListThingGroupsForThing | ListThingGroupsForThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ListThingPrincipals | ListThingPrincipals |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ListThingRegistrationTaskReports | ListThingRegistrationTaskReports | Ninguno | 
| IoT: ListThingRegistrationTasks | ListThingRegistrationTasks | Ninguno | 
| IoT: ListThingTypes | ListThingTypes | \$1 | 
| IoT: ListThings | ListThings | \$1 | 
| IoT: ListThingsInThingGroup | ListThingsInThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: ListTopicRules | ListTopicRules | \$1 | 
| IoT: lista V2 LoggingLevels | Lista V2 LoggingLevels | Ninguno | 
| IoT: registro CACertificate | Registrarse CACertificate | \$1 | 
| IoT: RegisterCertificate | RegisterCertificate | \$1 | 
| IoT: RegisterThing | RegisterThing | Ninguno | 
| IoT: RejectCertificateTransfer | RejectCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: RemoveThingFromThingGroup | RemoveThingFromThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ReplaceTopicRule | ReplaceTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: SearchIndex | SearchIndex |  `arn:aws:iot:region:account-id:index/index-id`  | 
| IoT: SetDefaultAuthorizer | SetDefaultAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name`  | 
| IoT: SetDefaultPolicyVersion | SetDefaultPolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: SetLoggingOptions | SetLoggingOptions |  `arn:aws:iot:region:account-id:role/role-name`  | 
| IoT: SETv2 LoggingLevel | Set V2 LoggingLevel |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: SETv2 LoggingOptions | Set V2 LoggingOptions |  `arn:aws:iot:region:account-id:role/role-name`  | 
| IoT: StartThingRegistrationTask | StartThingRegistrationTask | Ninguno | 
| IoT: StopThingRegistrationTask | StopThingRegistrationTask | Ninguno | 
| IoT: TestAuthorization | TestAuthorization |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: TestInvokeAuthorizer | TestInvokeAuthorizer | Ninguno | 
| IoT: TransferCertificate | TransferCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: UpdateAuthorizer | UpdateAuthorizer |  `arn:aws:iot:region:account-id:authorizerfunction/authorizer-function-name`  | 
| IoT: actualización CACertificate | Actualización CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT: UpdateCertificate | UpdateCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: UpdateDimension | UpdateDimension |  `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT: UpdateEventConfigurations | UpdateEventConfigurations | Ninguno | 
| IoT: UpdateIndexingConfiguration | UpdateIndexingConfiguration | Ninguno | 
| IoT: UpdateRoleAlias | UpdateRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: UpdateSecurityProfile | UpdateSecurityProfile |  `arn:aws:iot:region:account-id:securityprofile/security-profile-name` `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT: UpdateThing | UpdateThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: UpdateThingGroup | UpdateThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: UpdateThingGroupsForThing | UpdateThingGroupsForThing |  `arn:aws:iot:region:account-id:thing/thing-name` `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 

Las acciones políticas AWS IoT utilizan el siguiente prefijo antes de la acción:`iot:`. Por ejemplo, para conceder permiso a alguien para que enumere todas las cosas de IoT registradas en su Cuenta de AWS `ListThings` API, debes incluir la `iot:ListThings` acción en su política. Las declaraciones de política deben incluir un `NotAction` elemento `Action` o. AWS IoT define su propio conjunto de acciones que describen las tareas que puede realizar con este servicio.

Para especificar varias acciones en una única instrucción, sepárelas con comas del siguiente modo:

```
"Action": [
      "ec2:action1",
      "ec2:action2"
```

Puede utilizar caracteres comodín para especificar varias acciones (\$1). Por ejemplo, para especificar todas las acciones que comiencen con la palabra `Describe`, incluya la siguiente acción:

```
"Action": "iot:Describe*"
```

Para ver una lista de AWS IoT acciones, consulte las [acciones definidas por AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) en la *Guía del usuario de IAM*.

#### Acciones de Trusted Advisor
<a name="security_iam_service-actions-device-advisor"></a>

En la siguiente tabla se enumeran las acciones de IAM IoT Device Advisor, la API de AWS IoT Device Advisor asociada y el recurso que manipula la acción.


****  

| Acciones de políticas | AWS IoT API | Recursos | 
| --- | --- | --- | 
| iotdeviceadvisor: CreateSuiteDefinition | CreateSuiteDefinition |  Ninguno  | 
| asesor de dispositivos de IoT: DeleteSuiteDefinition | DeleteSuiteDefinition |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| asesor de dispositivos de IoT: GetSuiteDefinition | GetSuiteDefinition |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| asesor de dispositivos de IoT: GetSuiteRun | GetSuiteRun |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-run-id`  | 
| asesor de dispositivos de IoT: GetSuiteRunReport | GetSuiteRunReport |  `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 
| asesor de dispositivos de IoT: ListSuiteDefinitions | ListSuiteDefinitions | Ninguno | 
| asesor de dispositivos de IoT: ListSuiteRuns | ListSuiteRuns |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| asesor de dispositivos de IoT: ListTagsForResource | ListTagsForResource |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id` `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 
| asesor de dispositivos de IoT: StartSuiteRun | StartSuiteRun |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| asesor de dispositivos de IoT: TagResource | TagResource |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id` `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 
| asesor de dispositivos de IoT: UntagResource | UntagResource |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id` `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 
| asesor de dispositivos de IoT: UpdateSuiteDefinition | UpdateSuiteDefinition |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| asesor de dispositivos de IoT: StopSuiteRun | StopSuiteRun |  `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 

Las acciones políticas en AWS IoT Device Advisor utilizan el siguiente prefijo antes de la acción:. `iotdeviceadvisor:` Por ejemplo, para conceder a alguien el permiso de enumerar todas las definiciones de conjuntos de aplicaciones Cuenta de AWS registradas en ella en la ListSuiteDefinitions API, debes incluir la `iotdeviceadvisor:ListSuiteDefinitions` acción en su política.

### Recursos
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

Los administradores pueden usar las políticas de AWS JSON para especificar quién tiene acceso a qué. Es decir, qué **entidad principal** puede realizar **acciones** en qué **recursos** y en qué **condiciones**.

El elemento `Resource` de la política JSON especifica el objeto u objetos a los que se aplica la acción. Como práctica recomendada, especifique un recurso utilizando el [Nombre de recurso de Amazon (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html). En el caso de las acciones que no admiten permisos por recurso, utilice un carácter comodín (\$1) para indicar que la instrucción se aplica a todos los recursos.

```
"Resource": "*"
```


**AWS IoT recursos**  

| Acciones de políticas | AWS IoT API | Recursos | 
| --- | --- | --- | 
| IoT: AcceptCertificateTransfer | AcceptCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  La Cuenta de AWS especificada en el ARN debe ser la cuenta a la que se transfiere el certificado.   | 
| IoT: AddThingToThingGroup | AddThingToThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: AssociateTargetsWithJob | AssociateTargetsWithJob | Ninguno  | 
| IoT: AttachPolicy | AttachPolicy | `arn:aws:iot:region:account-id:thinggroup/thing-group-name` o `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: AttachPrincipalPolicy | AttachPrincipalPolicy |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: AttachThingPrincipal | AttachThingPrincipal |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: CancelCertificateTransfer | CancelCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  La Cuenta de AWS especificada en el ARN debe ser la cuenta a la que se transfiere el certificado.   | 
| IoT: CancelJob | CancelJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: CancelJobExecution | CancelJobExecution |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ClearDefaultAuthorizer | ClearDefaultAuthorizer | Ninguno | 
| IoT: CreateAuthorizer | CreateAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name`  | 
| IoT: CreateCertificateFromCsr | CreateCertificateFromCsr | \$1 | 
| IoT: CreateJob | CreateJob |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name` `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT: CreateJobTemplate | CreateJobTemplate |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT: CreateKeysAndCertificate | CreateKeysAndCertificate | \$1 | 
| IoT: CreatePolicy | CreatePolicy | `arn:aws:iot:region:account-id:policy/policy-name` | 
| CreatePolicyVersion | IoT: CreatePolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  Debe ser una AWS IoT política, no una política de IAM.   | 
| IoT: CreateRoleAlias | CreateRoleAlias |  (parámetro: roleAlias) `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: CreateThing | CreateThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: CreateThingGroup | CreateThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` para el grupo que se está crenado y para el grupo principal, si se utiliza  | 
| IoT: CreateThingType | CreateThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: CreateTopicRule | CreateTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: DeleteAuthorizer | DeleteAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-name`  | 
| IoT: eliminar CACertificate | Eliminar CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT: DeleteCertificate | DeleteCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DeleteJob | DeleteJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: DeleteJobExecution | DeleteJobExecution |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: DeleteJobTemplate | DeleteJobTemplate |  `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT: DeletePolicy | DeletePolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: DeletePolicyVersion | DeletePolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: DeleteRegistrationCode | DeleteRegistrationCode | \$1 | 
| IoT: DeleteRoleAlias | DeleteRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: DeleteThing | DeleteThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: DeleteThingGroup | DeleteThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DeleteThingType | DeleteThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: DeleteTopicRule | DeleteTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: eliminar V2 LoggingLevel | Eliminar V2 LoggingLevel |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DeprecateThingType | DeprecateThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: DescribeAuthorizer | DescribeAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name` (parámetro: authorizerName) none  | 
| IoT: describe CACertificate | Describa CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT: DescribeCertificate | DescribeCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DescribeDefaultAuthorizer | DescribeDefaultAuthorizer | Ninguno  | 
| IoT: DescribeEndpoint | DescribeEndpoint | \$1 | 
| IoT: DescribeEventConfigurations | DescribeEventConfigurations | none  | 
| IoT: DescribeIndex | DescribeIndex |  `arn:aws:iot:region:account-id:index/index-name`  | 
| IoT: DescribeJob | DescribeJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: DescribeJobExecution | DescribeJobExecution | Ninguno | 
| IoT: DescribeJobTemplate | DescribeJobTemplate |  `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT: DescribeRoleAlias | DescribeRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: DescribeThing | DescribeThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: DescribeThingGroup | DescribeThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DescribeThingRegistrationTask | DescribeThingRegistrationTask | Ninguno | 
| IoT: DescribeThingType | DescribeThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: DetachPolicy | DetachPolicy |  `arn:aws:iot:region:account-id:cert/cert-id` o `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DetachPrincipalPolicy | DetachPrincipalPolicy |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DetachThingPrincipal | DetachThingPrincipal |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DisableTopicRule | DisableTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: EnableTopicRule | EnableTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: GetEffectivePolicies | GetEffectivePolicies |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: GetIndexingConfiguration | GetIndexingConfiguration | Ninguno | 
| IoT: GetJobDocument | GetJobDocument |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: GetLoggingOptions | GetLoggingOptions | \$1 | 
| IoT: GetPolicy | GetPolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: GetPolicyVersion | GetPolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: GetRegistrationCode | GetRegistrationCode | \$1 | 
| IoT: GetTopicRule | GetTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: ListAttachedPolicies | ListAttachedPolicies |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` o `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: ListAuthorizers | ListAuthorizers | Ninguno | 
| IoT: lista CACertificates | Lista CACertificates | \$1 | 
| IoT: ListCertificates | ListCertificates | \$1 | 
| IoT: ListCertificatesBy CA | ListCertificatesByCA | \$1 | 
| IoT: ListIndices | ListIndices | Ninguno | 
| IoT: ListJobExecutionsForJob | ListJobExecutionsForJob | Ninguno | 
| IoT: ListJobExecutionsForThing | ListJobExecutionsForThing | Ninguno | 
| IoT: ListJobs | ListJobs |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` si se utiliza thingGroupName el parámetro  | 
| IoT: ListJobTemplates | ListJobTemplates | Ninguno | 
| IoT: ListOutgoingCertificates | ListOutgoingCertificates | \$1 | 
| IoT: ListPolicies | ListPolicies | \$1 | 
| IoT: ListPolicyPrincipals | ListPolicyPrincipals |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: ListPolicyVersions | ListPolicyVersions |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: ListPrincipalPolicies | ListPrincipalPolicies |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: ListPrincipalThings | ListPrincipalThings |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: ListRoleAliases | ListRoleAliases | Ninguno | 
| IoT: ListTargetsForPolicy | ListTargetsForPolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: ListThingGroups | ListThingGroups | Ninguno | 
| IoT: ListThingGroupsForThing | ListThingGroupsForThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ListThingPrincipals | ListThingPrincipals |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ListThingRegistrationTaskReports | ListThingRegistrationTaskReports | Ninguno | 
| IoT: ListThingRegistrationTasks | ListThingRegistrationTasks | Ninguno | 
| IoT: ListThingTypes | ListThingTypes | \$1 | 
| IoT: ListThings | ListThings | \$1 | 
| IoT: ListThingsInThingGroup | ListThingsInThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: ListTopicRules | ListTopicRules | \$1 | 
| IoT: lista V2 LoggingLevels | Lista V2 LoggingLevels | Ninguno | 
| IoT: registro CACertificate | Registrarse CACertificate | \$1 | 
| IoT: RegisterCertificate | RegisterCertificate | \$1 | 
| IoT: RegisterThing | RegisterThing | Ninguno | 
| IoT: RejectCertificateTransfer | RejectCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: RemoveThingFromThingGroup | RemoveThingFromThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ReplaceTopicRule | ReplaceTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: SearchIndex | SearchIndex |  `arn:aws:iot:region:account-id:index/index-id`  | 
| IoT: SetDefaultAuthorizer | SetDefaultAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name`  | 
| IoT: SetDefaultPolicyVersion | SetDefaultPolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: SetLoggingOptions | SetLoggingOptions | \$1 | 
| IoT: SETv2 LoggingLevel | Set V2 LoggingLevel | \$1 | 
| IoT: SetV2 LoggingOptions | Set V2 LoggingOptions | \$1 | 
| IoT: StartThingRegistrationTask | StartThingRegistrationTask | Ninguno | 
| IoT: StopThingRegistrationTask | StopThingRegistrationTask | Ninguno | 
| IoT: TestAuthorization | TestAuthorization |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: TestInvokeAuthorizer | TestInvokeAuthorizer | Ninguno | 
| IoT: TransferCertificate | TransferCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: UpdateAuthorizer | UpdateAuthorizer |  `arn:aws:iot:region:account-id:authorizerfunction/authorizer-function-name`  | 
| IoT: actualización CACertificate | Actualización CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT: UpdateCertificate | UpdateCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: UpdateEventConfigurations | UpdateEventConfigurations | Ninguno | 
| IoT: UpdateIndexingConfiguration | UpdateIndexingConfiguration | Ninguno | 
| IoT: UpdateRoleAlias | UpdateRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: UpdateThing | UpdateThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: UpdateThingGroup | UpdateThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: UpdateThingGroupsForThing | UpdateThingGroupsForThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 

Para obtener más información sobre el formato de ARNs, consulte [Amazon Resource Names (ARNs) y AWS Service Namespaces](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).

Algunas AWS IoT acciones, como las de creación de recursos, no se pueden realizar en un recurso específico. En dichos casos, debe utilizar el carácter comodín (\$1).

```
"Resource": "*"
```

Para ver una lista de los tipos de AWS IoT recursos y sus correspondientes ARNs, consulte [los recursos definidos por AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-resources-for-iam-policies) en la *Guía del usuario de IAM*. Para obtener información sobre las acciones con las que puede especificar el ARN de cada recurso, consulte [Acciones definidas por AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions).

#### Recursos de Device Advisor
<a name="security_iam_service-device-advisor-resources"></a>

Para definir las restricciones a nivel de recursos para las políticas de IAM de AWS IoT Device Advisor, utilice los siguientes formatos de ARN de recursos para las definiciones y ejecuciones de conjuntos.

Formato de ARN de recurso de definición de conjunto  
`arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`

Formato de ARN de recurso de ejecución de conjunto  
`arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`

### Claves de condición
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

Los administradores pueden usar las políticas de AWS JSON para especificar quién tiene acceso a qué. Es decir, qué **entidad principal** puede realizar **acciones** en qué **recursos** y en qué **condiciones**.

El elemento `Condition` especifica cuándo se ejecutan las instrucciones en función de criterios definidos. Puede crear expresiones condicionales que utilizan [operadores de condición](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html), tales como igual o menor que, para que la condición de la política coincida con los valores de la solicitud. Para ver todas las claves de condición AWS globales, consulte las claves de [contexto de condición AWS globales](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) en la *Guía del usuario de IAM*.

AWS IoT define su propio conjunto de claves de condición y también admite el uso de algunas claves de condición globales. Para ver todas las claves de condición AWS globales, consulte las claves de [contexto de condición AWS globales](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_condition-keys.html) en la *Guía del usuario de IAM*. 


**AWS IoT claves de condición**  

| AWS IoT claves de condición | Descripción | Tipo | 
| --- | --- | --- | 
| aws:RequestTag/\$1\$1tag-key\$1 | Una clave de etiqueta que está presente en la solicitud que el usuario realiza a AWS IoT. | Cadena | 
| aws:ResourceTag/\$1\$1tag-key\$1 | El componente clave de etiqueta de una etiqueta adjunta a un AWS IoT recurso. | Cadena | 
| aws:TagKeys | La lista de todos los nombres de clave de etiqueta asociados con el recurso de la solicitud. | Cadena | 

Para ver una lista de claves de AWS IoT condición, consulte las [claves de condición AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-policy-keys) en la *Guía del usuario de IAM*. Para saber con qué acciones y recursos puede utilizar una clave de condición, consulte [Acciones definidas por AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions).

### Ejemplos
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



Para ver ejemplos de políticas AWS IoT basadas en la identidad, consulte. [AWS IoT ejemplos de políticas basadas en la identidad](security_iam_id-based-policy-examples.md)

## AWS IoT políticas basadas en recursos
<a name="security_iam_service-with-iam-resource-based-policies"></a>

Las políticas basadas en recursos son documentos de políticas de JSON que especifican qué acciones puede realizar un director específico en el AWS IoT recurso y en qué condiciones.

AWS IoT no admite las políticas de IAM basadas en recursos. Sin embargo, apoya AWS IoT las políticas basadas en los recursos. Para obtener más información, consulte [AWS IoT Core políticas](iot-policies.md).

## Autorización basada en etiquetas AWS IoT
<a name="security_iam_service-with-iam-tags"></a>

Puede adjuntar etiquetas a AWS IoT los recursos o pasarles etiquetas en una solicitud AWS IoT. Para controlar el acceso en función de etiquetas, debe proporcionar información de las etiquetas en el [elemento de condición](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_elements_condition.html) de una política utilizando las claves de condición `iot:ResourceTag/key-name`, `aws:RequestTag/key-name` o `aws:TagKeys`. Para obtener más información, consulte [Uso de etiquetas con políticas de IAM](tagging-iot-iam.md). Para obtener más información sobre el etiquetado de AWS IoT recursos, consulte[Etiquetar sus recursos AWS IoT](tagging-iot.md).

Para consultar un ejemplo de política basada en la identidad para limitar el acceso a un recurso en función de las etiquetas de ese recurso, consulte [Visualización de AWS IoT los recursos en función de las etiquetas](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-view-thing-tags).

## AWS IoT Funciones de IAM
<a name="security_iam_service-with-iam-roles"></a>

Un [rol de IAM](https://docs.aws.amazon.com/service-authorization/latest/reference/id_roles.html) es una entidad dentro de usted Cuenta de AWS que tiene permisos específicos.

### Utilizar credenciales temporales con AWS IoT
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

Puede utilizar credenciales temporales para iniciar sesión con federación, asumir un rol de IAM o asumir un rol de acceso entre cuentas. Las credenciales de seguridad temporales se obtienen llamando a operaciones de AWS STS API como [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)o [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html). 

AWS IoT admite el uso de credenciales temporales. 

### Roles vinculados a servicios
<a name="security_iam_service-with-iam-roles-service-linked"></a>

Los [roles vinculados a un servicio](https://docs.aws.amazon.com/service-authorization/latest/reference/id_roles_terms-and-concepts.html#iam-term-service-linked-role) permiten a AWS los servicios acceder a los recursos de otros servicios para completar una acción en tu nombre. Los roles vinculados a servicios aparecen en la cuenta de IAM y son propiedad del servicio. Un administrador de IAM puede ver, pero no editar, los permisos de los roles vinculados a servicios.

AWS IoT no admite los roles vinculados al servicio.

### Roles de servicio
<a name="security_iam_service-with-iam-roles-service"></a>

Esta característica permite que un servicio asuma un [rol de servicio](https://docs.aws.amazon.com/service-authorization/latest/reference/id_roles_terms-and-concepts.html#iam-term-service-role) en su nombre. Este rol permite que el servicio obtenga acceso a los recursos de otros servicios para completar una acción en su nombre. Los roles de servicio aparecen en su cuenta de IAM y son propiedad de la cuenta. Esto significa que un administrador de IAM puede cambiar los permisos de este rol. Sin embargo, hacerlo podría deteriorar la funcionalidad del servicio.

# AWS IoT ejemplos de políticas basadas en la identidad
<a name="security_iam_id-based-policy-examples"></a>

De forma predeterminada, los usuarios y los roles de IAM no tienen permiso para crear, ver ni modificar recursos de AWS IoT . Tampoco pueden realizar tareas con la API Consola de administración de AWS AWS CLI, o AWS . Un administrador de IAM debe crear políticas de IAM que concedan permisos a los usuarios y a los roles para realizar operaciones de la API concretas en los recursos especificados que necesiten. El administrador debe asociar esas políticas a los usuarios o grupos que necesiten esos permisos.

Para obtener información acerca de cómo crear una política basada en identidad de IAM con estos documentos de políticas JSON de ejemplo, consulte [Creación de políticas en la pestaña JSON](https://docs.aws.amazon.com/service-authorization/latest/reference/access_policies_create.html#access_policies_create-json-editor) en la *Guía del usuario de IAM*.

**Topics**
+ [Prácticas recomendadas relativas a políticas](#security_iam_service-with-iam-policy-best-practices)
+ [Uso de la consola AWS IoT](#security_iam_id-based-policy-examples-console)
+ [Permitir a los usuarios consultar sus propios permisos](#security_iam_id-based-policy-examples-view-own-permissions)
+ [Visualización de AWS IoT los recursos en función de las etiquetas](#security_iam_id-based-policy-examples-view-thing-tags)
+ [Visualización de los recursos de AWS IoT Device Advisor en función de las etiquetas](#security_iam-device-advisor-tags)

## Prácticas recomendadas relativas a políticas
<a name="security_iam_service-with-iam-policy-best-practices"></a>

Las políticas basadas en la identidad determinan si alguien puede crear AWS IoT recursos de tu cuenta, acceder a ellos o eliminarlos. Estas acciones pueden generar costos adicionales para su Cuenta de AWS. Siga estas directrices y recomendaciones al crear o editar políticas basadas en identidades:
+ **Comience con las políticas AWS administradas y avance hacia los permisos con privilegios mínimos: para empezar a conceder permisos** a sus usuarios y cargas de trabajo, utilice las *políticas AWS administradas* que otorgan permisos para muchos casos de uso comunes. Están disponibles en su. Cuenta de AWS Le recomendamos que reduzca aún más los permisos definiendo políticas administradas por el AWS cliente que sean específicas para sus casos de uso. Con el fin de obtener más información, consulte las [políticas administradas por AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) o las [políticas administradas por AWS para funciones de tarea](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) en la *Guía de usuario de IAM*.
+ **Aplique permisos de privilegio mínimo**: cuando establezca permisos con políticas de IAM, conceda solo los permisos necesarios para realizar una tarea. Para ello, debe definir las acciones que se pueden llevar a cabo en determinados recursos en condiciones específicas, también conocidos como *permisos de privilegios mínimos*. Con el fin de obtener más información sobre el uso de IAM para aplicar permisos, consulte [Políticas y permisos en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) en la *Guía del usuario de IAM*.
+ **Utilice condiciones en las políticas de IAM para restringir aún más el acceso**: puede agregar una condición a sus políticas para limitar el acceso a las acciones y los recursos. Por ejemplo, puede escribir una condición de políticas para especificar que todas las solicitudes deben enviarse utilizando SSL. También puedes usar condiciones para conceder el acceso a las acciones del servicio si se utilizan a través de una acción específica Servicio de AWS, por ejemplo CloudFormation. Para obtener más información, consulte [Elementos de la política de JSON de IAM: Condición](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) en la *Guía del usuario de IAM*.
+ **Utiliza el analizador de acceso de IAM para validar las políticas de IAM con el fin de garantizar la seguridad y funcionalidad de los permisos**: el analizador de acceso de IAM valida políticas nuevas y existentes para que respeten el lenguaje (JSON) de las políticas de IAM y las prácticas recomendadas de IAM. El analizador de acceso de IAM proporciona más de 100 verificaciones de políticas y recomendaciones procesables para ayudar a crear políticas seguras y funcionales. Para más información, consulte [Validación de políticas con el Analizador de acceso de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) en la *Guía del usuario de IAM*.
+ **Requerir autenticación multifactor (MFA**): si tiene un escenario que requiere usuarios de IAM o un usuario raíz en Cuenta de AWS su cuenta, active la MFA para mayor seguridad. Para exigir la MFA cuando se invoquen las operaciones de la API, añada condiciones de MFA a sus políticas. Para más información, consulte [Acceso seguro a la API con MFA](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) en la *Guía del usuario de IAM*.

Para obtener más información sobre las prácticas recomendadas de IAM, consulte [Prácticas recomendadas de seguridad en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.

## Uso de la consola AWS IoT
<a name="security_iam_id-based-policy-examples-console"></a>

Para acceder a la AWS IoT consola, debe tener un conjunto mínimo de permisos. Estos permisos deben permitirle enumerar y ver detalles sobre los AWS IoT recursos de su cuenta Cuenta de AWS. Si crea una política basada en identidades que sea más restrictiva que el mínimo de permisos necesarios, la consola no funcionará del modo esperado para las entidades (usuarios o roles) que tengan esa política.

Para garantizar que esas entidades puedan seguir utilizando la AWS IoT consola, adjunte también la siguiente política AWS administrada a las entidades:`AWSIoTFullAccess`. Para obtener más información, consulte [Adición de permisos a un usuario](https://docs.aws.amazon.com/service-authorization/latest/reference/id_users_change-permissions.html#users_change_permissions-add-console) en la *Guía del usuario de IAM*.

No es necesario que concedas permisos mínimos de consola a los usuarios que solo realizan llamadas a la API AWS CLI o a la AWS API. En su lugar, permite acceso únicamente a las acciones que coincidan con la operación de API que intenta realizar.

## Permitir a los usuarios consultar sus propios permisos
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

En este ejemplo, se muestra cómo podría crear una política que permita a los usuarios de IAM ver las políticas administradas e insertadas que se asocian a la identidad de sus usuarios. Esta política incluye permisos para completar esta acción en la consola o mediante programación mediante la API AWS CLI o AWS .

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

## Visualización de AWS IoT los recursos en función de las etiquetas
<a name="security_iam_id-based-policy-examples-view-thing-tags"></a>

Puede utilizar las condiciones de su política basada en identidad para controlar el acceso a los recursos de AWS IoT basados en etiquetas. En este ejemplo, se muestra cómo crear una política que permita visualizar un objeto. Sin embargo, los permisos solo se conceden si la etiqueta de la cosa `Owner` tiene el valor del nombre de usuario de dicho usuario. Esta política también proporciona los permisos necesarios para llevar a cabo esta acción en la consola.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ListBillingGroupsInConsole",
            "Effect": "Allow",
            "Action": "iot:ListBillingGroups",
            "Resource": "*"
        },
        {
            "Sid": "ViewBillingGroupsIfOwner",
            "Effect": "Allow",
           "Action": "iot:DescribeBillingGroup",
            "Resource": "arn:aws:iot:*:*:billinggroup/*",
            "Condition": {
                "StringEquals": {"aws:ResourceTag/Owner": "${aws:username}"}
        }
        }
    ]
}
```

También puede asociar esta política al usuario de IAM en su cuenta. Si un usuario llamado `richard-roe` intenta ver un grupo AWS IoT de facturación, el grupo de facturación debe estar etiquetado `Owner=richard-roe` o`owner=richard-roe`. De lo contrario, se le deniega el acceso. La clave de la etiqueta de condición `Owner` coincide con los nombres de las claves de condición `Owner` y `owner` porque no distinguen entre mayúsculas y minúsculas. Para obtener más información, consulte [Elementos de la política de JSON de IAM: Condición](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_elements_condition.html) en la *Guía del usuario de IAM*.

## Visualización de los recursos de AWS IoT Device Advisor en función de las etiquetas
<a name="security_iam-device-advisor-tags"></a>

Puede utilizar las condiciones de su política basada en la identidad para controlar el acceso a los recursos de AWS IoT Device Advisor basados en etiquetas. El siguiente ejemplo muestra cómo crear una política que permita ver una definición de conjunto determinada. Sin embargo, el permiso solo se otorga si la etiqueta de definición de conjunto tiene `SuiteType` ajustado con el valor `MQTT`. Esta política también proporciona los permisos necesarios para llevar a cabo esta acción en la consola.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewSuiteDefinition",
            "Effect": "Allow",
            "Action": "iotdeviceadvisor:GetSuiteDefinition",
            "Resource": "arn:aws:iotdeviceadvisor:*:*:suitedefinition/*",
            "Condition": {
                "StringEquals": {"aws:ResourceTag/SuiteType": "MQTT"}
        }
        }
    ]
}
```

# AWS políticas gestionadas para AWS IoT
<a name="security-iam-awsmanpol"></a>







Para añadir permisos a usuarios, grupos y roles, es más fácil usar políticas AWS administradas que escribirlas tú mismo. Se necesita tiempo y experiencia para [crear políticas administradas por el cliente de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) que proporcionen a su equipo solo los permisos necesarios. Para empezar rápidamente, puedes usar nuestras políticas AWS gestionadas. Estas políticas cubren casos de uso comunes y están disponibles en su Cuenta de AWS. Para obtener más información sobre las políticas AWS administradas, consulte las [políticas AWS administradas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) en la *Guía del usuario de IAM*.

AWS los servicios mantienen y AWS actualizan las políticas gestionadas. No puede cambiar los permisos en las políticas AWS gestionadas. En ocasiones, los servicios agregan permisos adicionales a una política administrada de AWS para admitir características nuevas. Este tipo de actualización afecta a todas las identidades (usuarios, grupos y roles) donde se asocia la política. Es más probable que los servicios actualicen una política administrada de AWS cuando se lanza una nueva característica o cuando se ponen a disposición nuevas operaciones. Los servicios no eliminan los permisos de una política AWS administrada, por lo que las actualizaciones de la política no afectarán a los permisos existentes.

Además, AWS admite políticas administradas para funciones laborales que abarcan varios servicios. Por ejemplo, la política **ReadOnlyAccess** AWS gestionada proporciona acceso de solo lectura a todos los AWS servicios y recursos. Cuando un servicio lanza una nueva característica, AWS agrega permisos de solo lectura para las operaciones y los recursos nuevos. Para obtener una lista y descripciones de las políticas de funciones de trabajo, consulte [Políticas administradas de AWS para funciones de trabajo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) en la *Guía del usuario de IAM*.

**nota**  
AWS IoT funciona tanto con las políticas de IAM como con AWS IoT las de IAM. En este tema se analizan únicamente las políticas de IAM, que definen una acción de política para las operaciones de las API del plano de control y del plano de datos. Véase también [AWS IoT Core políticas](iot-policies.md).









## AWS política gestionada: Acceso AWSIo TConfig
<a name="security-iam-awsmanpol-AWSIoTConfigAccess"></a>





Puede asociar la política `AWSIoTConfigAccess` a las identidades de IAM.



Esta política concede los permisos de identidad asociados que permiten el acceso a todas las operaciones de configuración de AWS IoT . Esta política puede afectar al procesamiento y al almacenamiento de datos. Para ver esta política en Consola de administración de AWS, consulte [AWSIoTConfigAcceso](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTConfigAccess$jsonEditor?section=permissions).



**Detalles de los permisos**

Esta política incluye los siguientes permisos.




+ `iot`— Recuperar AWS IoT datos y realizar acciones de configuración de IoT.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:AcceptCertificateTransfer",
                "iot:AddThingToThingGroup",
                "iot:AssociateTargetsWithJob",
                "iot:AttachPolicy",
                "iot:AttachPrincipalPolicy",
                "iot:AttachThingPrincipal",
                "iot:CancelCertificateTransfer",
                "iot:CancelJob",
                "iot:CancelJobExecution",
                "iot:ClearDefaultAuthorizer",
                "iot:CreateAuthorizer",
                "iot:CreateCertificateFromCsr",
                "iot:CreateJob",
                "iot:CreateKeysAndCertificate",
                "iot:CreateOTAUpdate",
                "iot:CreatePolicy",
                "iot:CreatePolicyVersion",
                "iot:CreateRoleAlias",
                "iot:CreateStream",
                "iot:CreateThing",
                "iot:CreateThingGroup",
                "iot:CreateThingType",
                "iot:CreateTopicRule",
                "iot:DeleteAuthorizer",
                "iot:DeleteCACertificate",
                "iot:DeleteCertificate",
                "iot:DeleteJob",
                "iot:DeleteJobExecution",
                "iot:DeleteOTAUpdate",
                "iot:DeletePolicy",
                "iot:DeletePolicyVersion",
                "iot:DeleteRegistrationCode",
                "iot:DeleteRoleAlias",
                "iot:DeleteStream",
                "iot:DeleteThing",
                "iot:DeleteThingGroup",
                "iot:DeleteThingType",
                "iot:DeleteTopicRule",
                "iot:DeleteV2LoggingLevel",
                "iot:DeprecateThingType",
                "iot:DescribeAuthorizer",
                "iot:DescribeCACertificate",
                "iot:DescribeCertificate",
                "iot:DescribeDefaultAuthorizer",
                "iot:DescribeEndpoint",
                "iot:DescribeEventConfigurations",
                "iot:DescribeIndex",
                "iot:DescribeJob",
                "iot:DescribeJobExecution",
                "iot:DescribeRoleAlias",
                "iot:DescribeStream",
                "iot:DescribeThing",
                "iot:DescribeThingGroup",
                "iot:DescribeThingRegistrationTask",
                "iot:DescribeThingType",
                "iot:DetachPolicy",
                "iot:DetachPrincipalPolicy",
                "iot:DetachThingPrincipal",
                "iot:DisableTopicRule",
                "iot:EnableTopicRule",
                "iot:GetEffectivePolicies",
                "iot:GetIndexingConfiguration",
                "iot:GetJobDocument",
                "iot:GetLoggingOptions",
                "iot:GetOTAUpdate",
                "iot:GetPolicy",
                "iot:GetPolicyVersion",
                "iot:GetRegistrationCode",
                "iot:GetTopicRule",
                "iot:GetV2LoggingOptions",
                "iot:ListAttachedPolicies",
                "iot:ListAuthorizers",
                "iot:ListCACertificates",
                "iot:ListCertificates",
                "iot:ListCertificatesByCA",
                "iot:ListIndices",
                "iot:ListJobExecutionsForJob",
                "iot:ListJobExecutionsForThing",
                "iot:ListJobs",
                "iot:ListOTAUpdates",
                "iot:ListOutgoingCertificates",
                "iot:ListPolicies",
                "iot:ListPolicyPrincipals",
                "iot:ListPolicyVersions",
                "iot:ListPrincipalPolicies",
                "iot:ListPrincipalThings",
                "iot:ListRoleAliases",
                "iot:ListStreams",
                "iot:ListTargetsForPolicy",
                "iot:ListThingGroups",
                "iot:ListThingGroupsForThing",
                "iot:ListThingPrincipals",
                "iot:ListThingRegistrationTaskReports",
                "iot:ListThingRegistrationTasks",
                "iot:ListThings",
                "iot:ListThingsInThingGroup",
                "iot:ListThingTypes",
                "iot:ListTopicRules",
                "iot:ListV2LoggingLevels",
                "iot:RegisterCACertificate",
                "iot:RegisterCertificate",
                "iot:RegisterThing",
                "iot:RejectCertificateTransfer",
                "iot:RemoveThingFromThingGroup",
                "iot:ReplaceTopicRule",
                "iot:SearchIndex",
                "iot:SetDefaultAuthorizer",
                "iot:SetDefaultPolicyVersion",
                "iot:SetLoggingOptions",
                "iot:SetV2LoggingLevel",
                "iot:SetV2LoggingOptions",
                "iot:StartThingRegistrationTask",
                "iot:StopThingRegistrationTask",
                "iot:TestAuthorization",
                "iot:TestInvokeAuthorizer",
                "iot:TransferCertificate",
                "iot:UpdateAuthorizer",
                "iot:UpdateCACertificate",
                "iot:UpdateCertificate",
                "iot:UpdateEventConfigurations",
                "iot:UpdateIndexingConfiguration",
                "iot:UpdateRoleAlias",
                "iot:UpdateStream",
                "iot:UpdateThing",
                "iot:UpdateThingGroup",
                "iot:UpdateThingGroupsForThing",
                "iot:UpdateAccountAuditConfiguration",
                "iot:DescribeAccountAuditConfiguration",
                "iot:DeleteAccountAuditConfiguration",
                "iot:StartOnDemandAuditTask",
                "iot:CancelAuditTask",
                "iot:DescribeAuditTask",
                "iot:ListAuditTasks",
                "iot:CreateScheduledAudit",
                "iot:UpdateScheduledAudit",
                "iot:DeleteScheduledAudit",
                "iot:DescribeScheduledAudit",
                "iot:ListScheduledAudits",
                "iot:ListAuditFindings",
                "iot:CreateSecurityProfile",
                "iot:DescribeSecurityProfile",
                "iot:UpdateSecurityProfile",
                "iot:DeleteSecurityProfile",
                "iot:AttachSecurityProfile",
                "iot:DetachSecurityProfile",
                "iot:ListSecurityProfiles",
                "iot:ListSecurityProfilesForTarget",
                "iot:ListTargetsForSecurityProfile",
                "iot:ListActiveViolations",
                "iot:ListViolationEvents",
                "iot:ValidateSecurityProfileBehaviors"
            ],
            "Resource": "*"
        }
    ]
}
```

## AWS política gestionada: AWSIo TConfig ReadOnlyAccess
<a name="security-iam-awsmanpol-AWSIoTConfigReadOnlyAccess"></a>





Puede asociar la política `AWSIoTConfigReadOnlyAccess` a las identidades de IAM.



Esta política concede los permisos de identidad asociados que permiten el acceso de solo lectura a todas las operaciones de configuración de AWS IoT . Para ver esta política en Consola de administración de AWS, consulte [AWSIoTConfigReadOnlyAccess](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTConfigReadOnlyAccess$jsonEditor?section=permissions).



**Detalles de los permisos**

Esta política incluye los siguientes permisos.




+ `iot`: realice operaciones de solo lectura de las acciones de configuración de IoT.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:DescribeAuthorizer",
                "iot:DescribeCACertificate",
                "iot:DescribeCertificate",
                "iot:DescribeDefaultAuthorizer",
                "iot:DescribeEndpoint",
                "iot:DescribeEventConfigurations",
                "iot:DescribeIndex",
                "iot:DescribeJob",
                "iot:DescribeJobExecution",
                "iot:DescribeRoleAlias",
                "iot:DescribeStream",
                "iot:DescribeThing",
                "iot:DescribeThingGroup",
                "iot:DescribeThingRegistrationTask",
                "iot:DescribeThingType",
                "iot:GetEffectivePolicies",
                "iot:GetIndexingConfiguration",
                "iot:GetJobDocument",
                "iot:GetLoggingOptions",
                "iot:GetOTAUpdate",
                "iot:GetPolicy",
                "iot:GetPolicyVersion",
                "iot:GetRegistrationCode",
                "iot:GetTopicRule",
                "iot:GetV2LoggingOptions",
                "iot:ListAttachedPolicies",
                "iot:ListAuthorizers",
                "iot:ListCACertificates",
                "iot:ListCertificates",
                "iot:ListCertificatesByCA",
                "iot:ListIndices",
                "iot:ListJobExecutionsForJob",
                "iot:ListJobExecutionsForThing",
                "iot:ListJobs",
                "iot:ListOTAUpdates",
                "iot:ListOutgoingCertificates",
                "iot:ListPolicies",
                "iot:ListPolicyPrincipals",
                "iot:ListPolicyVersions",
                "iot:ListPrincipalPolicies",
                "iot:ListPrincipalThings",
                "iot:ListRoleAliases",
                "iot:ListStreams",
                "iot:ListTargetsForPolicy",
                "iot:ListThingGroups",
                "iot:ListThingGroupsForThing",
                "iot:ListThingPrincipals",
                "iot:ListThingRegistrationTaskReports",
                "iot:ListThingRegistrationTasks",
                "iot:ListThings",
                "iot:ListThingsInThingGroup",
                "iot:ListThingTypes",
                "iot:ListTopicRules",
                "iot:ListV2LoggingLevels",
                "iot:SearchIndex",
                "iot:TestAuthorization",
                "iot:TestInvokeAuthorizer",
                "iot:DescribeAccountAuditConfiguration",
                "iot:DescribeAuditTask",
                "iot:ListAuditTasks",
                "iot:DescribeScheduledAudit",
                "iot:ListScheduledAudits",
                "iot:ListAuditFindings",
                "iot:DescribeSecurityProfile",
                "iot:ListSecurityProfiles",
                "iot:ListSecurityProfilesForTarget",
                "iot:ListTargetsForSecurityProfile",
                "iot:ListActiveViolations",
                "iot:ListViolationEvents",
                "iot:ValidateSecurityProfileBehaviors"
            ],
            "Resource": "*"
        }
    ]
}
```

## AWS política gestionada: AWSIo TData Acceso
<a name="security-iam-awsmanpol-AWSIoTDataAccess"></a>





Puede asociar la política `AWSIoTDataAccess` a las identidades de IAM.



Esta política concede a los permisos de identidad asociados que permiten el acceso a todas las operaciones de AWS IoT datos. Las operaciones de datos envían datos sobre protocolos MQTT y HTTP. Para ver esta política en la Consola de administración de AWS, consulte [https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTDataAccess?section=permissions](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTDataAccess?section=permissions).



**Detalles de los permisos**

Esta política incluye los siguientes permisos.




+ `iot`— Recupere AWS IoT datos y permita el acceso total a las acciones AWS IoT de mensajería.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect",
                "iot:Publish",
                "iot:Subscribe",
                "iot:Receive",
                "iot:GetThingShadow",
                "iot:UpdateThingShadow",
                "iot:DeleteThingShadow",
                "iot:ListNamedShadowsForThing"
            ],
            "Resource": "*"
        }
    ]
}
```

## AWS política gestionada: AWSIo TFull Acceso
<a name="security-iam-awsmanpol-AWSIoTFullAccess"></a>





Puede asociar la política `AWSIoTFullAccess` a las identidades de IAM.



Esta política concede los permisos de identidad asociados que permiten el acceso a todas las operaciones de configuración y mensajería de AWS IoT . Para ver esta política en Consola de administración de AWS, consulte [https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTFullAccess?section=permissions](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTFullAccess?section=permissions).



**Detalles de los permisos**

Esta política incluye los siguientes permisos.




+ `iot`— Recupere AWS IoT datos y permita el acceso total a las acciones de AWS IoT configuración y mensajería.
+ `iotjobsdata`— Recupere los datos de AWS IoT Jobs y permita el acceso total a las operaciones de la API del plano de datos de AWS IoT Jobs.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:*",
                "iotjobsdata:*"
            ],
            "Resource": "*"
        }
    ]
}
```

## AWS política gestionada: AWSIo TLogging
<a name="security-iam-awsmanpol-AWSIoTLogging"></a>





Puede asociar la política `AWSIoTLogging` a las identidades de IAM.



Esta política concede los permisos de identidad asociados que permiten el acceso para crear grupos de Amazon CloudWatch Logs y transmitir registros a los grupos. Esta política está asociada a su función de CloudWatch registro. Para ver esta política en Consola de administración de AWS, consulte [https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTLogging?section=permissions](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTLogging?section=permissions).



**Detalles de los permisos**

Esta política incluye los siguientes permisos.




+ `logs`— Recuperar CloudWatch registros. También permite crear grupos de CloudWatch registros y transmitir los registros a los grupos.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:PutMetricFilter",
                "logs:PutRetentionPolicy",
                "logs:GetLogEvents",
                "logs:DeleteLogStream"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

## AWS política gestionada: AWSIo TOTAUpdate
<a name="security-iam-awsmanpol-AWSIoTOTAUpdate"></a>





Puede asociar la política `AWSIoTOTAUpdate` a las identidades de IAM.



Esta política concede los permisos de identidad asociados que permiten acceder a los AWS IoT trabajos de creación y firma de AWS IoT código y a describir los trabajos de los firmantes de AWS código. [Para ver esta política en Consola de administración de AWS, consulte`AWSIoTOTAUpdate`.](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTOTAUpdate?section=permissions)



**Detalles de los permisos**

Esta política incluye los siguientes permisos.




+ `iot`— Crear AWS IoT trabajos y trabajos de firma de código.
+ `signer`— Realizar la creación de trabajos de firmante de AWS código.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "iot:CreateJob",
            "signer:DescribeSigningJob"
        ],
        "Resource": "*"
    }
}
```

## AWS política gestionada: acciones AWSIo TRule
<a name="security-iam-awsmanpol-AWSIoTRuleActions"></a>





Puede asociar la política `AWSIoTRuleActions` a las identidades de IAM.



Esta política concede a los permisos de identidad asociados que permiten el acceso a todas las Servicio de AWS acciones de las AWS IoT reglas. Para ver esta política en Consola de administración de AWS, consulte [https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTRuleActions?section=permissions](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTRuleActions?section=permissions).



**Detalles de los permisos**

Esta política incluye los siguientes permisos.




+ `iot`: realice acciones para publicar los mensajes de acción de las reglas.
+ `dynamodb`: inserte un mensaje en una tabla de DynamoDB o divida un mensaje en varias columnas de una tabla de DynamoDB.
+ `s3`: almacene un objeto a un bucket de Amazon S3.
+ `kinesis`: envíe un mensaje a un objeto de flujo de Amazon Kinesis.
+ `firehose`: Inserte un registro en un objeto de flujo de Firehose.
+ `cloudwatch`- Cambie el estado CloudWatch de la alarma o envíe los datos del mensaje a la CloudWatch métrica.
+ `sns`: realice la operación para publicar una notificación utilizando Amazon SNS. Esta operación se centra en temas relacionados con las AWS IoT redes sociales.
+ `sqs`: inserte un mensaje para agregarlo a la cola SQS.
+ `es`- Enviar un mensaje al OpenSearch servicio de servicio.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "dynamodb:PutItem",
            "kinesis:PutRecord",
            "iot:Publish",
            "s3:PutObject",
            "sns:Publish",
            "sqs:SendMessage*",
            "cloudwatch:SetAlarmState",
            "cloudwatch:PutMetricData",
            "es:ESHttpPut",
            "firehose:PutRecord"
        ],
        "Resource": "*"
    }
}
```

## AWS política gestionada: AWSIo TThings registro
<a name="security-iam-awsmanpol-AWSIoTThingsRegistration"></a>





Puede asociar la política `AWSIoTThingsRegistration` a las identidades de IAM.



Esta política otorga los permisos de identidad asociados que permiten acceder y registrar objetos de forma masiva mediante la API `StartThingRegistrationTask`. Esta política puede afectar al procesamiento y al almacenamiento de datos. Para ver esta política en Consola de administración de AWS, consulte [https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTThingsRegistration?section=permissions](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTThingsRegistration?section=permissions).



**Detalles de los permisos**

Esta política incluye los siguientes permisos.




+ `iot`: realice acciones para crear objetos y asociar políticas y certificados al registrarse de forma masiva.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:AddThingToThingGroup",
                "iot:AttachPolicy",
                "iot:AttachPrincipalPolicy",
                "iot:AttachThingPrincipal",
                "iot:CreateCertificateFromCsr",
                "iot:CreatePolicy",
                "iot:CreateThing",
                "iot:DescribeCertificate",
                "iot:DescribeThing",
                "iot:DescribeThingGroup",
                "iot:DescribeThingType",
                "iot:DetachPolicy",
                "iot:DetachThingPrincipal",
                "iot:GetPolicy",
                "iot:ListAttachedPolicies",
                "iot:ListPolicyPrincipals",
                "iot:ListPrincipalPolicies",
                "iot:ListPrincipalThings",
                "iot:ListTargetsForPolicy",
                "iot:ListThingGroupsForThing",
                "iot:ListThingPrincipals",
                "iot:RegisterCertificate",
                "iot:RegisterThing",
                "iot:RemoveThingFromThingGroup",
                "iot:UpdateCertificate",
                "iot:UpdateThing",
                "iot:UpdateThingGroupsForThing",
                "iot:AddThingToBillingGroup",
                "iot:DescribeBillingGroup",
                "iot:RemoveThingFromBillingGroup"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```





## AWS IoT actualizaciones de las políticas AWS gestionadas
<a name="security-iam-awsmanpol-updates"></a>



Consulte los detalles sobre las actualizaciones de las políticas AWS administradas AWS IoT desde que este servicio comenzó a rastrear estos cambios. Para recibir alertas automáticas sobre los cambios en esta página, suscríbase a la fuente RSS de la página del historial del AWS IoT documento.




| Cambio | Descripción | Fecha | 
| --- | --- | --- | 
|  [AWSIoTFullAcceso](#security-iam-awsmanpol-AWSIoTFullAccess): actualización a una política existente  |  AWS IoT se agregaron nuevos permisos para permitir a los usuarios acceder a las operaciones de la API del plano de datos de AWS IoT Jobs mediante el protocolo HTTP. Un nuevo prefijo de política de IAM proporciona un control de acceso más detallado para acceder a los puntos finales del plano de datos de AWS IoT Jobs. `iotjobsdata:` Para las operaciones de la API del plano de control, se seguirá utilizando el prefijo `iot:`. Para obtener más información, consulte [AWS IoT Core políticas para el protocolo HTTPS](iot-data-plane-jobs.md#iot-jobs-data-http).  | 11 de mayo de 2022 | 
|  AWS IoT comenzó a rastrear los cambios  |  AWS IoT comenzó a realizar un seguimiento de los cambios de sus políticas AWS gestionadas.  | 11 de mayo de 2022 | 

# Solución de problemas AWS IoT de identidad y acceso
<a name="security_iam_troubleshoot"></a>

Utilice la siguiente información como ayuda para diagnosticar y solucionar los problemas más comunes que pueden surgir al trabajar con una AWS IoT IAM.

**Topics**
+ [No estoy autorizado a realizar ninguna acción en AWS IoT](#security_iam_troubleshoot-no-permissions)
+ [No estoy autorizado a realizar iam: PassRole](#security_iam_troubleshoot-passrole)
+ [Quiero permitir que personas ajenas a mí accedan Cuenta de AWS a mis AWS IoT recursos](#security_iam_troubleshoot-cross-account-access)

## No estoy autorizado a realizar ninguna acción en AWS IoT
<a name="security_iam_troubleshoot-no-permissions"></a>

Si recibe un error que indica que no tiene autorización para realizar una acción, las políticas se deben actualizar para permitirle realizar la acción.

En el siguiente ejemplo, el error se produce cuando el usuario de IAM, `mateojackson`, intenta utilizar la consola para consultar los detalles acerca de un recurso de objeto, pero no tiene los permisos `iot:DescribeThing`.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: iot:DescribeThing on resource: MyIoTThing
```

En este caso, la política del usuario de `mateojackson` debe actualizarse para permitir el acceso al recurso mediante la acción `iot:DescribeThing`. 

Si necesita ayuda, póngase en contacto con su AWS administrador. El administrador es la persona que le proporcionó las credenciales de inicio de sesión.

Uso de AWS IoT Device Advisor  
Si utiliza AWS IoT Device Advisor, el siguiente ejemplo de error se produce cuando el usuario `mateojackson` intenta utilizar la consola para ver los detalles sobre la definición de una suite pero no tiene los `iotdeviceadvisor:GetSuiteDefinition` permisos necesarios.  

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: iotdeviceadvisor:GetSuiteDefinition on resource: MySuiteDefinition
```
En este caso, la política del usuario de `mateojackson` debe actualizarse para permitir el acceso al recurso *`MySuiteDefinition`* mediante la acción `iotdeviceadvisor:GetSuiteDefinition`.

## No estoy autorizado a realizar iam: PassRole
<a name="security_iam_troubleshoot-passrole"></a>

Si recibe un error que indica que no tiene autorización para realizar la acción `iam:PassRole`, las políticas deben actualizarse a fin de permitirle pasar un rol a AWS IoT.

Algunas Servicios de AWS permiten transferir una función existente a ese servicio en lugar de crear una nueva función de servicio o una función vinculada a un servicio. Para ello, debe tener permisos para transferir la función al servicio.

En el siguiente ejemplo, el error se produce cuando un usuario de IAM denominado `marymajor` intenta utilizar la consola para realizar una acción en AWS IoT. Sin embargo, la acción requiere que el servicio cuente con permisos que otorguen un rol de servicio. Mary no tiene permisos para transferir el rol al servicio.

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

En este caso, las políticas de Mary se deben actualizar para permitirle realizar la acción `iam:PassRole`.

Si necesita ayuda, póngase en contacto con su AWS administrador. El administrador es la persona que le proporcionó las credenciales de inicio de sesión.

## Quiero permitir que personas ajenas a mí accedan Cuenta de AWS a mis AWS IoT recursos
<a name="security_iam_troubleshoot-cross-account-access"></a>

Se puede crear un rol que los usuarios de otras cuentas o las personas externas a la organización puedan utilizar para acceder a sus recursos. Se puede especificar una persona de confianza para que asuma el rol. En el caso de los servicios que respaldan las políticas basadas en recursos o las listas de control de acceso (ACLs), puedes usar esas políticas para permitir que las personas accedan a tus recursos.

Para obtener más información, consulte lo siguiente:
+ Para saber si AWS IoT es compatible con estas funciones, consulte. [¿Cómo AWS IoT funciona con IAM](security_iam_service-with-iam.md)
+ Para obtener información sobre cómo proporcionar acceso a los recursos de su Cuentas de AWS propiedad, consulte [Proporcionar acceso a un usuario de IAM en otro usuario de su propiedad Cuenta de AWS en](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html) la Guía del *usuario de IAM*.
+ Para obtener información sobre cómo proporcionar acceso a tus recursos a terceros Cuentas de AWS, consulta Cómo [proporcionar acceso a recursos que Cuentas de AWS son propiedad de terceros](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html) en la Guía del usuario de *IAM*.
+ Para obtener información sobre cómo proporcionar acceso mediante una federación de identidades, consulte [Proporcionar acceso a usuarios autenticados externamente (identidad federada)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html) en la *Guía del usuario de IAM*.
+ Para conocer sobre la diferencia entre las políticas basadas en roles y en recursos para el acceso entre cuentas, consulte [Acceso a recursos entre cuentas en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) en la *Guía del usuario de IAM*.

# Registro y supervisión
<a name="security-logging"></a>

La supervisión es una parte importante del mantenimiento de la fiabilidad, la disponibilidad y el rendimiento de AWS IoT sus AWS soluciones. Debe recopilar los datos de supervisión de todas las partes de la AWS solución para poder depurar con mayor facilidad una falla multipunto, en caso de que se produzca alguna. Para obtener información sobre los procedimientos de registro y monitorización , consulte [Monitorización AWS IoT](monitoring_overview.md)

## Herramientas de monitorización
<a name="monitoring_automated_manual"></a>

AWS proporciona herramientas que puede utilizar para supervisar AWS IoT. Puede configurar algunas de estas herramientas para que realicen la monitorización por usted. Algunas de las herramientas requieren intervención manual. Le recomendamos que automatice las tareas de supervisión en la medida de lo posible.

### Herramientas de monitorización automatizadas
<a name="monitoring_automated_tools"></a>

Puede utilizar las siguientes herramientas de supervisión automatizadas para observar AWS IoT e informar cuando algo va mal:
+ **Amazon CloudWatch Alarms**: observe una sola métrica durante un período de tiempo que especifique y realice una o más acciones en función del valor de la métrica en relación con un umbral determinado durante varios períodos de tiempo. La acción es una notificación enviada a un tema del Servicio de Notificación Simple (Amazon SNS) o a una política de Amazon EC2 Auto Scaling. CloudWatch las alarmas no invocan acciones simplemente porque se encuentren en un estado determinado. El estado debe haber cambiado y debe mantenerse durante el número de periodos especificado. Para obtener más información, consulte [Supervisa AWS IoT las alarmas y las métricas con Amazon CloudWatch](monitoring-cloudwatch.md).
+ **Amazon CloudWatch Logs**: supervise, almacene y acceda a sus archivos de registro desde AWS CloudTrail u otras fuentes. Amazon CloudWatch Logs también le permite ver los pasos críticos que siguen los casos de prueba de AWS IoT Device Advisor, los eventos generados y los mensajes MQTT enviados desde sus dispositivos o AWS IoT Core durante la ejecución de las pruebas. Estos registros permiten depurar y tomar medidas correctivas en sus dispositivos. Para obtener más información, consulte [Supervise AWS IoT mediante registros CloudWatch](cloud-watch-logs.md) Para obtener más información sobre el uso de Amazon CloudWatch, consulte [Supervisión de archivos de registro](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html) en la *Guía del CloudWatch usuario de Amazon*.
+ **Amazon CloudWatch Events**: haga coincidir los eventos y diríjalos a una o más funciones o transmisiones de destino para realizar cambios, capturar información de estado y tomar medidas correctivas. Para obtener más información, consulta [Qué es Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchEvents.html) en la *Guía del CloudWatch usuario de Amazon*.
+ **AWS CloudTrail Supervisión** de registros: comparta archivos de registro entre cuentas, supervise los archivos de CloudTrail registro en tiempo real enviándolos a CloudWatch Logs, cree aplicaciones de procesamiento de registros en Java y valide que sus archivos de registro no hayan cambiado después de su entrega CloudTrail. Para obtener más información, consulte [Registrar las llamadas a la AWS IoT API mediante AWS CloudTrail](iot-using-cloudtrail.md) y [trabaje con archivos de CloudTrail registro](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-working-with-log-files.html) en la *Guía del AWS CloudTrail usuario*. 

### Herramientas de monitorización manual
<a name="monitoring_manual_tools"></a>

Otra parte importante del monitoreo AWS IoT consiste en monitorear manualmente los elementos que las CloudWatch alarmas no cubren. Los AWS IoT paneles de control de la consola de AWS servicio y otros proporcionan una at-a-glance vista del estado de su AWS entorno. CloudWatch Le recomendamos que compruebe también los archivos de registro. AWS IoT
+ AWS IoT el panel de control muestra:
  + Certificados CA
  + Certificados
  + Políticas
  + Reglas
  + Objetos
+ CloudWatch la página de inicio muestra:
  + Alarmas y estado actual.
  + Gráficos de alarmas y recursos.
  + Estado de los servicios.

  Se puede utilizar CloudWatch para hacer lo siguiente: 
  + Cree [paneles personalizados](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CloudWatch_Dashboards.html) para monitorizar los servicios que le interesen.
  + Realizar un gráfico con los datos de las métricas para resolver problemas y descubrir tendencias.
  + Busca y examina todas las métricas AWS de tus recursos.
  + Crear y editar las alarmas de notificación de problemas.

# Validación del cumplimiento de AWS IoT Core
<a name="compliance"></a>

Para saber si uno Servicio de AWS está dentro del ámbito de aplicación de programas de cumplimiento específicos, consulte [Servicios de AWS Alcance por programa de cumplimiento Servicios de AWS](https://aws.amazon.com/compliance/services-in-scope/) de cumplimiento y elija el programa de cumplimiento que le interese. Para obtener información general, consulte Programas de [AWS cumplimiento > Programas AWS](https://aws.amazon.com/compliance/programs/) .

Puede descargar informes de auditoría de terceros utilizando AWS Artifact. Para obtener más información, consulte [Descarga de informes en AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html) .

Su responsabilidad de cumplimiento al Servicios de AWS utilizarlos viene determinada por la confidencialidad de sus datos, los objetivos de cumplimiento de su empresa y las leyes y reglamentos aplicables. Para obtener más información sobre su responsabilidad de conformidad al utilizarlos Servicios de AWS, consulte [AWS la documentación de seguridad](https://docs.aws.amazon.com/security/).

# La resiliencia en el núcleo del AWS IoT
<a name="disaster-recovery-resiliency"></a>

La infraestructura AWS global se basa en Región de AWS s y zonas de disponibilidad. Región de AWS Las s proporcionan varias zonas de disponibilidad aisladas y separadas físicamente, que están conectadas mediante redes de baja latencia, alto rendimiento y alta redundancia. Con las zonas de disponibilidad, puede diseñar y utilizar aplicaciones y bases de datos que realizan una conmutación por error automática entre zonas de disponibilidad sin interrupciones. Las zonas de disponibilidad tienen una mayor disponibilidad, tolerancia a errores y escalabilidad que las infraestructuras tradicionales de centros de datos únicos o múltiples. 

[Para obtener más información sobre las zonas de disponibilidad y Región de AWS las zonas de disponibilidad, consulte Infraestructura global.AWS](https://aws.amazon.com/about-aws/global-infrastructure/)

AWS IoT Core almacena información sobre sus dispositivos en el registro de dispositivos. También almacena certificados de CA, certificados de dispositivo y datos de sombra de dispositivos. En caso de fallo del hardware o de la red, estos datos se replican automáticamente entre las zonas de disponibilidad, pero no entre las regiones.

AWS IoT Core publica los eventos de MQTT cuando se actualiza el registro del dispositivo. Puede utilizar estos mensajes para realizar una copia de seguridad de los datos del registro y guardarlos en algún lugar, como una tabla DynamoDB. Usted es responsable de guardar los certificados que AWS IoT Core cree para usted o los que cree usted mismo. Device Shadow almacena los datos de estado de tus dispositivos y se puede volver a enviar cuando un dispositivo vuelve a estar en línea. AWS IoT Device Advisor almacena información sobre la configuración del conjunto de pruebas. Estos datos se replican automáticamente en caso de fallo del hardware o de la red.

AWS IoT Core los recursos son específicos de cada región y no se replican entre ellos Regiones de AWS a menos que usted lo haga específicamente.

Para obtener información sobre las prácticas recomendadas de seguridad, consulte [Mejores prácticas de seguridad en AWS IoT Core](security-best-practices.md).

# Uso AWS IoT Core con puntos finales de VPC de interfaz
<a name="IoTCore-VPC"></a>

[Con AWS IoT Core, puede crear puntos finales del [plano de control de IoT y puntos finales](https://docs.aws.amazon.com//iot/latest/developerguide/connect-to-iot.html#iot-service-endpoint-intro) de [datos de IoT dentro de su nube privada virtual (VPC) mediante puntos finales](https://docs.aws.amazon.com//iot/latest/developerguide/iot-connect-devices.html) de VPC de interfaz.](https://docs.aws.amazon.com//vpc/latest/userguide/vpce-interface.html#create-interface-endpoint) Los puntos finales de VPC de interfaz funcionan con una AWS tecnología que puede utilizar para acceder a los servicios en los que se ejecutan AWS mediante direcciones IP privadas. AWS PrivateLink Para obtener más información, consulte [Amazon Virtual Private Cloud](https://docs.aws.amazon.com//AmazonVPC/latest/UserGuide/VPC_Introduction.html). 

Para conectar dispositivos sobre el terreno en redes remotas, como una red corporativa, a su Amazon VPC, consulte las opciones que se muestran en la matriz de conectividad de la [Network-to-Amazon VPC](https://docs.aws.amazon.com//whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html). 

**Topics**
+ [Creación de puntos finales de VPC para el plano de control AWS IoT Core](#Create-VPC-endpoints-CP)
+ [Creación de puntos finales de VPC para el plano de datos AWS IoT Core](#Create-VPC-endpoints)
+ [Creación de puntos de enlace de VPC para el proveedor de credenciales AWS IoT Core](#Create-VPC-endpoints-credential-provider)
+ [Creación de un punto de conexión de interfaz de Amazon VPC](#Create-VPC-endpoints-core-create-vpc)
+ [Configure una zona alojada privada](#connect-iot-core-create-phz-lns)
+ [Control del acceso a AWS IoT Core más de puntos finales de VPC](#Control-VPC-access)
+ [Limitaciones](#VPC-limitations)
+ [Escalar los puntos finales de VPC con AWS IoT Core](#Scaling-VPC-endpoints)
+ [Uso de dominios personalizados con puntos de conexión de VPC](#VPC-custom-domains)
+ [Disponibilidad de puntos finales de VPC para AWS IoT Core](#VPC-availability)
+ [Uso de túneles AWS IoT Device Management seguros con puntos finales de VPC de interfaz](IoTCore-ST-VPC.md)

## Creación de puntos finales de VPC para el plano de control AWS IoT Core
<a name="Create-VPC-endpoints-CP"></a>

Puede crear un punto final de VPC para la API del plano de AWS IoT Core control para conectar sus dispositivos a AWS IoT servicios y otros AWS servicios. Para empezar con los puntos de enlace de VPC, [cree un punto de enlace de VPC de interfaz y selecciónelo como servicio](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#create-interface-endpoint). AWS IoT Core AWS Si utiliza la CLI, primero llame [describe-vpc-endpoint-services](https://docs.aws.amazon.com//cli/latest/reference/ec2/describe-vpc-endpoint-services.html)para asegurarse de que está eligiendo una zona de disponibilidad en la que AWS IoT Core esté presente en su particular Región de AWS. Por ejemplo, en us-east-1, este comando tendría el siguiente aspecto:

```
aws ec2 describe-vpc-endpoint-services --service-name com.amazonaws.us-east-1.iot.api
```

Consulte las instrucciones detalladas que aparecen a continuación para [crear un punto final de interfaz de Amazon VPC](#Create-VPC-endpoints-core-create-vpc) para el plano de AWS IoT Core control.

## Creación de puntos finales de VPC para el plano de datos AWS IoT Core
<a name="Create-VPC-endpoints"></a>

Puede crear un punto final de VPC para la API del plano de AWS IoT Core datos para conectar sus dispositivos a AWS IoT servicios y otros AWS servicios. Para empezar con los puntos de enlace de VPC, [cree un punto de enlace de VPC de interfaz y selecciónelo como servicio](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#create-interface-endpoint). AWS IoT Core AWS Si utiliza la CLI, primero llame [describe-vpc-endpoint-services](https://docs.aws.amazon.com//cli/latest/reference/ec2/describe-vpc-endpoint-services.html)para asegurarse de que está eligiendo una zona de disponibilidad en la que AWS IoT Core esté presente en su particular Región de AWS. Por ejemplo, en us-east-1, este comando tendría el siguiente aspecto:

```
aws ec2 describe-vpc-endpoint-services --service-name com.amazonaws.us-east-1.iot.data
```

**nota**  
La característica VPC para crear automáticamente un registro DNS está desactivada. Para conectarse a estos puntos de conexión, debe crear manualmente un registro DNS privado. Para obtener más información sobre los registros DNS de la VPC privada, consulte [DNS privado para puntos de conexión de interfaz](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#vpce-private-dns). Para obtener más información sobre las limitaciones de la AWS IoT Core VPC, consulte. [Limitaciones](#VPC-limitations)

Para conectar clientes MQTT a las interfaces de punto de conexión de VPC:
+ Debe crear manualmente registros DNS en una zona alojada privada que esté asociada a su VPC. Para empezar, consulte [Creación de una zona alojada privada](https://docs.aws.amazon.com//Route53/latest/DeveloperGuide/hosted-zone-private-creating.html). 
+ Dentro de su zona alojada privada, cree un registro de alias para cada IP de interfaz de red elástica para el punto de conexión de VPC. Si tiene varias interfaces de red IPs para varios puntos finales de VPC, cree registros DNS ponderados con el mismo peso en todos los registros ponderados. Estas direcciones IP están disponibles en la llamada a la [DescribeNetworkInterfaces](https://docs.aws.amazon.com//AWSEC2/latest/APIReference/API_DescribeNetworkInterfaces.html)API cuando se filtran por el ID del punto final de la VPC en el campo de descripción.

Consulte las instrucciones detalladas que aparecen a continuación para [crear un punto final de interfaz de Amazon VPC](#Create-VPC-endpoints-core-create-vpc) y [configurar una zona alojada privada](#connect-iot-core-create-phz-lns) para el plano de AWS IoT Core datos.

## Creación de puntos de enlace de VPC para el proveedor de credenciales AWS IoT Core
<a name="Create-VPC-endpoints-credential-provider"></a>

[Puede crear un punto final de VPC para que el [proveedor de AWS IoT Core credenciales](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.html) conecte los dispositivos mediante la autenticación basada en certificados de cliente y obtenga AWS credenciales temporales en AWS formato Signature Version 4.](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_aws-signing.html) Para empezar con los puntos de enlace de VPC para el proveedor de AWS IoT Core credenciales, ejecute el comando [create-vpc-endpoint](https://docs.aws.amazon.com//cli/latest/reference/ec2/create-vpc-endpoint.html)CLI para crear [un punto de enlace de VPC de interfaz](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#create-interface-endpoint) y seleccione AWS IoT Core el proveedor de credenciales como servicio. AWS Para asegurarse de elegir una zona de disponibilidad que AWS IoT Core esté presente en la suya Región de AWS, ejecute primero el comando. [describe-vpc-endpoint-services](https://docs.aws.amazon.com//cli/latest/reference/ec2/describe-vpc-endpoint-services.html) Por ejemplo, en us-east-1, este comando tendría el siguiente aspecto:

```
aws ec2 describe-vpc-endpoint-services --service-name com.amazonaws.us-east-1.iot.credentials
```

**nota**  
La característica VPC para crear automáticamente un registro DNS está desactivada. Para conectarse a estos puntos de conexión, debe crear manualmente un registro DNS privado. Para obtener más información sobre los registros DNS de la VPC privada, consulte [DNS privado para puntos de conexión de interfaz](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#vpce-private-dns). Para obtener más información sobre las limitaciones de la AWS IoT Core VPC, consulte. [Limitaciones](#VPC-limitations)

Para conectar los clientes HTTP a las interfaces de punto de conexión de VPC:
+ Debe crear manualmente registros DNS en una zona alojada privada que esté asociada a su VPC. Para empezar, consulte [Creación de una zona alojada privada](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html). 
+ Dentro de su zona alojada privada, cree un registro de alias para cada IP de interfaz de red elástica para el punto de conexión de VPC. Si tiene varias interfaces de red IPs para varios puntos finales de VPC, cree registros DNS ponderados con el mismo peso en todos los registros ponderados. Estas direcciones IP están disponibles en la llamada a la [DescribeNetworkInterfaces](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeNetworkInterfaces.html)API cuando se filtran por el ID del punto final de la VPC en el campo de descripción.

Consulte las instrucciones detalladas que aparecen a continuación para [crear un punto final de interfaz de Amazon VPC](#Create-VPC-endpoints-core-create-vpc) y [configurar una zona alojada privada](#connect-iot-core-create-phz-lns) para el proveedor de AWS IoT Core credenciales.

## Creación de un punto de conexión de interfaz de Amazon VPC
<a name="Create-VPC-endpoints-core-create-vpc"></a>

Puede crear un punto final de VPC de interfaz para conectarse a los AWS servicios impulsados por. AWS PrivateLink Utilice el siguiente procedimiento para crear un punto final de VPC de interfaz que se conecte al plano de AWS IoT Core datos o al proveedor de AWS IoT Core credenciales. Para obtener más información, consulte [Acceder a un AWS servicio mediante un punto final de VPC de interfaz](https://docs.aws.amazon.com//vpc/latest/privatelink/create-interface-endpoint.html). 

**nota**  
Los procesos para crear un punto final de la interfaz de Amazon VPC para el plano de AWS IoT Core datos y el proveedor de AWS IoT Core credenciales son similares, pero debe realizar cambios específicos para que la conexión funcione.

 **Para crear un punto de conexión de VPC de interfaz utilizando la consola de [puntos de conexión](https://console.aws.amazon.com/vpc/home#/endpoints) de **VPC**** 

1. Vaya a la consola de [puntos de conexión](https://console.aws.amazon.com/vpc/home#/endpoints) de **VPC**, en **Nube virtual privada** en el menú de la izquierda, elija **Puntos de enlace** y después **Crear punto de conexión**. 

1. En la página **Crear punto de conexión**, especifique la siguiente información.
   + Elija **Servicio de AWS** en **Categoría de servicio**. 
   + En **Nombre del servicio**, busque introduciendo la palabra clave `iot`. En la lista de servicios de `iot` que se muestra, elija el punto de conexión. 

     Si crea un punto final de VPC para el plano de AWS IoT Core control, elija el punto final de la API del plano de AWS IoT Core control para su. Región de AWS El punto de conexión tendrá el formato `com.amazonaws.region.iot.api`. 

     Si crea un punto de enlace de VPC para el plano de AWS IoT Core datos, elija el punto de enlace de la API del plano de AWS IoT Core datos para su región. El punto de conexión tendrá el formato `com.amazonaws.region.iot.data`. 

     Si crea un punto de enlace de VPC para el proveedor de AWS IoT Core credenciales, elija el punto de enlace del proveedor de AWS IoT Core credenciales para su región. El punto de conexión tendrá el formato `com.amazonaws.region.iot.credentials`. 

     Si crea un punto de enlace de VPC para las regiones del Estándar Federal de Procesamiento de Información (FIPS), elija el punto de enlace de la API de FIPS para usted. Región de AWS El punto de conexión tendrá el formato `com.amazonaws.region.iot-fips.api`. Esto es solo para el plano de control.
**nota**  
El nombre del servicio para el plano de AWS IoT Core datos en la región de China tendrá este formato`cn.com.amazonaws.region.iot.data`. El nombre del servicio para AWS IoT Core el avión de control en la región de China tendrá ese formato`com.amazonaws.region.iot.api`. 
   + Para la **VPC** y **las subredes**, elija la VPC en la que desee crear el punto final y las zonas de disponibilidad (AZs) en las que desee crear la red del punto final.
   + En **Habilitar el nombre DNS**, asegúrese de que la **opción Habilitar para este punto final** no esté seleccionada para el plano de AWS IoT Core datos y AWS IoT Core el proveedor de credenciales. Ni el plano de AWS IoT Core datos ni el proveedor de AWS IoT Core credenciales admiten todavía nombres DNS privados.

     En el plano AWS IoT Core de control, la **opción Activar nombre DNS** está seleccionada de forma predeterminada. Esto garantiza que cualquier solicitud a los puntos finales públicos del plano de AWS IoT Core control se enrute a través de los puntos finales de la VPC. Cuando está habilitada, no es necesario configurar una zona alojada privada.
   + En **Grupo de seguridad**, elija los grupos de seguridad que deban asociarse a las interfaces de red de punto de conexión.
   + Puede agregar o eliminar etiquetas si lo desea. Las etiquetas son pares de nombre-valor que se utilizan para asociar al punto de conexión. 

1. Para crear su punto de conexión de VPC, elija **Crear punto de conexión**. 

Después de crear el AWS PrivateLink punto final, en la pestaña **Detalles** del dispositivo, verá una lista de nombres de DNS. Puede utilizar uno de estos nombres DNS que ha creado en esta sección para [configurar su zona alojada privada](#connect-iot-core-create-phz-lns). Si utiliza el plano de AWS IoT Core control, no necesita configurar una zona alojada privada.

## Configure una zona alojada privada
<a name="connect-iot-core-create-phz-lns"></a>

**nota**  
Si utiliza el plano de AWS IoT Core control y ha seleccionado **Habilitar el nombre DNS**, no necesita configurar una zona alojada privada. Si lo deshabilita, debe seguir este procedimiento para configurar una zona alojada privada.

Puede utilizar uno de estos nombres de DNS que ha creado en la sección anterior para configurar su zona alojada privada.

 **Para el plano AWS IoT Core de datos** 

El nombre de DNS debe ser el nombre de configuración de su dominio o su punto de conexión de `IoT:Data-ATS`. Un nombre DNS de ejemplo puede ser: ` xxx-ats.data.iot.region.amazonaws.com`. 

 **Para el AWS IoT Core proveedor de credenciales** 

El nombre de DNS debe ser su de conexión de `iot:CredentialProvider`. Un nombre DNS de ejemplo puede ser: ` xxxx.credentials.iot.region.amazonaws.com`. 

 **Para plano AWS IoT Core de control** 

El nombre DNS debe ser el punto final AWS IoT Core del plano de control. Un ejemplo de nombre DNS para el plano AWS IoT Core de control es` xxxx.api.iot.region.amazonaws.com`. 

**nota**  
Los procesos para configurar la zona alojada privada para el plano de AWS IoT Core datos y el proveedor de AWS IoT Core credenciales son similares, pero debe realizar cambios específicos para que la conexión funcione.

### Creación de una zona alojada privada
<a name="connect-iot-core-create-phz-lns-private-hosted-zone"></a>

 **Para crear una zona alojada privada a través de la consola de Route 53** 

1. Vaya a la consola **Zonas alojadas** de [Route 53](https://console.aws.amazon.com/route53/v2/hostedzones#/) y elija **Crear zona alojada**. 

1. En la página **Crear zona alojada**, especifique la siguiente información.
   + En **Nombre de dominio**, introduzca la dirección del punto de conexión de su punto de conexión `iot:Data-ATS` o `iot:CredentialProvider`. El siguiente comando de la CLI AWS muestra cómo obtener el punto de conexión a través de una red pública: `aws iot describe-endpoint --endpoint-type iot:Data-ATS` o `aws iot describe-endpoint --endpoint-type iot:CredentialProvider`. 
**nota**  
Si utiliza dominios personalizados, consulte [Cómo usar dominios personalizados con puntos de conexión de VPC](https://docs.aws.amazon.com/iot/latest/developerguide/IoTCore-VPC.html#VPC-custom-domains). El proveedor de AWS IoT Core credenciales no admite dominios personalizados.
   + En la lista **Tipo**, elija **Zona alojada privada**. 
   + Si lo desea, puede agregar o eliminar etiquetas para asociarlas a su zona alojada.

1. Para crear su zona alojada privada, seleccione **Crear zona alojada**. 

Para obtener información, consulte [Crear una zona alojada privada](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html). 

### Crear un registro
<a name="connect-iot-core-create-phz-lns-create-record"></a>

Una vez que haya creado una zona alojada privada, puede crear un registro que indique al DNS cómo desea que se dirija el tráfico a ese dominio. 

 **Para crear un registro** 

1. En la lista de zonas alojadas que se muestra, elija la zona alojada privada que ha creado anteriormente y elija **Crear registro**. 

1. Utilice el método del asistente para crear el registro. Si la consola presenta el método **Creación rápida**, elija **Cambiar al asistente**. 

1. En **Enrutamiento sencillo**, elija **Política de enrutamiento** y, a continuación, elija **Siguiente**. 

1. En **Configurar registros**, elija **Definir un registro simple**. 

1. En la página **Definir un registro simple**:
   + En **Nombre del registro**, introduzca el punto de conexión `iot:Data-ATS` o el punto de conexión `iot:CredentialProvider`. Debe ser el mismo que el nombre de la zona alojada privada.
   + Para el **tipo de registro**, si solo quieres IPv4 soporte, mantén el valor como`A - Routes traffic to an IPv4 address and some AWS resources`. Si solo quieres IPv6 soporte, mantén el valor como`AAAA - Routes traffic to an IPv6 address and some AWS resources`. Si desea compatibilidad con doble pila (ambos IPv4 y IPv6), cree dos registros (`A`y uno `AAAA` en la zona alojada) con el mismo **nombre de registro** y el mismo **valor/direccione** el tráfico. 
   + En **Valor/Dirigir tráfico a**, elija **Alias del punto de conexión de VPC**. A continuación, elija su **Región** y elija el punto de conexión que creó anteriormente, tal y como se describe en [Creación de un punto de conexión de interfaz de Amazon VPC](#Create-VPC-endpoints-core-create-vpc) de la lista de puntos de conexión que se muestra.

1. Elija **Definir un registro simple** para crear su registro.

## Control del acceso a AWS IoT Core más de puntos finales de VPC
<a name="Control-VPC-access"></a>

[Puede restringir el acceso a los dispositivos para que solo se permita AWS IoT Core a través del punto de conexión de la VPC mediante claves de contexto de condición de la VPC.](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html) AWS IoT Core admite las siguientes claves de contexto relacionadas con la VPC:
+  [SourceVpc](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcevpc) 
+  [SourceVpce](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcevpce) 
+  [VPCSourceIP](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-vpcsourceip) 

**nota**  
AWS IoT Core no admite [políticas de puntos de conexión para puntos de conexión de VPC](https://docs.aws.amazon.com//vpc/latest/privatelink/vpc-endpoints-access.html#vpc-endpoint-policies). 

Por ejemplo, la siguiente política concede permiso para conectarse AWS IoT Core mediante un ID de cliente que coincida con el nombre de la cosa y para publicar en cualquier tema con el prefijo del nombre de la cosa, siempre que el dispositivo se conecte a un punto final de VPC con un ID de punto final de VPC concreto. Esta política denegaría los intentos de conexión a su punto de conexión de datos de IoT público.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:SourceVpce": "vpce-1a2b3c4d"
            }
        }
            
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/${iot:Connection.Thing.ThingName}/*"
            ]
        }
    ]
}
```

## Limitaciones
<a name="VPC-limitations"></a>

[Actualmente, los puntos finales de VPC son compatibles con los puntos finales del [plano de AWS IoT Core control, los puntos finales de AWS IoT Core datos y los puntos](https://docs.aws.amazon.com//iot/latest/developerguide/connect-to-iot.html#iot-service-endpoint-intro)[finales](https://docs.aws.amazon.com//iot/latest/developerguide/iot-connect-devices.html#iot-connect-device-endpoints) de los proveedores de credenciales.AWS IoT Core](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.htm) Los puntos finales de VPC solo son compatibles con los puntos finales del [Estándar Federal de Procesamiento de Información (FIPS) cuando se utiliza el plano de control](https://docs.aws.amazon.com//iot/latest/developerguide/iot-connect-fips.html). AWS IoT Core 

### Limitaciones de los puntos finales de VPC del plano de control de IoT
<a name="VPC-limitations-iot-control"></a>

En esta sección se describen las limitaciones de los puntos finales de VPC del plano de control de IoT.
+ Los puntos de conexión de VPC solo servirán certificados ATS.
+ Los dominios personalizados no son compatibles con los puntos finales del plano de control.
+ Para obtener información sobre las políticas de seguridad de FIPS, consulte las políticas de seguridad de [FIPS.](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/describe-ssl-policies.html#fips-security-policies) 

### Limitaciones de los puntos de conexión de VPC de datos de IoT
<a name="VPC-limitations-iot-data"></a>

En esta sección se describen las limitaciones de los puntos de conexión de VPC de datos de IoT.
+ Los períodos keep-alive de MQTT están limitados a 230 segundos. Los períodos keep-alive que superen esa cantidad se reducirán automáticamente a 230 segundos.
+ Cada punto de conexión de VPC admite un total de 100 000 dispositivos conectados de forma simultánea. Si necesita más conexiones, consulte. [Escalar los puntos finales de VPC con AWS IoT Core](#Scaling-VPC-endpoints)
+ Los puntos de conexión de VPC solo entregarán [certificados ATS](https://docs.aws.amazon.com//iot/latest/developerguide/server-authentication.html), excepto para los dominios personalizados.
+  Las [políticas de punto de conexión de VPC](https://docs.aws.amazon.com//vpc/latest/privatelink/vpc-endpoints-access.html) no son compatibles.
+ En el caso de los puntos finales de VPC que se crean para el plano de AWS IoT Core datos, AWS IoT Core no admite el uso de registros DNS públicos zonales o regionales.

### Limitaciones de los puntos de conexión de los proveedores de credenciales
<a name="VPC-limitations-credential-provider"></a>

En esta sección se describen las limitaciones de los puntos de conexión de VPC de los proveedores de credenciales.
+ Los puntos de conexión de VPC solo servirán certificados [ATS](https://docs.aws.amazon.com//iot/latest/developerguide/server-authentication.html).
+  Las [políticas de punto de conexión de VPC](https://docs.aws.amazon.com//vpc/latest/privatelink/vpc-endpoints-access.html) no son compatibles.
+ Los dominios personalizados no son compatibles con los puntos de conexión de los proveedores de credenciales.
+ En el caso de los puntos finales de VPC que se crean para el proveedor de AWS IoT Core credenciales, AWS IoT Core no admite el uso de registros DNS públicos zonales o regionales.

## Escalar los puntos finales de VPC con AWS IoT Core
<a name="Scaling-VPC-endpoints"></a>

AWS IoT Core Los puntos finales de VPC de interfaz están limitados a 100 000 dispositivos conectados en un único punto final de interfaz. Si su caso de uso requiere más conexiones simultáneas con el agente, le recomendamos usar varios puntos de conexión de VPC y enrutar manualmente los dispositivos a través de los puntos de conexión de interfaz. Al crear registros de DNS privados para enrutar el tráfico a sus puntos de conexión de VPC, asegúrese de crear tantos registros ponderados como puntos de conexión de VPC tenga para distribuir el tráfico entre sus múltiples puntos de conexión. 

## Uso de dominios personalizados con puntos de conexión de VPC
<a name="VPC-custom-domains"></a>

Si desea utilizar dominios personalizados con puntos de conexión de VPC, debe crear sus registros de nombres de dominio personalizados en una zona alojada privada y crear registros de enrutamiento en Route53. Para obtener información, consulte [Crear una zona alojada privada](https://docs.aws.amazon.com//Route53/latest/DeveloperGuide/hosted-zone-private-creating.html). 

**nota**  
Los dominios personalizados solo se admiten para los puntos finales de AWS IoT Core datos.

## Disponibilidad de puntos finales de VPC para AWS IoT Core
<a name="VPC-availability"></a>

AWS IoT Core [Los puntos finales de VPC de interfaz están disponibles en todas las AWS IoT Core regiones compatibles.](https://aws.amazon.com//about-aws/global-infrastructure/regional-product-services/) AWS IoT Core Los puntos finales de VPC de interfaz para el proveedor de AWS IoT Core credenciales no son compatibles en la región de China y. AWS GovCloud (US) Regions

# Uso de túneles AWS IoT Device Management seguros con puntos finales de VPC de interfaz
<a name="IoTCore-ST-VPC"></a>

AWS IoT Device Management la tunelización segura admite los puntos finales de la interfaz de la VPC. Puede usar los puntos de enlace de la VPC para mantener el tráfico entre su VPC y AWS IoT Secure Tunneling dentro de la AWS red, sin necesidad de una puerta de enlace a Internet, un dispositivo NAT, una conexión VPN o una conexión. AWS Direct Connect 

Los puntos finales de VPC de interfaz cuentan con una tecnología que le permite acceder de forma privada a los servicios mediante direcciones IP privadas. [AWS PrivateLink](https://docs.aws.amazon.com//vpc/latest/privatelink/what-is-privatelink.html) Para obtener más información, consulte [Acceder a un AWS servicio mediante un punto final de VPC de interfaz](https://docs.aws.amazon.com//vpc/latest/privatelink/create-interface-endpoint.html) en la AWS PrivateLink Guía. 

**Topics**
+ [Requisitos previos](#Create-ST-VPC-endpoints-prereq)
+ [Recibir notificaciones de túnel a través de puntos finales de VPC](#ST-VPC-Receive-notifications)
+ [Creación de puntos finales de VPC para una tunelización segura](#Create-ST-VPC-endpoints-Create)
+ [Configuración de políticas de puntos finales de VPC en el servidor proxy](#Create-ST-VPC-endpoints-Configure)
+ [Siguientes pasos](#Create-ST-VPC-endpoints-Next)

## Requisitos previos
<a name="Create-ST-VPC-endpoints-prereq"></a>

Antes de crear puntos de enlace de VPC para AWS IoT Secure Tunneling, compruebe que dispone de lo siguiente:
+ Una AWS cuenta con los permisos necesarios para crear puntos de enlace de VPC.
+ Una VPC en tu cuenta. AWS 
+ Comprensión de los conceptos de tunelización AWS IoT Device Management segura.
+ Familiaridad con las políticas de puntos finales de VPC AWS Identity and Access Management y (IAM)

## Recibir notificaciones de túnel a través de puntos finales de VPC
<a name="ST-VPC-Receive-notifications"></a>

Para recibir notificaciones de túnel a través de un punto de enlace de VPC, sus dispositivos pueden conectarse al plano de AWS IoT Core datos a través de un punto de enlace de VPC y suscribirse al tema MQTT reservado sobre tunelización segura.

Para obtener instrucciones sobre cómo crear y configurar un punto final de VPC en el plano de AWS IoT Core datos, consulte [Uso AWS IoT Core con puntos de enlace de VPC de interfaz en la Guía para desarrolladores](https://docs.aws.amazon.com/iot/latest/developerguide/IoTCore-VPC.html). AWS IoT 

## Creación de puntos finales de VPC para una tunelización segura
<a name="Create-ST-VPC-endpoints-Create"></a>

Puede crear puntos finales de VPC tanto para el plano de control de tunelización segura como para el servidor proxy.

**Para crear un punto final de VPC para una tunelización segura**

1. Siga los pasos que se indican en [Creación de un punto final de interfaz](https://docs.aws.amazon.com//vpc/latest/privatelink/create-interface-endpoint.html) en la Guía para desarrolladores de Amazon VPC

1. En el **campo Nombre del servicio**, elija una de las siguientes opciones en función del tipo de punto final:

**Plano de control**
   + Estándar: `com.amazonaws.<region>.iot.tunneling.api` 
   + FIPS (disponible en las regiones FIPS): `com.amazonaws.<region>.iot-fips.tunneling.api` 

**Servidor proxy**
   + Estándar: `com.amazonaws.<region>.iot.tunneling.data` 
   + FIPS (disponible en las regiones FIPS): `com.amazonaws.<region>.iot-fips.tunneling.data` 

   Sustitúyalo por *<region>* su. Región de AWS Por ejemplo, `us-east-1`. 

1. Complete los pasos restantes del proceso de creación del punto final de la VPC de acuerdo con los requisitos de su red.

## Configuración de políticas de puntos finales de VPC en el servidor proxy
<a name="Create-ST-VPC-endpoints-Configure"></a>

Además de la autorización basada en el token de acceso del cliente que se utiliza para autorizar las conexiones a los túneles, puede utilizar las políticas de punto final de la VPC para restringir aún más la forma en que los dispositivos pueden utilizar un punto final de la VPC para conectarse al servidor proxy de túnel seguro. Las políticas de puntos de enlace de la VPC siguen una sintaxis similar a la de la IAM y se configuran en el propio punto de enlace de la VPC.

Tenga en cuenta que la única acción de IAM admitida para las políticas de punto final de VPC del servidor proxy es. `iot:ConnectToTunnel` 

A continuación, se muestran ejemplos de diferentes políticas de puntos finales de VPC.

### Ejemplos de políticas de puntos finales de VPC para servidores proxy
<a name="w2aac17c35c31c15b9"></a>

Los siguientes ejemplos muestran las configuraciones de políticas de puntos finales de VPC del servidor proxy para casos de uso comunes.

**Example - Política predeterminada**  
Esta política permite que los dispositivos de su VPC se conecten a cualquier túnel en el mismo Región de AWS lugar en el que se creó el punto final, en cualquier AWS cuenta.  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*"
        }
    ]
}
```

**Example - Restrinja el acceso a cuentas específicas AWS**  
Esta política permite que el punto final de la VPC se conecte solo a los túneles de cuentas específicas AWS .  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:tunnel/*",
                "arn:aws:iot:us-east-1:444455556666:tunnel/*"
            ]
        }
    ]
}
```

**Example - Restrinja las conexiones por punto final del túnel**  
Puede restringir el acceso al punto final de la VPC para permitir que los dispositivos solo se conecten al extremo de origen o destino de un túnel.  
Solo fuente:  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iot:ClientMode": "source"
                }
            }
        }
    ]
}
```

Solo destino:

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iot:ClientMode": "destination"
                }
            }
        }
    ]
}
```

**Example - Restrinja el acceso en función de las etiquetas de los recursos**  
Esta política permite que el punto final de la VPC se conecte solo a los túneles etiquetados con un par clave-valor específico.  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Environment": "Production"
                }
            }
        }
    ]
}
```

**Example - Condiciones de política combinadas**  
Esta política demuestra la combinación de varios elementos de política. Permite las conexiones a cualquier túnel de una AWS cuenta específica, pero solo si el túnel tiene la etiqueta `AllowConnectionsThroughPrivateLink` set en `true` y el cliente no se conecta al extremo de destino del túnel.  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:tunnel/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/AllowConnectionsThroughPrivateLink": "true"
                }
            }
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:tunnel/*"
            ],
            "Condition": {
                "StringEquals": {
                    "iot:ClientMode": "destination"
                }
            }
        }
    ]
}
```

## Siguientes pasos
<a name="Create-ST-VPC-endpoints-Next"></a>

Después de crear y configurar los puntos de enlace de la VPC AWS IoT Secure Tunneling, tenga en cuenta lo siguiente:
+ Pruebe la configuración del punto final de la VPC conectando los dispositivos a través del punto final.
+ Supervise el uso de los puntos finales de la VPC mediante métricas Amazon CloudWatch .
+ Revise y actualice las políticas de puntos finales de la VPC según sea necesario según sus requisitos de seguridad.

Para obtener más información sobre la tunelización AWS IoT Device Management segura, consulte. [AWS IoT Secure Tunneling](https://docs.aws.amazon.com//iot/latest/developerguide/secure-tunneling.html) 

# Seguridad de la infraestructura en AWS IoT
<a name="infrastructure-security"></a>

Como conjunto de servicios gestionados, AWS IoT está protegido por los procedimientos de seguridad de la red AWS global que se describen en el documento técnico [Amazon Web Services: Overview of Security Processes](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf).

Utiliza las llamadas a la API AWS publicadas para acceder a AWS IoT través de la red. Los clientes deben ser compatibles con Transport Layer Security (TLS) 1.2 o una versión posterior. Los clientes también deben ser compatibles con conjuntos de cifrado con confidencialidad directa total (PFS) tales como Ephemeral Diffie-Hellman (DHE) o Elliptic Curve Ephemeral Diffie-Hellman (ECDHE). La mayoría de los sistemas modernos, como Java 7 y posteriores, son compatibles con estos modos. Para obtener más información, consulte [Seguridad del transporte en AWS IoT Core](transport-security.md).

Las solicitudes deben estar firmadas mediante un ID de clave de acceso y una clave de acceso secreta que esté asociada a una entidad principal de IAM. También puede utilizar [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) para generar credenciales de seguridad temporales para firmar solicitudes.

# Supervisión de la seguridad de las flotas o dispositivos de producción con Core AWS IoT
<a name="security-monitoring"></a>

Las flotas de IoT pueden constar de un gran número de dispositivos que tienen diversas funcionalidades, son de larga duración y están distribuidos geográficamente. Estas características hacen que la configuración de la flota sea compleja y propensa a errores. Y dado que los dispositivos a menudo están limitados en potencia informática, memoria y capacidades de almacenamiento, esto limita el uso del cifrado y otras formas de seguridad en los propios dispositivos. Además, los dispositivos a menudo usan software con vulnerabilidades conocidas. Estos factores hacen que las flotas de IoT sean un objetivo atractivo para los piratas informáticos y dificultan la protección continuada de la flota de dispositivos.

AWS IoT Device Defender aborda estos desafíos proporcionando herramientas para identificar los problemas de seguridad y las desviaciones de las mejores prácticas. Puede usar AWS IoT Device Defender para analizar, auditar y monitorear los dispositivos conectados a fin de detectar comportamientos anormales y mitigar los riesgos de seguridad. AWS IoT Device Defender puede auditar las flotas de dispositivos para garantizar que cumplen las mejores prácticas de seguridad y detectar comportamientos anormales en los dispositivos. Esto permite aplicar políticas de seguridad coherentes en toda su flota de AWS IoT dispositivos y responder rápidamente cuando los dispositivos se ven comprometidos. Para obtener más información, consulte [AWS IoT Device Defender](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/what-is-device-defender.html).

AWS IoT Device Advisor actualiza y corrige su flota según sea necesario. AWS IoT Device Advisor actualiza los casos de prueba automáticamente. Los casos de prueba que seleccione siempre tienen la última versión. Para obtener más información, consulte [Asesor de dispositivos](device-advisor.md).

# Mejores prácticas de seguridad en AWS IoT Core
<a name="security-best-practices"></a>

Esta sección contiene información sobre las mejores prácticas de seguridad para AWS IoT Core. Para obtener información sobre las reglas de seguridad de las soluciones de IoT industrial, consulte [Ten security golden rules for Industrial IoT solutions](https://aws.amazon.com/blogs/iot/ten-security-golden-rules-for-industrial-iot-solutions/) (en inglés).

## Protección de las conexiones MQTT en AWS IoT
<a name="secure-mqtt"></a>

[AWS IoT Core](https://aws.amazon.com/iot-core/)es un servicio en la nube gestionado que permite que los dispositivos conectados interactúen con las aplicaciones en la nube y otros dispositivos de forma fácil y segura. AWS IoT Core es compatible con HTTP y [MQTT](https://en.wikipedia.org/wiki/MQTT), un protocolo de comunicación ligero diseñado específicamente para tolerar conexiones intermitentes. [WebSocket](https://en.wikipedia.org/wiki/WebSocket) Si se conecta AWS IoT mediante MQTT, cada una de sus conexiones debe estar asociada a un identificador conocido como ID de cliente. El cliente MQTT identifica de IDs forma exclusiva las conexiones MQTT. Si se establece una nueva conexión con un ID de cliente que ya se ha utilizado para otra conexión, el agente de AWS IoT mensajes descarta la conexión anterior para permitir la nueva conexión. El cliente IDs debe ser único en cada uno Cuenta de AWS de ellos Región de AWS. Esto significa que no necesitas imponer la exclusividad global del cliente IDs fuera de tu país Cuenta de AWS o entre las distintas regiones de tu Cuenta de AWS región.

El impacto y la gravedad de la interrupción de las conexiones MQTT en su flota de dispositivos depende de muchos factores. Entre ellos se incluyen:
+ Tu caso de uso (por ejemplo, los datos a los que envían tus dispositivos AWS IoT, la cantidad de datos y la frecuencia con la que se envían).
+ Su configuración de cliente MQTT (por ejemplo, configuración de reconexión automática, temporizaciones de interrupción asociadas y uso de [sesiones persistentes de MQTT](mqtt.md#mqtt-persistent-sessions)).
+ Las restricciones de recursos de dispositivos.
+ La causa principal de las desconexiones, su agresividad y persistencia.

Para evitar conflictos de ID de cliente y sus posibles repercusiones negativas, asegúrese de que cada dispositivo o aplicación móvil tenga una AWS IoT política de IAM que restrinja qué cliente se IDs puede utilizar para las conexiones MQTT con el AWS IoT intermediario de mensajes. Por ejemplo, puede usar una política de IAM para evitar que un dispositivo cierre por error la conexión de otro dispositivo utilizando un ID de cliente que ya está en uso. Para obtener más información, consulte [Autorización](iot-authorization.md).

Todos los dispositivos de su flota deben tener credenciales con privilegios que autoricen únicamente las acciones previstas, que incluyen (pero no se limitan a) las acciones de AWS IoT MQTT, como publicar mensajes o suscribirse a temas con un alcance y un contexto específicos. Las políticas de permisos específicas pueden variar en función de los casos de uso. Identifique las políticas de permisos que se ajusten mejor a sus requisitos empresariales y de seguridad.

Para simplificar la creación y la administración de políticas de permisos, puede utilizar [AWS IoT Core variables de política](iot-policy-variables.md) y [variables de la política de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html). Las variables de la política se pueden colocar en una política y cuando se evalúa la política las variables se sustituyen por valores procedentes de la solicitud del dispositivo. Al usar variables de la política, puede crear una única política para la concesión de permisos a varios dispositivos. Puede identificar las variables de política relevantes para su caso de uso en función de la configuración de su AWS IoT cuenta, el mecanismo de autenticación y el protocolo de red utilizado para conectarse al agente de AWS IoT mensajes. Sin embargo, para escribir las mejores políticas de permisos, deben tenerse en cuenta los detalles concretos de su caso de uso y el [modelo de amenazas](https://en.wikipedia.org/wiki/Threat_model).

Por ejemplo, si ha registrado sus dispositivos en el AWS IoT registro, puede utilizar [variables de política de cosas](thing-policy-variables.md) en las AWS IoT políticas para conceder o denegar permisos en función de las propiedades de las cosas, como los nombres, los tipos y los valores de los atributos de las cosas. El nombre de la cosa se obtiene del ID de cliente del mensaje de conexión MQTT que se envía cuando una cosa se conecta a AWS IoT ella. Lo que las variables de política se sustituyen cuando una cosa se conecta a AWS IoT través de MQTT mediante la autenticación mutua TLS o MQTT a través del WebSocket protocolo mediante identidades autenticadas de Amazon [Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identities.html). Puede usar la [AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html)API para adjuntar certificados e identidades autenticadas de Amazon Cognito a un objeto. `iot:Connection.Thing.ThingName`es una variable de política útil para hacer cumplir las restricciones de identificación de los clientes. El siguiente ejemplo de AWS IoT política exige que se utilice el nombre de un elemento registrado como ID de cliente para las conexiones MQTT con el intermediario de AWS IoT mensajes:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": "iot:Connect",
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			]
		}
	]
}
```

Si desea identificar los conflictos de ID de cliente en curso, puede habilitar y usar [CloudWatch Logs for AWS IoT](cloud-watch-logs.md). Por cada conexión MQTT que el agente de AWS IoT mensajes desconecte debido a conflictos de ID de cliente, se genera un registro similar al siguiente:

```
{
    "timestamp": "2019-04-28 22:05:30.105",
    "logLevel": "ERROR",
    "traceId": "02a04a93-0b3a-b608-a27c-1ae8ebdb032a",
    "accountId": "123456789012",
    "status": "Failure",
    "eventType": "Disconnect",
    "protocol": "MQTT",
    "clientId": "clientId01",
    "principalId": "1670fcf6de55adc1930169142405c4a2493d9eb5487127cd0091ca0193a3d3f6",
    "sourceIp": "203.0.113.1",
    "sourcePort": 21335,
    "reason": "DUPLICATE_CLIENT_ID",
    "details": "A new connection was established with the same client ID"
}
```

Puede utilizar un [filtro de CloudWatch registros](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html), por ejemplo, `{$.reason= "DUPLICATE_CLIENT_ID" }` para buscar casos de conflictos de ID de cliente o para configurar los [filtros de CloudWatch métricas](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringPolicyExamples.html) y CloudWatch las alarmas correspondientes para una supervisión y generación de informes continuas.

Puede usar [AWS IoT Device Defender](https://aws.amazon.com/iot-device-defender/) para identificar políticas excesivamente permisivas AWS IoT y de IAM. AWS IoT Device Defender también proporciona una verificación de auditoría que le notifica si varios dispositivos de su flota se están conectando al agente de AWS IoT mensajes con el mismo ID de cliente.

Puede utilizar AWS IoT Device Advisor para comprobar que sus dispositivos se pueden conectar de forma fiable AWS IoT Core y seguir las prácticas recomendadas de seguridad.

### Véase también
<a name="mqtt-security-see-also"></a>
+ [AWS IoT Core](https://aws.amazon.com/iot-core/)
+ [Características de seguridad de AWS IoT](authentication.md)
+ [AWS IoT Core variables de política](iot-policy-variables.md)
+ [Variables de la política de IAM](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_variables.html)
+ [Identidad de Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identities.html)
+ [AWS IoT Device Defender](https://aws.amazon.com/iot-device-defender/)
+ [CloudWatch Registra para AWS IoT](cloud-watch-logs.md)

## Mantener sincronizado el reloj del dispositivo
<a name="device-clock"></a>

Es importante que la hora del dispositivo sea precisa. Los certificados X.509 tienen una fecha y una hora de caducidad. El reloj del dispositivo se utiliza para comprobar que un certificado de servidor sigue siendo válido. Si está creando dispositivos IoT comerciales, recuerde que sus productos pueden permanecer en el almacén durante largos períodos de tiempo antes de venderse. Los relojes en tiempo real pueden retrasarse durante este tiempo y las baterías pueden descargarse, por lo que no es suficiente fijar el tiempo en fábrica.

En la mayoría de los sistemas, esto significa que el software del dispositivo debe incluir un cliente NTP (Protocolo de tiempo de red). El dispositivo debe esperar hasta que se sincronice con un servidor NTP antes de intentar conectarse a AWS IoT Core. Si esto no es posible, el sistema debería proporcionar un mecanismo para que el usuario establezca la hora del dispositivo, de forma que las conexiones posteriores se realicen correctamente.

Una vez que el dispositivo se haya sincronizado con un servidor NTP, podrá abrir una conexión con AWS IoT Core. La cantidad de sesgo de reloj permitida dependerá de lo que esté tratando de hacer con la conexión. 

## Validar el certificado de servidor
<a name="validate-server-cert"></a>

Lo primero que hace un dispositivo para interactuar AWS IoT es abrir una conexión segura. Cuando conectes tu dispositivo a AWS IoT, asegúrate de que estás hablando con otro servidor AWS IoT y no haciéndote pasar por AWS IoT otro. Cada uno de los AWS IoT servidores está provisto de un certificado emitido para el dominio. `iot.amazonaws.com` Este certificado lo emitió una autoridad AWS IoT de certificación de confianza que verificó nuestra identidad y propiedad del dominio.

Una de las primeras cosas que se AWS IoT Core hace cuando un dispositivo se conecta es enviarle un certificado de servidor. Los dispositivos pueden comprobar que estaban esperando para conectarse a `iot.amazonaws.com` y que el servidor al final de dicha conexión posee un certificado de una autoridad de confianza para ese dominio.

Los certificados TLS tienen formato X.509 e incluyen información diversa, como el nombre de la organización, la ubicación, el nombre de dominio y un período de validez. El período de validez se especifica como un par de valores de tiempo llamados `notBefore` y `notAfter`. Servicios como estos AWS IoT Core utilizan períodos de validez limitados (por ejemplo, un año) para sus certificados de servidor y comienzan a entregar los nuevos antes de que caduquen los antiguos.

## Usar una identidad única por dispositivo
<a name="cert-per-device"></a>

Utilice una identidad única por cliente. Los dispositivos generalmente usan certificados de cliente X.509. Las aplicaciones web y para móviles utilizan Amazon Cognito Identity. Esto le permite aplicar permisos detallados a sus dispositivos.

Por ejemplo, puede tener una aplicación que consiste en un dispositivo de teléfono móvil que recibe actualizaciones de estado de dos objetos de hogar inteligente diferentes: una bombilla y un termostato. La bombilla envía el estado de su nivel de batería y el termostato envía mensajes que informan de la temperatura.

AWS IoT autentica los dispositivos de forma individual y trata cada conexión de forma individual. Puede aplicar controles de acceso detallados a través de políticas de autorización. Puede definir una política para el termostato que le permita publicar en un espacio de tema. Puede definir una política independiente para la bombilla que le permita publicar en un espacio de tema diferente. Por último, puede definir una política para la aplicación móvil que solo le permita conectarse y suscribirse a los temas del termostato y la bombilla para recibir mensajes de estos dispositivos.

Aplique el principio de privilegios mínimos y amplíe los permisos por dispositivo tanto como sea posible. Todos los dispositivos o usuarios deben tener una AWS IoT política AWS IoT que solo les permita conectarse con un ID de cliente conocido y publicar y suscribirse a un conjunto de temas identificado y fijo.

## Utilice un segundo Región de AWS como respaldo
<a name="use-second-region"></a>

Considere almacenar una copia de sus datos en un segundo Región de AWS como copia de seguridad. Tenga en cuenta que la AWS solución denominada [Disaster Recovery for](https://aws.amazon.com/solutions/implementations/disaster-recovery-for-aws-iot/) ya no AWS IoT está disponible. Si bien la [GitHubbiblioteca](https://github.com/awslabs/disaster-recovery-for-aws-iot) asociada sigue siendo accesible, AWS quedó obsoleta en julio de 2023 y ya no proporciona mantenimiento ni soporte. Para implementar sus propias soluciones o explorar opciones de soporte adicionales, visite [Contáctese con AWS](https://aws.amazon.com/contact-us/). Si hay un administrador AWS técnico de cuentas asociado a tu cuenta, ponte en contacto con él para obtener ayuda.

## Usar aprovisionamiento justo a tiempo
<a name="use-jitp"></a>

Crear y aprovisionar manualmente cada dispositivo puede llevar mucho tiempo. AWS IoT proporciona una forma de definir una plantilla para aprovisionar los dispositivos cuando se conectan por primera vez. AWS IoT Para obtener más información, consulte [Just-in-time aprovisionamiento](jit-provisioning.md).

## Permisos para ejecutar pruebas de AWS IoT Device Advisor
<a name="device-advisor-perms"></a>

La siguiente plantilla de políticas muestra los permisos mínimos y la entidad de IAM necesarios para ejecutar los casos de prueba de AWS IoT Device Advisor. [Deberá sustituirlo por *your-device-role-arn* el rol de dispositivo Amazon Resource Name (ARN) que creó según los requisitos previos.](https://docs.aws.amazon.com/iot/latest/developerguide/device-advisor-workflow.html#device-advisor-workflow-prereqs)

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iot:us-east-1:123456789012:thinggroup/your-thing-group",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "iotdeviceadvisor.amazonaws.com"
            }
        }
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "execute-api:Invoke*",
                "iam:ListRoles",
                "iot:Connect",
                "iot:CreateJob",
                "iot:DeleteJob",
                "iot:DescribeCertificate",
                "iot:DescribeEndpoint",
                "iotjobsdata:DescribeJobExecution",
                "iot:DescribeJob",
                "iot:DescribeThing",
                "iotjobsdata:GetPendingJobExecutions",
                "iot:GetPolicy",
                "iot:ListAttachedPolicies",
                "iot:ListCertificates",
                "iot:ListPrincipalPolicies",
                "iot:ListThingPrincipals",
                "iot:ListThings",
                "iot:Publish",
                "iotjobsdata:StartNextPendingJobExecution",
                "iotjobsdata:UpdateJobExecution",
                "iot:UpdateThingShadow",
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams",
                "logs:PutLogEvents",
                "logs:PutRetentionPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": "iotdeviceadvisor:*",
            "Resource": "*"
        }
    ]
}
```

## Prevención de la sustitución confusa entre servicios para Device Advisor
<a name="cross-service-confused-deputy-prevention-DA"></a>

El problema de la sustitución confusa es un problema de seguridad en el que una entidad que no tiene permiso para realizar una acción puede obligar a una entidad con más privilegios a realizar la acción. En AWS, la suplantación de identidad entre servicios puede provocar el confuso problema de un diputado. La suplantación entre servicios puede producirse cuando un servicio (el *servicio que lleva a cabo las llamadas*) llama a otro servicio (el *servicio al que se llama*). El servicio que lleva a cabo las llamadas se puedes manipular para utilizar sus permisos a fin de actuar en función de los recursos de otro cliente de una manera en la que no debe tener permiso para acceder. Para evitarlo, AWS proporciona herramientas que le ayudan a proteger los datos de todos los servicios cuyos directores de servicio tengan acceso a los recursos de su cuenta. 

Recomendamos utilizar las claves contextuales 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) y [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) en las políticas de recursos para limitar los permisos que Device Advisor concede a otro servicio sobre el recurso. Si se utilizan ambas claves contextuales de condición global, el valor `aws:SourceAccount` y la cuenta del valor `aws:SourceArn` deben utilizar el mismo ID de cuenta cuando se utilicen en la misma declaración de política.

El valor de `aws:SourceArn` debe ser el ARN de su recurso de definición de conjuntos. El recurso de definición de conjuntos hace referencia al conjunto de pruebas que creó con Device Advisor.

La forma más eficaz de protegerse contra el problema de la sustitución confusa es utilizar la clave de contexto de condición global de `aws:SourceArn` con el ARN completo del recurso. Si no conoce el ARN completo del recurso o si especifica varios recursos, utilice la clave de condición de contexto global `aws:SourceArn` con comodines (`*`) para las partes desconocidas del ARN. Por ejemplo, `arn:aws:iotdeviceadvisor:*:account-id:suitedefinition/*` 

El siguiente ejemplo muestra cómo puede utilizar las claves contextuales de condición global `aws:SourceArn` y `aws:SourceAccount` en Device Advisor para evitar el problema de la sustitución confusa.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "ConfusedDeputyPreventionExamplePolicy",
        "Effect": "Allow",
        "Principal": {
            "Service": "iotdeviceadvisor.amazonaws.com"
        },
        "Action": "sts:AssumeRole",
        "Condition": {
            "ArnLike": {
                "aws:SourceArn": "arn:aws:iotdeviceadvisor:us-east-1:123456789012:suitedefinition/ygp6rxa3tzvn"
        },
            "StringEquals": {
                "aws:SourceAccount": "123456789012"
        }
        }
    }
}
```

## AWS formación y certificación
<a name="iot-security-training"></a>

Realice el siguiente curso para aprender los conceptos clave de AWS IoT la seguridad: [AWS IoT Security Primer](https://www.aws.training/Details/Curriculum?id=42304).