

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Segurança em AWS IoT
<a name="security"></a>

A segurança na nuvem AWS é a maior prioridade. Como AWS cliente, você se beneficia de uma arquitetura de data center e rede criada para atender aos requisitos das organizações mais sensíveis à segurança.

A segurança é uma responsabilidade compartilhada entre você AWS e você. O [modelo de responsabilidade compartilhada](https://aws.amazon.com/compliance/shared-responsibility-model/) descreve isto como segurança *da* nuvem e segurança *na* nuvem.
+ **Segurança da nuvem** — AWS é responsável por proteger a infraestrutura que executa AWS os serviços na AWS nuvem. AWS também fornece serviços que você pode usar com segurança. Auditores de terceiros testam e verificam regularmente a eficácia da nossa segurança como parte dos [programas de conformidade da AWS](https://aws.amazon.com/compliance/programs/). Para saber mais sobre os programas de conformidade aplicáveis AWS IoT, consulte [AWS Serviços no escopo por programa de conformidade](https://aws.amazon.com/compliance/services-in-scope/).
+ **Segurança na nuvem** — Sua responsabilidade é determinada pelo AWS serviço que você usa. Você também é responsável por outros fatores, incluindo a confidencialidade de seus dados, os requisitos da sua empresa e as leis e normas aplicáveis. 

Esta documentação ajuda você a entender como aplicar o modelo de responsabilidade compartilhada ao usar AWS IoT. Os tópicos a seguir mostram como configurar para atender AWS IoT aos seus objetivos de segurança e conformidade. Você também aprenderá a usar outros AWS serviços que ajudam a monitorar e proteger seus AWS IoT recursos. 

**Topics**
+ [AWS IoT segurança](iot-security.md)
+ [Autenticação](authentication.md)
+ [Autorização](iot-authorization.md)
+ [Proteção de dados em AWS IoT Core](data-protection.md)
+ [Gerenciamento de identidade e acesso para AWS IoT](security-iam.md)
+ [Registro em log e monitoramento](security-logging.md)
+ [Validação de conformidade para AWS IoT Core](compliance.md)
+ [Resiliência no AWS IoT Core](disaster-recovery-resiliency.md)
+ [Usando AWS IoT Core com interface VPC endpoints](IoTCore-VPC.md)
+ [Segurança da infraestrutura em AWS IoT](infrastructure-security.md)
+ [Monitoramento de segurança de frotas ou dispositivos de produção com Core AWS IoT](security-monitoring.md)
+ [Melhores práticas de segurança em AWS IoT Core](security-best-practices.md)
+ [AWS treinamento e certificação](#iot-security-training)

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

Cada dispositivo ou cliente conectado deve ter uma credencial para interagir com o AWS IoT. Todo o tráfego de ida e volta AWS IoT é enviado com segurança pelo Transport Layer Security (TLS). AWS os mecanismos de segurança na nuvem protegem os dados à medida que eles se movem entre AWS IoT outros AWS serviços.

![\[AWS IoT fluxos de trabalho de segurança, incluindo credenciais para interagir AWS IoT, Transport Layer Security para proteger a conexão e mecanismos de segurança AWS em nuvem para proteger dados.\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/images/thunderball-overview.png)

+ Você é responsável por gerenciar credenciais de dispositivo (certificados X.509, credenciais da AWS , identidades do Amazon Cognito, identidades federadas ou tokens de autenticação personalizada) e políticas no AWS IoT. Você também é responsável por atribuir identidades exclusivas a cada dispositivo e gerenciar as permissões para cada um ou para o grupo de dispositivos.
+ Seus dispositivos se conectam AWS IoT usando certificados X.509 ou identidades do Amazon Cognito por meio de uma conexão TLS segura. Durante a pesquisa e o desenvolvimento, e para alguns aplicativos que fazem chamadas ou usam API WebSockets, você também pode se autenticar usando usuários e grupos do IAM ou tokens de autenticação personalizados. Para obter mais informações, consulte [Usuários, grupos e funções do IAM](iam-users-groups-roles.md).
+ Ao usar a AWS IoT autenticação, o agente de mensagens é responsável por autenticar seus dispositivos, ingerir dados do dispositivo com segurança e conceder ou negar as permissões de acesso que você especifica para seus dispositivos usando políticas. AWS IoT 
+ Ao usar a autenticação personalizada, um autorizador personalizado é responsável por autenticar seus dispositivos e conceder ou negar as permissões de acesso que você especifica para seus dispositivos usando AWS IoT nossas políticas do IAM.
+ O mecanismo de AWS IoT regras encaminha os dados do dispositivo para outros dispositivos ou outros AWS serviços de acordo com as regras definidas por você. Ele é usado AWS Identity and Access Management para transferir dados com segurança para seu destino final. Para obter mais informações, consulte [Gerenciamento de identidade e acesso para AWS IoT](security-iam.md).

# Autenticação
<a name="authentication"></a>

A autenticação é um mecanismo no qual você verifica a identidade de um cliente ou servidor. A autenticação do servidor é o processo em que dispositivos ou outros clientes garantem que estão se comunicando com um AWS IoT endpoint real. A autenticação do cliente é o processo com AWS IoT o qual dispositivos ou outros clientes se autenticam. 

## Visão geral do certificado X.509
<a name="x509-certificate-overview"></a>

Os certificados X.509 são certificados digitais que usam a [infraestrutura de chave pública X.509 padrão](https://en.wikipedia.org/wiki/X.509) para associar uma chave pública a uma identidade contida em um certificado. Os certificados X.509 são emitidos por uma entidade confiável chamada CA (autoridade de certificação). A CA mantém um ou mais certificados especiais chamados certificados CA que são usados para emitir certificados X.509. Somente a autoridade de certificação tem acesso aos certificados CA. As cadeias de certificados X.509 são usadas tanto para autenticação do servidor por clientes quanto para autenticação do cliente pelo servidor.

# Autenticação do servidor
<a name="server-authentication"></a>

Quando seu dispositivo ou outro cliente tentar se conectar AWS IoT Core, o AWS IoT Core servidor enviará um certificado X.509 que seu dispositivo usa para autenticar o servidor. A autenticação ocorre na camada TLS por meio da validação da [cadeia de certificados X.509](x509-client-certs.md). Esse é o mesmo método usado pelo seu navegador ao acessar uma URL HTTPS. Para usar certificados de sua própria autoridade de certificação, consulte [Gerenciar os certificados CA](manage-your-CA-certs.md).

Quando seus dispositivos ou outros clientes estabelecem uma conexão TLS com um AWS IoT Core endpoint, AWS IoT Core apresenta uma cadeia de certificados que os dispositivos usam para verificar se estão se comunicando AWS IoT Core e não se passando por outro servidor. AWS IoT Core A cadeia apresentada depende de uma combinação do tipo de endpoint ao qual o dispositivo está se conectando e do [conjunto de cifras](transport-security.md) que o cliente AWS IoT Core negociou durante o handshake TLS.

## Tipos de endpoint
<a name="endpoint-types"></a>

AWS IoT Core suportes`iot:Data-ATS`. `iot:Data-ATS`os endpoints apresentam um certificado de servidor assinado por uma CA [da Amazon Trust Services](https://www.amazontrust.com/repository/).

Os certificados apresentados pelos endpoints ATS são assinados por Starfield. Algumas implementações de cliente TLS exigem a validação da raiz da confiança e exigem que os certificados da CA Starfield estejam instalados nos armazenamentos de confiança do cliente.

**Atenção**  
O uso de um método de fixação de certificado que adiciona hash a todo o certificado (incluindo o nome do emissor, etc.) não é recomendado porque isso fará com que a verificação do certificado falha, pois os certificados ATS que fornecemos são de assinatura cruzada Starfield e têm um nome de emissor diferente.

**Importante**  
Use endpoints `iot:Data-ATS`. Os certificados da Symantec e da Verisign foram descontinuados e não são mais suportados pelo. AWS IoT Core

Você pode usar o comando `describe-endpoint` para criar seu endpoint ATS.

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

O comando `describe-endpoint` retorna um endpoint no seguinte formato.

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

**nota**  
Na primeira vez que `describe-endpoint` for chamado, um endpoint será criado. Todas as chamadas subsequentes para `describe-endpoint` retornam o mesmo endpoint.

**nota**  
Para ver seu `iot:Data-ATS` endpoint no AWS IoT Core console, escolha **Configurações**. O console exibe somente o endpoint `iot:Data-ATS`.

### Criando um `IotDataPlaneClient` com o AWS SDK for Java
<a name="java-client"></a>

Para criar um `IotDataPlaneClient` que use um endpoint `iot:Data-ATS`, faça o seguinte. 
+ Crie um `iot:Data-ATS` endpoint usando a [DescribeEndpoint](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeEndpoint.html)API.
+ Especifique esse endpoint ao criar o `IotDataPlaneClient`.

O exemplo a seguir executa as duas operações.

```
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 CA para autenticação do servidor
<a name="server-authentication-certs"></a>

Dependendo do tipo de endpoint de dados que você está usando e do pacote de criptografia negociado, os certificados de autenticação AWS IoT Core do servidor são assinados por um dos seguintes certificados CA raiz:

**Endpoints do Amazon Trust Services (preferencial)**

**nota**  
Talvez seja necessário clicar com o botão direito do mouse nesses links e selecionar **Salvar link como...** para salvar esses certificados como arquivos.
+ Chave RSA de 2.048 bits: [https://www.amazontrust.com/repository/AmazonRootCA1.pem](https://www.amazontrust.com/repository/AmazonRootCA1.pem).
+ Chave RSA de 4.096 bits: Amazon Root CA 2. Reservado para uso futuro.
+ Chave ECC de 256 bits: [https://www.amazontrust.com/repository/AmazonRootCA3.pem](https://www.amazontrust.com/repository/AmazonRootCA3.pem).
+ Chave ECC de 384 bits: Amazon Root CA 4. Reservado para uso futuro.

Esses certificados são todos assinados pelo [ Certificado da CA raiz Starfield](https://www.amazontrust.com/repository/SFSRootCAG2.pem). Todas as novas AWS IoT Core regiões, começando com o lançamento em 9 de maio de 2018 AWS IoT Core na região Ásia-Pacífico (Mumbai), oferecem somente certificados ATS.

**VeriSign Endpoints (antigos)**
+ Chave RSA de 2048 bits: certificado CA [VeriSign raiz G5 público primário de classe 3](https://www.digicert.com/kb/digicert-root-certificates.htm)

## Diretrizes de autenticação do servidor
<a name="server-authentication-guidelines"></a>

Há muitas variáveis que podem afetar a capacidade de um dispositivo de validar o certificado de autenticação do servidor do AWS IoT Core . Por exemplo, os dispositivos podem ter memória muito limitada para armazenar todos os certificados da CA raiz possíveis ou os dispositivos podem implementar um método não padrão de validação de certificado. Por estas razões, sugerimos seguir estas diretrizes:
+ Recomendamos usar seu endpoint do ATS e instalar todos os certificados Amazon Root CA compatíveis.
+ Se você não puder armazenar todos esses certificados em seu dispositivo, e se seus dispositivos não usarem a validação baseada em ECC, será possível omitir os certificados ECC [https://www.amazontrust.com/repository/AmazonRootCA3.pem](https://www.amazontrust.com/repository/AmazonRootCA3.pem) e [https://www.amazontrust.com/repository/AmazonRootCA4.pem](https://www.amazontrust.com/repository/AmazonRootCA4.pem). Se seus dispositivos implementarem a validação de certificado baseada em RSA, será possível omitir os certificados RSA [https://www.amazontrust.com/repository/AmazonRootCA1.pem](https://www.amazontrust.com/repository/AmazonRootCA1.pem) e [https://www.amazontrust.com/repository/AmazonRootCA2.pem](https://www.amazontrust.com/repository/AmazonRootCA2.pem). Talvez seja necessário clicar com o botão direito do mouse nesses links e selecionar **Salvar link como...** para salvar esses certificados como arquivos.
+ Se você estiver tendo problemas de validação de certificado do servidor ao se conectar ao endpoint do ATS, tente adicionar o certificado da CA raiz da Amazon relevante ao armazenamento confiável. Talvez seja necessário clicar com o botão direito do mouse nesses links e selecionar **Salvar link como...** para salvar esses certificados como arquivos.
  + [Amazon Root CA 1 de assinatura cruzada](https://www.amazontrust.com/repository/G2-RootCA1.pem)
  + [Amazon Root CA 2 de assinatura cruzada](https://www.amazontrust.com/repository/G2-RootCA2.pem) - Reservado para uso futuro.
  + [Amazon Root CA 3 de assinatura cruzada](https://www.amazontrust.com/repository/G2-RootCA3.pem)
  + [Amazon Root CA 4 de assinatura cruzada - Reservado para uso futuro.](https://www.amazontrust.com/repository/G2-RootCA4.pem)
+ Se você estiver tendo problemas de validação de certificado do servidor, talvez seja necessário confiar explicitamente na CA raiz. Tente adicionar o [https://www.amazontrust.com/repository/SFSRootCAG2.pem](https://www.amazontrust.com/repository/SFSRootCAG2.pem) ao seu armazenamento confiável.
+ Se você ainda tiver problemas depois de executar as etapas acima, entre em contato com o [Suporte ao desenvolvedor da AWS](https://aws.amazon.com/premiumsupport/plans/developers/). 

**nota**  
Os certificados CA têm uma data de expiração depois da qual não podem ser usados para validar um certificado de servidor. O certificados da CA podem precisar ser substituídos antes da data de expiração. Você deve verificar se é possível atualizar o certificado CA raiz em todos os seus dispositivos ou clientes para ajudar a garantir uma conectividade contínua e manter-se atualizado com as melhores práticas de segurança.

**nota**  
Ao se conectar ao AWS IoT Core código do seu dispositivo, passe o certificado para a API que você está usando para se conectar. A API usada varia conforme o SDK. Para obter mais informações, consulte o [AWS IoT Core Dispositivo SDKs](iot-sdks.md).

# Autenticação de cliente
<a name="client-authentication"></a>

AWS IoT oferece suporte a três tipos de princípios de identidade para autenticação de dispositivos ou clientes:
+ [Certificados do cliente X.509](x509-client-certs.md)
+ [Usuários, grupos e funções do IAM](iam-users-groups-roles.md)
+ [Identidades do Amazon Cognito](cognito-identities.md)

Essas identidades podem ser usadas com dispositivos, aplicativos móveis, web ou de desktop. Eles podem até mesmo ser usados por um usuário digitando AWS IoT comandos de interface de linha de comando (CLI). Normalmente, AWS IoT os dispositivos usam certificados X.509, enquanto os aplicativos móveis usam identidades do Amazon Cognito. Os aplicativos da Web e de desktop usam identidades federadas ou do IAM. Os comandos da AWS CLI usam o IAM. Para obter mais informações sobre identidades do IAM, consulte [Gerenciamento de identidade e acesso para AWS IoT](security-iam.md).

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

Os certificados X.509 oferecem AWS IoT a capacidade de autenticar conexões de clientes e dispositivos. Os certificados do cliente devem ser registrados AWS IoT antes que o cliente possa se comunicar com AWS IoT. Um certificado de cliente pode ser registrado em vários Conta da AWS s no mesmo Região da AWS para facilitar a movimentação de dispositivos entre seus Conta da AWS s na mesma região. Consulte [Usando certificados de cliente X.509 em vários Conta da AWS s com registro de várias contas](#multiple-account-cert) para obter mais informações. 

Recomendamos que cada dispositivo ou cliente receba um certificado exclusivo para habilitar ações de gerenciamento de clientes refinadas, incluindo a revogação de certificados. Os dispositivos e os clientes também devem oferecer suporte à rotação e à substituição de certificados para ajudar a garantir uma operação contínua conforme os certificados expiram.

Para acessar informações sobre como usar certificados X.509 para comportar alguns dispositivos, consulte [Provisionamento de dispositivos](iot-provision.md) para conhecer as diferentes opções de gerenciamento e provisionamento de certificados compatíveis com AWS IoT .

**AWS IoT suporta esses tipos de certificados de cliente X.509:**
+  Certificados X.509 gerados por AWS IoT
+  Certificados X.509 assinados por uma CA registrada com. AWS IoT
+  Certificados X.509 assinados por uma CA que não está registrada no AWS IoT.

Esta seção descreve como gerenciar certificados X.509 no AWS IoT. Você pode usar o AWS IoT console ou AWS CLI realizar estas operações de certificado:
+ [Crie certificados de AWS IoT cliente](device-certs-create.md)
+ [Criar seus próprios certificados de cliente](device-certs-your-own.md)
+ [Registrar um certificado de cliente](register-device-cert.md)
+ [Ativar ou desativar um certificado de cliente](activate-or-deactivate-device-cert.md)
+ [Revogar um certificado de cliente](revoke-ca-cert.md)

Para obter mais informações sobre os AWS CLI comandos que executam essas operações, consulte a Referência da [AWS IoT CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/index.html).

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

Os certificados X.509 autenticam conexões de clientes e dispositivos a. AWS IoT Os certificados X.509 oferecem vários benefícios em relação a outros mecanismos de identificação e autenticação. Os certificados X.509 permitem que as chaves assimétricas sejam usadas com os dispositivos. Por exemplo, é possível gravar chaves privadas em um armazenamento seguro de um dispositivo para que o material criptográfico confidencial nunca saia do dispositivo. Os certificados X.509 fornecem opções mais fortes de autenticação de cliente em outros esquemas, como nome de usuário e senha ou tokens do portador, porque a chave privada nunca deixa o dispositivo.

AWS IoT autentica certificados de cliente usando o modo de autenticação de cliente do protocolo TLS. O suporte do TLS está disponível em muitas linguagens de programação e sistemas operacionais e é comumente usado para a criptografia de dados. Na autenticação de cliente TLS, AWS IoT solicita um certificado de cliente X.509 e valida o status do certificado em Conta da AWS relação a um registro de certificados. Em seguida, desafia o cliente a obter uma prova de propriedade da chave privada que corresponde à chave pública contida no certificado. AWS IoT exige que os clientes enviem a [extensão Server Name Indication (SNI)](https://tools.ietf.org/html/rfc3546#section-3.1) para o protocolo Transport Layer Security (TLS). Para obter mais informações sobre como configurar a extensão SNI, consulte [Segurança de transporte em AWS IoT Core](transport-security.md).

Para facilitar uma conexão segura e consistente do cliente com o AWS IoT núcleo, um certificado de cliente X.509 deve possuir o seguinte:
+ Registrado no AWS IoT Core. Para obter mais informações, consulte [Registrar um certificado de cliente](register-device-cert.md).
+ Um status de `ACTIVE`. Para obter mais informações, consulte [Ativar ou desativar um certificado de cliente](activate-or-deactivate-device-cert.md).
+ Ainda não atingiu a data de expiração do certificado.

Você pode criar certificados de cliente que usam a CA raiz da Amazon e usar seus próprios certificados de cliente assinados por outra autoridade de certificação (CA). Para obter mais informações sobre o uso do AWS IoT console para criar certificados que usam a Amazon Root CA, consulte[Crie certificados de AWS IoT cliente](device-certs-create.md). Para obter mais informações sobre como usar seus próprios certificados X.509, consulte [Criar seus próprios certificados de cliente](device-certs-your-own.md).

A data e a hora de quando os certificados assinados por um certificado CA expiram são definidas quando o certificado é criado. Os certificados X.509 gerados pela AWS IoT expiram à meia-noite UTC de 31 de dezembro de 2049 (2049-12-31T 23:59:59 Z).

AWS IoT Device Defender pode realizar auditorias em você Conta da AWS e em dispositivos que oferecem suporte às melhores práticas comuns de segurança de IoT. Isso inclui gerenciar as datas de expiração dos certificados X.509 assinados pela sua CA ou pela CA raiz da Amazon. Para obter mais informações sobre como gerenciar a data de expiração de um certificado, consulte [Certificado de dispositivo expirando](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-device-cert-approaching-expiration.html) e [Certificado CA expirando](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-ca-cert-approaching-expiration.html).

No AWS IoT blog oficial, um mergulho mais profundo no gerenciamento da rotação de certificados de dispositivos e nas melhores práticas de segurança é explorado em [Como gerenciar a rotação de certificados de dispositivos de IoT usando](https://aws.amazon.com/blogs/iot/how-to-manage-iot-device-certificate-rotation-using-aws-iot/). AWS IoT

## Usando certificados de cliente X.509 em vários Conta da AWS s com registro de várias contas
<a name="multiple-account-cert"></a>

O registro de várias contas possibilita a movimentação de dispositivos entre suas Conta da AWS na mesma região ou em regiões diferentes. Você pode registrar, testar e configurar um dispositivo em uma conta de pré-produção e, em seguida, registrar e usar o mesmo dispositivo e certificado de dispositivo em uma conta de produção. Você também pode registrar o certificado do cliente no dispositivo ou os certificados do dispositivo sem uma CA registrada com AWS IoT. Para obter mais informações, consulte [Registrar um certificado de cliente assinado por uma CA não registrada (CLI)](manual-cert-registration.md#manual-cert-registration-noca-cli).

**nota**  
Os certificados usados para registro de várias contas são compatíveis com os tipos de endpoint `iot:Data-ATS`, `iot:Data` (legado), `iot:Jobs` e `iot:CredentialProvider`. Para obter mais informações sobre endpoints de AWS IoT dispositivos, consulte[AWS IoT dados do dispositivo e endpoints de serviço](iot-connect-devices.md#iot-connect-device-endpoints).

Os dispositivos que usam o registro de várias contas devem enviar a [extensão Server Name Indication (SNI)](https://tools.ietf.org/html/rfc3546#section-3.1) para o protocolo Transport Layer Security (TLS) e fornecer o endereço completo do endpoint no `host_name` campo, quando se conectarem. AWS IoT AWS IoT usa o endereço do endpoint `host_name` para rotear a conexão para a AWS IoT conta correta. Os dispositivos existentes que não enviarem um endereço de endpoint válido em `host_name` continuarão a funcionar, mas não poderão usar os recursos que exigem essas informações. Para obter mais informações sobre a extensão SNI e para saber como identificar o endereço de endpoint para o campo `host_name`, consulte [Segurança de transporte em AWS IoT Core](transport-security.md). 

**Como usar o registro de várias contas**

1. Você pode registrar os certificados de dispositivo com uma CA. Você pode registrar a CA de assinatura em várias contas no modo `SNI_ONLY` e usar essa CA para registrar o mesmo certificado de cliente em várias contas. Para obter mais informações, consulte [Registrar um certificado da CA no modo SNI\$1ONLY (CLI) - Recomendado](manage-your-CA-certs.md#register-CA-cert-SNI-cli).

1. Você pode registrar os certificados de dispositivo sem uma CA. Consulte [Registrar um certificado de cliente assinado por uma CA não registrada (CLI)](manual-cert-registration.md#manual-cert-registration-noca-cli). O registro de uma CA é opcional. Você não precisa registrar a CA com a qual assinou os certificados do dispositivo AWS IoT.

## Algoritmos de assinatura de certificados suportados pelo AWS IoT
<a name="x509-cert-algorithms"></a>

AWS IoT suporta os seguintes algoritmos de assinatura de certificados:
+ SHA256COM A RSA
+ SHA384COM A RSA
+ SHA512COM A RSA
+ SHA256WITHRSAANDMGF1 (RSASSA-PSS)
+ SHA384WITHRSAANDMGF1 (RSASSA-PSS)
+ SHA512WITHRSAANDMGF1 (RSASSA-PSS)
+ DSA\$1COM\$1 SHA256
+ ECDSA-COM- SHA256
+ ECDSA-COM- SHA384
+ ECDSA-COM- SHA512

Para obter mais informações sobre autenticação e segurança de certificados, consulte [Qualidade da chave de certificado do dispositivo](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-device-cert-key-quality.html).

**nota**  
A solicitação de assinatura de certificado (CSR) deve incluir uma chave pública. A chave pode ser uma chave RSA com um comprimento de pelo menos 2.048 bits ou uma chave ECC das curvas do NIST P-256, NIST P-384 ou NIST P-521. Para obter mais informações, consulte [CreateCertificateFromCsr](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCertificateFromCsr.html) no *AWS IoT API Reference Guide (Guia de referência da API do &CDSlong;)*.

## Algoritmos principais suportados por AWS IoT
<a name="x509-cert-key-algorithms"></a>

A tabela abaixo mostra o suporte para os principais algoritmos:


****  

| Algoritmo de chave | Algoritmo de assinatura de certificado | Versão do TLS | Compatível? Yes ou No | 
| --- | --- | --- | --- | 
| RSA com um tamanho de chave de pelo menos 2048 bits | Todos | TLS 1.2 TLS 1.3 | Sim | 
| ECC NIST P-256/P-384/P-521 | Todos | TLS 1.2 TLS 1.3 | Sim | 
| RSA-PSS com um tamanho de chave de pelo menos 2048 bits | Todos | TLS 1.2 | Não | 
| RSA-PSS com um tamanho de chave de pelo menos 2048 bits | Todos | TLS 1.3 | Sim | 

Para criar um certificado usando [CreateCertificateFromCSR](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateCertificateFromCsr.html), você pode usar um algoritmo de chave compatível para gerar uma chave pública para sua CSR. Para registrar seu próprio certificado usando [RegisterCertificate](https://docs.aws.amazon.com//iot/latest/apireference/API_RegisterCertificate.html)nossa [RegisterCertificateWithoutCA](https://docs.aws.amazon.com//iot/latest/apireference/API_RegisterCertificateWithoutCA.html), você pode usar um algoritmo de chave compatível para gerar uma chave pública para o certificado.

Para obter mais informações, consulte [Políticas de segurança](https://docs.aws.amazon.com//iot/latest/developerguide/transport-security.html#tls-policy-table).

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

AWS IoT fornece certificados de cliente assinados pela autoridade de certificação (CA) raiz da Amazon.

Este tópico descreve como criar um certificado de cliente assinado pela autoridade de certificação raiz da Amazon e como fazer download dos arquivos do certificado. Depois de criar os arquivos do certificado de cliente, é necessário instalá-los no cliente.

**nota**  
Cada certificado de cliente X.509 fornecido pelo AWS IoT contém os atributos do emissor e do sujeito que você definiu no momento da criação do certificado. Os atributos do certificado ficam imutáveis somente após a criação do certificado.

Você pode usar o AWS IoT console ou o AWS CLI para criar um AWS IoT certificado assinado pela autoridade de certificação Amazon Root.

## Crie um AWS IoT certificado (console)
<a name="device-certs-create-console"></a>

**Para criar um AWS IoT certificado usando o AWS IoT console**

1. Faça login no Console de gerenciamento da AWS e abra o [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. No painel de navegação, selecione **Segurança**, **Certificados** e, em seguida, **Criar**.

1. Selecione **Criação de certificado com um clique (recomendado)** – **Criar certificado**.

1. Na página **Certificado criado**, faça download dos arquivos do certificado de cliente do objeto, da chave pública e da chave privada para um local seguro. Esses certificados gerados por só AWS IoT estão disponíveis para uso com AWS IoT serviços.

   Se você também precisar do arquivo do certificado CA raiz da Amazon, essa página também tem o link da página de onde é possível fazer download dele.

1. Um certificado de cliente foi criado e registrado no AWS IoT. É necessário ativar o certificado antes de usá-lo em um cliente.

    Para ativar o certificado de cliente agora, selecione **Ativar**. Se você não quiser ativar o certificado agora, consulte [Ativar um certificado de cliente (console)](activate-or-deactivate-device-cert.md#activate-device-cert-console) para saber como ativar o certificado posteriormente.

   

1. Para anexar uma política ao certificado, selecione **Anexar uma política**.

   Se você não quiser anexar uma política agora, selecione **Concluído** para concluir. É possível anexar uma política posteriormente.

Depois de concluir o procedimento, instale os arquivos do certificado no cliente.

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

O AWS CLI fornece o **[create-keys-and-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/create-keys-and-certificate.html)** comando para criar certificados de cliente assinados pela autoridade de certificação Amazon Root. Esse comando, no entanto, não faz download do arquivo de certificado CA raiz da Amazon. É possível fazer download do arquivo de certificado CA raiz da Amazon em [Certificados CA para autenticação do servidor](server-authentication.md#server-authentication-certs). 

Esse comando cria arquivos de chave privada, chave pública e certificado X.509 e registra e ativa o certificado com. AWS IoT

```
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
```

Se você não deseja ativar o certificado ao criá-lo e registrá-lo, esse comando cria os arquivos de chave privada, chave pública e certificado X.509 e registra o certificado, mas não o ativa. [Ativar um certificado de cliente (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli) descreve como ativar o certificado posteriormente.

```
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 os arquivos do certificado no cliente.

# Criar seus próprios certificados de cliente
<a name="device-certs-your-own"></a>

AWS IoT suporta certificados de cliente assinados por qualquer autoridade de certificação (CA) raiz ou intermediária. AWS IoT usa certificados CA para verificar a propriedade dos certificados. Para usar certificados de dispositivo assinados por uma CA que não seja a CA da Amazon, o certificado da CA deve ser registrado AWS IoT para que possamos verificar a propriedade do certificado do dispositivo.

AWS IoT suporta várias maneiras de trazer seus próprios certificados (BYOC): 
+ Primeiro, registre a CA usada para assinar os certificados do cliente e, em seguida, registre esses certificados individuais. Se você quiser registrar o dispositivo ou cliente em seu certificado de cliente quando ele se conectar pela primeira vez AWS IoT (também conhecido como [Just-in-Time Provisioning](https://docs.aws.amazon.com//iot/latest/developerguide/jit-provisioning.html)), você deve registrar a CA de assinatura e ativar o registro automático. AWS IoT 
+ Se você não conseguir registrar a CA de assinatura, poderá optar por registrar certificados de cliente sem CA. Para dispositivos registrados sem CA, será necessário apresentar a [Server Name Indication (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) ao conectá-los ao AWS IoT.

**nota**  
Para registrar certificados de cliente usando a CA, você deve registrar a CA assinante com AWS IoT, e não com qualquer outra CAs na hierarquia.

**nota**  
Um certificado da CA pode ser registrado no modo `DEFAULT` por apenas uma conta em uma região. Um certificado da CA pode ser registrado no modo `SNI_ONLY` por várias contas em uma região. 

Para acessar mais informações sobre como usar certificados X.509 para comportar alguns dispositivos, consulte [Provisionamento de dispositivos](iot-provision.md) para conhecer as diferentes opções de gerenciamento e provisionamento de certificados compatíveis com AWS IoT .

**Topics**
+ [Gerenciar os certificados CA](manage-your-CA-certs.md)
+ [Criar um certificado de cliente usando o certificado CA](create-device-cert.md)

# Gerenciar os certificados CA
<a name="manage-your-CA-certs"></a>

Esta seção descreve tarefas comuns para gerenciar seus próprios certificados de autoridade de certificação (CA).

Você pode registrar sua autoridade de certificação (CA) AWS IoT se estiver usando certificados de cliente assinados por uma CA que AWS IoT não reconhece.

Se você quiser que os clientes registrem automaticamente seus certificados de cliente AWS IoT quando se conectarem pela primeira vez, a CA que assinou os certificados de cliente deve estar registrada AWS IoT. Caso contrário, não é necessário registrar o certificado CA que assinou os certificados de cliente.

**nota**  
Um certificado da CA pode ser registrado no modo `DEFAULT` por apenas uma conta em uma região. Um certificado da CA pode ser registrado no modo `SNI_ONLY` por várias contas em uma região.

**Topics**
+ [Criar um certificado CA](#create-your-CA-cert)
+ [Registrar o certificado CA](#register-CA-cert)
+ [Desativar um certificado CA](#deactivate-ca-cert)

## Criar um certificado CA
<a name="create-your-CA-cert"></a>

Se você não tiver um certificado da CA, poderá usar as ferramentas do [OpenSSL v1.1.1i](https://www.openssl.org/) para criar um.

**nota**  
Você não pode realizar esse procedimento no AWS IoT console.

**Como criar um certificado da CA usando ferramentas do [OpenSSL v1.1.1i](https://www.openssl.org/)**

1. Gere um par de chaves.

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

1. Use a chave privada do par de chaves para gerar um certificado CA.

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

## Registrar o certificado CA
<a name="register-CA-cert"></a>

Esses procedimentos descrevem como registrar um certificado de uma autoridade de certificação (CA) que não seja a CA da Amazon. AWS IoT Core usa certificados CA para verificar a propriedade dos certificados. Para usar certificados de dispositivo assinados por uma CA que não seja a CA da Amazon, você deve registrar o certificado da CA AWS IoT Core para que ela possa verificar a propriedade do certificado do dispositivo.

### Registrar um certificado CA (console)
<a name="register-CA-cert-console"></a>

**nota**  
Para registrar um certificado da CA no console, inicie no console em [Registrar certificado da CA](https://console.aws.amazon.com//iot/home#/create/cacertificate). Você pode registrar sua CA no modo de várias contas e sem a necessidade de fornecer um certificado de verificação ou acesso à chave privada. Uma CA pode ser registrada no modo de várias contas por várias Contas da AWS na mesma Região da AWS. Você pode registrar sua CA no modo de conta única fornecendo um certificado de verificação e comprovante de propriedade da chave privada da CA.

### Registrar um certificado CA (CLI)
<a name="register-CA-cert-cli"></a>

Você pode registrar um certificado da CA no modo `DEFAULT` ou `SNI_ONLY`. Uma CA pode ser registrada no `DEFAULT` modo um Conta da AWS em um Região da AWS. Uma CA pode ser registrada no `SNI_ONLY` modo por várias Contas da AWS na mesma Região da AWS. Para obter mais informações sobre o modo de certificado da CA, consulte [certificateMode](https://docs.aws.amazon.com//iot/latest/apireference/API_CACertificateDescription.html#iot-Type-CACertificateDescription-certificateMode).

**nota**  
Recomendamos que você registre uma CA no modo `SNI_ONLY`. Você não precisa fornecer um certificado de verificação ou acesso à chave privada e pode registrar a CA por várias vezes Contas da AWS na mesma Região da AWS.

#### Registrar um certificado da CA no modo SNI\$1ONLY (CLI) - Recomendado
<a name="register-CA-cert-SNI-cli"></a>

**Pré-requisitos**

Certifique-se de que você tenha o seguinte no seu computador antes de continuar:
+ O arquivo de certificado da CA raiz (referenciado no exemplo a seguir como `root_CA_cert_filename.pem`)
+ O [OpenSSL v1.1.1i](https://www.openssl.org/) ou mais recente

**Para registrar um certificado CA no `SNI_ONLY` modo usando o AWS CLI**

1. Registre o certificado CA com AWS IoT. Usando o comando **register-ca-certificate**, insira o nome do arquivo do certificado da CA. Para obter mais informações, consulte [register-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html) na *Referência de comandos da AWS CLI *.

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

   Se for bem-sucedido, esse comando retornará *certificateId* o.

1. Neste ponto, o certificado CA foi registrado, AWS IoT mas está inativo. O certificado da CA deve ser ativado antes do registro de qualquer certificado de cliente assinado por ele.

   Esta etapa ativa o certificado CA.

   Para ativar o certificado da CA, use o comando **update-certificate** da seguinte forma. Para obter mais informações, consulte [update-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) na *Referência de comandos da AWS CLI *.

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

Para ver o status do certificado da CA, use o comando **describe-ca-certificate**. Para obter mais informações, consulte [describe-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) na *Referência de comandos da AWS CLI *.

#### Registrar um certificado da CA no modo `DEFAULT` (CLI)
<a name="register-CA-cert-default-cli"></a>

**Pré-requisitos**

Certifique-se de que você tenha o seguinte no seu computador antes de continuar:
+ O arquivo de certificado da CA raiz (referenciado no exemplo a seguir como `root_CA_cert_filename.pem`)
+ O arquivo de chave privada do certificado da CA raiz (referenciado no exemplo a seguir como `root_CA_key_filename.key`)
+ O [OpenSSL v1.1.1i](https://www.openssl.org/) ou mais recente

**Para registrar um certificado CA no `DEFAULT` modo usando o AWS CLI**

1. Para obter um código de registro de AWS IoT, use**get-registration-code**. Salve o `registrationCode` retornado para usar como o `Common Name` do certificado de verificação da chave privada. Para obter mais informações, consulte [get-registration-code](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/get-registration-code.html) na *Referência de comandos da AWS CLI *.

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

1. Gere um par de chaves para o certificado de verificação de chave privada:

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

1. Crie uma solicitação de assinatura de certificado (CSR) para o certificado de verificação da chave privada. Defina o campo `Common Name` do certificado como o `registrationCode` retornado por **get-registration-code**.

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

   Você será solicitado a fornecer algumas informações, incluindo o `Common Name` para o 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. Use uma CSR para criar o certificado de verificação de chave 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 o certificado CA com AWS IoT. Transmita o nome do arquivo do certificado da CA e o nome do arquivo do certificado de verificação da chave privada para o comando **register-ca-certificate**, da seguinte maneira. Para obter mais informações, consulte [register-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html) na *Referência de comandos da AWS CLI *.

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

   Esse comando retorna o*certificateId*, se for bem-sucedido.

1. Neste momento, o certificado CA foi registrado AWS IoT , mas não está ativo. O certificado da CA deve ser ativado antes do registro de qualquer certificado de cliente assinado por ele.

   Esta etapa ativa o certificado CA.

   Para ativar o certificado da CA, use o comando **update-certificate** da seguinte forma. Para obter mais informações, consulte [update-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) na *Referência de comandos da AWS CLI *.

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

Para ver o status do certificado da CA, use o comando **describe-ca-certificate**. Para obter mais informações, consulte [describe-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) na *Referência de comandos da AWS CLI *.

### Crie um certificado de verificação de CA para registrar o certificado da CA no console
<a name="create-CA-verification-cert"></a>

**nota**  
Esse procedimento só deve ser usado se você estiver registrando um certificado CA no AWS IoT console.  
Se você não chegou a esse procedimento a partir do AWS IoT console, inicie o processo de registro do certificado CA no console em [Registrar certificado CA](https://console.aws.amazon.com//iot/home#/create/cacertificate). 

Certifique-se de que você tenha o seguinte no mesmo computador antes de continuar:
+ O arquivo de certificado da CA raiz (referenciado no exemplo a seguir como `root_CA_cert_filename.pem`)
+ O arquivo de chave privada do certificado da CA raiz (referenciado no exemplo a seguir como `root_CA_key_filename.key`)
+ O [OpenSSL v1.1.1i](https://www.openssl.org/) ou mais recente

**Como usar a interface de linha de comando para criar um certificado de verificação de CA a fim de registrar seu certificado da CA no console**

1. Substitua `verification_cert_key_filename.key` pelo nome do arquivo da chave do certificado de verificação que você deseja criar (por exemplo, **verification\$1cert.key**). Em seguida, execute esse comando para gerar um par de chaves para o certificado de verificação de chave privada:

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

1. Substitua `verification_cert_key_filename.key` pelo nome do arquivo da chave criado na etapa 1.

   Substitua `verification_cert_csr_filename.csr` pelo nome do arquivo de solicitação de assinatura de certificado (CSR) que você deseja criar. Por exemplo, .**verification\$1cert.csr**

   Execute esse comando para criar o arquivo CRS.

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

   O comando solicita que você forneça informações adicionais que serão explicadas posteriormente.

1. No AWS IoT console, no contêiner do **certificado de verificação**, copie o código de registro.

1. As informações solicitadas pelo comando **openssl** são mostradas no exemplo a seguir. Com exceção do campo `Common Name`, você pode inserir seus próprios valores ou mantê-los em branco.

   No campo `Common Name`, cole o código de registro que você copiou na etapa 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 []:
   ```

   Depois de terminar, o comando cria o arquivo CSR.

1. Substitua o `verification_cert_csr_filename.csr` pelo `verification_cert_csr_filename.csr` que você usou na etapa anterior.

   Substitua `root_CA_cert_filename.pem` pelo nome do arquivo do certificado da CA que você deseja registrar.

   Substitua `root_CA_key_filename.key` pelo nome do arquivo da chave privada do certificado da CA.

   Substitua `verification_cert_filename.pem` pelo nome do arquivo do certificado de verificação que você deseja criar. Por exemplo, .**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. Depois que o comando OpenSSL for concluído, você deverá ter esses arquivos prontos para uso quando retornar ao console.
   + Seu arquivo de certificado da CA (`root_CA_cert_filename.pem` usado no comando anterior)
   + O certificado de verificação que você criou na etapa anterior (*verification\$1cert\$1filename.pem*usado no comando anterior)

## Desativar um certificado CA
<a name="deactivate-ca-cert"></a>

Quando um certificado de autoridade de certificação (CA) está habilitado para registro automático de certificados de clientes, AWS IoT verifica o certificado CA para garantir que a CA esteja`ACTIVE`. Se o certificado CA for`INACTIVE`, AWS IoT não permite que o certificado do cliente seja registrado.

Ao definir o certificado da CA como `INACTIVE`, você impede que os novos certificados de cliente emitidos pela CA sejam registrados automaticamente.

**nota**  
Qualquer certificado de cliente registrado que foi assinado pelo certificado CA comprometido continuará a funcionar até que você revogue explicitamente cada um deles.

### Desativar um certificado CA (console)
<a name="deactivate-ca-cert-console"></a>

**Para desativar um certificado CA usando o console AWS IoT**

1. Faça login no Console de gerenciamento da AWS e abra o [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. No painel de navegação esquerdo, escolha **Seguro**, escolha **CAs**.

1. Na lista de autoridades de certificação, localize a que pretende desativar e selecione o ícone de reticências para abrir o menu de opções.

1. No menu de opções, selecione **Desativar**.

A autoridade de certificação deve aparecer como **Inativa** na lista.

**nota**  
O AWS IoT console não fornece uma maneira de listar os certificados que foram assinados pela CA que você desativou. Para obter uma opção da AWS CLI para listar esses certificados, consulte [Desativar um certificado CA (CLI)](#deactivate-ca-cert-cli).

### Desativar um certificado CA (CLI)
<a name="deactivate-ca-cert-cli"></a>

 AWS CLI Fornece o [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 desativar um certificado CA.

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

Use o 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 obter uma lista de todos os certificados de cliente registrados que foram assinados pela CA especificada. Para cada certificado de cliente assinado pelo certificado CA especificado, use o 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 revogar o certificado de cliente a fim de impedir que ele seja usado.

Use o 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 o status do certificado CA.

# Criar um certificado de cliente usando o certificado CA
<a name="create-device-cert"></a>

É possível usar sua própria autoridade de certificação (CA) para criar certificados de cliente. O certificado do cliente deve ser registrado AWS IoT antes do uso. Para obter informações sobre as opções de registro para os certificados de cliente, consulte [Registrar um certificado de cliente](register-device-cert.md).

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

**nota**  
Você não pode realizar esse procedimento no AWS IoT console.

**Para criar um certificado de cliente usando o AWS CLI**

1. Gere um par de chaves.

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

1. Crie uma CSR para o certificado de cliente.

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

   Você será solicitado a fornecer algumas informações, conforme mostrado aqui.

   ```
   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. Crie um certificado de cliente usando a 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
   ```

 Neste momento, o certificado do cliente foi criado, mas ainda não foi registrado no AWS IoT. Para obter informações sobre como e quando registrar o certificado de cliente, consulte [Registrar um certificado de cliente](register-device-cert.md). 

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

Os certificados do cliente devem ser registrados AWS IoT para permitir a comunicação entre o cliente AWS IoT e. Você pode registrar cada certificado de cliente manualmente ou configurar os certificados de cliente para se registrarem automaticamente quando o cliente se conectar AWS IoT pela primeira vez.

 Se você quiser que os clientes e os dispositivos registrem seus certificados de cliente quando se conectarem pela primeira vez, deverá [Registrar o certificado CA](manage-your-CA-certs.md#register-CA-cert) usado para assinar o certificado de cliente no AWS IoT nas regiões nas quais deseja usá-lo. O Amazon Root CA é registrado automaticamente no AWS IoT. 

Os certificados do cliente podem ser Contas da AWS compartilhados por regiões. Os procedimentos desses tópicos devem ser executados em cada conta e região em que você deseja usar o certificado de cliente. O registro de um certificado de cliente em uma conta ou região não é automaticamente reconhecido por outra.

**nota**  
Os clientes que usam o protocolo Transport Layer Security (TLS) para se conectar ao AWS IoT devem oferecer suporte à [Server Name Indication (SNI) extension](https://tools.ietf.org/html/rfc3546#section-3.1) para o TLS. Para obter mais informações, consulte [Segurança de transporte em AWS IoT Core](transport-security.md).

**Topics**
+ [Registrar um certificado de cliente manualmente](manual-cert-registration.md)
+ [Registre um certificado de cliente quando o cliente se conecta ao AWS IoT just-in-time registro (JITR)](auto-register-device-cert.md)

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

Você pode registrar um certificado de cliente manualmente usando o AWS IoT console AWS CLI e.

O procedimento de registro a ser usado depende se o certificado será compartilhado por Conta da AWS s e regiões. O registro de um certificado de cliente em uma conta ou região não é automaticamente reconhecido por outra.

Os procedimentos deste tópico devem ser executados em cada conta e região em que você deseja usar o certificado de cliente. Os certificados do cliente podem ser compartilhados por Conta da AWS s e regiões. 

## Registrar um certificado de cliente assinado por uma CA registrada (console)
<a name="manual-cert-registration-console"></a>

**nota**  
Antes de executar esse procedimento, verifique se você tem o arquivo.pem do certificado do cliente e se o certificado do cliente foi assinado por uma CA na qual você se [registrou](manage-your-CA-certs.md#register-CA-cert). AWS IoT

**Para registrar um certificado existente AWS IoT usando o console**

1. Faça login no AWS Management Console e abra o [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. No painel de navegação, na seção **Gerenciar**, selecione **Segurança** e, em seguida, **Certificados**.

1. Na página **Certificados**, na caixa de diálogo **Certificados**, selecione **Adicionar certificado** e, em seguida, **Registrar certificados**.

1. Na página **Registrar certificado** na caixa de diálogo **Certificados a serem carregados**, faça o seguinte:
   + Escolha a **CA registrada no AWS IoT**.
   + Em **Escolher certificado de CA**, selecione sua **Autoridade de certificação**. 
     + Selecione **Registrar uma nova CA** para registrar uma nova **autoridade de certificação** que não esteja registrada no AWS IoT.
     + Deixe **Escolher certificado de CA** em branco se a **autoridade de certificação raiz da Amazon** for sua autoridade de certificação.
   + Selecione até 10 certificados para carregar e se registrar AWS IoT.
     + Use os arquivos de certificado que você criou em [Crie certificados de AWS IoT cliente](device-certs-create.md) e [Criar um certificado de cliente usando o certificado CA](create-device-cert.md).
   + Selecione **Ativar** ou **Desativar**. Se você selecionar **Desativar**, [Ativar ou desativar um certificado de cliente](activate-or-deactivate-device-cert.md) explica como ativar o certificado após o seu registro.
   + Escolha **Registrar**.

Na página **Certificados** na caixa de diálogo **Certificados**, seus certificados registrados agora serão exibidos.

## Registrar um certificado de cliente assinado por uma CA não registrada (console)
<a name="manual-cert-registration-console-noca"></a>

**nota**  
Antes de executar esse procedimento, verifique se você tem o arquivo .pem do certificado de cliente.

**Para registrar um certificado existente AWS IoT usando o console**

1. Faça login no AWS Management Console e abra o [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. No painel de navegação à esquerda, selecione **Proteger**, **Certificados** e **Criar**.

1. Em **Criar um certificado**, localize a entrada **Usar meu certificado** e selecione **Começar**.

1. Em **Selecionar uma CA**, selecione **Próximo**.

1.  Em **Registrar certificados de dispositivos existentes**, escolha **Selecionar certificados** e escolha até 10 arquivos de certificado para registrar. 

1.  Depois de fechar a caixa de diálogo do arquivo, escolha se deseja ativar ou revogar os certificados de cliente ao registrá-los.

   Se você não ativar um certificado quando ele for registrado, [Ativar um certificado de cliente (console)](activate-or-deactivate-device-cert.md#activate-device-cert-console) descreve como ativá-lo posteriormente. 

   Se um certificado for revogado quando for registrado, ele não poderá ser ativado posteriormente.

   Depois de selecionar os arquivos de certificado a serem registrados e escolher as ações a serem executadas após o registro, selecione **Registrar certificados**.

Os certificados de cliente registrados com êxito aparecem na lista de certificados.

## Registrar um certificado de cliente assinado por uma CA registrada (CLI)
<a name="manual-cert-registration-cli"></a>

**nota**  
Antes de executar esse procedimento, verifique se você tem o arquivo .pem da autoridade de certificação (CA) e o arquivo .pem do certificado de cliente. O certificado do cliente deve ser assinado por uma autoridade de certificação (CA) na qual você tenha se [registrado AWS IoT](manage-your-CA-certs.md#register-CA-cert).

Use o 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, mas não ativar, um certificado de cliente.

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

O certificado do cliente está registrado com AWS IoT, mas ainda não está ativo. Consulte [Ativar um certificado de cliente (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli) para acessar informações sobre como ativá-lo posteriormente.

Também é possível ativar o certificado de cliente ao registrá-lo usando esse comando.

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

Para obter mais informações sobre como ativar o certificado para que ele possa ser usado para se conectar AWS IoT, consulte [Ativar ou desativar um certificado de cliente](activate-or-deactivate-device-cert.md)

## Registrar um certificado de cliente assinado por uma CA não registrada (CLI)
<a name="manual-cert-registration-noca-cli"></a>

**nota**  
Antes de executar esse procedimento, verifique se você tem o arquivo .pem do certificado.

Use o 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, mas não ativar, um certificado de cliente.

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

O certificado do cliente está registrado com AWS IoT, mas ainda não está ativo. Consulte [Ativar um certificado de cliente (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli) para acessar informações sobre como ativá-lo posteriormente.

Também é possível ativar o certificado de cliente ao registrá-lo usando esse comando.

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

Para obter mais informações sobre como ativar o certificado para que ele possa ser usado para se conectar AWS IoT, consulte[Ativar ou desativar um certificado de cliente](activate-or-deactivate-device-cert.md).

# Registre um certificado de cliente quando o cliente se conecta ao AWS IoT just-in-time registro (JITR)
<a name="auto-register-device-cert"></a>

Você pode configurar um certificado CA para permitir que os certificados do cliente que ele assinou sejam registrados AWS IoT automaticamente na primeira vez em que o cliente se conectar AWS IoT.

Para registrar certificados de cliente quando um cliente se conecta AWS IoT pela primeira vez, você deve habilitar o certificado CA para registro automático e configurar a primeira conexão do cliente para fornecer os certificados necessários.

## Configurar um certificado CA para oferecer suporte ao registro automático (console)
<a name="enable-auto-registration-console"></a>

**Para configurar um certificado CA para oferecer suporte ao registro automático de certificados de clientes usando o AWS IoT console**

1. Faça login no AWS Management Console e abra o [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. No painel de navegação esquerdo, escolha **Seguro**, escolha **CAs**.

1. Na lista de autoridades de certificação, localize aquela para a qual deseja ativar o registro automático e abra o menu de opções usando o ícone de reticências.

1. No menu de opções, selecione **Habilitar o registro automático**.

**nota**  
O status do registro automático não é mostrado na lista de autoridades de certificação. Para ver o status do registro automático de uma autoridade de certificação, é necessário abrir a página **Detalhes** da autoridade de certificação.

## Configurar um certificado CA para oferecer suporte ao registro automático (CLI)
<a name="enable-auto-registration-cli"></a>

Se você já registrou seu certificado CA com AWS IoT, use o [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 definir `autoRegistrationStatus` o certificado CA como`ENABLE`.

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

Se deseja habilitar `autoRegistrationStatus` quando registrar o certificado CA, use o 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
```

Use o 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 o status do certificado CA.

## Configurar a primeira conexão feita por um cliente para registro automático
<a name="configure-auto-reg-first-connect"></a>

Quando um cliente tenta se conectar AWS IoT pela primeira vez, o certificado do cliente assinado pelo seu certificado CA deve estar presente no cliente durante o handshake do Transport Layer Security (TLS).

Quando o cliente se conectar AWS IoT, use o certificado de cliente que você criou em [Criar certificados de AWS IoT cliente](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-create.html) ou [Criar seus próprios certificados de cliente](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-your-own.html). AWS IoT reconhece o certificado CA como um certificado CA registrado, registra o certificado do cliente e define seu status como. `PENDING_ACTIVATION` Isso indica que o certificado de cliente foi registrado automaticamente e está aguardando ativação. O estado do certificado de cliente deve ser `ACTIVE` para que ele possa ser usado para se conectar ao AWS IoT. Consulte [Ativar ou desativar um certificado de cliente](activate-or-deactivate-device-cert.md) para ver mais informações sobre como ativar um certificado de cliente.

**nota**  
Você pode provisionar dispositivos usando o recurso de AWS IoT Core just-in-time registro (JITR) sem precisar enviar toda a cadeia de confiança na primeira conexão dos dispositivos. AWS IoT Core A apresentação do certificado da CA é opcional, mas é necessário que o dispositivo envie a extensão [Server Name Indication (SNI)](https://datatracker.ietf.org/doc/html/rfc3546#section-3.1) ao se conectar.

Quando registra AWS IoT automaticamente um certificado ou quando um cliente apresenta um certificado no `PENDING_ACTIVATION` status, AWS IoT publica uma mensagem no seguinte tópico do MQTT:

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

Em que `caCertificateId` é o ID do certificado CA que emitiu o certificado de cliente.

A mensagem publicada para este tópico tem a seguinte estrutura:

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

Você pode criar uma regra que ouça esse tópico e execute algumas ações. Recomendamos que você crie uma regra do Lambda que verifique se o certificado de cliente não está em uma lista de revogação de certificados (CRL), ative o certificado e crie e anexe uma política para o certificado. A política determina quais recursos o cliente pode acessar. Se a política que você está criando exigir o ID do cliente dos dispositivos conectados, você poderá usar a função clientid() da regra para recuperar o ID do cliente. Este é um exemplo de definição de regra:

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

Neste exemplo, a regra assina o tópico de JITR `$aws/events/certificates/registered/caCertificateID` e usa a função clientid() para recuperar o ID do cliente. Depois, a regra anexa o ID do cliente à carga útil de JITR. Para ter mais informações sobre a função clientid() da regra, consulte [clientid()](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-clientid).

Para obter mais informações sobre como criar uma regra Lambda que escuta o `$aws/events/certificates/registered/caCertificateID` tópico e executa essas ações, 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/) em. AWS IoT

Se ocorrer algum erro ou exceção durante o registro automático dos certificados do cliente, AWS IoT envia eventos ou mensagens para seus CloudWatch registros no Logs. Para obter mais informações sobre como configurar os registros da sua conta, consulte a [ CloudWatch documentação da Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/).

# Gerenciar certificados do cliente
<a name="manage-device-cert"></a>

AWS IoT fornece recursos para você gerenciar certificados de clientes.

**Topics**
+ [Ativar ou desativar um certificado de cliente](activate-or-deactivate-device-cert.md)
+ [Anexar um objeto ou política a um certificado de cliente](attach-to-cert.md)
+ [Revogar um certificado de cliente](revoke-ca-cert.md)
+ [Transferir um certificado para outra conta](transfer-cert.md)

# Ativar ou desativar um certificado de cliente
<a name="activate-or-deactivate-device-cert"></a>

AWS IoT verifica se um certificado de cliente está ativo ao autenticar uma conexão.

É possível criar e registrar certificados de cliente sem ativá-los, para que eles não possam ser usados até que você queira usá-los. Também é possível desativar certificados de cliente ativos para desabilitá-los temporariamente. Por fim, é possível revogar certificados de cliente para impedir qualquer uso futuro deles. 

## Ativar um certificado de cliente (console)
<a name="activate-device-cert-console"></a>

**Para ativar um certificado de cliente usando o AWS IoT console**

1. Faça login no AWS Management Console e abra o [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. No painel de navegação à esquerda, selecione **Proteger** e **Certificados**.

1. Na lista de certificados, localize o certificado que você deseja ativar e abra o menu de opções usando o ícone de reticências.

1. No menu de opções, selecione **Ativar**.

O certificado deve ser exibido como **Ativo** na lista de certificados.

## Desativar um certificado de cliente (console)
<a name="deactivate-device-cert-console"></a>

**Para desativar um certificado de cliente usando o console AWS IoT**

1. Faça login no AWS Management Console e abra o [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. No painel de navegação à esquerda, selecione **Proteger** e **Certificados**.

1. Na lista de certificados, localize o certificado que você deseja desativar e abra o menu de opções usando o ícone de reticências.

1. No menu de opções, selecione **Desativar**.

O certificado deve ser exibido como **Inativo** na lista de certificados.

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

O AWS CLI fornece o [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 ativar um certificado.

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

Se o comando tiver sido bem-sucedido, o status do certificado será `ACTIVE`. Execute [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 o status do certificado.

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

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

O AWS CLI fornece o [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 desativar um certificado.

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

Se o comando tiver sido bem-sucedido, o status do certificado será `INACTIVE`. Execute [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 o status do certificado.

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

# Anexar um objeto ou política a um certificado de cliente
<a name="attach-to-cert"></a>

Quando você cria e registra um certificado separado de AWS IoT algo, ele não terá nenhuma política que autorize nenhuma AWS IoT operação, nem será associado a nenhum AWS IoT objeto. Esta seção descreve como adicionar esses relacionamentos a um certificado registrado.

**Importante**  
Para concluir esses procedimentos, você já deve ter criado o objeto ou a política que quer anexar ao certificado.

O certificado autentica um dispositivo AWS IoT para que ele possa se conectar. Anexar o certificado a um recurso de objeto estabelece a relação entre o dispositivo (por meio do certificado) e o recurso de objeto. Para autorizar o dispositivo a realizar AWS IoT ações, como permitir que o dispositivo se conecte e publique mensagens, uma política apropriada deve ser anexada ao certificado do dispositivo. 

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

Será necessário o nome do objeto para concluir este procedimento.

**Como anexar um objeto a um certificado registrado**

1. Faça login no AWS Management Console e abra o [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. No painel de navegação à esquerda, selecione **Proteger** e **Certificados**.

1. Na lista de certificados, localize o certificado ao qual você deseja anexar uma política, abra o menu de opções do certificado escolhendo o ícone de reticências e escolha **Anexar objeto**.

1. No menu pop-up, localize o nome do objeto que você deseja anexar ao certificado, marque sua caixa de seleção e escolha **Anexar**.

O objeto agora deve aparecer na lista de objetos na página de detalhes do certificado.

## Anexar uma política a um certificado de cliente (console)
<a name="attach-to-cert-policy-console"></a>

Será necessário o nome do objeto de política para concluir este procedimento.

**Como anexar um objeto de política a um certificado registrado**

1. Faça login no AWS Management Console e abra o [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. No painel de navegação à esquerda, selecione **Proteger** e **Certificados**.

1. Na lista de certificados, localize o certificado ao qual você deseja anexar uma política, abra o menu de opções do certificado escolhendo o ícone de reticências e escolha **Anexar política**. 

1. No menu pop-up, localize o nome da política que você deseja anexar ao certificado, marque sua caixa de seleção e escolha **Anexar**.

O objeto de política agora deverá ser exibido na lista de políticas na página de detalhes do certificado.

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

O AWS CLI fornece o [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 anexar um objeto a um certificado.

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

## Anexar uma política a um certificado de cliente (CLI)
<a name="attach-to-cert-policy-cli"></a>

O AWS CLI fornece o [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 anexar um objeto de política a um certificado.

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

# Revogar um certificado de cliente
<a name="revoke-ca-cert"></a>

Se detectar atividade suspeita em um certificado de cliente registrado, você poderá revogá-lo para que ele não possa ser usado novamente.

**nota**  
Depois que um certificado é revogado, seu status não pode ser alterado. Ou seja, o status do certificado não pode ser alterado para `Active` nenhum outro status.

## Revogar um certificado de cliente (console)
<a name="revoke-device-cert-console"></a>

**Para revogar um certificado de cliente usando o console AWS IoT**

1. Faça login no AWS Management Console e abra o [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. No painel de navegação à esquerda, selecione **Proteger** e **Certificados**.

1. Na lista de certificados, localize o certificado que você deseja revogar e abra o menu de opções usando o ícone de reticências.

1. No menu de opções, selecione **Revogar**.

Se o certificado tiver sido revogado com êxito, ele será exibido como **Revogado** na lista de certificados.

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

O AWS CLI fornece o [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 revogar um certificado.

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

Se o comando tiver sido bem-sucedido, o status do certificado será `REVOKED`. Execute [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 o status do certificado.

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

# Transferir um certificado para outra conta
<a name="transfer-cert"></a>

Os certificados X.509 que pertencem a um Conta da AWS podem ser transferidos para outro. Conta da AWS

**Para transferir um certificado X.509 de um para outro Conta da AWS**

1. [Iniciar uma transferência de certificado](#transfer-cert-init)

   O certificado deve ser desativado e separado de todas as políticas e itens antes de a transferência ser iniciada.

1. [Aceitar ou rejeitar uma transferência de certificado](#transfer-cert-accept)

   A conta receptora deve aceitar ou rejeitar explicitamente o certificado transferido. Depois que a conta receptora aceitar o certificado, o certificado deverá ser ativado antes do uso.

1. [Cancelar uma transferência de certificado](#transfer-cert-cancel)

   A conta de origem poderá cancelar uma transferência, se o certificado não tiver sido aceito.

## Iniciar uma transferência de certificado
<a name="transfer-cert-init"></a>

Você pode começar a transferir um certificado para outro Conta da AWS usando o [AWS IoT console](https://console.aws.amazon.com/iot/home) ou AWS CLI o.

### Iniciar uma transferência de certificado (console)
<a name="transfer-cert-init-console"></a>

Para concluir esse procedimento, você precisará da ID do certificado que deseja transferir.

Execute esse procedimento na conta com o certificado a ser transferido.

**Para começar a transferir um certificado para outro Conta da AWS**

1. Faça login no AWS Management Console e abra o [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. No painel de navegação à esquerda, selecione **Proteger** e **Certificados**.

   Escolha o certificado com status **Ativo** ou **Inativo** que você deseja transferir e abra sua página de detalhes.

1. Na página **Detalhes** do certificado, no menu **Ações**, se a opção **Desativar** estiver disponível, escolha a opção **Desativar** para desativar o certificado.

1. Na página **Detalhes** do certificado, no menu à esquerda, escolha **Políticas**.

1. Na página **Políticas** do certificado, se houver alguma política anexada ao certificado, separe cada uma abrindo o menu de opções da política e escolhendo **Desanexar**.

   O certificado não deve possuir políticas anexadas antes de prosseguir.

1. Na página **Políticas** do certificado, no menu à esquerda, escolha **Objetos**.

1. Na página **Objetos** do certificado, se houver algum objeto anexado ao certificado, separe cada uma abrindo o menu de opções do objeto e escolhendo **Desanexar**.

   O certificado não deve possuir objetos anexados antes de prosseguir.

1. Na página **Objetos** do certificado, no menu à esquerda, escolha **Detalhes**.

1. Na página **Detalhes** do certificado, no menu **Ações**, escolha **Iniciar transferência** para abrir a caixa de diálogo **Iniciar transferência**.

1. Na caixa de diálogo **Iniciar transferência**, insira o Conta da AWS número da conta para receber o certificado e uma mensagem curta opcional.

1. Escolha **Iniciar transferência** para transferir o certificado.

O console deve exibir uma mensagem que indica o êxito ou a falha da transferência. Se a transferência foi iniciada, o status do certificado será atualizado para **Transferido**.

### Iniciar uma transferência de certificado (CLI)
<a name="transfer-cert-init-cli"></a>

Para concluir esse procedimento, você precisará *certificateArn* do *certificateId* e do certificado que deseja transferir.

Execute esse procedimento na conta com o certificado a ser transferido.

**Para começar a transferir um certificado para outra AWS conta**

1. Use o 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 desativar o certificado.

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

1. Desanexe todas as políticas.

   1. Use o 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 listar as políticas anexadas ao certificado.

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

   1. Use o 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 desanexar cada política anexada.

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

1. Desanexe todas as objetos.

   1. Use o 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 listar as objetos anexados ao certificado.

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

   1. Use o 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 desanexar cada objeto anexado.

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

1. Use o 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 a transferência do certificado.

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

## Aceitar ou rejeitar uma transferência de certificado
<a name="transfer-cert-accept"></a>

Você pode aceitar ou rejeitar um certificado transferido para você Conta da AWS de outra pessoa Conta da AWS usando o [AWS IoT console](https://console.aws.amazon.com/iot/home) ou AWS CLI o.

### Aceitar ou rejeitar uma transferência de certificado (console)
<a name="transfer-cert-accept-console"></a>

Para concluir esse procedimento, você precisará da ID do certificado que foi transferido para sua conta.

Execute esse procedimento na conta que recebeu o certificado transferido.

**Para aceitar ou rejeitar um certificado que foi transferido para o seu Conta da AWS**

1. Faça login no AWS Management Console e abra o [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. No painel de navegação à esquerda, selecione **Proteger** e **Certificados**.

   Escolha o certificado com o status **Transferência pendente** que você deseja aceitar ou rejeitar e abra sua página de detalhes.

1. Na página **Detalhes** do certificado, no menu **Ações**,
   + Para aceitar o certificado, escolha **Aceitar transferência**.
   + Para não aceitar o certificado, escolha **Rejeitar transferência**.

### Aceitar ou rejeitar uma transferência de certificado (CLI)
<a name="transfer-cert-accept-cli"></a>

Para concluir esse procedimento, você precisará *certificateId* da transferência do certificado que deseja aceitar ou rejeitar.

Execute esse procedimento na conta que recebeu o certificado transferido.

**Para aceitar ou rejeitar um certificado que foi transferido para o seu Conta da AWS**

1. Use o 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) para aceitar o certificado.

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

1. Use o 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) para rejeitar o certificado.

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

## Cancelar uma transferência de certificado
<a name="transfer-cert-cancel"></a>

Você pode cancelar uma transferência de certificado antes que ela seja aceita usando o [console do AWS IoT](https://console.aws.amazon.com/iot/home) ou a AWS CLI.

### Cancelar uma transferência de certificado (console)
<a name="transfer-cert-cancel-console"></a>

Para concluir esse procedimento, você precisará da ID da transferência de certificado que deseja cancelar.

Execute esse procedimento na conta que iniciou a transferência de certificado.

**Para cancelar uma transferência de certificado**

1. Faça login no AWS Management Console e abra o [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. No painel de navegação à esquerda, selecione **Proteger** e **Certificados**.

   Escolha o certificado com status **Transferido** cuja transferência você deseja cancelar e abra seu menu de opções.

1. No menu de opções do certificado, escolha a opção **Revogar transferência** para cancelar a transferência do certificado.
**Importante**  
Tome cuidado para não confundir a opção **Revogar transferência** com a opção **Revogar**.  
A opção **Revogar transferência** cancela a transferência do certificado, enquanto a opção **Revogar** torna o certificado irreversivelmente inutilizável pelo AWS IoT. 

### Cancelar uma transferência de certificado (CLI)
<a name="transfer-cert-cancel-cli"></a>

Para concluir esse procedimento, você precisará *certificateId* da transferência do certificado que deseja cancelar.

Execute esse procedimento na conta que iniciou a transferência de certificado.

Use o 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 a transferência do certificado.

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

# Validação personalizada de certificados de cliente
<a name="customize-client-auth"></a>

AWS IoT Core oferece suporte à validação personalizada de certificados de cliente para certificados de cliente X.509, o que aprimora o gerenciamento da autenticação do cliente. Esse método de validação de certificado também é conhecido como verificações de certificado de pré-autenticação, nas quais você avalia os certificados do cliente com base em seus próprios critérios (definidos em uma função do Lambda) e revoga os certificados do cliente ou o certificado da autoridade certificadora (CA) de assinatura dos certificados para impedir que os clientes se conectem ao AWS IoT Core. Por exemplo, você pode criar suas próprias verificações de revogação de certificados para validar o status dos certificados em relação às autoridades de validação que oferecem suporte a endpoints do [Protocolo de Status de Certificados Online (OCSP)](https://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol) ou de [Listas de Revogação de Certificados (CRL)](https://en.wikipedia.org/wiki/Certificate_revocation_list) e impedir conexões para clientes com certificados revogados. Os critérios usados para avaliar os certificados do cliente são definidos em uma função do Lambda (também conhecida como Lambda pré-autenticação). Você deve usar os endpoints definidos nas configurações de domínio e o [tipo de autenticação](protocols.md#connection-protocol-auth-mode) deve ser certificado X.509. Além disso, os clientes devem fornecer a extensão de [Indicação de Nome do Servidor (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) ao se conectarem a. AWS IoT Core

**nota**  
Esse recurso não é suportado nas AWS GovCloud (US) regiões.

**Topics**
+ [Etapa 1: registre seus certificados de cliente X.509 com AWS IoT Core](#client-auth-cert-verification)
+ [Etapa 2: Criar uma função do Lambda](#customize-client-auth-lambda)
+ [Etapa 3: Autorizar AWS IoT a invocação da função Lambda](#customize-client-configuration-grant-permission)
+ [Etapa 4: definir a configuração de autenticação para um domínio](#customize-client-configuration)

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

Se você ainda não fez isso, registre e ative seus [certificados de cliente X.509](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) com. AWS IoT Core Caso contrário, vá para a próxima etapa.

Para registrar e ativar seus certificados de cliente com AWS IoT Core, siga as etapas:

1. Se você [criar certificados de cliente diretamente com AWS IoT](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-create.html). Esses certificados de cliente serão registrados automaticamente com AWS IoT Core.

1. Se você [criar seus próprios certificados de cliente](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-your-own.html), siga [estas instruções para registrá-los AWS IoT Core](https://docs.aws.amazon.com//iot/latest/developerguide/register-device-cert.html).

1. Para ativar seus certificados de cliente, siga [estas instruções](https://docs.aws.amazon.com//iot/latest/developerguide/activate-or-deactivate-device-cert.html).

## Etapa 2: Criar uma função do Lambda
<a name="customize-client-auth-lambda"></a>

Você precisa criar uma função do Lambda que realizará a verificação do certificado e será chamada para cada tentativa de conexão do cliente para o endpoint configurado. Ao criar essa função do Lambda, siga as orientações gerais para [Criar sua primeira função do Lambda](https://docs.aws.amazon.com//lambda/latest/dg/getting-started.html). Além disso, garanta que a função do Lambda cumpra os formatos de solicitação e resposta esperados da seguinte forma:

**Exemplo de evento da função do Lambda**

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

`connectionMetadata`  
Metadados ou informações adicionais relacionadas à conexão do cliente com o AWS IoT Core.

`principalId`  
O identificador de entidade principal associado ao cliente na conexão TLS.

`serverName`  
A string de nome de host [Indicação de nome de servidor (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1). O AWS IoT Core requer que os dispositivos enviem a [extensão SNI](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) para o protocolo Transport Layer Security (TLS) e forneçam o endereço completo do endpoint no campo `host_name`.

`clientCertificateChain`  
A matriz de strings que representa a cadeia de certificados X.509 do cliente. 

**Exemplo de resposta da função do Lambda**

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

`isAuthenticated`  
Um valor booliano que indica se a solicitação foi autenticada.

**nota**  
Na resposta do Lambda, `isAuthenticated` precisa ser `true` para prosseguir com a autenticação e a autorização adicionais. Caso contrário, o certificado do cliente de IoT pode ser desativado e a autenticação personalizada com certificados de cliente X.509 pode ser bloqueada para autenticação e autorização adicionais.

## Etapa 3: Autorizar AWS IoT a invocação da função Lambda
<a name="customize-client-configuration-grant-permission"></a>

[Depois de criar a função Lambda, você deve conceder permissão AWS IoT para invocá-la usando o comando da CLI add-permission.](https://docs.aws.amazon.com//cli/latest/reference/lambda/add-permission.html) Observe que essa função do Lambda será invocada para cada tentativa de conexão ao seu endpoint configurado. Para obter mais informações, consulte [Autorização AWS IoT para invocar sua função Lambda](custom-auth-authorize.md).

## Etapa 4: definir a configuração de autenticação para um domínio
<a name="customize-client-configuration"></a>

A seção a seguir descreve como definir a configuração de autenticação para um domínio personalizado usando a AWS CLI.

### Definir a configuração do certificado do cliente para um domínio (CLI)
<a name="customize-client-auth-cli"></a>

Se você não tiver uma configuração de domínio, use o comando da 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 criar uma. Se você já tiver uma configuração de domínio, use o comando da 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 atualizar a configuração do certificado do cliente para um domínio. Você deve adicionar o ARN da função do Lambda que criou na etapa 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`  
O nome da configuração do domínio.

`authentication-type`  
O tipo de autenticação da configuração do domínio. Para obter mais informações, consulte [Escolher um tipo de autenticação](protocols.md#connection-protocol-auth-mode).

`application-protocol`  
O protocolo de aplicativo que os dispositivos usam para se comunicar com o AWS IoT Core. Para obter mais informações, consulte [Escolhendo um protocolo de aplicativo](protocols.md#protocol-selection).

`client-certificate-config`  
Um objeto que especifica a configuração de autenticação do cliente para um domínio.

`clientCertificateCallbackArn`  
O Amazon Resource Name (ARN) da função Lambda que é AWS IoT invocada na camada TLS quando uma nova conexão está sendo estabelecida. Para personalizar a autenticação do cliente para realizar a validação personalizada de certificados de cliente, você deve adicionar o ARN da função do Lambda que criou na etapa anterior.

Para obter mais informações, consulte [CreateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateDomainConfiguration.html)e a [UpdateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateDomainConfiguration.html)partir da *Referência AWS IoT da API*. Para obter mais informações sobre configurações de domínio, consulte [Configurações de domínio](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html).

# Usuários, grupos e funções do IAM
<a name="iam-users-groups-roles"></a>

Os usuários, grupos e perfis do IAM são os mecanismos padrão para o gerenciamento de identidades e de autenticações na AWS. Você pode usá-los para se conectar a interfaces AWS IoT HTTP usando o AWS SDK e. AWS CLI

As funções do IAM também AWS IoT permitem acessar outros AWS recursos em sua conta em seu nome. Por exemplo, se você quiser que um dispositivo publique seu estado em uma tabela do DynamoDB, as funções do IAM AWS IoT permitem interagir com o Amazon DynamoDB. Para obter mais informações, consulte [Perfis do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html).

Para conexões de agente de mensagens via HTTP, AWS IoT autentica usuários, grupos e funções usando o processo de assinatura Signature versão 4. Para obter mais informações, consulte [Assinatura de solicitações de AWS API](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html).

Ao usar o AWS Signature Version 4 com AWS IoT, os clientes devem oferecer suporte ao seguinte em sua implementação de TLS:
+ TLS 1.2
+ Validação de assinatura do certificado SHA-256 RSA
+ Um dos pacotes de criptografia na seção de suporte a pacotes de criptografia do TLS

Para mais informações, consulte [Gerenciamento de identidade e acesso para AWS IoT](security-iam.md).

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

O Amazon Cognito Identity permite que você crie AWS credenciais temporárias com privilégios limitados para uso em aplicativos móveis e web. Ao usar a identidade do Amazon Cognito, são criados bancos de identidades que criam identidades exclusivas para seus usuários e os autentica com provedores de identidade como Login with Amazon, Facebook e Google. Também é possível usar identidades do Amazon Cognito com suas próprias identidades autenticadas pelo desenvolvedor. Para obter mais informações, consulte [Identidade do Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html).

Para usar a identidade do Amazon Cognito, você define um banco de identidades do Amazon Cognito associado a um perfil do IAM. A função do IAM está associada a uma política do IAM que concede às identidades do seu grupo de identidades permissão para acessar AWS recursos como AWS serviços de chamadas.

A identidade do Amazon Cognito cria identidades não autenticadas e autenticadas. As identidades não autenticadas são usadas para usuários convidados em um aplicativo móvel ou web que desejam usar o aplicativo sem fazer login. Os usuários não autenticados recebem somente as permissões especificadas na política do IAM associada ao banco de identidades.

Ao usar identidades autenticadas, além da política do IAM anexada ao grupo de identidades, você deve anexar uma AWS IoT política a uma identidade do Amazon Cognito. Para anexar uma AWS IoT política, use a [ AttachPolicy](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachPolicy.html)API e conceda permissões a um usuário individual do seu AWS IoT aplicativo. Você pode usar a AWS IoT política para atribuir permissões refinadas para clientes específicos e seus dispositivos.

Usuários autenticados e não autenticados são tipos de identidade diferentes. Se você não anexar uma AWS IoT política à Identidade do Amazon Cognito, um usuário autenticado falhará na autorização AWS IoT e não terá acesso aos AWS IoT recursos e ações. Para obter mais informações sobre a criação de políticas para identidades do Amazon Cognito, consulte [Exemplos de política de publicação/inscrição](pub-sub-policy.md) e [Autorização com identidades do Amazon Cognito](cog-iot-policies.md).

![\[Aplicativo acessando um dispositivo com o Amazon Cognito Identity.\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/images/device-cognito.png)


# Autenticação e autorização personalizadas
<a name="custom-authentication"></a>

 AWS IoT Core permite definir autorizadores personalizados para que você possa gerenciar sua própria autenticação e autorização do cliente. Isso é útil quando você precisa usar mecanismos de autenticação diferentes dos que oferecem suporte AWS IoT Core nativo. (Para obter mais informações sobre os mecanismos compatíveis, consulte [Autenticação de cliente](client-authentication.md)).  

 Por exemplo, se você estiver migrando dispositivos existentes no campo para AWS IoT Core e esses dispositivos usarem um token de portador personalizado ou nome de usuário e senha do MQTT para autenticação, você poderá migrá-los AWS IoT Core sem precisar provisionar novas identidades para eles. Você pode usar a autenticação personalizada com qualquer um dos protocolos de comunicação AWS IoT Core compatíveis. Para obter mais informações sobre protocolos compatíveis com o AWS IoT Core , consulte [Protocolos de comunicação do dispositivo](protocols.md). 

**Topics**
+ [Entender o fluxo de trabalho de autenticação personalizada](custom-authorizer.md)
+ [Criação e gerenciamento de autorizadores personalizados (CLI)](config-custom-auth.md)
+ [Autenticação personalizada com certificados de cliente X.509](custom-auth-509cert.md)
+ [AWS IoT Core Conectando-se usando autenticação personalizada](custom-auth.md)
+ [Solução de problemas dos autorizadores](custom-auth-troubleshooting.md)

# Entender o fluxo de trabalho de autenticação personalizada
<a name="custom-authorizer"></a>

A autenticação personalizada permite que você defina como autenticar e autorizar clientes usando [recursos do autorizador](https://docs.aws.amazon.com/iot/latest/apireference/API_AuthorizerDescription.html).  Cada autorizador contém uma referência a uma função do Lambda gerenciada pelo cliente, uma chave pública opcional para validar as credenciais do dispositivo e informações adicionais de configuração. O diagrama a seguir ilustra o fluxo de trabalho de autorização para autenticação personalizada no AWS IoT Core.

![\[Fluxo de trabalho de autorização personalizado para autenticação personalizada no AWS IoT Core.\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/images/custom-authentication.png)


## AWS IoT Core fluxo de trabalho personalizado de autenticação e autorização
<a name="custom-authentication-workflow"></a>

A lista a seguir explica cada etapa do fluxo de trabalho de autenticação e autorização personalizadas.

1. Um dispositivo se conecta ao endpoint de AWS IoT Core dados do cliente usando um dos compatíveis[Protocolos de comunicação do dispositivo](protocols.md). O dispositivo passa as credenciais nos campos de cabeçalho ou nos parâmetros de consulta da solicitação (para HTTP Publish ou MQTT sobre WebSockets protocolos) ou no campo de nome de usuário e senha da mensagem MQTT CONNECT (para os protocolos MQTT e MQTT over). WebSockets 

1. AWS IoT Core verifica uma das duas condições:
   + A solicitação recebida especifica um autorizador.
   + O endpoint de AWS IoT Core dados que recebe a solicitação tem um autorizador padrão configurado para ele.

   Se AWS IoT Core encontrar um autorizador de qualquer uma dessas formas, AWS IoT Core acionará a função Lambda associada ao autorizador.

1.  (Opcional) Se você habilitou a assinatura de token, AWS IoT Core valida a assinatura da solicitação usando a chave pública armazenada no autorizador antes de acionar a função Lambda. Se a validação falhar, o AWS IoT Core interromperá a solicitação sem invocar a função do Lambda.  

1. A função do Lambda recebe as credenciais e os metadados de conexão na solicitação e toma uma decisão de autenticação.

1. A função Lambda retorna os resultados da decisão de autenticação e um documento de AWS IoT Core política que especifica quais ações são permitidas na conexão. A função Lambda também retorna informações que especificam com que frequência AWS IoT Core revalida as credenciais na solicitação invocando a função Lambda.

1. AWS IoT Core avalia a atividade na conexão em relação à política que recebeu da função Lambda.

1. Depois que a conexão for estabelecida e o Lambda do seu autorizador personalizado for inicialmente invocado, a próxima invocação poderá ser adiada por até 5 minutos em conexões inativas sem nenhuma operação de MQTT. Depois disso, as invocações subsequentes seguirão o intervalo de atualização no Lambda do seu autorizador personalizado. Essa abordagem pode evitar invocações excessivas que podem exceder o limite de simultaneidade do Lambda do seu. Conta da AWS

## Considerações sobre dimensionamento
<a name="custom-authentication-scaling"></a>

 Uma vez que uma função do Lambda gerencia a autenticação e a autorização do seu autorizador, ela está sujeita aos limites de preços e serviços do Lambda, como a taxa de execução simultânea. Para obter mais informações sobre os preços do Lambda, consulte [Preços do Lambda](https://aws.amazon.com/lambda/pricing/). Você pode gerenciar a carga em sua função do Lambda ajustando os parâmetros `refreshAfterInSeconds` e `disconnectAfterInSeconds` na resposta da função do Lambda. Para obter mais informações sobre o conteúdo da resposta da função do Lambda, consulte [Definição de sua função do Lambda](custom-auth-lambda.md).

**nota**  
Se você deixar a assinatura ativada, poderá evitar o acionamento excessivo do seu Lambda por clientes não reconhecidos. Considere isso antes de desativar o login no seu autorizador.

**nota**  
O limite de tempo da função do Lambda para o autorizador personalizado é de 5 segundos.

# Criação e gerenciamento de autorizadores personalizados (CLI)
<a name="config-custom-auth"></a>

AWS IoT Core implementa esquemas personalizados de autenticação e autorização usando autorizadores personalizados. Um autorizador personalizado é um AWS IoT Core recurso que oferece a flexibilidade de definir e implementar as regras e políticas com base em seus requisitos específicos. Para criar um autorizador personalizado com step-by-step instruções, consulte [Tutorial: Criando um autorizador personalizado](https://docs.aws.amazon.com//iot/latest/developerguide/custom-auth-tutorial.html) para. AWS IoT Core

Cada autorizador consiste nos seguintes componentes: 
+  *Nome*: uma string exclusiva definida pelo usuário que identifica o autorizador.
+  *ARN da função do Lambda*: o nome do recurso da Amazon (ARN) da função do Lambda que implementa a lógica de autorização e autenticação.  
+  *Nome da chave do token*: o nome da chave usado para extrair o token dos cabeçalhos HTTP, dos parâmetros de consulta ou do nome de usuário do MQTT CONNECT para realizar a validação da assinatura. Esse valor será necessário se a assinatura estiver ativada em seu autorizador. 
+  *Sinalizador de assinatura desativada (opcional)*: um valor booleano que especifica se a exigência de assinatura nas credenciais deve ser desativada. Isso é útil para cenários em que assinar as credenciais não faz sentido, como esquemas de autenticação que usam nome de usuário e senha do MQTT. O valor padrão é `false`; portanto, a assinatura é ativada por padrão. 
+  *Chave pública de assinatura de token*: a chave pública que o AWS IoT Core usa para validar a assinatura de token. Seu comprimento mínimo é de 2.048 bits. Esse valor será necessário se a assinatura estiver ativada em seu autorizador.  

O Lambda cobra pelo número de vezes que sua função do Lambda é executada e pelo tempo necessário para que o código em sua função seja executado. Para obter mais informações sobre preços do Lambda, consulte [Preços do Lambda](https://aws.amazon.com/lambda/pricing/). Para obter mais informações sobre a criação de funções do Lambda, consulte o [Guia do desenvolvedor do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/).

**nota**  
Se você deixar a assinatura ativada, poderá evitar o acionamento excessivo do seu Lambda por clientes não reconhecidos. Considere isso antes de desativar o login no seu autorizador.

**nota**  
O limite de tempo da função do Lambda para o autorizador personalizado é de 5 segundos.

**Topics**
+ [Definição de sua função do Lambda](custom-auth-lambda.md)
+ [Criar um autorizador de capacidade](custom-auth-create-authorizer.md)
+ [Autorizando AWS IoT a invocação da função Lambda](custom-auth-authorize.md)
+ [Testar seus autorizadores](custom-auth-testing.md)
+ [Gerenciar autorizadores personalizados](custom-auth-manage.md)

# Definição de sua função do Lambda
<a name="custom-auth-lambda"></a>

 Quando AWS IoT Core invoca seu autorizador, ele aciona o Lambda associado ao autorizador com um evento que contém o seguinte objeto JSON. O objeto JSON de exemplo contém todos os campos possíveis. Quaisquer campos que não sejam relevantes para a solicitação de conexão não estão incluídos.

```
{
    "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.
    },
}
```

 A função do Lambda deve usar essas informações para autenticar a conexão de entrada e decidir quais ações são permitidas na conexão. A função deve enviar uma resposta que contenha os seguintes valores. 
+  `isAuthenticated`: um valor booliano que indica se a solicitação foi autenticada.
+  `principalId`: uma sequência alfanumérica que atua como um identificador para o token enviado pela solicitação de autorização personalizada. O valor deve ser uma sequência alfanumérica com pelo menos um e não mais que 128 caracteres e corresponder a este padrão de expressão regular (regex): `([a-zA-Z0-9]){1,128}`. Caracteres especiais que não sejam alfanuméricos não são permitidos para uso com a `principalId` entrada AWS IoT Core. Consulte a documentação de outros AWS serviços se caracteres especiais não alfanuméricos forem permitidos para o. `principalId`
+  `policyDocuments`: uma lista de documentos de AWS IoT Core políticas formatados em JSON Para obter mais informações sobre a criação AWS IoT Core de políticas, consulte. [AWS IoT Core políticas](iot-policies.md) O número máximo de documentos de política é de 10 documentos de política. Cada documento de política pode ter, no máximo, 2.048 caracteres.
+  `disconnectAfterInSeconds`: um número inteiro que especifica a duração máxima (em segundos) da conexão com o gateway do AWS IoT Core . O valor mínimo é de 300 segundos e o valor máximo é de 86.400 segundos. O valor padrão é 86.400.
**nota**  
O valor de `disconnectAfterInSeconds` (retornado pela função do Lambda) é definido quando a conexão é estabelecida. Esse valor não poderá ser modificado durante as invocações do Lambda subsequentes para atualização da política.
+  `refreshAfterInSeconds`: um número inteiro que especifica o intervalo entre as atualizações da política. Quando esse intervalo passa, o AWS IoT Core invoca a função do Lambda para permitir atualizações de políticas. O valor mínimo é de 300 segundos e o valor máximo é de 86.400 segundos. 

  O objeto JSON a seguir contém um exemplo de resposta que sua função do Lambda pode 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**

 O `policyDocument` valor deve conter um documento AWS IoT Core de política válido. Para obter mais informações sobre AWS IoT Core políticas, consulte[AWS IoT Core políticas](iot-policies.md). Em MQTT sobre TLS e MQTT sobre WebSockets conexões, armazena em AWS IoT Core cache essa política para o intervalo especificado no valor do campo. `refreshAfterInSeconds` No caso de conexões HTTP, a função do Lambda é chamada para cada solicitação de autorização, a menos que seu dispositivo esteja usando conexões HTTP persistentes (também chamadas de keep-alive do HTTP ou reutilização de conexão HTTP). Você pode optar por ativar o armazenamento em cache ao configurar o autorizador. Durante esse intervalo, AWS IoT Core autoriza ações em uma conexão estabelecida com essa política em cache sem acionar sua função Lambda novamente. Se ocorrerem falhas durante a autenticação personalizada, a conexão AWS IoT Core será encerrada. AWS IoT Core também encerra a conexão se ela estiver aberta por mais tempo do que o valor especificado no `disconnectAfterInSeconds` parâmetro. 

 A seguir JavaScript está uma amostra da função Lambda do Node.js que procura uma senha na mensagem do MQTT Connect com um valor `test` de e retorna uma política que concede permissão AWS IoT Core para se conectar com um cliente `myClientName` chamado e publicar em um tópico que contém o mesmo nome de cliente. Se a senha esperada não for encontrada, ele retornará uma política que nega essas duas ações. 

```
// 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; 
}
```

 A função do Lambda anterior retorna o seguinte JSON ao receber a senha esperada de `test` na mensagem do MQTT Connect. Os valores das propriedades `password` e `principalId` serão os valores da mensagem do 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
}
```

# Criar um autorizador de capacidade
<a name="custom-auth-create-authorizer"></a>

 Você pode criar um autorizador usando a [CreateAuthorizerAPI](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateAuthorizer.html). O exemplo a seguir descreve o 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]
```

Você pode usar o parâmetro `signing-disabled` para cancelar a validação da assinatura para cada invocação do seu autorizador. É altamente recomendável que você não desative a assinatura, a menos que necessário. A validação de assinatura protege você contra invocações excessivas de sua função do Lambda de dispositivos desconhecidos. Não é possível atualizar o status `signing-disabled` de um autorizador depois de criá-lo. Para alterar esse comportamento, é necessário criar outro autorizador personalizado com um valor diferente para o parâmetro `signing-disabled`. 

Os valores dos parâmetros `tokenKeyName` e `tokenSigningPublicKeys` serão opcionais se você tiver desativado a assinatura. Eles são valores obrigatórios se a assinatura estiver ativada. 

Depois de criar sua função Lambda e o autorizador personalizado, você deve conceder explicitamente ao AWS IoT Core serviço permissão para invocar a função em seu nome. Você pode fazer isso com o comando a seguir. 

**nota**  
O endpoint de IoT padrão pode não aceitar o uso de autorizadores personalizados com funções do Lambda. Em vez disso, você pode usar configurações de domínio para definir um novo endpoint e depois especificar esse endpoint para o 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"
```

# Autorizando AWS IoT a invocação da função Lambda
<a name="custom-auth-authorize"></a>

Nesta seção, você concederá permissão ao recurso de autorizador personalizado que acabou de criar para executar a função do Lambda. Para conceder a permissão, você pode usar o comando da CLI [add-permission](https://docs.aws.amazon.com//cli/latest/reference/lambda/add-permission.html).

**Conceda permissão para sua função Lambda usando o AWS CLI**

1. Depois de inserir os valores, digite o seguinte comando. Observe que o valor `statement-id` deve ser exclusivo. Substitua `Id-1234` pelo valor exato que você tem, caso contrário, você poderá receber um erro de `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. Se o comando for executado com êxito, ele retornará uma declaração de permissão, como neste exemplo. Você pode continuar na próxima seção para testar o 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\"}}}"
   }
   ```

   Se o comando não for executado com êxito, ele retornará um erro, como neste exemplo. Será necessário verificar e corrigir o erro 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
   ```

# Testar seus autorizadores
<a name="custom-auth-testing"></a>

 Você pode usar a [TestInvokeAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_TestInvokeAuthorizer.html)API para testar a invocação e os valores de retorno do seu autorizador. Essa API permite que você especifique metadados de protocolo e teste a validação da assinatura em seu autorizador.

As guias a seguir mostram como usar o AWS CLI para testar seu 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
```

------

O valor do parâmetro `token-signature` é o token assinado. Para saber como obter esse valor, consulte [Assinatura do token](custom-auth.md#custom-auth-token-signature).

Se seu autorizador usar um nome de usuário e uma senha, você poderá transmitir essas informações usando o parâmetro `--mqtt-context`. As guias a seguir mostram como usar a API `TestInvokeAuthorizer` para enviar um objeto JSON que contém nome de usuário, senha e nome de cliente para o 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"}'
```

------

A senha deve ser codificada por base64. O exemplo a seguir mostra como codificar uma senha em um ambiente semelhante ao Unix.

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

# Gerenciar autorizadores personalizados
<a name="custom-auth-manage"></a>

 Você pode gerenciar seus autorizadores usando o seguinte APIs. 
+ [ListAuthorizers](https://docs.aws.amazon.com/iot/latest/apireference/API_ListAuthorizers.html): mostre todos os autorizadores em sua conta.
+  [DescribeAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeAuthorizer.html): exibe as propriedades do autorizador especificado. Esses valores incluem data de criação, data da última modificação e outros atributos.
+ [SetDefaultAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_SetDefaultAuthorizer.html): especifica o autorizador padrão para seus endpoints de AWS IoT Core dados. AWS IoT Core usa esse autorizador se um dispositivo não passar AWS IoT Core credenciais e não especificar um autorizador. Para obter mais informações sobre o uso de AWS IoT Core credenciais, consulte[Autenticação de cliente](client-authentication.md).
+ [UpdateAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateAuthorizer.html): altera o status, o nome da chave do token ou as chaves públicas do autorizador especificado.
+  [DeleteAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteAuthorizer.html): exclui o autorizador especificado. 

**nota**  
 Não é possível atualizar o requisito de assinatura de um autorizador. Assim, você não pode desativar a assinatura em um autorizador existente que exija isso. Você também não pode exigir a assinatura em um autorizador existente que não exija isso. 

# Autenticação personalizada com certificados de cliente X.509
<a name="custom-auth-509cert"></a>

Ao conectar dispositivos a AWS IoT Core, você tem vários [tipos de autenticação](protocols.md#connection-protocol-auth-mode) disponíveis. Você pode usar [certificados de cliente X.509](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) que podem ser usados para autenticar conexões de clientes e dispositivos ou definir [autorizadores personalizados](https://docs.aws.amazon.com//iot/latest/developerguide/custom-authentication.html) para gerenciar sua própria lógica de autenticação e autorização de clientes. Este tópico aborda como usar a autenticação personalizada com certificados de cliente X.509.

Usar a autenticação personalizada com certificados X.509 pode ser útil se você já autenticou seus dispositivos usando certificados X.509 e quer realizar validação adicional e autorização personalizada. Por exemplo, se você armazenar os dados de seus dispositivos, como seus números de série, no certificado do cliente X.509, depois de AWS IoT Core autenticar o certificado do cliente X.509, poderá usar um autorizador personalizado para identificar dispositivos específicos com base nas informações armazenadas no campo do certificado. CommonName O uso da autenticação personalizada com certificados X.509 pode aprimorar o gerenciamento da segurança do dispositivo ao conectar dispositivos AWS IoT Core e fornecer mais flexibilidade para gerenciar a lógica de autenticação e autorização. AWS IoT Core [suporta autenticação personalizada com certificados X.509 usando o certificado X.509 e o tipo de autenticação de autorizador personalizado, que funciona com o protocolo [MQTT e o protocolo HTTPS](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html).](https://docs.aws.amazon.com//iot/latest/developerguide/http.html) Para obter mais informações sobre os tipos de autenticação e os protocolos de aplicativos compatíveis com os endpoints do dispositivo do AWS IoT Core , consulte [Protocolos de comunicação do dispositivo](https://docs.aws.amazon.com//iot/latest/developerguide/protocols.html).

**nota**  
A autenticação personalizada com certificados de cliente X.509 não é suportada nas AWS GovCloud (US) regiões.

**Importante**  
Você deve usar um endpoint criado usando [configurações de domínio](iot-custom-endpoints-configurable.md). Além disso, os clientes devem fornecer a extensão de [Indicação de Nome do Servidor (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) ao se conectarem a. AWS IoT Core

**Topics**
+ [Etapa 1: registre seus certificados de cliente X.509 com AWS IoT Core](#custom-auth-509cert-client)
+ [Etapa 2: Criar uma função do Lambda](#custom-auth-509cert-lambda)
+ [Etapa 3: criar um autorizador personalizado](#custom-auth-509cert-authorizer)
+ [Etapa 4: definir o tipo de autenticação e o protocolo de aplicativo em uma configuração de domínio](#custom-auth-509cert-domainconfig)

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

Se você ainda não fez isso, registre e ative seus [certificados de cliente X.509](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) com. AWS IoT Core Caso contrário, vá para a próxima etapa.

Para registrar e ativar seus certificados de cliente com AWS IoT Core, siga as etapas:

1. Se você [criar certificados de cliente diretamente com AWS IoT](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-create.html). Esses certificados de cliente serão registrados automaticamente com AWS IoT Core.

1. Se você [criar seus próprios certificados de cliente](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-your-own.html), siga [estas instruções para registrá-los AWS IoT Core](https://docs.aws.amazon.com//iot/latest/developerguide/register-device-cert.html).

1. Para ativar seus certificados de cliente, siga [estas instruções](https://docs.aws.amazon.com//iot/latest/developerguide/activate-or-deactivate-device-cert.html).

## Etapa 2: Criar uma função do Lambda
<a name="custom-auth-509cert-lambda"></a>

AWS IoT Core usa autorizadores personalizados para implementar esquemas personalizados de autenticação e autorização. Um autorizador personalizado está associado a uma função do Lambda que determina se um dispositivo está autenticado e quais operações o dispositivo tem permissão para realizar. Quando um dispositivo se conecta AWS IoT Core, AWS IoT Core recupera os detalhes do autorizador, incluindo o nome do autorizador e a função Lambda associada, e invoca a função Lambda. A função do Lambda recebe um evento que contém um objeto JSON com os dados do certificado do cliente X.509 do dispositivo. Sua função do Lambda usa esse objeto JSON do evento para avaliar a solicitação de autenticação, decidir as ações a serem tomadas e enviar uma resposta de volta.

### Exemplo de evento da função do Lambda
<a name="custom-auth-509cert-event"></a>

O objeto JSON de exemplo a seguir contém todos os campos possíveis que podem ser incluídos. O objeto JSON real conterá apenas campos relevantes para a solicitação de conexão 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`  
Um valor booliano que indica se a assinatura do token configurada no autorizador foi verificada ou não antes de invocar a função do Lambda do autorizador. Se o autorizador estiver configurado para desativar a assinatura do token, esse campo será falso. 

`protocols`  
Uma matriz que contém os protocolos esperados da solicitação.

`protocolData`  
Um objeto que contém informações dos protocolos usados na conexão. Ele dá detalhes específicos do protocolo que podem ser úteis para autenticação, autorização e muito mais.  
`tls`: este objeto contém informações relacionadas ao protocolo TLS (Transport Layer Security).   
+ `serverName`: a string de nome de host [Indicação de nome de servidor (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1). O AWS IoT Core requer que os dispositivos enviem a [extensão SNI](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) para o protocolo Transport Layer Security (TLS) e forneçam o endereço completo do endpoint no campo `host_name`.
+ `x509CertificatePem`: o certificado X.509 no formato PEM, usado para autenticação do cliente na conexão TLS.
+ `principalId`: o identificador da entidade principal associado ao cliente na conexão TLS.
`mqtt`: esse objeto contém informações relacionadas ao protocolo MQTT.  
+ `clientId`: uma string só precisa ser incluída no caso de o dispositivo enviar esse valor.
+ `username`: o nome de usuário fornecido no pacote MQTT Connect.
+ `password`: a senha fornecida no pacote MQTT Connect.

`connectionMetadata`  
Metadados da conexão.  
`id`: o ID da conexão, que você pode usar para registrar em log e solucionar problemas.

**nota**  
Neste objeto JSON do evento, `x509CertificatePem` e `principalId` são dois novos campos na solicitação. O valor de `principalId` é igual ao valor de `certificateId`. Para obter mais informações, consulte [Certificado](https://docs.aws.amazon.com//iot/latest/apireference/API_Certificate.html).

### Exemplo de resposta da função do Lambda
<a name="custom-auth-509cert-response"></a>

A função do Lambda deve usar informações do objeto JSON do evento para autenticar a conexão de entrada e decidir quais ações são permitidas na conexão.

O objeto JSON a seguir contém um exemplo de resposta que sua função do Lambda pode enviar.

```
{
	"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"
				}
			]
		}
	]
}
```

Neste exemplo, essa função deve enviar uma resposta que contenha os valores a seguir.

`isAuthenticated`  
Um valor booliano que indica se a solicitação foi autenticada.

`principalId`  
Uma sequência alfanumérica que atua como um identificador para o token enviado pela solicitação de autorização personalizada. O valor deve ser uma sequência alfanumérica com pelo menos um e não mais que 128 caracteres. Ele identifica a conexão nos logs. O valor de `principalId` deve ser igual ao valor de `principalId` no objeto JSON do evento (ou seja, certificateID do certificado X.509).

`policyDocuments`  
Uma lista de documentos de políticas formatados em JSON AWS IoT Core . O valor é opcional e dá suporte a [variáveis de política de objeto](https://docs.aws.amazon.com//iot/latest/developerguide/thing-policy-variables.html) e [variáveis de política de certificado](https://docs.aws.amazon.com//iot/latest/developerguide/cert-policy-variables.html). O número máximo de documentos de política é de 10. Cada documento de política pode ter, no máximo, 2.048 caracteres. Se você tiver várias políticas anexadas ao certificado de cliente e à função do Lambda, a permissão é uma coleção de todas as políticas. Para obter mais informações sobre a criação de AWS IoT Core políticas, consulte [Políticas](https://docs.aws.amazon.com//iot/latest/developerguide/iot-policies.html).

`disconnectAfterInSeconds`  
Um número inteiro que especifica a duração máxima (em segundos) da conexão com o AWS IoT Core gateway. O valor mínimo é de 300 segundos e o valor máximo é de 86.400 segundos. `disconnectAfterInSeconds` é válido durante a vida útil de uma conexão e não é atualizado em atualizações consecutivas de políticas.

`refreshAfterInSeconds`  
Um número inteiro que especifica o intervalo entre as atualizações da política. Quando esse intervalo passa, AWS IoT Core invoca a função Lambda para permitir atualizações de políticas. O valor mínimo é de 300 segundos e o valor máximo é de 86.400 segundos.

### Exemplo de função do Lambda
<a name="custom-auth-509cert-js-example"></a>

A seguir está um exemplo de uma função do Lambda do Node.js. A função examina o certificado X.509 do cliente e extrai informações relevantes, como o número de série, a impressão digital e o nome do assunto. Se as informações extraídas corresponderem aos valores esperados, o cliente terá acesso para se conectar. Esse mecanismo garante que apenas clientes autorizados com certificados válidos possam estabelecer uma conexão.

```
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;
}
```

A função do Lambda anterior retorna o JSON a seguir ao receber um certificado com o número de série, a impressão digital e o assunto esperados. O valor de `x509CertificatePem` será o certificado do cliente fornecido no handshake TLS. Para obter mais informações, consulte [Definir sua função do Lambda](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
}
```

## Etapa 3: criar um autorizador personalizado
<a name="custom-auth-509cert-authorizer"></a>

Depois de você [definir a função do Lambda](#custom-auth-509cert-lambda), crie um autorizador personalizado para gerenciar sua própria lógica de autenticação e autorização do cliente. É possível seguir as instruções detalhadas na [Etapa 3: criar um recurso de autorizador de cliente e sua autorização](https://docs.aws.amazon.com//iot/latest/developerguide/custom-auth-tutorial.html#custom-auth-tutorial-authorizer). Para obter mais informações, consulte [Criar um autorizador](https://docs.aws.amazon.com//iot/latest/developerguide/config-custom-auth.html). 

No processo de criação do autorizador personalizado, você deve conceder a permissão do AWS IoT para invocar a função do Lambda após sua criação. Para obter instruções detalhadas, consulte [Autorização AWS IoT para invocar sua função Lambda](custom-auth-authorize.md).

## Etapa 4: definir o tipo de autenticação e o protocolo de aplicativo em uma configuração de domínio
<a name="custom-auth-509cert-domainconfig"></a>

Para autenticar dispositivos usando autenticação personalizada com certificados de cliente X.509, você deve definir o tipo de autenticação e o protocolo de aplicativo em uma configuração de domínio e enviar a extensão SNI. O valor de `authenticationType` deve ser `CUSTOM_AUTH_X509` e o valor de `applicationProtocol` pode ser `SECURE_MQTT` ou `HTTPS`.

### Definir o tipo de autenticação e o protocolo de aplicativo em uma configuração de domínio (CLI)
<a name="custom-auth-509cert-cli"></a>

Se você não tiver uma configuração de domínio, use o 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 criar uma. O valor de `authenticationType` deve ser `CUSTOM_AUTH_X509` e o valor de `applicationProtocol` pode ser `SECURE_MQTT` ou `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
    }'
```

Se você já tiver uma configuração de domínio, use o 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) e atualize `authenticationType` e `applicationProtocol`, se necessário. Observe que não é possível alterar o tipo de autenticação ou o protocolo no endpoint padrão (`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`  
O nome da configuração do domínio.

`authentication-type`  
O tipo de autenticação da configuração do domínio. Para obter mais informações, consulte [Escolher um tipo de autenticação](protocols.md#connection-protocol-auth-mode).

`application-protocol`  
O protocolo de aplicativo que os dispositivos usam para se comunicar com o AWS IoT Core. Para obter mais informações, consulte [Escolhendo um protocolo de aplicativo](protocols.md#protocol-selection).

`--authorizer-config`  
Um objeto que especifica a configuração do autorizador em uma configuração de domínio.

`defaultAuthorizerName`  
O nome do autorizador para uma configuração de domínio.

Para obter mais informações, consulte [CreateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateDomainConfiguration.html)e a [UpdateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateDomainConfiguration.html)partir da *Referência AWS IoT da API*. Para obter mais informações sobre configuração de domínio, consulte [Configurações de domínio](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html).

# AWS IoT Core Conectando-se usando autenticação personalizada
<a name="custom-auth"></a>

 Os dispositivos podem se conectar AWS IoT Core usando autenticação personalizada com qualquer protocolo AWS IoT Core compatível com mensagens de dispositivos. Para obter mais informações sobre protocolos de comunicação disponíveis, consulte [Protocolos de comunicação do dispositivo](protocols.md).  Os dados de conexão transmitidos para a função do Lambda do autorizador dependem do protocolo usado. Para obter mais informações sobre como a função do Lambda do autorizador, consulte [Definição de sua função do Lambda](custom-auth-lambda.md). As seções a seguir explicam como se conectar para autenticar usando cada protocolo compatível.

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

Dispositivos que enviam dados AWS IoT Core usando a [API HTTP Publish](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_Publish.html) podem passar credenciais por meio de cabeçalhos de solicitação ou parâmetros de consulta em suas solicitações HTTP POST. Os dispositivos podem especificar um autorizador a ser invocado usando o cabeçalho `x-amz-customauthorizer-name` ou o parâmetro de consulta. Se você tiver a assinatura de token ativada no autorizador, será necessário transmitir `token-key-name` e `x-amz-customauthorizer-signature` nos cabeçalhos da solicitação ou nos parâmetros de consulta. Observe que o `token-signature` valor deve ser codificado em URL ao ser usado JavaScript de dentro do navegador.

**nota**  
O autorizador do cliente para o protocolo HTTPS é compatível somente com operações de publicação. Para obter mais informações sobre o protocolo HTTP, consulte [Protocolos de comunicação do dispositivo](protocols.md).

Os exemplos de solicitações a seguir mostram como transmitir esses parâmetros nos cabeçalhos de solicitação e nos 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>

 Os dispositivos que se conectam AWS IoT Core usando uma conexão MQTT podem passar credenciais pelos `password` campos `username` e das mensagens MQTT. Opcionalmente, o valor `username` também pode conter uma string de consulta que transmite valores adicionais (incluindo token, assinatura e nome do autorizador) ao autorizador. Você poderá usar essa string de consulta caso queira usar um esquema de autenticação baseado em tokens em vez de valores `username` e `password`.  

**nota**  
 Os dados no campo de senha são codificados em base64 por. AWS IoT Core A sua função do Lambda deve decodificá-los. 

 O exemplo a seguir contém uma string `username` com parâmetros extras que especificam um token e uma assinatura.  

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

Para invocar um autorizador, os dispositivos que se conectam AWS IoT Core usando o MQTT e a autenticação personalizada devem se conectar na porta 443. Eles também devem passar a extensão TLS de negociação de protocolo de camada de aplicativo (ALPN) com um valor de `mqtt` e a extensão de indicação de nome de servidor (SNI) com o nome do host de seu endpoint de dados. AWS IoT Core Para evitar possíveis erros, o valor de `x-amz-customauthorizer-signature` deve ser codificado em URL. Também é altamente recomendável que os valores de `x-amz-customauthorizer-name` e `token-key-name` sejam codificados em URL. Para obter mais informações sobre esses valores, consulte [Protocolos de comunicação do dispositivo](protocols.md). O [AWS IoT Device SDKs, Mobile SDKs e AWS IoT Device Client](iot-sdks.md) V2 pode configurar essas duas extensões. 

## Acabou o MQTT WebSockets
<a name="custom-auth-websockets"></a>

 Os dispositivos que se conectam AWS IoT Core usando o MQTT over WebSockets podem transmitir credenciais de uma das duas maneiras a seguir. 
+ Por meio de cabeçalhos de solicitação ou parâmetros de consulta na solicitação HTTP UPGRADE para estabelecer a WebSockets conexão.
+ Através dos campos `username` e `password` na mensagem do MQTT CONNECT.

 Se você transmitir as credenciais pela mensagem de conexão do MQTT, as extensões TLS ALPN e SNI serão necessárias. Para obter mais informações sobre essas extensões, consulte [MQTT](#custom-auth-mqtt). O exemplo a seguir demonstra como transmitir credenciais por meio da solicitação HTTP Upgrade. 

```
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
```

## Assinatura do token
<a name="custom-auth-token-signature"></a>

É necessário assinar o token com a chave privada do par de chaves públicas/privadas usadas na chamada `create-authorizer`. Os exemplos a seguir mostram como criar a assinatura do token usando um comando semelhante ao Unix e. JavaScript Eles usam o algoritmo de hash SHA-256 para codificar a assinatura.

------
#### [ 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')
```

------

# Solução de problemas dos autorizadores
<a name="custom-auth-troubleshooting"></a>

 Este tópico aborda problemas comuns que podem causar problemas em fluxos de trabalho de autenticação personalizada e as etapas para resolvê-los. Para solucionar problemas com mais eficiência, habilite CloudWatch os registros AWS IoT Core e defina o nível do registro como **DEBUG**. Você pode ativar CloudWatch os registros no AWS IoT Core console ([https://console.aws.amazon.com/iot/](https://console.aws.amazon.com/iot/)). Para obter mais informações sobre como habilitar e configurar logs do AWS IoT Core, consulte [Configurar o AWS IoT registro](configure-logging.md). 

**nota**  
Se você deixar o nível de registro em **DEBUG** por longos períodos de tempo, CloudWatch poderá armazenar grandes quantidades de dados de registro. Isso pode aumentar suas CloudWatch cobranças. Considere usar o registro baseado em recursos para aumentar a verbosidade somente para dispositivos em um determinado grupo de objetos. Para obter mais informações sobre o registro baseado em recursos, consulte [Configurar o AWS IoT registro](configure-logging.md). Além disso, ao concluir a solução de problemas, reduza o nível do log para um nível menos detalhado.

Antes de iniciar a solução de problemas, analise [Entender o fluxo de trabalho de autenticação personalizada](custom-authorizer.md) para obter uma visão geral do processo de autenticação personalizada. Isso ajuda você a entender onde procurar a origem de um problema.

Este tópico discute as duas áreas a seguir para você investigar.
+ Problemas relacionados à função do Lambda do autorizador.
+ Problemas relacionados ao dispositivo.

## Verifique se há problemas na função do Lambda do autorizador
<a name="custom-auth-troubleshooting-lambda"></a>

Execute as etapas a seguir para garantir que as tentativas de conexão de seus dispositivos estejam invocando a função do Lambda.

1. Verifique qual função do Lambda está associada ao seu autorizador.

   Você pode fazer isso chamando a [DescribeAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeAuthorizer.html)API ou clicando no autorizador desejado na seção **Seguro** do AWS IoT Core console.

1. Verifique as métricas de invocação da função do Lambda. Para fazer isso, execute as seguintes etapas.

   1. Abra o AWS Lambda console ([https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)) e selecione a função associada ao seu autorizador.

   1. Escolha a guia **Monitorar** e visualize as métricas do período relevante para o seu problema.

1. Se você não ver nenhuma invocação, verifique se AWS IoT Core tem permissão para invocar sua função Lambda. Se você vir invocações, pule para a próxima etapa. Execute as etapas a seguir para verificar se sua função do Lambda tem as permissões necessárias.

   1. Escolha a guia **Permissões** para sua função no AWS Lambda console.

   1. Localize a seção **Política baseada em recursos** na parte inferior da página. Se a função do Lambda tiver as permissões necessárias, a política será semelhante ao exemplo a seguir.  
****  

      ```
      {
        "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 a `InvokeFunction` permissão de sua função ao AWS IoT Core diretor. Se você não a vê, precisará adicioná-la usando a [AddPermission](https://docs.aws.amazon.com/lambda/latest/dg/API_AddPermission.html)API. O exemplo a seguir mostra como fazer isso utilizando a AWS CLI.

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

1. Se você vir invocações, verifique se não há erros. Um erro pode indicar que a função Lambda não está manipulando adequadamente o evento de conexão que é AWS IoT Core enviado para ela.

   Para ver informações sobre como lidar com o evento na função do Lambda, consulte [Definição de sua função do Lambda](custom-auth-lambda.md). Você pode usar o recurso de teste no AWS Lambda console ([https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)) para codificar os valores de teste na função para garantir que a função esteja manipulando os eventos corretamente.

1. Se você vir invocações sem erros, mas os dispositivos não conseguirem se conectar (ou publicar, assinar e receber mensagens), talvez a política retornada pela função do Lambda não conceda permissões para as ações que os dispositivos estão tentando realizar. Execute as etapas a seguir para determinar se há algo errado com a política retornada pela função.

   1. Use uma consulta do Amazon CloudWatch Logs Insights para escanear registros por um curto período de tempo para verificar se há falhas. A consulta de exemplo a seguir classifica os eventos por data e hora e procura falhas.

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

   1. Atualize sua função Lambda para registrar os dados aos quais ela está retornando AWS IoT Core e o evento que aciona a função. Você pode usar esses registros para inspecionar a política criada pela função.

1. Se você vir invocações sem erros, mas os dispositivos não conseguirem se conectar (ou publicar, assinar e receber mensagens), outra possível causa é que a função do Lambda excede o limite de tempo. O limite de tempo da função do Lambda para o autorizador personalizado é de 5 segundos. Você pode verificar a duração da função em CloudWatch registros ou métricas. 

## Investigar problemas do dispositivo
<a name="custom-auth-troubleshooting-investigate"></a>

Se você não encontrar problemas ao invocar a função do Lambda ou com a política que a função retorna, procure problemas com as tentativas de conexão dos dispositivos. Solicitações de conexão malformadas podem fazer com que seu autorizador AWS IoT Core não seja acionado. Problemas de conexão podem ocorrer tanto na camada TLS quanto na camada do aplicativo.

**Possíveis problemas na camada TLS:**
+ Os clientes devem passar um cabeçalho de nome de host (HTTP, MQTT over WebSockets) ou a extensão TLS de indicação de nome de servidor (HTTP, MQTT over WebSockets, MQTT) em todas as solicitações de autenticação personalizadas. Em ambos os casos, o valor passado deve corresponder a um dos endpoints de AWS IoT Core dados da sua conta. Esses são os endpoints que são retornados ao executar os seguintes comandos da CLI.
  + `aws iot describe-endpoint --endpoint-type iot:Data-ATS`
  + `aws iot describe-endpoint --endpoint-type iot:Data`(para VeriSign endpoints antigos)
+ Os dispositivos que usam autenticação personalizada para conexões MQTT também devem transmitir a extensão TLS Application Layer Protocol Negotiation (ALPN) com um valor de `mqtt`.
+ No momento, a autenticação personalizada está disponível somente na porta 443.

**Possíveis problemas na camada de aplicativo:**
+ Se a assinatura estiver ativada (o campo `signingDisabled` é falso em seu autorizador), procure os seguintes problemas de assinatura.
  + Certifique-se de transmitir a assinatura do token no cabeçalho `x-amz-customauthorizer-signature` ou em um parâmetro de string de consulta.
  + Certifique-se de que o serviço não esteja assinando um valor diferente do token.
  + Certifique-se de transmitir o token no cabeçalho ou no parâmetro de consulta que você especificou no campo `token-key-name` do autorizador.
+ Verifique se o nome do autorizador transmitido no cabeçalho `x-amz-customauthorizer-name` ou no parâmetro do string de consulta é válido ou se você tem um autorizador padrão definido para sua conta.

# Autorização
<a name="iot-authorization"></a>

Autorização é o processo de concessão de permissões a uma identidade autenticada. Você concede permissões no AWS IoT Core uso AWS IoT Core e nas políticas do IAM. Este tópico aborda políticas do AWS IoT Core . Para obter mais informações sobre políticas do IAM, consulte [Gerenciamento de identidade e acesso para AWS IoT](security-iam.md) e [Como AWS IoT funciona com o IAM](security_iam_service-with-iam.md).

AWS IoT Core as políticas determinam o que uma identidade autenticada pode fazer. A identidade autenticada é usada por dispositivos, aplicativos móveis, aplicativos web e aplicativos de desktop. Uma identidade autenticada pode até mesmo ser um usuário digitando comandos CLI AWS IoT Core . Uma identidade só pode executar AWS IoT Core operações se tiver uma política que conceda permissão para essas operações.

Tanto AWS IoT Core as políticas quanto as políticas do IAM são usadas AWS IoT Core para controlar as operações que uma identidade (também chamada de *principal*) pode realizar. O tipo de política que você usa depende do tipo de identidade com AWS IoT Core a qual você está usando para se autenticar. 

AWS IoT Core as operações são divididas em dois grupos: 
+ A API de plano de controle permite executar tarefas administrativas, como criar ou atualizar certificados, objetos, regras, e assim por diante.
+ A API do plano de dados permite que você envie e receba dados de AWS IoT Core. 

O tipo de política usada depende se você estiver usando a API de plano de controle ou de plano de dados.

A tabela a seguir mostra os tipos de identidade, os protocolos usados e os tipos de política que podem ser usados para a autorização.


**AWS IoT Core API do plano de dados e tipos de políticas**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/iot-authorization.html)


**AWS IoT Core API do plano de controle e tipos de políticas**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/iot-authorization.html)

AWS IoT Core as políticas são anexadas a certificados X.509, identidades do Amazon Cognito ou grupos de coisas. As políticas do IAM são anexadas a um usuário, grupo ou perfil do IAM. Se você usa o AWS IoT console ou a AWS IoT Core CLI para anexar a política (a um certificado, Amazon Cognito Identity ou grupo de coisas), você usa uma política. AWS IoT Core Caso contrário, você usa uma política do IAM. AWS IoT Core as políticas associadas a um grupo de coisas se aplicam a qualquer coisa dentro desse grupo de coisas. Para que a AWS IoT Core política entre em vigor, o nome `clientId` e o nome da coisa devem corresponder.

A autorização com base em políticas é uma ferramenta poderosa. Ela oferece controle total sobre o que um dispositivo, um usuário ou um aplicativo pode fazer no AWS IoT Core. Por exemplo, considere um dispositivo conectado AWS IoT Core a um certificado. Você pode permitir que o dispositivo acesse todos os tópicos MQTT ou pode restringir seu acesso a um único tópico. Em outro exemplo, considere que um usuário digite comandos CLI na linha de comando. Ao usar uma política, você pode permitir ou negar o acesso a qualquer comando ou AWS IoT Core recurso para o usuário. Você também pode controlar o acesso de um aplicativo aos recursos do AWS IoT Core .

As alterações feitas em uma política podem levar alguns minutos para entrarem em vigor devido à forma como o AWS IoT armazena em cache os documentos de política. Ou seja, pode levar alguns minutos para acessar um recurso que recebeu acesso recentemente, e um recurso pode ficar acessível por vários minutos após seu acesso ter sido revogado.

## AWS treinamento e certificação
<a name="iot-authorization-training"></a>

Para obter informações sobre autorização AWS IoT Core, faça o curso [Deep Dive into AWS IoT Core Authentication and Authorization](https://www.aws.training/Details/Curriculum?id=42335) no site de AWS Treinamento e Certificação.

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

AWS IoT Core políticas são documentos JSON. Elas seguem as mesmas convenções das políticas do IAM. AWS IoT Core suporta políticas nomeadas para que muitas identidades possam fazer referência ao mesmo documento de política. As políticas nomeadas são versionadas para que possam ser facilmente restabelecidas.

AWS IoT Core as políticas permitem que você controle o acesso ao plano AWS IoT Core de dados. O plano de dados do AWS IoT Core consiste em operações que permitem que você se conecte ao agente de mensagens do AWS IoT Core , envie e receba mensagens MQTT e obtenha ou atualize a sombra do dispositivo de um objeto.

Uma AWS IoT Core política é um documento JSON que contém uma ou mais declarações de política. Cada instrução contém:
+ `Effect`, que especifica se a ação é permitida ou negada.
+ `Action`, que especifica a ação que a política está permitindo ou negando.
+ `Resource`, que especifica o recurso ou os recursos nos quais a ação é permitida ou negada.

As alterações feitas em uma política podem levar de 6 a 8 minutos para entrarem em vigor devido à forma como os documentos de política são armazenados em AWS IoT cache. Ou seja, pode levar alguns minutos para acessar um recurso que recebeu acesso recentemente, e um recurso pode ficar acessível por vários minutos após seu acesso ter sido revogado.

AWS IoT Core as políticas podem ser anexadas a certificados X.509, identidades do Amazon Cognito e grupos de coisas. As políticas associadas a um grupo de objetos se aplicam a qualquer objeto dentro desse grupo. Para que a política entre em vigor, o `clientId` e o nome do objeto devem coincidir. As políticas do AWS IoT Core seguem a mesma lógica de avaliação de políticas das políticas do IAM. Por padrão, todas as políticas são implicitamente negadas. Uma permissão explícita em qualquer política baseada em recurso ou identidade substitui o comportamento padrão. Uma negação explícita em qualquer política substitui todas as permissões. Para obter mais informações, consulte [Lógica da avaliação de políticas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow) no *Guia do usuário do AWS Identity and Access Management *.

**Topics**
+ [AWS IoT Core ações políticas](iot-policy-actions.md)
+ [AWS IoT Core recursos de ação](iot-action-resources.md)
+ [AWS IoT Core variáveis de política](iot-policy-variables.md)
+ [Prevenção contra o ataque do “substituto confuso” em todos os serviços](cross-service-confused-deputy-prevention.md)
+ [AWS IoT Core exemplos de políticas](example-iot-policies.md)
+ [Autorização com identidades do Amazon Cognito](cog-iot-policies.md)

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

As ações de política a seguir são definidas pelo AWS IoT Core:Ações da política MQTT

`iot:Connect`  
Representa a permissão para se conectar ao agente de AWS IoT Core mensagens. A permissão `iot:Connect` é verificada sempre que uma solicitação `CONNECT` é enviada ao operador. O agente de mensagens não permite que dois clientes com o mesmo ID de cliente permaneçam conectados ao mesmo tempo. Depois que o segundo cliente se conectar, o agente fechará a conexão existente. Use a permissão `iot:Connect` para garantir que apenas clientes autorizados usando um ID de cliente específico possam se conectar.

`iot:DeleteConnection`  
Representa a permissão para desconectar do AWS IoT Core um cliente do MQTT conectado. A permissão `iot:DeleteConnection` é conferida sempre que é feita uma solicitação para desconectar um cliente à força. Quando você desconecta um cliente, AWS IoT Core fecha a conexão de rede do cliente e, opcionalmente, limpa o estado da sessão.

`iot:GetRetainedMessage`  
Representa a permissão para obter o conteúdo de uma única mensagem retida. As mensagens retidas são as mensagens que foram publicadas com o sinalizador RETAIN definido e armazenadas por AWS IoT Core. Para receber permissão para obter uma lista de todas as mensagens retidas da conta, consulte [iot:ListRetainedMessages](#action_listretainedmessages).

`iot:ListRetainedMessages`  
Representa a permissão para recuperar informações resumidas sobre as mensagens retidas da conta, mas não o conteúdo das mensagens. As mensagens retidas são as mensagens que foram publicadas com o sinalizador RETAIN definido e armazenadas por AWS IoT Core. O ARN do recurso especificado para essa ação deve ser `*`. Para receber permissão para obter o conteúdo de uma única mensagem retida, consulte [iot:GetRetainedMessage](#action_getretainpublish).

`iot:Publish`  
Representa a permissão para publicar um tópico MQTT. Essa permissão é verificada sempre que uma solicitação PUBLICAR é enviada ao operador. Isso pode ser usado para permitir que os clientes publiquem padrões de tópicos específicos.  
Para conceder a permissão `iot:Publish`, conceda também a permissão `iot:Connect`.

`iot:Receive`  
Representa a permissão para receber uma mensagem de AWS IoT Core. A permissão `iot:Receive` é confirmada sempre que uma mensagem é entregue a um cliente. Uma vez que essa permissão é verificada em cada entrega, você pode usá-la para revogar permissões para clientes que estejam inscritos em um tópico.

`iot:RetainPublish`  
Representa a permissão para publicar uma mensagem MQTT com o sinalizador RETAIN definido.  
Para conceder a permissão `iot:RetainPublish`, conceda também a permissão `iot:Publish`.

`iot:Subscribe`  
Representa a permissão para se inscrever em um filtro de tópico. Essa permissão é verificada sempre que uma solicitação SUBSCRIBE é enviada ao operador. Use para permitir que os clientes se inscrevam em tópicos que correspondam a padrões de tópico específicos.  
Para conceder a permissão `iot:Subscribe`, conceda também a permissão `iot:Connect`.Ações da política de sombra do dispositivo

`iot:DeleteThingShadow`  
Representa a permissão para excluir a sombra do dispositivo de um objeto. A permissão `iot:DeleteThingShadow` é verificada sempre que é feita uma solicitação para excluir o conteúdo da sombra do dispositivo de um objeto.

`iot:GetThingShadow`  
Representa a permissão para recuperar a sombra do dispositivo de um objeto. A permissão `iot:GetThingShadow` é verificada sempre que é feita uma solicitação para recuperar o conteúdo da sombra do dispositivo de um objeto.

`iot:ListNamedShadowsForThing`  
Representa a permissão para listar as sombras nomeadas de um objeto. A permissão `iot:ListNamedShadowsForThing` é verificada sempre que é feita uma solicitação para listar as sombras nomeadas de um objeto.

`iot:UpdateThingShadow`  
Representa a permissão para atualizar uma shadow de dispositivo. A permissão `iot:UpdateThingShadow` é verificada sempre que é feita uma solicitação para atualizar o conteúdo da sombra do dispositivo de um objeto.

**nota**  
As ações da política de execução de trabalhos se aplicam apenas ao endpoint HTTP TLS. Se você usar o endpoint MQTT, deverá usar as ações de política do MQTT definidas neste tópico.  
Para ver um exemplo de uma política de execução de tarefas que demonstra isso, consulte o [Exemplo básico de políticas de trabalho](basic-jobs-example.md) que funciona com o protocolo MQTT.Ações da AWS IoT Core Política de Execução de Job

`iotjobsdata:DescribeJobExecution`  
Representa a permissão para recuperar uma execução de trabalho para uma determinado objeto. A permissão `iotjobsdata:DescribeJobExecution` é verificada sempre que é feita uma solicitação para obter uma execução de tarefa.

`iotjobsdata:GetPendingJobExecutions`  
Representa a permissão para recuperar a lista de trabalhos que não estão em status terminal para um objeto. A permissão `iotjobsdata:GetPendingJobExecutions` é verificada sempre que é feita uma solicitação para recuperar a lista. 

`iotjobsdata:UpdateJobExecution`  
Representa a permissão para atualizar uma execução de trabalho. A permissão `iotjobsdata:UpdateJobExecution` é verificada sempre que é feita uma solicitação para atualizar o estado de uma execução de trabalho.

`iotjobsdata:StartNextPendingJobExecution`  
Representa a permissão para obter e iniciar a próxima execução de trabalho pendente para um objeto. (Isto é, para atualizar uma execução de tarefa com status QUEUED para IN\$1PROGRESS). A permissão `iotjobsdata:StartNextPendingJobExecution` é verificada sempre que é feita uma solicitação para iniciar a próxima execução de trabalho pendente.AWS IoT Core Ação da política do provedor de credenciais

`iot:AssumeRoleWithCertificate`  
Representa a permissão para chamar o provedor de AWS IoT Core credenciais para assumir uma função do IAM com autenticação baseada em certificado. A `iot:AssumeRoleWithCertificate` permissão é verificada sempre que uma solicitação é feita ao provedor de AWS IoT Core credenciais para assumir uma função.

# AWS IoT Core recursos de ação
<a name="iot-action-resources"></a>

Para especificar um recurso para uma ação AWS IoT Core política, use o Amazon Resource Name (ARN) do recurso. Todos os recursos ARNs seguem o seguinte formato:

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

A tabela a seguir mostra o recurso a ser especificado para cada tipo de ação. Os exemplos de ARN são para o ID da conta `123456789012`, na partição `aws`, e específicos para a região `us-east-1`. Para obter mais informações sobre os formatos para ARNs, consulte [Amazon Resource Names (ARNs)](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference-arns.html) no Guia AWS Identity and Access Management do usuário.


| Ação | Tipo de atributo | Nome do recurso | Exemplo de ARN | 
| --- | --- | --- | --- | 
| iot:Connect | client |  O ID do cliente  | arn:aws:iot:us-east-1:123456789012:client/myClientId | 
| iot:DeleteConnection | client |  O ID do cliente  | arn:aws:iot:us-east-1:123456789012:client/myClientId | 
| iot:DeleteThingShadow | thing |  O nome do objeto e da sombra, se aplicável  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne arn:aws:iot:us-east-1:123456789012:thing/thingOne/shadowOne  | 
| iotjobsdata:DescribeJobExecution | thing |  O nome do objeto  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iotjobsdata:GetPendingJobExecutions | thing |  O nome do objeto  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iot:GetRetainedMessage | topic |  Um tópico de mensagem retida  |  arn:aws:iot:us-east-1:123456789012:topic/myTopicName  | 
| iot:GetThingShadow | thing |  O nome do objeto e da sombra, se aplicável  |  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 |  Uma string de tópico  | arn:aws:iot:us-east-1:123456789012:topic/myTopicName | 
| iot:Receive | topic |  Uma string de tópico  | arn:aws:iot:us-east-1:123456789012:topic/myTopicName | 
| iot:RetainPublish | topic |  Um tópico para publicar com o sinalizador RETAIN definido  |  arn:aws:iot:us-east-1:123456789012:topic/myTopicName  | 
| iotjobsdata:StartNextPendingJobExecution | thing |  O nome do objeto  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iot:Subscribe | topicfilter | Uma string de filtro de tópico | arn:aws:iot:us-east-1:123456789012:topicfilter/myTopicFilter | 
| iotjobsdata:UpdateJobExecution | thing |  O nome do objeto  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iot:UpdateThingShadow | thing |  O nome do objeto e da sombra, se aplicável  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne arn:aws:iot:us-east-1:123456789012:thing/thingOne/shadowOne  | 
| iot:AssumeRoleWithCertificate | rolealias |  Um alias do perfil que aponta para um ARN de perfil  |  arn:aws:iot:us-east-1:123456789012:rolealias/CredentialProviderRole\$1alias | 

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

AWS IoT Core define variáveis de política que podem ser usadas em AWS IoT Core políticas no `Condition` bloco `Resource` or. Quando uma política é avaliada, as variáveis da política são substituídas por valores reais. Por exemplo, se um dispositivo estiver conectado ao agente de AWS IoT Core mensagens com uma ID de cliente de 100-234-3456, a variável de política será substituída no documento `iot:ClientId` de política por 100-234-3456.

AWS IoT Core as políticas podem usar caracteres curinga e seguir uma convenção semelhante às políticas do IAM. A inserção de um `*` (asterisco) na string pode ser tratada como um curinga, correspondendo a qualquer caractere. Por exemplo, você pode usar `*` para descrever vários nomes de tópicos do MQTT no atributo do `Resource` de uma política. Os caracteres `+` e `#` são tratados como sequências literais em uma política. Para ver um exemplo de política que mostra como usar curingas, consulte [Usando caracteres curinga no MQTT e nas políticas AWS IoT Core](pub-sub-policy.md#pub-sub-policy-cert).

Você também pode usar variáveis de políticas predefinidas com valores fixos para representar caracteres que, de outra forma, têm um significado especial. Esses caracteres especiais incluem `$(*)`, `$(?)` e `$($)`. Para obter mais informações sobre variáveis de política e os caracteres especiais, consulte [Elementos de política do IAM: variáveis e tags](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html) e [Criação de uma condição com várias chaves ou valores](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html).

**Topics**
+ [Variáveis AWS IoT Core políticas básicas](basic-policy-variables.md)
+ [Variáveis de política de objetos](thing-policy-variables.md)
+ [Variáveis de política de certificado AWS IoT Core X.509](cert-policy-variables.md)

# Variáveis AWS IoT Core políticas básicas
<a name="basic-policy-variables"></a>

AWS IoT Core define as seguintes variáveis básicas de política:
+ `aws:SourceIp`: o endereço IP do cliente conectado ao agente de AWS IoT Core mensagens.
+ `iot:ClientId`: o ID do cliente usado para se conectar ao agente de mensagens do AWS IoT Core .
+ `iot:DomainName`: o nome de domínio do cliente conectado AWS IoT Core a.

**Topics**
+ [Exemplos de variáveis de política `ClientId` e `SourceIp`](#basic-policy-variables-example)
+ [Exemplos de variável de política `iot:DomainName`](#basic-policy-variables-example-domain)

## Exemplos de variáveis de política `ClientId` e `SourceIp`
<a name="basic-policy-variables-example"></a>

A AWS IoT Core política a seguir mostra uma política que usa variáveis de política. `aws:SourceIp`pode ser usado no elemento Condição da sua política para permitir que os diretores façam solicitações de API somente dentro de um intervalo de endereços específico. Para obter exemplos, consulte [Autorizando usuários e serviços em nuvem a usar o 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"
				}
			}
		}
	]
}
```

Nesses exemplos, `${iot:ClientId}` é substituído pelo ID do cliente conectado ao agente de AWS IoT Core mensagens quando a política é avaliada. Quando você usa variáveis de políticas, como `${iot:ClientId}`, você pode abrir acidentalmente o acesso a tópicos não intencionais. Por exemplo, se você usa uma política que usa `${iot:ClientId}` para especificar um filtro de tópico:

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

Um cliente pode se conectar usando `+` como o ID do cliente. Isso permitiria que o usuário se inscrevesse em qualquer tópico que correspondesse ao filtro de tópico `my/+/topic`. Para se proteger contra essas falhas de segurança, use a ação `iot:Connect` de política para controlar qual cliente IDs pode se conectar. Por exemplo, essa política permite que apenas clientes cujo ID é `clientid1` se conectem:

****  

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

**nota**  
Não é recomendável usar a variável de política `${iot:ClientId}` com `Connect`. Não há verificação do valor de `ClientId`; portanto, um anexador com um ID de cliente diferente pode passar na validação, mas causar a desconexão. Como qualquer `ClientId` é permitido, definir um ID de cliente aleatório pode ignorar as políticas do grupo de objetos.

## Exemplos de variável de política `iot:DomainName`
<a name="basic-policy-variables-example-domain"></a>

Você pode adicionar a variável de política `iot:DomainName` para restringir quais domínios podem ser usados. Adicionar a variável de política `iot:DomainName` permite que os dispositivos se conectem apenas a endpoints configurados específicos.

A política a seguir permite que os dispositivos se conectem ao domínio 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"
			}
		}
	}
}
```

A política a seguir nega que os dispositivos se conectem ao domínio 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 obter mais informações sobre operadores de condição de política, consulte [Elementos de política JSON do IAM: operadores de condição](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html). Para obter mais informações sobre configurações de domínio, consulte [O que é uma configuração de domínio?](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html).

# Variáveis de política de objetos
<a name="thing-policy-variables"></a>

As variáveis de política de coisas permitem que você escreva AWS IoT Core políticas que concedam ou neguem permissões com base em propriedades de coisas, como nomes de coisas, tipos de coisas e valores de atributos de coisas. Você pode usar variáveis de política de coisas para aplicar a mesma política para controlar vários AWS IoT Core dispositivos. Para obter mais informações sobre o provisionamento de dispositivos, consulte [Provisionamento de dispositivos](iot-provision.html).

Se você usa uma associação de coisa não exclusiva, pode anexar o mesmo certificado a várias coisas. Para manter uma associação clara e evitar possíveis conflitos, você deve combinar seu ID de cliente com o nome da coisa. Nesse caso, você obtém o nome da coisa do ID do cliente na `Connect` mensagem MQTT enviada quando uma coisa se conecta a. AWS IoT Core

Lembre-se do seguinte ao usar variáveis de política de objetos em políticas do AWS IoT Core .
+ Use a [AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html)API para anexar certificados ou entidades principais (identidades autenticadas do Amazon Cognito) a uma coisa.
+ Se houver uma associação de coisa exclusiva implementada, quando você estiver substituindo nomes de coisas por variáveis de política de coisas, o valor de `clientId` na mensagem de conexão do MQTT ou a conexão TLS deverá corresponder exatamente ao nome da coisa.

As variáveis de política de objetos a seguir estão disponíveis:
+ `iot:Connection.Thing.ThingName`

  Isso se resume ao nome da coisa no AWS IoT Core registro para a qual a política está sendo avaliada. AWS IoT Core usa o certificado que o dispositivo apresenta ao se autenticar para determinar qual coisa usar para verificar a conexão. Essa variável de política só está disponível quando um dispositivo se conecta pelo MQTT ou pelo MQTT pelo WebSocket protocolo.
+ `iot:Connection.Thing.ThingTypeName`

  Isso resolve o tipo de objeto associado ao objeto para a qual a política está sendo avaliada. O ID do cliente da WebSocket conexão MQTT/ deve ser igual ao nome da coisa. Essa variável de política está disponível somente ao se conectar pelo MQTT ou pelo MQTT pelo WebSocket protocolo.
+ `iot:Connection.Thing.Attributes[attributeName]`

  Isso resolve o valor do atributo especificado associado ao objeto para a qual a política está sendo avaliada. Um objeto pode ter até 50 atributos. Cada atributo está disponível como uma variável de política: `iot:Connection.Thing.Attributes[attributeName]` onde *attributeName* está o nome do atributo. O ID do cliente da MQTT/WebSocket conexão deve ser igual ao nome da coisa. Essa variável de política só está disponível ao se conectar pelo MQTT ou pelo MQTT pelo WebSocket protocolo.
+ `iot:Connection.Thing.IsAttached`

  `iot:Connection.Thing.IsAttached: ["true"]`determina que somente os dispositivos registrados AWS IoT e conectados ao principal possam acessar as permissões dentro da política. Você pode usar essa variável para impedir que um dispositivo se conecte AWS IoT Core se ele apresentar um certificado que não esteja anexado a uma coisa de IoT no AWS IoT Core registro. Essa variável tem valores `true` ou `false` indica que a coisa conectada está anexada ao certificado ou à identidade do Amazon Cognito no registro usando a API. [AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html) O nome do objeto é usado como ID do cliente. 

Se o ID do cliente corresponder ao nome da coisa ou se você anexar seu certificado exclusivamente a uma coisa, o uso de variáveis na definição da política pode simplificar o gerenciamento de políticas. Em vez de criar políticas individuais para cada coisa da IoT, você pode definir uma única política usando as variáveis de política da coisa. É possível aplicar essa política a todos os dispositivos de forma dinâmica. Veja a seguir um exemplo de política para mostrar como funciona. Para obter mais informações, consulte [Associando qualquer AWS IoT coisa a uma conexão 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/*"
		}
	]
}
```

Esse exemplo de política permite que as coisas se conectem AWS IoT Core se o ID do cliente terminar com o valor do `envType` atributo. Somente coisas com um padrão de ID de cliente correspondente poderão se conectar.

# Variáveis de política de certificado AWS IoT Core X.509
<a name="cert-policy-variables"></a>

As variáveis de política de certificado X.509 ajudam na criação AWS IoT Core de políticas. Essas políticas concedem permissões com base nos atributos do certificado X.509. As seções a seguir descrevem como usar essas variáveis de política de certificado.

**Importante**  
Se seu certificado X.509 não incluir um atributo de certificado específico, mas a variável de política de certificado correspondente for usada em seu documento de política, a avaliação da política poderá levar a um comportamento inesperado.

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

Na [RegisterCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCertificate.html)API, o `certificateId` aparece no corpo da resposta. Para obter informações sobre seu certificado, use o `certificateId` in [DescribeCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeCertificate.html).

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

As variáveis AWS IoT Core de política a seguir oferecem suporte à permissão ou negação de permissões, com base nos atributos do certificado definidos pelo emissor do 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 assunto
<a name="subject-attributes"></a>

As variáveis AWS IoT Core de política a seguir oferecem suporte à concessão ou negação de permissões, com base nos atributos do titular do certificado definidos pelo emissor do 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` 

Os certificados X.509 dão a esses atributos a opção de conter um ou mais valores. Por padrão, as variáveis de política para cada atributo multivalor retornam o primeiro valor. Por exemplo, o atributo `Certificate.Subject.Country` pode conter uma lista de nomes de países, mas, quando avaliado em uma política, `iot:Certificate.Subject.Country` é substituído pelo primeiro nome do país.

É possível solicitar um valor de atributo específico diferente do primeiro valor usando um índice baseado em um. Por exemplo, `iot:Certificate.Subject.Country.1` é substituído pelo segundo nome de país no atributo `Certificate.Subject.Country`. Se você especificar um valor de índice que não existe (por exemplo, se você solicitar um terceiro valor quando há apenas dois valores atribuídos ao atributo), nenhuma substituição será feita e haverá falha na autorização. Você pode usar o sufixo `.List` no nome da variável de política para especificar todos os valores do atributo.

## Atributos de nome alternativo do emissor
<a name="issuer-alternate-name-attributes"></a>

As variáveis AWS IoT Core de política a seguir oferecem suporte à concessão ou negação de permissões, com base nos atributos de nome alternativo do emissor definidos pelo emissor do 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 nome alternativo do assunto
<a name="subject-alternate-name-attributes"></a>

As variáveis AWS IoT Core de política a seguir oferecem suporte à concessão ou negação de permissões, com base nos atributos de nome alternativo do sujeito definidos pelo emissor do 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`

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

Você pode usar `iot:Certificate.SerialNumber` para permitir ou negar acesso aos AWS IoT Core recursos, com base no número de série de um certificado. A variável de política `iot:Certificate.AvailableKeys` contém o nome de todas as variáveis de política de certificado que contenham valores.

# Usar variáveis de política do certificado X.509
<a name="use-policy-variables"></a>

Este tópico fornece detalhes sobre como usar variáveis de política de certificados. As variáveis de política do certificado X.509 são essenciais quando você cria políticas do AWS IoT Core que dão permissões com base em atributos do certificado X.509. Se seu certificado X.509 não incluir um atributo de certificado específico, mas a variável de política de certificado correspondente for usada em seu documento de política, a avaliação da política poderá levar a um comportamento inesperado. Isso ocorre porque a variável de política ausente não é avaliada na declaração de política.

**Topics**
+ [Exemplo de certificado X.509](#certificate-example)
+ [Usar atributos do emissor de certificados como variáveis de política de certificados](#issuer-attributes-policy)
+ [Usar atributos do sujeito do certificado como variáveis de política de certificados](#subject-attributes-policy)
+ [Usar atributos de nome alternativo do emissor de certificados como variáveis de política de certificados](#issuer-alternate-name-attributes-policy)
+ [Usar atributos de nome alternativo do sujeito do certificado como variáveis de política de certificados](#subject-alternate-name-attributes-policy)
+ [Usar outro atributo de certificado como uma variável de política de certificado](#other-attributes-policy)
+ [Limitações das variáveis de política de certificado X.509](#policy-limits)
+ [Exemplo de políticas usando variáveis de política de certificado](#example-attributes-policy)

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

Um certificado X.509 típico pode aparecer da seguinte forma. Este exemplo de certificado inclui atributos de certificado. Durante a avaliação das políticas do AWS IoT Core , os seguintes atributos de certificado serão preenchidos como variáveis de política de certificado: `Serial Number`, `Issuer`, `Subject`, `X509v3 Issuer Alternative Name` e `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 >>
```

## Usar atributos do emissor de certificados como variáveis de política de certificados
<a name="issuer-attributes-policy"></a>

A tabela a seguir fornece detalhes de como os atributos do emissor do certificado serão preenchidos em uma AWS IoT Core política.


**Atributos do emissor a serem preenchidos em uma política**  

| Atributos do emissor do certificado | Variáveis de política do certificado | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/use-policy-variables.html)  | 

## Usar atributos do sujeito do certificado como variáveis de política de certificados
<a name="subject-attributes-policy"></a>

A tabela a seguir fornece detalhes de como os atributos do titular do certificado serão preenchidos em uma AWS IoT Core política.


**Atributos do sujeito a serem preenchidos em uma política**  

| Atributos do sujeito do certificado | Variáveis de política do certificado | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/use-policy-variables.html)  | 

## Usar atributos de nome alternativo do emissor de certificados como variáveis de política de certificados
<a name="issuer-alternate-name-attributes-policy"></a>

A tabela a seguir fornece detalhes de como os atributos de nome alternativo do emissor do certificado serão preenchidos em uma política do AWS IoT Core .


**Atributos de nome alternativo do emissor a serem preenchidos em uma política**  

| Nome alternativo do emissor X509v3 | Atributo em uma política | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/use-policy-variables.html)  | 

## Usar atributos de nome alternativo do sujeito do certificado como variáveis de política de certificados
<a name="subject-alternate-name-attributes-policy"></a>

A tabela a seguir fornece detalhes de como os atributos de nome alternativo do sujeito do certificado serão preenchidos em uma política do AWS IoT Core .


**Atributos de nome alternativo do sujeito a serem preenchidos em uma política**  

| Nome alternativo do assunto X509v3 | Atributo em uma política | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/use-policy-variables.html)  | 

## Usar outro atributo de certificado como uma variável de política de certificado
<a name="other-attributes-policy"></a>

A tabela a seguir fornece detalhes de como outros atributos do certificado serão preenchidos em uma AWS IoT Core política.


**Outros atributos a serem preenchidos em uma política**  

| Outro atributo do certificado | Variável de política do certificado | 
| --- | --- | 
|  `Serial Number: 92:12:85:cb:b7:a5:e0:86`  |  `iot:Certificate.SerialNumber = 10525622389124227206`  | 

## Limitações das variáveis de política de certificado X.509
<a name="policy-limits"></a>

As limitações a seguir se aplicam às variáveis de política de certificado X.509:

Variáveis de política ausentes  
Se seu certificado X.509 não incluir um atributo de certificado específico, mas a variável de política de certificado correspondente for usada em seu documento de política, a avaliação da política poderá levar a um comportamento inesperado. Isso ocorre porque a variável de política ausente não é avaliada na declaração de política.

 SerialNumber Formato do certificado  
AWS IoT Core trata o número de série do certificado como a representação em cadeia de um número inteiro decimal. Por exemplo, se uma política só permite conexões com a ID do cliente correspondente ao número de série do certificado, o ID do cliente deve ser o número de série em formato decimal.

Curingas  
Se caracteres curinga estiverem presentes em atributos de certificado, a variável de política não será substituída pelo valor do atributo do certificado. Isso deixará o texto `${policy-variable}` no documento de política. Isso pode causar falha de autorização. Os seguintes caracteres curinga podem ser usados: `*`, `$`, `+`, `?` e `#`.

Campos da matriz  
Os atributos de certificado que contêm matrizes estão limitados a cinco itens. Os itens adicionais são ignorados.

Tamanho da segmento  
Todos os valores de string são limitados a 1024 caracteres. Se um atributo de certificado tiver uma sequência com mais de 1024 caracteres, a variável de política não será substituída pelo valor do atributo do certificado. Isso deixará o `${policy-variable}` no documento de política. Isso pode causar falha de autorização.

Caracteres especiais  
Qualquer caractere especial, como `,`, `"`, `\`, `+`, `=`, `<`, `>` e `;`, deve ser prefixado com uma barra invertida (`\`) quando usado em uma variável de política. Por exemplo, `Amazon Web Services O=Amazon.com Inc. L=Seattle ST=Washington C=US` torna-se `Amazon Web Service O\=Amazon.com Inc. L\=Seattle ST\=Washington C\=US`.

## Exemplo de políticas usando variáveis de política de certificado
<a name="example-attributes-policy"></a>

O documento de política a seguir permite conexões com o ID do cliente que corresponde ao número de série do certificado e a publicação no tópico que corresponde ao padrão: `${iot:Certificate.Subject.Organization}/device-stats/${iot:ClientId}/*`. 

**Importante**  
Se seu certificado X.509 não incluir um atributo de certificado específico, mas a variável de política de certificado correspondente for usada em seu documento de política, a avaliação da política poderá levar a um comportamento inesperado. Isso ocorre porque a variável de política ausente não é avaliada na declaração de política. Por exemplo, se você anexar o seguinte documento de política a um certificado que não contém o atributo `iot:Certificate.Subject.Organization`, as variáveis da política do certificado `iot:Certificate.Subject.Organization` não serão preenchidas durante a avaliação da 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}/*"
			]
		}
	]
}
```

Você também pode usar o [operador de condição Null](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null) para garantir que as variáveis de política de certificado usadas em uma política sejam preenchidas durante a avaliação da política. O documento de política a seguir permite `iot:Connect` com certificados somente quando os atributos Número de Série do Certificado e Nome Comum do Assunto do Certificado estão presentes.

Todas as variáveis da política de certificado têm valores String, portanto, há suporte para todos os [Operadores de condição string](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"
				}
			}
		}
	]
}
```

# Prevenção contra o ataque do “substituto confuso” em todos os serviços
<a name="cross-service-confused-deputy-prevention"></a>

O *problema “confused deputy”* é um problema de segurança em que uma entidade que não tem permissão para executar uma ação pode coagir uma entidade mais privilegiada a executá-la. Em AWS, a falsificação de identidade entre serviços pode resultar no problema confuso do deputado. A personificação entre serviços pode ocorrer quando um serviço (o *serviço de chamada*) chama outro serviço (o *serviço chamado*). O serviço de chamada pode ser manipulado de modo a usar suas permissões para atuar nos recursos de outro cliente de uma forma na qual ele não deveria ter permissão para acessar. Para evitar isso, a AWS fornece ferramentas que ajudam você a proteger seus dados para todos os serviços com entidades principais de serviço que receberam acesso aos recursos em sua conta. 

Para limitar as permissões que AWS IoT concedem outro serviço ao recurso, recomendamos usar as chaves de contexto de condição [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)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)e as chaves de contexto nas políticas de recursos. Se você utilizar ambas as chaves de contexto de condição global, o valor `aws:SourceAccount` e a conta `aws:SourceArn` no valor deverão utilizar o mesmo ID de conta quando utilizados na mesma instrução de política.

A maneira mais eficaz de se proteger contra o problema substituto confuso é usar a chave de contexto de condição global `aws:SourceArn` com o nome do recurso da Amazon (ARN) completo do recurso. Para AWS IoT, você `aws:SourceArn` deve estar em conformidade com o formato: `arn:aws:iot:region:account-id:resource-type/resource-id` para permissões específicas de recursos ou`arn:aws:iot:region:account-id:*`. O resource-id pode ser o nome ou ID do recurso permitido ou uma declaração curinga do recurso permitido. IDs Certifique-se de que *region* corresponda à sua AWS IoT região e que *account-id* corresponda ao ID da sua conta de cliente. 

O exemplo a seguir mostra como evitar o confuso problema adjunto usando as chaves de contexto de condição `aws:SourceAccount` global `aws:SourceArn` e as chaves de contexto na política de confiança da AWS IoT função. Para obter mais exemplos, consulte [Exemplos detalhados de prevenção contra representante 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**  
Se você receber erros de negação de acesso, talvez a integração do serviço com o AWS Security Token Service (STS) não aceite as chaves de contexto `aws:SourceArn` e `aws:SourceAccount`.

## Exemplos detalhados de prevenção contra representante confuso
<a name="cross-service-confused-deputy-prevention-examples"></a>

**Esta seção fornece exemplos detalhados de como evitar o confuso problema adjunto usando as chaves de contexto de condição `aws:SourceAccount` global `aws:SourceArn` e as chaves de contexto na política de confiança da AWS IoT função.**
+ [Provisionamento de frotas](#cross-service-confused-deputy-prevention-fleet-provision)
+ [JITP](#cross-service-confused-deputy-prevention-JITP)
+ [Provedor de credencial](#cross-service-confused-deputy-prevention-credential-provider)

### Provisionamento de frotas
<a name="cross-service-confused-deputy-prevention-fleet-provision"></a>

Você pode configurar o [provisionamento da frota](https://docs.aws.amazon.com/iot/latest/developerguide/iot-provision.html) usando um recurso de modelo de provisionamento. Quando um modelo de provisionamento faz referência a uma função de provisionamento, a política de confiança dessa função pode incluir as chaves de condição `aws:SourceArn` e `aws:SourceAccount`. Essas chaves limitam os recursos para os quais a configuração pode invocar a solicitação `sts:AssumeRole`.

A função com a política de confiança a seguir só pode ser assumida pela entidade principal de IoT (`iot.amazonaws.com`) para o modelo de provisionamento especificado no `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>

No [just-in-time provisionamento (JITP)](https://docs.aws.amazon.com//iot/latest/developerguide/jit-provisioning.html), você pode usar o modelo de provisionamento como um recurso separado da CA ou definir o corpo do modelo e a função como parte da configuração do certificado da CA. O valor da política de confiança `aws:SourceArn` na AWS IoT função depende de como você define o modelo de provisionamento.

#### Definir o modelo de provisionamento como um recurso separado
<a name="cross-service-confused-deputy-prevention-JITP-template"></a>

Se você definir seu modelo de provisionamento como um recurso separado, o valor de `aws:SourceArn` poderá ser `"arn:aws:iot:region:account-id:provisioningtemplate/example_template"`. Você pode usar o mesmo exemplo de política em [Provisionamento de frotas](#cross-service-confused-deputy-prevention-fleet-provision).

#### Definir o modelo de provisionamento em um certificado de CA
<a name="cross-service-confused-deputy-prevention-JITP-CA"></a>

Se você definir seu modelo de provisionamento em um recurso de certificado de CA, o valor de `aws:SourceArn` poderá ser `"arn:aws:iot:region:account-id:cacert/cert_id"` ou `"arn:aws:iot:region:account-id:cacert/*"`. Você pode usar um caractere curinga quando o identificador do recurso, como a ID de um certificado de CA, é desconhecido no momento da criação.

A função com a política de confiança a seguir só pode ser assumida pela entidade principal de IoT (`iot.amazonaws.com`) para o certificado de CA especificado no `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"
        }
         }
      }
   ]
}
```

Ao criar um certificado de CA, você pode referenciar uma função de provisionamento na configuração do registro. A política de confiança da função de provisionamento pode usar `aws:SourceArn` para restringir para quais recursos a função pode ser assumida. [No entanto, durante a CACertificate chamada de registro inicial para registrar o certificado CA, você não teria o ARN do certificado CA para especificar na `aws:SourceArn` condição.](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html)

Para contornar isso, ou seja, especificar a política de confiança da função de aprovisionamento para o certificado de CA específico registrado AWS IoT Core, você pode fazer o seguinte:
+ Primeiro, chame [Register CACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html) sem fornecer o `RegistrationConfig` parâmetro.
+ Depois que o certificado CA for registrado AWS IoT Core, chame [Atualizar CACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCACertificate.html) nele.

  Na CACertificate chamada de atualização, forneça uma `RegistrationConfig` que inclua a política de confiança da função de provisionamento `aws:SourceArn` definida como o ARN do certificado CA recém-registrado.

### Provedor de credencial
<a name="cross-service-confused-deputy-prevention-credential-provider"></a>

Para [provedor de AWS IoT Core credenciais](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.html), use o mesmo Conta da AWS que você usa para criar o alias de função em `aws:SourceAccount` e especifique uma instrução que corresponda ao ARN do recurso do tipo de recurso rolealias em. `aws:SourceArn` Ao criar uma função do IAM para uso com o provedor de AWS IoT Core credenciais, você deve incluir na `aws:SourceArn` condição todos os aliases ARNs de função que possam precisar assumir a função, autorizando assim a solicitação entre serviços. `sts:AssumeRole`

A função com a seguinte política de confiança só pode ser assumida pela entidade principal do provedor de credenciais do AWS IoT Core (`credentials.iot.amazonaws.com`) para o roleAlias especificado no `SourceArn`. Se uma entidade principal tentar recuperar as credenciais de um alias de função diferente do especificado na condição `aws:SourceArn`, a solicitação será negada, mesmo que esse outro alias de função faça referência ao mesmo perfil do 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 exemplos de políticas
<a name="example-iot-policies"></a>

Os exemplos de políticas nesta seção ilustram os documentos de política usados para concluir tarefas comuns no AWS IoT Core. Você pode usá-los como exemplos para começar a criar as políticas para suas soluções.<a name="example-iot-policies-elements"></a>

Os exemplos desta seção usam as seguintes etapas:
+ [AWS IoT Core ações políticas](iot-policy-actions.md)
+ [AWS IoT Core recursos de ação](iot-action-resources.md)
+ [AWS IoT exemplos de políticas baseadas em identidade](security_iam_id-based-policy-examples.md)
+ [Variáveis AWS IoT Core políticas básicas](basic-policy-variables.md)
+ [Variáveis de política de certificado AWS IoT Core X.509](cert-policy-variables.md)

**Topics**
+ [Exemplos de política de conexão](connect-policy.md)
+ [Exemplos de política de publicação/inscrição](pub-sub-policy.md)
+ [Exemplos de política para conectar e publicar](connect-and-pub.md)
+ [Exemplos de políticas de mensagens retidas](retained-message-policy-examples.md)
+ [Exemplos de política de certificado](certificate-policy-examples.md)
+ [Exemplos de política de objetos](thing-policy-examples.md)
+ [Exemplo básico de políticas de trabalho](basic-jobs-example.md)

# Exemplos de política de conexão
<a name="connect-policy"></a>

A política a seguir nega permissão ao cliente IDs `client1` e à conexão AWS IoT Core, `client2` ao mesmo tempo em que permite que os dispositivos se conectem usando uma ID de cliente. O ID do cliente corresponde ao nome de uma coisa registrada no AWS IoT Core registro e anexada ao principal usado para conexão:

**nota**  
Para dispositivos registrados, recomendamos usar [variáveis de política de objetos](thing-policy-variables.md) para ações de `Connect` e anexar o objeto à entidade principal usada para a conexão.

****  

```
{
	"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"
				}
			}
		}
	]
}
```

A política a seguir concede permissão para se conectar AWS IoT Core com o ID do cliente`client1`. Este exemplo de política é para dispositivos não registrados.

****  

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

## Exemplos de políticas de sessões persistentes do MQTT
<a name="persistent-sessions-examples"></a>

O `connectAttributes` permite que você especifique quais atributos deseja usar na mensagem de conexão em suas políticas do IAM, como `PersistentConnect` e `LastWill`. Para obter mais informações, consulte [Uso do ConnectAttributes](mqtt.md#connect-attribute).

A política a seguir permite se conectar ao atributo `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"
					]
				}
			}
		}
	]
}
```

A política a seguir não permite `PersistentConnect`; outros atributos são permitidos:

****  

```
{
	"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"
					]
				}
			}
		}
	]
}
```

A política acima também pode ser expressa usando `StringEquals`; qualquer outro atributo é permitido, incluindo um novo:

****  

```
{
    "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"
                    ]
            }
        }
        }
    ]
}
```

A política a seguir permite a conexão por `PersistentConnect` e `LastWill`; nenhum outro atributo novo é permitido:

****  

```
{
	"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"
					]
				}
			}
		}
	]
}
```

A política a seguir permite a conexão limpa por clientes com ou sem `LastWill`; nenhum outro atributo será permitido:

****  

```
{
    "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"
        }
        }
    }]
}
```

A política a seguir só permite a conexão usando atributos padrão:

****  

```
{
	"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": []
				}
			}
		}
	]
}
```

A política a seguir permite a conexão somente com `PersistentConnect`; qualquer atributo novo é permitido, desde que a conexão use `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"
                    ]
            }
        }
        }
    ]
}
```

A política a seguir afirma que a conexão deve usar `PersistentConnect` e `LastWill`; nenhum atributo novo é permitido:

****  

```
{
	"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": []
				}
			}
		}
	]
}
```

A política a seguir não pode ter `PersistentConnect`, mas pode ter `LastWill`; nenhum outro atributo novo é permitido:

****  

```
{
    "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"
                    ]
            }
        }
        }
    ]
}
```

A política a seguir permite a conexão somente por clientes que tenham um `LastWill` com o tópico `"my/lastwill/topicName"`; qualquer atributo é permitido, desde que use o tópico `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"
            }
        }
        }
    ]
}
```

A política a seguir só permite a conexão limpa usando um `LastWillTopic`; qualquer atributo é permitido, desde que use o `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"
                    ]
            }
        }
        }
    ]
}
```

# Exemplos de política de publicação/inscrição
<a name="pub-sub-policy"></a>

A política que você usa depende de como você está se conectando AWS IoT Core. Você pode se conectar AWS IoT Core usando um cliente MQTT, HTTP ou WebSocket. Ao se conectar a um cliente MQTT, você está se autenticando com um certificado X.509. Ao se conectar via HTTP ou pelo WebSocket protocolo, você está se autenticando com o Signature versão 4 e o Amazon Cognito. 

**nota**  
Para dispositivos registrados, recomendamos usar [variáveis de política de objetos](thing-policy-variables.md) para ações de `Connect` e anexar o objeto à entidade principal usada para a conexão. 

**Topics**
+ [Usando caracteres curinga no MQTT e nas políticas AWS IoT Core](#pub-sub-policy-cert)
+ [Políticas para publicar, assinar e receber mensagens sobre tópicos to/from específicos](#pub-sub-specific-topic)
+ [Políticas para publicar, assinar e receber to/from tópicos de mensagens com um prefixo específico](#pub-sub-policy-specific-topic-prefix)
+ [Políticas para publicar, assinar e receber mensagens, to/from tópicos específicos para cada dispositivo](#pub-sub-specific-topic-device)
+ [Políticas para publicar, assinar e receber to/from tópicos de mensagens com o atributo thing no nome do tópico](#pub-sub-topic-attribute)
+ [Políticas para negar a publicação de mensagens em subtópicos do nome de um tópico](#pub-sub-deny-publish)
+ [Políticas para negar o recebimento de mensagens de subtópicos do nome de um tópico](#pub-sub-deny-receive)
+ [Políticas para assinar tópicos usando caracteres curinga do MQTT](#pub-sub-topic-wildcard)
+ [Políticas para HTTP e WebSocket clientes](#pub-sub-policy-cognito)

## Usando caracteres curinga no MQTT e nas políticas AWS IoT Core
<a name="pub-sub-policy-cert"></a>

O MQTT e AWS IoT Core as políticas têm caracteres curinga diferentes e você deve escolhê-los após uma análise cuidadosa. No MQTT, os caracteres `+` curinga `#` são usados nos [filtros de tópicos do MQTT](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html#topicfilters) para assinar vários nomes de tópicos. AWS IoT Core as políticas usam `*` e `?` como caracteres curinga e seguem as convenções das políticas do [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html#policies-grammar-json). Em um documento de política, o `*` representa qualquer combinação caracteres, e um ponto de interrogação `?` representa qualquer caractere único. Em documentos de política, os caracteres curinga do MQTT `+` e `#` são tratados como aqueles caracteres sem significado especial. Para descrever vários nomes de tópicos e filtros de tópicos no atributo `resource` de uma política, use os caracteres curinga `*` e `?` no lugar dos caracteres curinga do MQTT.

Ao escolher caracteres curinga para usar em um documento de política, considere que o caractere `*` não está confinado a um único nível de tópico. O caractere `+` está confinado a um só nível de tópico em um filtro de tópicos MQTT. Para ajudar a restringir uma especificação de curinga a um único nível de filtro de tópico do MQTT, considere usar vários caracteres `?`. Para obter mais informações sobre o uso de caracteres curinga em um recurso de política e mais exemplos de sua correspondência, consulte [Usando curingas no](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_resource.html#reference_policies_elements_resource_wildcards) recurso. ARNs

A tabela abaixo mostra os diferentes caracteres curinga usados nas políticas do MQTT e do AWS IoT Core para clientes MQTT.


| Caractere curinga | É um caractere curinga do MQTT | Exemplo no MQTT | A AWS IoT Core política é um caractere curinga | Exemplo de AWS IoT Core políticas para clientes MQTT | 
| --- | --- | --- | --- | --- | 
| \$1 | Sim | some/\$1 | Não | N/D | 
| \$1 | Sim | some/\$1/topic | Não | N/D | 
| \$1 | Não | N/D | Sim | `topicfilter/some/*/topic` `topicfilter/some/sensor*/topic`  | 
| ? | Não | N/D | Sim |  `topic/some/?????/topic` `topicfilter/some/sensor???/topic`  | 

## Políticas para publicar, assinar e receber mensagens sobre tópicos to/from específicos
<a name="pub-sub-specific-topic"></a>

A seguir, são mostrados exemplos de dispositivos registrados e não registrados para publicar, assinar e receber mensagens sobre to/from o tópico chamado “some\$1specific\$1topic”. Os exemplos também destacam que `Publish` e `Receive` usam "topic" como recurso, enquanto `Subscribe` usa "topicfilter".

------
#### [ Registered devices ]

Para dispositivos registrados no AWS IoT Core registro, a política a seguir permite que os dispositivos se conectem com ClientID que corresponda ao nome de uma coisa no registro. Ele também fornece permissões de `Publish`, `Subscribe` e `Receive` para o tópico chamado “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 ]

Para dispositivos não registrados no AWS IoT Core registro, a política a seguir permite que os dispositivos se conectem usando ClientID1, ClientID2 ou ClientId3. Ele também fornece permissões de `Publish`, `Subscribe` e `Receive` para o tópico chamado “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, assinar e receber to/from tópicos de mensagens com um prefixo específico
<a name="pub-sub-policy-specific-topic-prefix"></a>

Veja a seguir exemplos de to/from tópicos de dispositivos registrados e não registrados para publicar, assinar e receber mensagens com o prefixo “topic\$1prefix”.

**nota**  
Observe o uso do caractere curinga `*` neste exemplo. Embora o `*` seja útil para fornecer permissões para vários nomes de tópicos em uma única instrução, ele pode levar a consequências inesperadas ao fornecer mais privilégios aos dispositivos do que o necessário. Portanto, recomendamos que você use o caractere curinga `*` somente após uma análise cuidadosa.

------
#### [ Registered devices ]

Para dispositivos registrados no AWS IoT Core registro, a política a seguir permite que os dispositivos se conectem com ClientID que corresponda ao nome de uma coisa no registro. Ele também fornece permissões de `Publish`, `Subscribe` e `Receive` para tópicos com o prefixo “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 ]

Para dispositivos não registrados no AWS IoT Core registro, a política a seguir permite que os dispositivos se conectem usando ClientID1, ClientID2 ou ClientId3. Ele também fornece permissões de `Publish`, `Subscribe` e `Receive` para tópicos com o prefixo “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, assinar e receber mensagens, to/from tópicos específicos para cada dispositivo
<a name="pub-sub-specific-topic-device"></a>

Veja a seguir exemplos de to/from tópicos específicos de dispositivos registrados e não registrados para publicar, assinar e receber mensagens específicas de um determinado dispositivo.

------
#### [ Registered devices ]

Para dispositivos registrados no AWS IoT Core registro, a política a seguir permite que os dispositivos se conectem com ClientID que corresponda ao nome de uma coisa no registro. Ela fornece permissão para publicar no tópico específico do objeto (`sensor/device/${iot:Connection.Thing.ThingName}`) e também assinar e receber do tópico específico do objeto (`command/device/${iot:Connection.Thing.ThingName}`). Se o nome da coisa no registro for “coisa1", o dispositivo poderá publicar no tópico" 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 ]

Para dispositivos não registrados no AWS IoT Core registro, a política a seguir permite que os dispositivos se conectem usando ClientID1, ClientID2 ou ClientId3. Ela fornece permissão para publicar no tópico específico do cliente (`sensor/device/${iot:ClientId}`) e também assinar e receber do tópico específico do cliente (`command/device/${iot:ClientId}`). Se o dispositivo se conectar ao ClientID como ClientId1, ele poderá publicar no tópico "1". sensor/device/clientId O dispositivo também poderá se inscrever e receber do tópico `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, assinar e receber to/from tópicos de mensagens com o atributo thing no nome do tópico
<a name="pub-sub-topic-attribute"></a>

A seguir, é mostrado um exemplo de to/from tópicos de dispositivos registrados para publicar, assinar e receber mensagens cujos nomes incluem atributos de coisas.

**nota**  
Os atributos de objeto existem apenas para dispositivos registrados no Registro do AWS IoT Core . Não há um exemplo correspondente para dispositivos não registrados.

------
#### [ Registered devices ]

Para dispositivos registrados no AWS IoT Core registro, a política a seguir permite que os dispositivos se conectem com ClientID que corresponda ao nome de uma coisa no registro. Ela fornece permissão para publicar no tópico (`sensor/${iot:Connection.Thing.Attributes[version]}`) e assinar e receber do tópico (`command/${iot:Connection.Thing.Attributes[location]}`), onde o nome do tópico inclui atributos de objeto. Se o nome da coisa no registro tiver `version=v1` e`location=Seattle`, o dispositivo poderá publicar no tópico "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 ]

Uma vez que os atributos de objeto existem apenas para dispositivos registrados no Registro do AWS IoT Core , não há um exemplo correspondente paro objetos não registradas.

------

## Políticas para negar a publicação de mensagens em subtópicos do nome de um tópico
<a name="pub-sub-deny-publish"></a>

Veja a seguir exemplos de dispositivos registrados e não registrados para publicar mensagens em todos os tópicos, exceto em determinados subtópicos.

------
#### [ Registered devices ]

Para dispositivos registrados no AWS IoT Core registro, a política a seguir permite que os dispositivos se conectem com ClientID que corresponda ao nome de uma coisa no registro. Ela fornece permissão para publicar em todos os tópicos com o prefixo "department/", mas não no subtópico "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 ]

Para dispositivos não registrados no AWS IoT Core registro, a política a seguir permite que os dispositivos se conectem usando ClientID1, ClientID2 ou ClientId3. Ela fornece permissão para publicar em todos os tópicos com o prefixo "department/", mas não no subtópico "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 negar o recebimento de mensagens de subtópicos do nome de um tópico
<a name="pub-sub-deny-receive"></a>

Veja a seguir exemplos de dispositivos registrados e não registrados para publicar e receber mensagens de tópicos com prefixos específicos, exceto determinados subtópicos.

------
#### [ Registered devices ]

Para dispositivos registrados no AWS IoT Core registro, a política a seguir permite que os dispositivos se conectem com ClientID que corresponda ao nome de uma coisa no registro. A política permite que os dispositivos assinem qualquer tópico com o prefixo "topic\$1prefix". Ao usar `NotResource` na declaração for`iot:Receive`, permitimos que o dispositivo receba mensagens de todos os tópicos nos quais o dispositivo se inscreveu, exceto os tópicos prefixados com “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/restrictedtópico\$1”.

****  

```
{
	"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 ]

Para dispositivos não registrados no AWS IoT Core registro, a política a seguir permite que os dispositivos se conectem usando ClientID1, ClientID2 ou ClientId3. A política permite que os dispositivos assinem qualquer tópico com o prefixo "topic\$1prefix". Ao usar `NotResource` na declaração for`iot:Receive`, permitimos que o dispositivo receba mensagens de todos os tópicos nos quais o dispositivo se inscreveu, exceto tópicos prefixados com “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/restrictedtópico\$1”.

****  

```
{
    "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 assinar tópicos usando caracteres curinga do MQTT
<a name="pub-sub-topic-wildcard"></a>

Os caracteres curinga MQTT \$1 e \$1 são tratados como cadeias de caracteres literais, mas não são tratados como curingas quando usados em políticas. AWS IoT Core No MQTT, \$1 e \$1 são tratados como curingas somente ao assinar um filtro de tópico, mas como uma string literal em todos os outros contextos. Recomendamos que você use esses curingas do MQTT somente como parte das AWS IoT Core políticas após uma análise cuidadosa.

A seguir, mostramos exemplos de itens registrados e não registrados usando curingas MQTT nas políticas. AWS IoT Core Esses curingas são tratados como strings literais.

------
#### [ Registered devices ]

Para dispositivos registrados no AWS IoT Core registro, a política a seguir permite que os dispositivos se conectem com ClientID que corresponda ao nome de uma coisa no registro. A política permite que os dispositivos assinem os tópicos "department/\$1/employees" e "location/\$1". Como \$1 e \$1 são tratados como cadeias de caracteres literais nas AWS IoT Core políticas, os dispositivos podem se inscrever no tópico “departamento/\$1/funcionários”, mas também não no tópico "". 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 ]

Para dispositivos não registrados no AWS IoT Core registro, a política a seguir permite que os dispositivos se conectem usando ClientID1, ClientID2 ou ClientId3. A política permite que os dispositivos assinem os tópicos "department/\$1/employees" e "location/\$1". Como \$1 e \$1 são tratados como cadeias de caracteres literais nas AWS IoT Core políticas, os dispositivos podem se inscrever no tópico “departamento/\$1/funcionários”, mas também não no tópico "". 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 e WebSocket clientes
<a name="pub-sub-policy-cognito"></a>

Ao se conectar via HTTP ou pelo WebSocket protocolo, você está se autenticando com o Signature versão 4 e o Amazon Cognito. As identidades do Amazon Cognito podem ser autenticadas ou não autenticadas. As identidades autenticadas pertencem a usuários que são autenticados por qualquer provedor de identidades. As identidades não autenticadas geralmente pertencem a usuários convidados que não são autenticados com um provedor de identidade. O Amazon Cognito fornece um identificador e AWS credenciais exclusivos para oferecer suporte a identidades não autenticadas. Para obter mais informações, consulte [Autorização com identidades do Amazon Cognito](cog-iot-policies.md).

Para as seguintes operações, AWS IoT Core usa AWS IoT Core políticas anexadas às identidades do Amazon Cognito por meio da API. `AttachPolicy` Isso define as permissões anexadas ao banco de identidades do Amazon Cognito com identidades autenticadas.
+ `iot:Connect`
+ `iot:Publish`
+ `iot:Subscribe`
+ `iot:Receive`
+ `iot:GetThingShadow`
+ `iot:UpdateThingShadow`
+ `iot:DeleteThingShadow`

A identidade do Amazon Cognito precisa da permissão da política de perfil do IAM e da política do AWS IoT Core . Você anexa a política de função do IAM ao pool e a AWS IoT Core política à Identidade do Amazon Cognito por meio da AWS IoT Core `AttachPolicy` API.

Usuários autenticados e não autenticados são tipos de identidade diferentes. Se você não anexar uma AWS IoT política à Identidade do Amazon Cognito, um usuário autenticado falhará na autorização AWS IoT e não terá acesso aos AWS IoT recursos e ações.

**nota**  
Para outras AWS IoT Core operações ou para identidades não autenticadas, AWS IoT Core não define o escopo das permissões associadas à função do grupo de identidades do Amazon Cognito. Para as identidades autenticadas e não autenticadas, esta é a política mais permissiva que recomendamos anexar ao perfil do banco do Amazon Cognito.

**HTTP**

Para permitir que as identidades do Amazon Cognito não autenticadas publiquem mensagens via HTTP em um tópico específico da identidade do Amazon Cognito, anexe a seguinte política do IAM ao perfil do banco de identidades do 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 usuários autenticados, anexe a política anterior à função do pool de Identidade do Amazon Cognito e à Identidade do Amazon Cognito usando a API. AWS IoT Core [AttachPolicy](https://docs.aws.amazon.com//iot/latest/apireference/API_AttachPolicy.html)

**nota**  
Ao autorizar as identidades do Amazon Cognito AWS IoT Core , considere as duas políticas e conceda os menores privilégios especificados. Uma ação será permitida somente se as duas políticas permitirem a ação solicitada. Se uma das políticas não permitir uma ação, essa ação não será autorizada.

**MQTT**

Para permitir que identidades não autenticadas do Amazon Cognito publiquem mensagens MQTT WebSocket sobre um tópico específico da identidade do Amazon Cognito em sua conta, anexe a seguinte política do IAM à função do pool de identidade do 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}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${cognito-identity.amazonaws.com:sub}"]
        }
    ]
}
```

Para permitir usuários autenticados, anexe a política anterior à função do pool de Identidade do Amazon Cognito e à Identidade do Amazon Cognito usando a API. AWS IoT Core [AttachPolicy](https://docs.aws.amazon.com//iot/latest/apireference/API_AttachPolicy.html)

**nota**  
Ao autorizar as identidades do Amazon Cognito AWS IoT Core , considere ambas e conceda os menores privilégios especificados. Uma ação será permitida somente se as duas políticas permitirem a ação solicitada. Se uma das políticas não permitir uma ação, essa ação não será autorizada.

# Exemplos de política para conectar e publicar
<a name="connect-and-pub"></a>

Para dispositivos registrados como itens no AWS IoT Core registro, a política a seguir concede permissão para se conectar AWS IoT Core com um ID de cliente que corresponda ao nome do item e restringe o dispositivo à publicação em um tópico MQTT específico do ID do cliente ou do nome do item. Para que uma conexão seja bem-sucedida, o nome da coisa deve ser registrado no AWS IoT Core registro e autenticado usando uma identidade ou principal anexada à coisa:

****  

```
{
  "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}"
      ]
    }
  ]
}
```

Para dispositivos não registrados como itens no AWS IoT Core registro, a política a seguir concede permissão para se conectar AWS IoT Core com o ID do cliente `client1` e restringe o dispositivo à publicação em um tópico MQTT específico do 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"
      ]
    }
  ]
}
```

# Exemplos de políticas de mensagens retidas
<a name="retained-message-policy-examples"></a>

O uso [de mensagens retidas](mqtt.md#mqtt-retain) requer políticas específicas. As mensagens retidas são mensagens MQTT publicadas com o sinalizador RETAIN definido e armazenadas por. AWS IoT Core Esta seção apresenta exemplos de políticas que permitem o uso comum de mensagens retidas.

**Topics**
+ [Política para conectar e publicar mensagens retidas](#retained-message-policy-examples-publish)
+ [Política para conectar e publicar mensagens Will retidas](#retained-message-policy-examples-publish-lwt)
+ [Política para listar e receber mensagens retidas](#retained-message-policy-examples-list-get)

## Política para conectar e publicar mensagens retidas
<a name="retained-message-policy-examples-publish"></a>

Para que um dispositivo publique mensagens retidas, ele deve ser capaz de se conectar, publicar (qualquer mensagem MQTT) e publicar mensagens retidas em MQTT. A política a seguir concede essas permissões para o tópico: `device/sample/configuration` ao cliente **device1**. Para ver outro exemplo que concede permissão para conexão, consulte [Exemplos de política para conectar e publicar](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 e publicar mensagens Will retidas
<a name="retained-message-policy-examples-publish-lwt"></a>

Os clientes podem configurar uma mensagem que AWS IoT Core será publicada quando o cliente se desconectar inesperadamente. O MQTT chama essa mensagem de [mensagem *Will*](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Will_Flag). Um cliente deve ter uma condição adicional adicionada à sua permissão de conexão para incluí-la. 

O documento de política a seguir concede a todos os clientes permissão para se conectar e publicar uma mensagem Will, identificada por seu tópico, `will`, que o AWS IoT Core também reterá.

****  

```
{
	"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 listar e receber mensagens retidas
<a name="retained-message-policy-examples-list-get"></a>

Serviços e aplicativos podem acessar mensagens retidas sem a necessidade de oferecer suporte a um cliente MQTT chamando [https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_ListRetainedMessages.html](https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_ListRetainedMessages.html) e [https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_GetRetainedMessage.html](https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_GetRetainedMessage.html). Os serviços e aplicativos que chamam essas ações devem ser autorizados usando uma política como o exemplo a seguir.

****  

```
{
    "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"
            ]
        }
    ]
}
```

# Exemplos de política de certificado
<a name="certificate-policy-examples"></a>

Para dispositivos registrados no AWS IoT Core registro, a política a seguir concede permissão para se conectar AWS IoT Core com um ID de cliente que corresponda ao nome de um item e publicar em um tópico cujo nome seja igual ao `certificateId` do certificado que o dispositivo usou para se autenticar:

****  

```
{
    "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}"]
        }
    ]
}
```

Para dispositivos não registrados no AWS IoT Core registro, a política a seguir concede permissão para se conectar AWS IoT Core com o cliente IDs `client1``client2`,,, `client3` e publicar em um tópico cujo nome é igual ao `certificateId` do certificado que o dispositivo usou para se autenticar:

****  

```
{
    "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 dispositivos registrados no AWS IoT Core registro, a política a seguir concede permissão para se conectar AWS IoT Core com um ID de cliente que corresponda ao nome do item e publicar em um tópico cujo nome seja igual ao `CommonName` campo do assunto do certificado que o dispositivo usou para se autenticar:

****  

```
{
    "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**  
Neste exemplo, o nome comum do assunto do certificado é usado como o identificador do tópico, supondo-se que o nome comum do assunto seja exclusivo para cada certificado registrado. Se os certificados forem compartilhados entre vários dispositivos, o nome comum do assunto será o mesmo para todos os dispositivos que compartilham esse certificado, permitindo assim privilégios de publicação para o mesmo tópico em vários dispositivos (não recomendado).

Para dispositivos não registrados no AWS IoT Core registro, a política a seguir concede permissão para se conectar AWS IoT Core com o cliente IDs `client1``client2`,,, `client3` e publicar em um tópico cujo nome é igual ao `CommonName` campo do assunto do certificado que o dispositivo usou para se autenticar:

****  

```
{
    "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**  
Neste exemplo, o nome comum do assunto do certificado é usado como o identificador do tópico, supondo-se que o nome comum do assunto seja exclusivo para cada certificado registrado. Se os certificados forem compartilhados entre vários dispositivos, o nome comum do assunto será o mesmo para todos os dispositivos que compartilham esse certificado, permitindo assim privilégios de publicação para o mesmo tópico em vários dispositivos (não recomendado).

Para dispositivos registrados no AWS IoT Core registro, a política a seguir concede permissão para se conectar AWS IoT Core com um ID de cliente que corresponda ao nome do item e publicar em um tópico cujo nome é prefixado `admin/` quando o certificado usado para autenticar o dispositivo tem seu `Subject.CommonName.2` campo definido como: `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"
            }
        }
        }
    ]
}
```

Para dispositivos não registrados no AWS IoT Core registro, a política a seguir concede permissão para se conectar AWS IoT Core com o cliente IDs `client1` `client3` e publicar em um tópico cujo nome é prefixado com `admin/` quando o certificado usado para autenticar o dispositivo tem seu `Subject.CommonName.2` campo definido como: `client2` `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"
            }
        }
        }
    ]
}
```

Para dispositivos registrados no AWS IoT Core registro, a política a seguir permite que um dispositivo use seu nome para publicar em um tópico específico, `admin/` seguido pelo `ThingName` quando o certificado usado para autenticar o dispositivo tem qualquer um de seus `Subject.CommonName` campos definido como: `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"
            }
        }
        }
    ]
}
```

Para dispositivos não registrados no AWS IoT Core registro, a política a seguir concede permissão para AWS IoT Core se conectar ao cliente IDs `client1` `client3` e publicar no tópico `admin` quando o certificado usado para autenticar o dispositivo tem qualquer um de seus `Subject.CommonName` campos definido como: `client2` `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"
            }
        }
        }
    ]
}
```

# Exemplos de política de objetos
<a name="thing-policy-examples"></a>

A política a seguir permite que um dispositivo se conecte se o certificado usado para autenticação AWS IoT Core estiver anexado à coisa para a qual a política está sendo avaliada:

****  

```
{  
    "Version":"2012-10-17",		 	 	 
    "Statement":[
        {  
            "Effect":"Allow",
            "Action":["iot:Connect"],
            "Resource":[ "*" ],
            "Condition": {
                "Bool": {
                    "iot:Connection.Thing.IsAttached": ["true"]
            }
        }
        }
    ]
}
```

A política a seguir permite que um dispositivo publique se o certificado estiver anexado a um objeto com um determinado tipo e se o objeto tiver um atributo de `attributeName` com valor `attributeValue`. Para obter mais informações sobre variáveis da política de objeto, consulte [Variáveis da 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"
        }
      }
    }
  ]
}
```

A política a seguir permite que um dispositivo publique em um tópico que começa com um atributo do objeto. Se o certificado do dispositivo não estiver associado ao objeto, essa variável não será resolvida e resultará em um erro de acesso negado. Para obter mais informações sobre variáveis da política de objeto, consulte [Variáveis da 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]}/*"
    }
  ]
}
```

# Exemplo básico de políticas de trabalho
<a name="basic-jobs-example"></a>

Este exemplo mostra as instruções de política necessárias para que um destino de trabalho que é um único dispositivo receba uma solicitação de trabalho e comunique o status de execução do trabalho com AWS IoT.

*us-west-2:57EXAMPLE833*Substitua por seu Região da AWS, um caractere de dois pontos (:) e seu Conta da AWS número de 12 dígitos e, em seguida, *uniqueThingName* substitua pelo nome do recurso que representa o dispositivo em. 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"
            ]
        }
    ]
}
```

# Autorização com identidades do Amazon Cognito
<a name="cog-iot-policies"></a>

Existem dois tipos de identidades do Amazon Cognito: autenticadas e não autenticadas. Se o aplicativo for compatível com identidades do Amazon Cognito não autenticadas, nenhuma autenticação será executada, para que você não saiba quem é o usuário. 

**Identidades não autenticadas:** para identidades não autenticadas do Amazon Cognito, é possível conceder permissões anexando um perfil do IAM a um banco de identidades não autenticadas. Recomendamos conceder acesso somente aos recursos que você deseja disponibilizar para usuários desconhecidos.

**Importante**  
Para usuários não autenticados do Amazon Cognito que se conectam AWS IoT Core ao, recomendamos que você conceda acesso a recursos muito limitados nas políticas do IAM.

**Identidades autenticadas:** para identidades autenticadas do Amazon Cognito, é necessário especificar as permissões em dois lugares: 
+ Anexar uma política do IAM ao banco de identidades autenticadas do Amazon Cognito e
+ Anexe uma AWS IoT Core política à Identidade do Amazon Cognito (usuário autenticado).

## Exemplos de políticas para usuários não autenticados e autenticados do Amazon Cognito que se conectam ao AWS IoT Core
<a name="cog-iot-policies-auth-unauth-examples"></a>

O exemplo a seguir mostra as permissões na política do IAM e na política de IoT de uma identidade do Amazon Cognito. O usuário autenticado deseja publicar em um tópico específico do dispositivo (por exemplodevice/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"
            ]
        }
    ]
}
```

O exemplo a seguir mostra as permissões em uma política do IAM em um perfil não autenticado do Amazon Cognito. O usuário não autenticado deve publicar em tópicos não específicos do dispositivo que não exijam autenticação.

****  

```
{
    "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 exemplos
<a name="cog-iot-policies-github"></a>

Os exemplos de aplicativos da web a seguir GitHub mostram como incorporar a anexação de políticas a usuários autenticados no processo de inscrição e autenticação do usuário.
+ [Uso do aplicativo web MQTT publish/subscribe React AWS Amplify e o AWS IoT Device SDK for JavaScript](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-cp)
+ [Aplicativo web MQTT publish/subscribe React usando AWS AmplifyAWS IoT Device SDK for JavaScript, a e uma função Lambda](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-lambda)

Amplify é um conjunto de ferramentas e serviços que ajuda você a criar aplicativos web e móveis que se integram aos AWS serviços. Para obter mais informações sobre o Amplify, consulte a [Documentação do Amplify Framework](https://docs.amplify.aws/).

Os dois exemplos executam as seguintes etapas.

1. Quando um usuário se inscreve em uma conta, o aplicativo cria um grupo de usuários e uma identidade do Amazon Cognito.

1. Quando um usuário se autentica, o aplicativo cria e anexa uma política à identidade. Isso dá ao usuário permissões de publicação e assinatura.

1. O usuário pode usar o aplicativo para publicar e assinar tópicos do MQTT.

O primeiro exemplo usa a operação de API `AttachPolicy` diretamente dentro da operação de autenticação. O exemplo a seguir demonstra como implementar essa chamada de API em um aplicativo web React que usa Amplify e o AWS IoT Device SDK for 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);
         }
     });
}
```

Esse código aparece no [AuthDisplayarquivo.js.](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-cp/blob/d1c307b36357be934db9dda020140fa337709cd9/src/AuthDisplay.js#L45)

O segundo exemplo implementa a operação da API `AttachPolicy` em uma função do Lambda. O exemplo a seguir mostra como o Lambda usa essa chamada de 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});
     }
 });
```

Esse código aparece dentro da função `iot.GetPolicy` no arquivo [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**  
Quando você chama a função com AWS as credenciais obtidas por meio dos pools de identidade do Amazon Cognito, o objeto de contexto na sua função Lambda contém um valor para. `context.cognito_identity_id` Para obter mais informações, consulte.   
[AWS Lambda objeto de contexto em Node.js](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-context.html)
[AWS Lambda objeto de contexto em Python](https://docs.aws.amazon.com/lambda/latest/dg/python-context.html)
[AWS Lambda objeto de contexto em Ruby](https://docs.aws.amazon.com/lambda/latest/dg/ruby-context.html)
[AWS Lambda objeto de contexto em Java](https://docs.aws.amazon.com/lambda/latest/dg/java-context.html)
[AWS Lambda objeto de contexto em Go](https://docs.aws.amazon.com/lambda/latest/dg/golang-context.html)
[AWS Lambda objeto de contexto em C\$1](https://docs.aws.amazon.com/lambda/latest/dg/csharp-context.html)
[AWS Lambda objeto de contexto em PowerShell](https://docs.aws.amazon.com/lambda/latest/dg/powershell-context.html)

# Autorizando chamadas diretas para AWS serviços usando o provedor de AWS IoT Core credenciais
<a name="authorizing-direct-aws"></a>

Os dispositivos podem usar certificados X.509 para se conectar AWS IoT Core usando protocolos de autenticação mútua TLS. Outros AWS serviços não oferecem suporte à autenticação baseada em certificado, mas podem ser chamados usando AWS credenciais no formato [AWS Signature](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) Version 4. O [algoritmo Signature Version 4](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) normalmente exige que o chamador tenha um ID de chave de acesso e uma chave de acesso secreta. AWS IoT Core tem um provedor de credenciais que permite que você use o [certificado X.509 incorporado](x509-client-certs.html) como a identidade exclusiva do dispositivo para autenticar solicitações. AWS Isso elimina a necessidade de armazenar um ID de chave de acesso e uma chave de acesso secreta em seu dispositivo.

O provedor de credenciais autentica um chamador usando um certificado X.509 e emite um token de segurança temporário e de privilégio limitado. O token pode ser usado para assinar e autenticar qualquer AWS solicitação. Essa forma de autenticar suas AWS solicitações exige que você crie e configure uma [função AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/service-authorization/latest/reference/id_roles.html) e anexe políticas apropriadas do IAM à função para que o provedor de credenciais possa assumir a função em seu nome. Para obter mais informações sobre AWS IoT Core e o IAM, consulte [Gerenciamento de identidade e acesso para AWS IoT](security-iam.md).

 AWS IoT exige que os dispositivos enviem a [extensão Server Name Indication (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) para o protocolo Transport Layer Security (TLS) e forneçam o endereço completo do endpoint no campo. `host_name` O campo `host_name` deve conter o endpoint que você está chamando e deve ser:
+ O `endpointAddress` retornado por `aws iot [describe-endpoint](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-endpoint.html) --endpoint-type iot:CredentialProvider`.

As conexões tentadas por dispositivos sem o valor `host_name` correto não funcionarão.

O diagrama a seguir mostra o fluxo de trabalho do provedor de credenciais.

![\[AWS IoT Core fluxo de trabalho do provedor de credenciais.\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/images/credentials-provider-diagram.png)


1. O AWS IoT Core dispositivo faz uma solicitação HTTPS ao provedor de credenciais para obter um token de segurança. A solicitação inclui o dispositivo certificado X.509 para autenticação.

1. O provedor de credenciais encaminha a solicitação ao módulo de AWS IoT Core autenticação e autorização para validar o certificado e verificar se o dispositivo tem permissão para solicitar o token de segurança.

1. Se o certificado for válido e tiver permissão para solicitar um token de segurança, o módulo de AWS IoT Core autenticação e autorização retornará sucesso. Do contrário, envia uma exceção ao dispositivo.

1. Depois de validar o certificado, o provedor de credenciais chama o [AWS Security Token Service (AWS STS)](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) para assumir o perfil do IAM que você criou para ele.

1. AWS STS retorna um token de segurança temporário com privilégios limitados para o provedor de credenciais.

1. O provedor de credenciais retorna o token de segurança para o dispositivo.

1. O dispositivo usa o token de segurança para assinar uma AWS solicitação com o AWS Signature Version 4.

1. O serviço solicitado chama o IAM para validar a assinatura e autorizar a solicitação comparativamente às políticas de acesso anexadas à perfil do IAM que você criou para o provedor de credenciais.

1. Se o IAM validar a assinatura e autorizar a solicitação, a solicitação será concluída com êxito. Do contrário, o IAM envia uma exceção.

A seção a seguir descreve como se deve usar um certificado para obter um token de segurança. Ele é escrito com a suposição de que você já tenha [registrado um dispositivo](register-device.html) e [criado e ativado seu próprio certificado](device-certs-your-own.html) para ele.

## Como usar um certificado para obter um token de segurança
<a name="authorizing-direct-aws.walkthrough"></a>

1. Configure o perfil do IAM que o provedor de credenciais assume em nome de seu dispositivo. Anexe à função as políticas de confiança a seguir.   
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Principal": {"Service": "credentials.iot.amazonaws.com"},
           "Action": "sts:AssumeRole"
       }
   }
   ```

   Para cada AWS serviço que você deseja chamar, anexe uma política de acesso à função. O provedor de credenciais comporta as seguintes variáveis de política:
   + `credentials-iot:ThingName`
   + `credentials-iot:ThingTypeName`
   + `credentials-iot:AwsCertificateId`

   Quando o dispositivo fornece o nome do objeto em sua solicitação a um serviço da AWS , o provedor de credenciais adiciona `credentials-iot:ThingName` e `credentials-iot:ThingTypeName` como variáveis de contexto ao token de segurança. O provedor de credenciais fornece `credentials-iot:AwsCertificateId` como uma variável de contexto, mesmo que o dispositivo não forneça o nome do objeto na solicitação. Você passa o nome do objeto como o valor do cabeçalho da solicitação HTTP `x-amzn-iot-thingname`.

   Essas três variáveis funcionam apenas para políticas do IAM, e não para políticas da AWS IoT Core .

1. O usuário que executar a próxima etapa (criar um alias de função) deve ter permissão para transmitir a função recém-criada ao AWS IoT Core. A política a seguir concede ambas `iam:GetRole` e `iam:PassRole` permissões a um AWS usuário. A permissão `iam:GetRole` permite que o usuário obtenha informações sobre a função que você acabou de criar. A `iam:PassRole` permissão permite que o usuário passe a função para outro AWS serviço.  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": [
               "iam:GetRole",
               "iam:PassRole"
           ],
           "Resource": "arn:aws:iam::123456789012:role/your role name"
       }
   }
   ```

1. Crie um alias de AWS IoT Core função. O dispositivo que fará chamadas diretas para AWS os serviços deve saber a qual função ARN usar ao se conectar. AWS IoT Core Fixar o ARN da função no código não é uma boa solução porque isso requer que você atualize o dispositivo toda vez que o ARN da função for alterado. Uma solução mais adequada é usar a API `CreateRoleAlias` para criar um alias de função que aponte para o ARN da função. Se o ARN da função for alterado, basta atualizar o alias da função. Nenhuma alteração é necessária no dispositivo. Essa API usa os seguintes parâmetros:  
`roleAlias`  
Obrigatório. Uma string arbitrária que identifica o alias da função. Funciona como chave primária no modelo de dados do alias da função. Contém de 1 a 128 caracteres e deve incluir apenas caracteres alfanuméricos e os símbolos =, @ e -. Caracteres alfabéticos em maiúsculas e minúsculas são permitidos. Os nomes de alias de perfil diferenciam maiúsculas de minúsculas.  
`roleArn`  
Obrigatório. O ARN da função ao qual o alias da função se refere.  
`credentialDurationSeconds`  
Opcional. Por quanto tempo (em segundos) a credencial é válida. O valor mínimo é 900 segundos (15 minutos). O valor máximo é de 43.200 segundos (12 horas). O valor padrão é de 3.600 segundos (uma hora).   
O provedor de AWS IoT Core credenciais pode emitir uma credencial com uma vida útil máxima de 43.200 segundos (12 horas). Ter a credencial válida por até 12 horas pode ajudar a reduzir o número de chamadas para o provedor de credenciais, armazenando a credencial em cache por mais tempo.  
O valor `credentialDurationSeconds` deve ser menor que ou igual à duração máxima da sessão do perfil do IAM à qual o alias do perfil faz referência. Para obter mais informações, consulte [Modificar a duração máxima da sessão (AWS API) de uma função](https://docs.aws.amazon.com//IAM/latest/UserGuide/roles-managingrole-editing-api.html#roles-modify_max-session-duration-api) no Guia do usuário do AWS Identity and Access Management.

   Para obter mais informações sobre essa API, consulte [CreateRoleAlias](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateRoleAlias.html). 

1. Anexe uma política a um certificado de dispositivo. A política anexada ao certificado do dispositivo deve conceder permissão ao dispositivo para assumir a função. Para isso, conceda permissão para a ação `iot:AssumeRoleWithCertificate` do alias da função, como no exemplo a seguir.  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "iot:AssumeRoleWithCertificate",
               "Resource": "arn:aws:iot:us-east-1:123456789012:rolealias/your role alias"
           }
       ]
   }
   ```

1. Faça uma solicitação HTTPS ao provedor de credenciais para receber um token de segurança. Forneça as informações a seguir:
   + *Certificado*: como se trata de uma solicitação HTTP por meio de autenticação TLS mútua, é necessário fornecer o certificado e a chave privada para o cliente quando estiver fazendo a solicitação. Use o mesmo certificado e chave privada que você usou quando registrou seu certificado AWS IoT Core.

     Para garantir que seu dispositivo esteja se comunicando com AWS IoT Core (e não um serviço que se faça passar por ele), consulte [Autenticação do servidor](x509-client-certs.html#server-authentication), siga os links para baixar os certificados CA apropriados e copie-os para o seu dispositivo.
   + *RoleAlias*: o nome do alias de função que você criou para o provedor de credenciais. Os nomes de alias de função diferenciam maiúsculas de minúsculas e devem corresponder ao alias de função criado em. AWS IoT Core
   + *ThingName*: O nome da coisa que você criou quando registrou sua AWS IoT Core coisa. Ele é passado como o valor do cabeçalho HTTP `x-amzn-iot-thingname`. Esse valor é necessário somente se você estiver usando atributos de coisas como variáveis de política AWS IoT Core ou políticas do IAM.
**nota**  
O *ThingName*que você fornece `x-amzn-iot-thingname` deve corresponder ao nome do recurso AWS IoT Thing atribuído a um certificado. Se não corresponder, um erro 403 será retornado.

   Execute o comando a seguir no AWS CLI para obter o endpoint do provedor de credenciais para o seu. Conta da AWS Para obter mais informações sobre essa API, consulte [DescribeEndpoint](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeEndpoint.html). Para endpoints habilitados para FIPS, consulte [AWS IoT Core: endpoints do provedor de credenciais](iot-connect-fips.md#iot-connect-fips-credential).

   ```
   aws iot describe-endpoint --endpoint-type iot:CredentialProvider
   ```

   O objeto JSON a seguir é uma saída de exemplo do comando **describe-endpoint**. Ele contém o `endpointAddress` que você usa para solicitar um token de segurança.

   ```
   {
       "endpointAddress": "your_aws_account_specific_prefix.credentials.iot.your region.amazonaws.com"
   }
   ```

   Use o endpoint para fazer uma solicitação HTTPS ao provedor de credenciais para que retorne um token de segurança. O comando de exemplo a seguir usa `curl`, mas é possível usar qualquer cliente HTTP.
**nota**  
O nome *RoleAlias* diferencia maiúsculas de minúsculas e deve corresponder ao alias de função criado em. 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
   ```

   Esse comando retorna um objeto de token de segurança que contém um `accessKeyId`, uma `secretAccessKey`, um `sessionToken` e uma expiração. O objeto JSON a seguir é uma saída de exemplo do comando `curl`.

   ```
       {"credentials":{"accessKeyId":"access key","secretAccessKey":"secret access key","sessionToken":"session token","expiration":"2018-01-18T09:18:06Z"}}
   ```

   Em seguida, você pode usar os `sessionToken` valores `accessKeyId``secretAccessKey`, e para assinar solicitações aos AWS serviços. *Para ver uma end-to-end demonstração, consulte [Como eliminar a necessidade de AWS credenciais codificadas em dispositivos usando o AWS IoT Credential Provider no](https://aws.amazon.com/blogs/security/how-to-eliminate-the-need-for-hardcoded-aws-credentials-in-devices-by-using-the-aws-iot-credentials-provider/) blog Security Blog.AWS *

# Acesso entre contas com o IAM
<a name="cross-account-access"></a>

AWS IoT Core permite que você permita que um diretor publique ou assine um tópico definido como Conta da AWS não pertencente ao diretor. É possível configurar o acesso entre contas criando uma política e perfil do IAM e, em seguida, anexando a política ao perfil.

Primeiro, crie uma política do IAM gerenciada pelo cliente, conforme descrito em [Como criar políticas do IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_create.html), assim como você faria com outros usuários e certificados em sua Conta da AWS. 

Para dispositivos registrados no AWS IoT Core registro, a política a seguir concede permissão para que os dispositivos se conectem AWS IoT Core usando uma ID de cliente que corresponda ao nome do item do dispositivo e publiquem no nome do item `my/topic/thing-name ` onde *thing-name* está o 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}"
            ]
        }
    ]
}
```

Para dispositivos não registrados no AWS IoT Core registro, a política a seguir concede permissão a um dispositivo para usar o nome do item `client1` registrado no registro da sua conta (123456789012) para se conectar AWS IoT Core e publicar em um tópico específico AWS IoT Core do ID do cliente cujo nome esteja prefixado com: `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}"
            ]
        }
    ]
}
```

Em seguida, siga as etapas em [Criação de um perfil para delegar permissões a um usuário do IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html). Insira o ID da Conta da AWS com a qual você deseja compartilhar o acesso. Em seguida, na etapa final, anexe a política recém-criada à função. Se, posteriormente, for necessário modificar o ID de conta da AWS ao qual você está concedendo acesso, você poderá usar o formato de política de confiança a seguir para fazer isso: 

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": { 
                "AWS": "arn:aws:iam::567890123456:user/MyUser"
        },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

# Proteção de dados em AWS IoT Core
<a name="data-protection"></a>

O modelo de [responsabilidade AWS compartilhada modelo](https://aws.amazon.com/compliance/shared-responsibility-model/) se aplica à proteção de dados em AWS IoT Core. Conforme descrito neste modelo, AWS é responsável por proteger a infraestrutura global que executa todos os Nuvem AWS. Você é responsável por manter o controle sobre o conteúdo hospedado nessa infraestrutura. Você também é responsável pelas tarefas de configuração e gerenciamento de segurança dos Serviços da AWS que usa. Para saber mais sobre a privacidade de dados, consulte as [Data Privacy FAQ](https://aws.amazon.com/compliance/data-privacy-faq/). Para saber mais sobre a proteção de dados na Europa, consulte a postagem do blog [AWS Shared Responsibility Model and RGPD](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) no *Blog de segurança da AWS *.

Para fins de proteção de dados, recomendamos que você proteja Conta da AWS as credenciais e configure usuários individuais com Centro de Identidade do AWS IAM ou AWS Identity and Access Management (IAM). Dessa maneira, cada usuário receberá apenas as permissões necessárias para cumprir suas obrigações de trabalho. Recomendamos também que você proteja seus dados das seguintes formas:
+ Use uma autenticação multifator (MFA) com cada conta.
+ Use SSL/TLS para se comunicar com AWS os recursos. Exigimos TLS 1.2 e recomendamos TLS 1.3.
+ Configure a API e o registro de atividades do usuário com AWS CloudTrail. Para obter informações sobre o uso de CloudTrail trilhas para capturar AWS atividades, consulte Como [trabalhar com CloudTrail trilhas](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) no *Guia AWS CloudTrail do usuário*.
+ Use soluções de AWS criptografia, juntamente com todos os controles de segurança padrão Serviços da AWS.
+ Use serviços gerenciados de segurança avançada, como o Amazon Macie, que ajuda a localizar e proteger dados sensíveis armazenados no Amazon S3.
+ Se você precisar de módulos criptográficos validados pelo FIPS 140-3 ao acessar AWS por meio de uma interface de linha de comando ou de uma API, use um endpoint FIPS. Para saber mais sobre os endpoints FIPS disponíveis, consulte [Federal Information Processing Standard (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

É altamente recomendável que nunca sejam colocadas informações confidenciais ou sensíveis, como endereços de e-mail de clientes, em tags ou campos de formato livre, como um campo **Nome**. Isso inclui quando você trabalha com AWS IoT ou Serviços da AWS usa o console, a API ou AWS SDKs. AWS CLI Quaisquer dados inseridos em tags ou em campos de texto de formato livre usados para nomes podem ser usados para logs de faturamento ou de diagnóstico. Se você fornecer um URL para um servidor externo, é fortemente recomendável que não sejam incluídas informações de credenciais no URL para validar a solicitação nesse servidor.

Consulte mais informações sobre proteção de dados na publicação do blog [AWS Shared Responsibility Model and GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) no *Blog de segurança da AWS *.

AWS IoT os dispositivos coletam dados, realizam alguma manipulação nesses dados e, em seguida, enviam esses dados para outro serviço da web. É possível optar por armazenar alguns dados em seu dispositivo por um curto período. Você é responsável por fornecer a proteção de dados sobre esses dados em repouso. Quando seu dispositivo envia dados para AWS IoT, ele o faz por meio de uma conexão TLS, conforme discutido posteriormente nesta seção. AWS IoT os dispositivos podem enviar dados para qualquer AWS serviço. Para obter mais informações sobre a segurança de dados de cada serviço, consulte a documentação desse serviço. AWS IoT pode ser configurado para gravar registros em CloudWatch Logs e registrar chamadas de AWS IoT API em AWS CloudTrail. Para obter mais informações sobre a segurança de dados desses serviços, consulte [Autenticação e controle de acesso para a Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/auth-and-access-control-cw.html) e [Criptografia de arquivos de CloudTrail log com chaves AWS KMS gerenciadas](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/encrypting-cloudtrail-log-files-with-aws-kms.html).

## Criptografia de dados em AWS IoT
<a name="data-protection-encrypt"></a>

Por padrão, todos os AWS IoT dados em trânsito e em repouso são criptografados. [Os dados em trânsito são criptografados usando TLS](transport-security.md) e os dados em repouso são criptografados usando chaves AWS próprias. AWS IoT suporta gerenciamento de clientes AWS KMS keys (chaves KMS) a partir do AWS Key Management Service (AWS KMS). No entanto, o Device Advisor e o AWS IoT Wireless usam somente um Chave pertencente à AWS para criptografar os dados do cliente.

 

# Segurança de transporte em AWS IoT Core
<a name="transport-security"></a>

O Transport Layer Security (TLS) é um protocolo criptográfico projetado para comunicação segura em uma rede de computadores. O AWS IoT Core Device Gateway exige que os clientes criptografem toda a comunicação em trânsito usando TLS para conexões de dispositivos ao Gateway. O TLS é usado para obter a confidencialidade dos protocolos de aplicativos (MQTT, HTTP e WebSocket) suportados pelo. AWS IoT Core O suporte ao TLS está disponível em várias de linguagens de programação e sistemas operacionais. Os dados AWS internos são criptografados pelo AWS serviço específico. Para obter mais informações sobre criptografia de dados em outros AWS serviços, consulte a documentação de segurança desse serviço.

**Topics**
+ [Protocolos TLS](#tls-ssl-policy)
+ [Políticas de segurança](#tls-policy-table)
+ [Notas importantes para a segurança do transporte em AWS IoT Core](#tls-ssl-core)
+ [Segurança de transporte para dispositivos sem fio LoRa WAN](#tls-lorawan)

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

AWS IoT Core suporta as seguintes versões do protocolo TLS:
+ TLS 1.3 
+ TLS 1.2

Com AWS IoT Core, você pode definir as configurações de TLS (para [TLS 1.2 e 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)) nas configurações de domínio. Para obter mais informações, consulte [Definir configurações de TLS nas configurações de domínio](iot-endpoints-tls-config.md).

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

Uma política de segurança é uma combinação de protocolos TLS e suas cifras que determinam quais protocolos e cifras são compatíveis durante as negociações de TLS entre um cliente e um servidor. Você pode configurar seus dispositivos para usar políticas de segurança predefinidas com base em suas necessidades. Observe que isso AWS IoT Core não oferece suporte a políticas de segurança personalizadas.

Você pode escolher uma das políticas de segurança predefinidas para seus dispositivos ao conectá-los a. AWS IoT Core Os nomes das políticas de segurança predefinidas mais recentes AWS IoT Core incluem informações de versão com base no ano e mês em que foram lançadas. A política de segurança padrão predefinida é `IoTSecurityPolicy_TLS13_1_2_2022_10`. Para especificar uma política de segurança, você pode usar o AWS IoT console ou AWS CLI o. Para obter mais informações, consulte [Definir configurações de TLS nas configurações de domínio](iot-endpoints-tls-config.md).

A tabela a seguir descreve as políticas de segurança predefinidas mais recentes compatíveis com o AWS IoT Core . O `IotSecurityPolicy_` foi removido dos nomes de política na linha de cabeçalho para que se ajustem ao espaço.


| **Política de segurança** | 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 | 
| --- | --- | --- | --- | --- | --- | 
| Porta TCP |  443/8443/8883  |  443/8443/8883  |  443/8443/8883  | 443 | 8443/8883 | 443 | 8443/8883 | 
| Protocolos TLS | 
| TLS 1.2 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| TLS 1.3 | ✓ | ✓ |  |  |  |  |  | 
| Cifras 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- -SHA AES128 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- -GCM- AES256 SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- - AES256 SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- -SHA AES256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES128-GCM- SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES128-SHA256 |  | ✓ | ✓ | ✓ |  | ✓ | ✓ | 
| AES128-SHAH |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES256-GCM- SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES256-SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES256-SHAH |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| DHE-RSA- -SHA AES256 |  |  |  |  |  | ✓ | ✓ | 
| ECDHE-ECDSA- -GCM- AES128 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`só está disponível no seguinte Regiões da AWS: ap-east-1, ap-northeast-2, ap-south-1, ap-south-1, ap-southeast-2, ca-central-1, cn-north-1, cn-northwest-1, eu-north-1, eu-north-1, eu-west-2, eu-west-3, me-south-1, sa-lest-1, us-east-1, us-east-2, -1, -2, us-west-1. us-gov-west us-gov-west  
`TLS12_1_0_2015_01`só está disponível no seguinte Regiões da AWS: ap-northeast-1, ap-southeast-1, eu-central-1, eu-central-1, eu-west-1, us-east-1, us-west-2.

## Notas importantes para a segurança do transporte em AWS IoT Core
<a name="tls-ssl-core"></a>

Para dispositivos que se conectam AWS IoT Core usando o [MQTT](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html), o TLS criptografa a conexão entre os dispositivos e o agente e AWS IoT Core usa a autenticação do cliente TLS para identificar dispositivos. Para obter mais informações, consulte [Autenticação do cliente](https://docs.aws.amazon.com//iot/latest/developerguide/client-authentication.html). Para dispositivos que se conectam AWS IoT Core usando [HTTP](https://docs.aws.amazon.com//iot/latest/developerguide/http.html), o TLS criptografa a conexão entre os dispositivos e o agente, e a autenticação é delegada à AWS Signature Version 4. Para obter mais informações, consulte [Assinatura de solicitações com o SignatAre Versão 4](https://docs.aws.amazon.com//general/latest/gr/create-signed-request.html) na *Referência geral da AWS *.

Quando você conecta dispositivos ao AWS IoT Core, o envio da [extensão de Indicação de Nome do Servidor (SNI)](https://tools.ietf.org/html/rfc3546#section-3.1) não é obrigatório, mas é altamente recomendado. Para usar recursos, como [registro de várias contas](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html#multiple-account-cert), [domínios personalizados](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable-custom.html), [endpoints da VPC](https://docs.aws.amazon.com//iot/latest/developerguide/IoTCore-VPC.html) e [políticas de TLS configuradas](https://docs.aws.amazon.com//iot/latest/developerguide/iot-endpoints-tls-config.html), é necessário usar a extensão SNI e fornecer o endereço completo do endpoint no campo `host_name`. O campo `host_name` deve conter o endpoint que você está chamando. Esse endpoint deve ser um dos seguintes:
+ O `endpointAddress` retornado por `aws iot [describe-endpoint](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-endpoint.html) --endpoint-type iot:Data-ATS`
+ O `domainName` retornado 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"`

As conexões tentadas por dispositivos com o `host_name` valor incorreto ou inválido falharão. AWS IoT Core registrará falhas no tipo de [autenticação personalizada](https://docs.aws.amazon.com//iot/latest/developerguide/custom-authentication.html). CloudWatch 

AWS IoT Core não suporta a [extensão SessionTicket TLS](https://www.ietf.org/rfc/rfc5077.txt).

## Segurança de transporte para dispositivos sem fio LoRa WAN
<a name="tls-lorawan"></a>

LoRaOs dispositivos WAN seguem as práticas de segurança descritas em [LoRaWAN™ SECURITY: um white paper preparado para a LoRa Alliance™ pela Gemalto, Actility e](https://lora-alliance.org/sites/default/files/2019-05/lorawan_security_whitepaper.pdf) Semtech. 

Para obter mais informações sobre segurança de transporte com dispositivos LoRa WAN, consulte [Dados de LoRa WAN e segurança de transporte](https://docs.aws.amazon.com/iot-wireless/latest/developerguide/iot-lorawan-security.html).

# Criptografia de dados em AWS IoT
<a name="data-encryption"></a>

A proteção de dados se refere à proteção de dados em trânsito (à medida que viajam de e para lá AWS IoT Core) e em repouso (enquanto são armazenados em dispositivos ou por outros AWS serviços). Todos os dados enviados AWS IoT Core são enviados por uma conexão TLS usando MQTT, HTTPS e WebSocket protocolos, tornando-os seguros por padrão durante o trânsito. AWS IoT Core coleta dados dos dispositivos e os envia para outros AWS serviços para processamento adicional. Para obter mais informações sobre criptografia de dados em outros serviços da AWS , consulte a documentação de segurança desse serviço. Para acessar mais informações, consulte [Criptografia de dados em repouso](encryption-at-rest.md).

O FreeRTOS fornece uma biblioteca do PKCS\$111 que abstrai o armazenamento de chaves, acessando objetos criptográficos e gerenciando sessões. É sua responsabilidade usar essa biblioteca para criptografar dados em repouso em seus dispositivos. Para obter mais informações, consulte [Biblioteca do padrão de criptografia de chave pública do FreeRTOS Nº 11 (PKCS)](https://docs.aws.amazon.com/freertos/latest/userguide/security-pkcs.html).

# Criptografia de dados em repouso em AWS IoT Core
<a name="encryption-at-rest"></a>

Por padrão, todos os AWS IoT Core dados em repouso são criptografados usando chaves AWS próprias. AWS IoT Core também suporta chaves simétricas gerenciadas pelo cliente a partir de AWS Key Management Service (AWS KMS). Com as chaves gerenciadas pelo cliente, você pode criar, possuir e gerenciar as AWS KMS chaves em sua AWS conta. AWS IoT Core usará suas chaves KMS para criptografar seus dados em repouso. Você tem controle total sobre essas chaves do KMS, inclusive sobre a criação e a manutenção de suas políticas de chave. Você também pode configurar políticas do IAM para as funções que acessam AWS KMS para controlar as permissões dessas chaves.

## AWS chaves de propriedade
<a name="aws-owned-keys"></a>

AWS chaves próprias são uma coleção de chaves KMS que um AWS serviço possui e gerencia para uso em várias AWS contas. AWS os serviços podem usar chaves AWS próprias para proteger seus dados. Por padrão, AWS IoT Core criptografa dados em repouso usando chaves AWS próprias. Essas chaves são gerenciadas pelo serviço. Você não pode visualizar, gerenciar ou usar chaves AWS próprias. No entanto, não é necessário realizar nenhuma ação para proteger essas chaves.

Para obter mais informações sobre chaves AWS próprias, consulte [chaves AWS próprias](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-key) no *Guia do AWS Key Management Service desenvolvedor*.

## Chaves gerenciadas pelo cliente
<a name="customer-managed-keys"></a>

As chaves gerenciadas pelo cliente são chaves KMS em sua AWS conta que você cria, possui e gerencia. Você tem controle total sobre essas chaves do AWS KMS , inclusive sobre a criação e a manutenção de suas respectivas políticas. Você também pode configurar políticas do IAM para as funções que acessam AWS KMS para controlar as permissões dessas chaves. Você pode configurar AWS IoT Core para usar chaves KMS gerenciadas pelo cliente para criptografar seus dados.

Para obter mais informações sobre chaves gerenciadas pelo cliente, consulte [Chaves gerenciadas pelo cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) no *Guia do desenvolvedor do AWS Key Management Service *.

Para ativar as chaves gerenciadas pelo cliente AWS IoT Core, siga estas etapas:

**Topics**
+ [Etapa 1: criar uma chave gerenciada pelo cliente](#encryption-at-rest-cmk-create)
+ [Etapa 2: criar uma função do IAM para conceder AWS IoT Core permissões para usar a chave KMS](#create-an-iam-role)
+ [Etapa 3: ativar as chaves gerenciadas pelo cliente no AWS IoT Core](#opt-in-customer-managed-keys)
+ [Etapa 4: Permissões adicionais necessárias para operações do plano de AWS IoT Core controle](#cmk-control-plane-permissions)
+ [Etapa 5: gerenciar as chaves](#understanding-key-health)
+ [Etapa 6: monitorar a integridade das chaves](#health-status-monitoring)

### Etapa 1: criar uma chave gerenciada pelo cliente
<a name="encryption-at-rest-cmk-create"></a>

Você pode criar uma chave simétrica gerenciada pelo cliente usando o AWS KMS console ou os comandos da AWS KMS CLI. A `keySpec` deve ser `SYMMETRIC_DEFAULT`, e o `keyUsage` deve ser `ENCRYPT_DECRYPT`.

**nota**  
AWS IoT Core só suporta AWS KMS `SYMMETRIC_DEFAULT` chaves com especificação e uso de `ENCRYPT_DECRYPT` chaves para chaves gerenciadas pelo cliente.

Veja a seguir um exemplo de AWS CLI comando para criar uma chave KMS que pode ser usada com chaves gerenciadas AWS IoT Core pelo cliente.

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

O conteúdo a seguir é um exemplo de saída do 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 acessar mais informações, consulte [Criar uma CMK simétrica](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) no *Guia do desenvolvedor do AWS Key Management Service *.

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

Quando você cria uma chave gerenciada pelo cliente, pode especificar uma política de chave. As políticas de chaves controlam o acesso à chave gerenciada pelo cliente. Cada chave gerenciada pelo cliente deve ter exatamente uma política de chave, que contém declarações que determinam quem pode usar a chave e como pode usá-la. Para acessar mais informações, consulte [Políticas de chave](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) no *Guia do desenvolvedor do AWS Key Management Service *.

AWS IoT Core usa uma função do IAM em sua conta para acessar sua chave gerenciada pelo cliente. Se você estiver usando uma política de chave personalizada, verifique se o perfil do IAM criado nessa chave tem as seguintes permissões:
+ `kms:DescribeKey`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`

### Etapa 2: criar uma função do IAM para conceder AWS IoT Core permissões para usar a chave KMS
<a name="create-an-iam-role"></a>

 AWS IoT Core Para usar a chave KMS que você criou para criptografar seus dados em repouso, você também precisa criar uma função do IAM em sua conta, que AWS IoT Core pode assumir o acesso à chave KMS.

A função deve ter a seguinte política de confiança para AWS IoT Core permitir que você assuma a função.

```
{
    "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:*"
            }
        }
    }
}
```

Verifique se as políticas do IAM associadas ao perfil do IAM têm as seguintes permissões na chave do KMS:
+ `kms:DescribeKey`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`

Confira abaixo um exemplo de política do IAM com as permissões necessárias para as chaves gerenciadas pelo 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 acessar mais informações, consulte [Criar um perfil para delegar permissões a um usuário do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) no *Guia do usuário do AWS Identity and Access Management *.

### Etapa 3: ativar as chaves gerenciadas pelo cliente no AWS IoT Core
<a name="opt-in-customer-managed-keys"></a>

Depois de concluir todas as etapas anteriores, execute o comando `update-encryption-configuration` da CLI para usar as chaves gerenciadas pelo cliente no AWS IoT Core. Quando você opta por usar as chaves gerenciadas pelo cliente, todos os AWS IoT Core recursos AWS da sua conta serão criptografados usando a AWS KMS chave especificada.

1. Para ativar o AWS IoT Core uso de chaves gerenciadas pelo cliente AWS CLI, execute o 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 se as chaves gerenciadas pelo cliente estão AWS CLI sendo usadas, execute o comando `describe-encryption-configuration` CLI: AWS IoT Core 

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

   Se você ativou as chaves gerenciadas pelo cliente AWS IoT Core, a saída pode ter a seguinte aparência:

   ```
   {
       "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"
   }
   ```

   O campo `lastModifiedDate` indica a data em que a configuração de criptografia foi atualizada pela última vez.

   Se não tiver habilitado as chaves gerenciadas pelo cliente, a saída poderá ser parecida com o seguinte:

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

### Etapa 4: Permissões adicionais necessárias para operações do plano de AWS IoT Core controle
<a name="cmk-control-plane-permissions"></a>

Depois de optar pelas chaves gerenciadas pelo cliente, todos os AWS IoT Core recursos pertencentes à sua AWS conta são criptografados com a chave KMS fornecida. Todas as operações do plano de controle agora exigem que o chamador tenha `kms:Decrypt` permissões na chave KMS, além das permissões necessárias para a operação específica no AWS IoT Core recurso. Se o chamador não tiver a permissão `kms:Decrypt` e fizer uma chamada de API que exija criptografia ou descriptografia de dados (por exemplo, `GetPolicy`), ele receberá uma `UnauthorizedException`.

Por exemplo, ao chamar `GetPolicy`, você precisa das permissões `iot:GetPolicy` e `kms:Decrypt` e da chave do KMS gerenciada pelo cliente para que a chamada de API seja bem-sucedida.

**nota**  
Ao atualizar os usuários ou funções do IAM para conceder AWS KMS permissões na chave usada para sua configuração de criptografia, certifique-se de que a política de chaves do KMS também conceda as permissões necessárias aos respectivos usuários ou funções do IAM.

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

A chamada de `UpdateEncryptionConfiguration` API precisa das seguintes AWS KMS permissões na chave KMS para poder aceitar as chaves gerenciadas pelo cliente ou modificar a configuração da chave:
+ `kms:DescribeKey`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`

#### AWS KMS permissões para todos os outros planos de controle APIs
<a name="kms-permissions-control-plane-apis"></a>

A maioria dos planos de controle APIs exige `kms:Decrypt` permissões quando as chaves gerenciadas pelo cliente estão habilitadas. No entanto, alguns APIs não exigem essas permissões adicionais:

APIs que não exigem AWS KMS permissões  
A `List*` e `Delete*` APIs não caia nesse balde. Os clientes sempre podem invocar qualquer API `List*` ou `Delete*` do ambiente de gerenciamento, e essas chamadas de API seriam bem-sucedidas mesmo que o chamador não tivesse a permissão `kms:Decrypt`. Essas chamadas de API serão bem-sucedidas mesmo que sua chave gerenciada pelo cliente não esteja íntegra `List*` e não `Delete*` APIs faça nenhuma decodificação.  
+ **Lista\$1 APIs** — Todas as operações de listagem (por exemplo,`ListThings`,`ListPolicies`,`ListCertificates`)
+ **Excluir\$1 APIs** — Todas as operações de exclusão (por exemplo,,,) `DeleteThing` `DeletePolicy` `DeleteCertificate`

### Etapa 5: gerenciar as chaves
<a name="understanding-key-health"></a>

AWS IoT Core executa verificações periódicas na configuração da chave gerenciada pelo cliente para garantir que as operações de criptografia e descriptografia não sejam afetadas. Essas verificações de saúde são executadas uma vez a cada minuto e verificam a capacidade AWS IoT Core da empresa de acessar e usar a AWS KMS chave e a função do IAM associada para operações de criptografia e descriptografia.

HEALTHY  
AWS IoT Core pode acessar com êxito a AWS KMS chave por meio da função do IAM especificada e realizar encryption/decryption operações. Todos os componentes funcionam corretamente.

UNHEALTHY  
AWS IoT Core não consigo acessar ou usar a AWS KMS chave. Isso evita novas operações de criptografia e pode afetar a funcionalidade do serviço. O campo `errorCode` indica se o problema está na chave ou no perfil do IAM.

#### Ações do cliente que podem afetar a integridade da chave
<a name="customer-actions-affecting-health"></a>

Várias ações do cliente podem fazer com que o status de integridade da chave mude de `HEALTHY` para `UNHEALTHY`:

Ações relacionadas a chaves  
+ **Excluindo uma AWS KMS chave** — Quando você agenda a exclusão de uma chave, ela está em um `Pending deletion` status e não pode ser usada
+ **Desabilitar uma AWS KMS chave** — Quando você desativa uma chave KMS, ela não pode mais ser usada para operações de criptografar/descriptografar
+ **Agendar a exclusão de uma chave**: a chave se torna inutilizável quando a exclusão é concluída.
+ **Modificando a política de chaves** — Removendo as permissões necessárias para AWS IoT Core acesso
+ **Alterando as permissões de uso das chaves** — Restringindo as ações necessárias AWS KMS 

Ações relacionadas ao perfil do IAM  
+ **Excluindo a função do IAM** — não AWS IoT Core consigo assumir a função de acessar a chave
+ **Modificando as permissões da função** — Removendo AWS KMS as permissões necessárias da política da função
+ **Mudando a política de confiança** — impedindo que o AWS IoT Core serviço assuma a função
+ **Adicionar condições restritivas — Condições** que AWS IoT Core impedem o uso da função

Ações em nível de conta  
+ **Alterações de acesso das chaves entre contas**: modificar permissões para chaves em contas diferentes.
+ **Políticas de controle de serviços (SCPs) — políticas** em nível organizacional que restringem o acesso AWS KMS 
+ **Políticas do IAM em nível de conta**: políticas que substituem ou entram em conflito com o acesso da chave.

**Importante**  
Qualquer alteração nas AWS KMS chaves, funções do IAM ou políticas usadas pelo AWS IoT Core deve ser testada primeiro em ambientes de desenvolvimento. Monitore o status de integridade da chave de perto após fazer qualquer alteração para garantir que a AWS IoT Core funcionalidade não seja afetada.

#### Atualizar a configuração de criptografia
<a name="key-transition"></a>

Atualize sua configuração de criptografia AWS IoT Core para mudar de uma chave gerenciada pelo cliente para outra, ou entre chaves AWS próprias e chaves gerenciadas pelo cliente.

Para alterar a configuração para uma chave gerenciada pelo cliente:

1. Crie uma chave gerenciada pelo cliente seguindo as etapas em [Etapa 1: criar uma chave gerenciada pelo cliente](#encryption-at-rest-cmk-create).

1. Atualize sua política de perfil do IAM para incluir permissões para as chaves antigas e novas durante o período de atualização.

1. Atualize sua configuração de criptografia para usar a nova chave:

   ```
   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 alterar a configuração das chaves gerenciadas pelo cliente para chaves AWS próprias:

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

**nota**  
Ao atualizar a configuração de criptografia para novas chaves gerenciadas pelo cliente, garanta que as chaves antigas e novas permaneçam acessíveis para que a operação seja bem-sucedida.

##### Cenários e impactos comuns de falhas
<a name="failure-scenarios"></a>

A seguinte tabela descreve cenários de falha comuns quando as chaves são excluídas ou desativadas:


| Cenário | Impacto imediato | Consequências no longo prazo | 
| --- | --- | --- | 
|  Chave desabilitada  |  Todas as novas encryption/decryption operações falham imediatamente  |  Interrupção do serviço até que a chave seja reabilitada ou substituída.  | 
|  Chave agendada para exclusão  |  O status da chave é alterado para exclusão pendente e todas as encryption/decryption operações falharão  |  Falha automática do serviço quando a exclusão é concluída.  | 
|  Chave excluída permanentemente.  |  Falha imediata e permanente de todas as operações.  |  Perda permanente de dados e incapacidade de recuperar dados criptografados.  | 
|  Política de chave modificada incorretamente.  |  AWS IoT Core perde as permissões de acesso à chave  |  Falhas no serviço até que a política seja corrigida.  | 
|  Perfil do IAM excluído.  |  AWS IoT Core não pode assumir a função de acessar a chave  |  Falha total no serviço de criptografia.  | 
|  O perfil do IAM foi modificado incorretamente.  |  AWS IoT Core não pode assumir a função ou usar a função para acessar a chave  |   Falhas no serviço até que o perfil do IAM seja corrigido.  | 

##### Prevenção e práticas recomendadas
<a name="prevention-best-practices"></a>

Para evitar a exclusão ou desativação acidental da chave e minimizar o risco de falhas no serviço:

Implementar políticas de ciclo de vida de chaves  
Estabeleça procedimentos claros para criação, alternância e retirada de chaves. Documente quais chaves são usadas por quais AWS IoT Core recursos e mantenha um inventário das chaves ativas.

Usar as políticas do IAM para restringir a exclusão de chaves  
Crie políticas do IAM que evitem que usuários não autorizados excluam ou desabilitem chaves críticas de criptografia. Use condições para exigir aprovação adicional para operações de exclusão de chaves.

Ativar CloudTrail registro  
Monitore todas as AWS KMS principais operações CloudTrail para detectar atividades de gerenciamento de chaves não autorizadas ou acidentais. Configure alertas para exclusão e desativação de chaves ou alterações na política.

Procedimentos de substituição de chaves de teste  
Teste regularmente seus procedimentos de substituição de chaves em ambientes que não sejam de produção a fim de garantir que você possa se recuperar rapidamente de falhas relacionadas a chaves.

Manter backups de chaves  
Embora você não possa exportar material de AWS KMS chaves, mantenha registros detalhados das chaves ARNs, das políticas e das AWS IoT Core configurações associadas para facilitar a substituição rápida das chaves, se necessário.

Monitorar a integridade das chaves  
Monitore continuamente a métrica `CMK.Health` e configure alertas automatizados para alterações no status de integridade das chaves. Implemente respostas automatizadas para resolver rapidamente problemas relacionados a chaves.

**Importante**  
Sempre teste os procedimentos de atualização de chaves em ambientes de desenvolvimento antes de implementá-los na produção. Tenha um plano de reversão documentado e garanta que os procedimentos de substituição de chaves possam ser executados rapidamente em caso de emergências.

### Etapa 6: monitorar a integridade das chaves
<a name="health-status-monitoring"></a>

Como parte das verificações AWS IoT Core periódicas, CloudWatch métricas e registros são emitidos para fornecer visibilidade sobre o status de integridade da configuração de sua chave gerenciada pelo cliente

AWS IoT Core emite a `CMK.Health` métrica pelo CloudWatch menos uma vez a cada minuto. A métrica fornece informações sobre o status de integridade das chaves gerenciadas pelo cliente usadas AWS IoT Core para criptografar e descriptografar seus dados.

A métrica `CMK.Health` pode ter os seguintes valores:
+ O valor é`1`: AWS IoT Core é capaz de usar as chaves de criptografia com sucesso para criptografar e descriptografar seus dados.
+ O valor AWS IoT Core é`0`: não consegue usar as chaves de criptografia para criptografar e descriptografar seus dados.

AWS IoT Core também emite registros AWS IoT V2 quando o status de integridade das chaves de criptografia muda. Esses logs fornecem detalhes adicionais sobre a atualização do status de integridade. Para visualizar esses registros, você deve habilitar os registros AWS IoT V2. Os logs de `HEALTHY` são emitidos em nível de `INFO`, e os logs de `UNHEALTHY` são emitidos em nível de `ERROR`. Para acessar mais informações sobre níveis de log, consulte [Níveis de log](https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#log-level).

Os exemplos a seguir são entradas de CloudWatch registro emitidas por AWS IoT Core para indicar a atualização do status de saúde das chaves gerenciadas pelo cliente.

Para monitorar e responder de forma eficaz a mudanças no status de integridade das chaves:

1. **Configure CloudWatch alarmes** para a `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. **Ative o registro AWS IoT V2** para capturar eventos detalhados de alteração do status de saúde com códigos e mensagens de erro.

1. **Confira o status da configuração** para solucionar problemas:

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

1. **Investigue o status UNHEALTHY** examinando o campo `errorCode`:
   + `KMS_KEY_VALIDATION_ERROR`— Problema com a AWS KMS chave (desativado, excluído ou problemas de política)
   + `ROLE_VALIDATION_ERROR`: problema com o perfil do IAM (excluído, problemas de política ou problemas de confiança).

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

Quando o status das chaves de criptografia for atualizado de `UNHEALTHY` para`HEALTHY`, AWS IoT Core emitirá uma mensagem de log AWS IoT V2 no seguinte 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 para UNHEALTHY
<a name="healthy-to-unhealthy"></a>

Quando o status das chaves de criptografia for atualizado de `HEALTHY` para`UNHEALTHY`, AWS IoT Core emitirá uma mensagem de log AWS IoT V2 no seguinte 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"
}
```

**Atenção**  
Quando a integridade é fundamental`UNHEALTHY`, AWS IoT Core as operações falham imediatamente. Se isso ocorrer, revise as configurações das chaves, as permissões do perfil do IAM e as políticas. Monitore a métrica `CMK.Health` em busca de mudanças de status. Se as operações continuarem falhando após revisar suas configurações, entre em contato com o gerente de conta ou com o [AWS Support Center](https://console.aws.amazon.com/support/home#/) para receber assistência adicional.

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

Você também pode monitorar AWS IoT Core o uso da chave KMS para operações de criptografia e descriptografia. AWS IoT Core fará`DescribeKey`,, `Decrypt``ReEncrypt`, e `GenerateDataKeyWithoutPlaintext` operações em sua chave KMS para criptografar/descriptografar dados pertencentes à sua AWS conta armazenados em repouso.

Existem CloudTrail eventos para `DescribeKey``Decrypt`,`ReEncrypt`, `GenerateDataKeyWithoutPlaintext` e. Esses eventos monitoram AWS KMS as operações chamadas por AWS IoT Core para acessar dados criptografados pela chave gerenciada pelo cliente.

##### Exemplo de `Decrypt`
<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"
}
```

# Gerenciamento de identidade e acesso para AWS IoT
<a name="security-iam"></a>

AWS Identity and Access Management (IAM) é uma ferramenta AWS service (Serviço da AWS) que ajuda o administrador a controlar com segurança o acesso aos AWS recursos. Os administradores do IAM controlam quem pode ser *autenticado* (conectado) e *autorizado* (tem permissões) a usar AWS IoT os recursos. O IAM é um AWS service (Serviço da AWS) que você pode usar sem custo adicional.

**Topics**
+ [Público](#security_iam_audience)
+ [Como autenticar com identidades do IAM](#security_iam_authentication)
+ [Gerenciar o acesso usando políticas](#security_iam_access-manage)
+ [Como AWS IoT funciona com o IAM](security_iam_service-with-iam.md)
+ [AWS IoT exemplos de políticas baseadas em identidade](security_iam_id-based-policy-examples.md)
+ [AWS políticas gerenciadas para AWS IoT](security-iam-awsmanpol.md)
+ [Solução de problemas AWS IoT de identidade e acesso](security_iam_troubleshoot.md)

## Público
<a name="security_iam_audience"></a>

A forma como você usa AWS Identity and Access Management (IAM) difere com base na sua função:
+ **Usuário do serviço**: solicite permissões ao seu administrador se você não conseguir acessar os atributos (consulte [Solução de problemas AWS IoT de identidade e acesso](security_iam_troubleshoot.md)).
+ **Administrador do serviço**: determine o acesso do usuário e envie solicitações de permissão (consulte [Como AWS IoT funciona com o IAM](security_iam_service-with-iam.md))
+ **Administrador do IAM**: escreva políticas para gerenciar o acesso (consulte [AWS IoT exemplos de políticas baseadas em identidade](security_iam_id-based-policy-examples.md))

## Como autenticar com identidades do IAM
<a name="security_iam_authentication"></a>

 AWS IoT As identidades internas podem ser certificados de dispositivo (X.509), identidades do Amazon Cognito ou usuários ou grupos do IAM. Este tópico aborda apenas identidades do IAM. Para obter mais informações sobre as outras identidades que oferecem AWS IoT suporte, consulte[Autenticação de cliente](client-authentication.md).

A autenticação é como você faz login AWS usando suas credenciais de identidade. Você deve estar autenticado como usuário do IAM ou assumindo uma função do IAM. Usuário raiz da conta da AWS

Você pode fazer login como uma identidade federada usando credenciais de uma fonte de identidade como Centro de Identidade do AWS IAM (IAM Identity Center), autenticação de login único ou credenciais. Google/Facebook Para ter mais informações sobre como fazer login, consulte [Como fazer login em sua Conta da AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Guia do usuário do Início de Sessão da AWS *.

Para acesso programático, AWS fornece um SDK e uma CLI para assinar solicitações criptograficamente. Para ter mais informações, consulte [AWS Signature Version 4 para solicitações de API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) no *Guia do usuário do IAM*.

### Conta da AWS usuário root
<a name="security_iam_authentication-rootuser"></a>

 Ao criar um Conta da AWS, você começa com uma identidade de login chamada *usuário Conta da AWS raiz* que tem acesso completo a todos Serviços da AWS os recursos. É altamente recomendável não usar o usuário-raiz em tarefas diárias. Consulte as tarefas que exigem credenciais de usuário-raiz em [Tarefas que exigem credenciais de usuário-raiz](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) no *Guia do usuário do IAM*. 

### Usuários e grupos do IAM
<a name="security_iam_authentication-iamuser"></a>

Um *[usuário do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)* é uma identidade com permissões específicas para uma única pessoa ou aplicação. É recomendável usar credenciais temporárias, em vez de usuários do IAM com credenciais de longo prazo. Para obter mais informações, consulte [Exigir que usuários humanos usem a federação com um provedor de identidade para acessar AWS usando credenciais temporárias](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) no *Guia do usuário do IAM*.

Um [https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) especifica um conjunto de usuários do IAM e facilita o gerenciamento de permissões para grandes conjuntos de usuários. Para ter mais informações, consulte [Casos de uso de usuários do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) no *Guia do usuário do IAM*.

### Perfis do IAM
<a name="security_iam_authentication-iamrole"></a>

Uma *[perfil do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)* é uma identidade com permissões específicas que oferece credenciais temporárias. Você pode assumir uma função [mudando de um usuário para uma função do IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) ou chamando uma operação de AWS API AWS CLI ou. Para saber mais, consulte [Métodos para assumir um perfil](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) no *Manual do usuário do IAM*.

Os perfis do IAM são úteis para acesso de usuário federado, permissões de usuário do IAM temporárias, acesso entre contas, acesso entre serviços e aplicações em execução no Amazon EC2. Consulte mais informações em [Acesso a recursos entre contas no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) no *Guia do usuário do IAM*.

## Gerenciar o acesso usando políticas
<a name="security_iam_access-manage"></a>

Você controla o acesso AWS criando políticas e anexando-as a AWS identidades ou recursos. Uma política define permissões quando associada a uma identidade ou recurso. AWS avalia essas políticas quando um diretor faz uma solicitação. A maioria das políticas é armazenada AWS como documentos JSON. Para ter mais informações sobre documentos de política JSON, consulte [Visão geral das políticas JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) no *Guia do usuário do IAM*.

Por meio de políticas, os administradores especificam quem tem acesso a que, definindo qual **entidade principal** pode realizar **ações** em quais **recursos** e sob quais **condições**.

Por padrão, usuários e perfis não têm permissões. Um administrador do IAM cria políticas do IAM e as adiciona aos perfis, os quais os usuários podem então assumir. As políticas do IAM definem permissões, independentemente do método usado para realizar a operação.

### Políticas baseadas em identidade
<a name="security_iam_access-manage-id-based-policies"></a>

As políticas baseadas em identidade são documentos de políticas de permissão JSON que você anexa a uma identidade (usuário, grupo ou perfil). Essas políticas controlam quais ações as identidades podem realizar, em quais recursos e sob quais condições. Para saber como criar uma política baseada em identidade, consulte [Definir permissões personalizadas do IAM com as políticas gerenciadas pelo cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) no *Guia do Usuário do IAM*.

As políticas baseadas em identidade podem ser políticas *em linha* (incorporadas diretamente em uma única identidade) ou *políticas gerenciadas* (políticas autônomas anexadas a várias identidades). Para saber como escolher entre uma política gerenciada e políticas em linha, consulte [Escolher entre políticas gerenciadas e políticas em linha](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html) no *Guia do usuário do IAM*.

### Políticas baseadas em recursos
<a name="security_iam_access-manage-resource-based-policies"></a>

Políticas baseadas em recursos são documentos de políticas JSON que você anexa a um recurso. Entre os exemplos estão *políticas de confiança de perfil* do IAM e *políticas de bucket* do Amazon S3. Em serviços compatíveis com políticas baseadas em recursos, os administradores de serviço podem usá-las para controlar o acesso a um recurso específico. É necessário [especificar uma entidade principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) em uma política baseada em recursos.

Políticas baseadas em recursos são políticas em linha localizadas nesse serviço. Você não pode usar políticas AWS gerenciadas do IAM em uma política baseada em recursos.

### Listas de controle de acesso (ACLs)
<a name="security_iam_access-manage-acl"></a>

As listas de controle de acesso (ACLs) controlam quais diretores (membros da conta, usuários ou funções) têm permissões para acessar um recurso. ACLs são semelhantes às políticas baseadas em recursos, embora não usem o formato de documento de política JSON.

O Amazon S3 e o AWS WAF Amazon VPC são exemplos de serviços que oferecem suporte. ACLs Para saber mais ACLs, consulte a [visão geral da lista de controle de acesso (ACL)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html) no *Guia do desenvolvedor do Amazon Simple Storage Service*.

### Outros tipos de política
<a name="security_iam_access-manage-other-policies"></a>

AWS oferece suporte a tipos de políticas adicionais que podem definir o máximo de permissões concedidas por tipos de políticas mais comuns:
+ **Limites de permissões**: definem o número máximo de permissões que uma política baseada em identidade pode conceder a uma entidade do IAM. Para saber mais sobre limites de permissões, consulte [Limites de permissões para identidades do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) no *Guia do usuário do IAM*.
+ **Políticas de controle de serviço (SCPs)** — Especifique as permissões máximas para uma organização ou unidade organizacional em AWS Organizations. Para saber mais, consulte [Políticas de controle de serviço](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) no *Guia do usuário do AWS Organizations *.
+ **Políticas de controle de recursos (RCPs)** — Defina o máximo de permissões disponíveis para recursos em suas contas. Para obter mais informações, consulte [Políticas de controle de recursos (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) no *Guia AWS Organizations do usuário*.
+ **Políticas de sessão**: políticas avançadas transmitidas como um parâmetro durante a criação de uma sessão temporária para um perfil ou um usuário federado. Para saber mais, consulte [Políticas de sessão](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) no *Guia do usuário do IAM*.

### Vários tipos de política
<a name="security_iam_access-manage-multiple-policies"></a>

Quando vários tipos de política são aplicáveis a uma solicitação, é mais complicado compreender as permissões resultantes. Para saber como AWS determinar se uma solicitação deve ser permitida quando vários tipos de políticas estão envolvidos, consulte [Lógica de avaliação de políticas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) no *Guia do usuário do IAM*.

# Como AWS IoT funciona com o IAM
<a name="security_iam_service-with-iam"></a>

Antes de usar o IAM para gerenciar o acesso AWS IoT, você deve entender quais recursos do IAM estão disponíveis para uso AWS IoT. Para ter uma visão de alto nível de como AWS IoT e outros AWS serviços funcionam com o IAM, consulte [AWS Serviços que funcionam com o IAM](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_aws-services-that-work-with-iam.html) no *Guia do usuário do IAM*.

**Topics**
+ [AWS IoT políticas baseadas em identidade](#security_iam_service-with-iam-id-based-policies)
+ [AWS IoT políticas baseadas em recursos](#security_iam_service-with-iam-resource-based-policies)
+ [Autorização baseada em AWS IoT tags](#security_iam_service-with-iam-tags)
+ [AWS IoT Funções do IAM](#security_iam_service-with-iam-roles)

## AWS IoT políticas baseadas em identidade
<a name="security_iam_service-with-iam-id-based-policies"></a>

Com as políticas baseadas em identidade do IAM, é possível especificar ações permitidas ou negadas e recursos, bem como as condições sob as quais as ações são permitidas ou negadas. O AWS IoT oferece suporte a ações, recursos e chaves de condição específicos. Para conhecer todos os elementos usados em uma política JSON, consulte [Referência de elementos de política JSON do IAM](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_elements.html) no *Guia do usuário do IAM*.

### Ações
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

Os administradores podem usar políticas AWS JSON para especificar quem tem acesso ao quê. Ou seja, qual **entidade principal** pode executar **ações** em quais **recursos** e em que **condições**.

O elemento `Action` de uma política JSON descreve as ações que podem ser usadas para permitir ou negar acesso em uma política. Incluem ações em uma política para conceder permissões para executar a operação associada.

A tabela a seguir lista as ações do IAM IoT, a AWS IoT API associada e o recurso que a ação manipula.


****  

| Ações de políticas | AWS IoT API | Recursos | 
| --- | --- | --- | 
| IoT: AcceptCertificateTransfer | AcceptCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  O Conta da AWS especificado no ARN deve ser a conta para a qual o certificado está sendo transferido.   | 
| 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 | nenhuma  | 
| IoT: AttachPolicy | AttachPolicy |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` or `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`  O Conta da AWS especificado no ARN deve ser a conta para a qual o certificado está sendo transferido.   | 
| 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 | Nenhum | 
| 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`  Isso deve ser uma AWS IoT política, não uma política do 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 o grupo que está sendo criado e para o grupo pai, se usado  | 
| 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: excluir CACertificate | Excluir 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: excluir V2 LoggingLevel | Excluir 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) nenhuma  | 
| IoT: descrever CACertificate | Descreva 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 | Nenhum  | 
| IoT: DescribeEndpoint | DescribeEndpoint | \$1 | 
| IoT: DescribeEventConfigurations | DescribeEventConfigurations | nenhuma  | 
| 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 | Nenhum | 
| 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 | Nenhum | 
| 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` or `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 | Nenhum | 
| 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` or `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: ListAuthorizers | ListAuthorizers | Nenhum | 
| IoT: lista CACertificates | Lista CACertificates | \$1 | 
| IoT: ListCertificates | ListCertificates | \$1 | 
| IoT: CA ListCertificatesBy | ListCertificatesByCA | \$1 | 
| IoT: ListIndices | ListIndices | Nenhum | 
| IoT: ListJobExecutionsForJob | ListJobExecutionsForJob | Nenhum | 
| IoT: ListJobExecutionsForThing | ListJobExecutionsForThing | Nenhum | 
| IoT: ListJobs | ListJobs |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` se o thingGroupName parâmetro for usado  | 
| IoT: ListJobTemplates | ListJobs | Nenhum | 
| 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 | Nenhum | 
| IoT: ListTargetsForPolicy | ListTargetsForPolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: ListThingGroups | ListThingGroups | Nenhum | 
| 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 | Nenhum | 
| IoT: ListThingRegistrationTasks | ListThingRegistrationTasks | Nenhum | 
| 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 | Nenhum | 
| IoT: registro CACertificate | Registre-se CACertificate | \$1 | 
| IoT: RegisterCertificate | RegisterCertificate | \$1 | 
| IoT: RegisterThing | RegisterThing | Nenhum | 
| 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 | Configurar V2 LoggingLevel |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: SetV2 LoggingOptions | Configurar V2 LoggingOptions |  `arn:aws:iot:region:account-id:role/role-name`  | 
| IoT: StartThingRegistrationTask | StartThingRegistrationTask | Nenhum | 
| IoT: StopThingRegistrationTask | StopThingRegistrationTask | Nenhum | 
| IoT: TestAuthorization | TestAuthorization |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: TestInvokeAuthorizer | TestInvokeAuthorizer | Nenhum | 
| 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: atualização CACertificate | Atualizar 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 | Nenhum | 
| IoT: UpdateIndexingConfiguration | UpdateIndexingConfiguration | Nenhum | 
| 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`  | 

As ações políticas AWS IoT usam o seguinte prefixo antes da ação:`iot:`. Por exemplo, para conceder permissão a alguém para listar todas as coisas de IoT Conta da AWS registradas na `ListThings` API, você inclui a `iot:ListThings` ação na política dessa pessoa. As declarações de política devem incluir um `NotAction` elemento `Action` ou. AWS IoT define seu próprio conjunto de ações que descrevem as tarefas que você pode executar com esse serviço.

Para especificar várias ações em uma única instrução, separe-as com vírgulas, como segue:

```
"Action": [
      "ec2:action1",
      "ec2:action2"
```

Você também pode especificar várias ações usando caracteres curinga (\$1). Por exemplo, para especificar todas as ações que começam com a palavra `Describe`, inclua a seguinte ação:

```
"Action": "iot:Describe*"
```

Para ver uma lista de AWS IoT ações, consulte [Ações definidas por AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) no *Guia do usuário do IAM*.

#### Ações do Device Advisor
<a name="security_iam_service-actions-device-advisor"></a>

A tabela a seguir lista as ações do IoT Device Advisor do IAM, a API do AWS IoT Device Advisor associada e o recurso que a ação manipula.


****  

| Ações de políticas | AWS IoT API | Recursos | 
| --- | --- | --- | 
| consultor de dispositivos de IoT: CreateSuiteDefinition | CreateSuiteDefinition |  Nenhum  | 
| consultor de dispositivos de IoT: DeleteSuiteDefinition | DeleteSuiteDefinition |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| consultor de dispositivos de IoT: GetSuiteDefinition | GetSuiteDefinition |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| consultor de dispositivos de IoT: GetSuiteRun | GetSuiteRun |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-run-id`  | 
| consultor de dispositivos de IoT: GetSuiteRunReport | GetSuiteRunReport |  `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 
| consultor de dispositivos de IoT: ListSuiteDefinitions | ListSuiteDefinitions | Nenhum | 
| consultor de dispositivos de IoT: ListSuiteRuns | ListSuiteRuns |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| consultor 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`  | 
| consultor de dispositivos de IoT: StartSuiteRun | StartSuiteRun |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| consultor 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`  | 
| consultor 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`  | 
| consultor de dispositivos de IoT: UpdateSuiteDefinition | UpdateSuiteDefinition |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| consultor de dispositivos de IoT: StopSuiteRun | StopSuiteRun |  `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 

As ações de política no AWS IoT Device Advisor usam o seguinte prefixo antes da ação:`iotdeviceadvisor:`. Por exemplo, para conceder permissão a alguém para listar todas as definições de suítes Conta da AWS registradas na ListSuiteDefinitions API, você inclui a `iotdeviceadvisor:ListSuiteDefinitions` ação na política dessa pessoa.

### Recursos
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

Os administradores podem usar políticas AWS JSON para especificar quem tem acesso ao quê. Ou seja, qual **entidade principal** pode executar **ações** em quais **recursos** e em que **condições**.

O elemento de política JSON `Resource` especifica o objeto ou os objetos aos quais a ação se aplica. Como prática recomendada, especifique um recurso usando seu [nome do recurso da Amazon (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html). Para ações que não oferecem compatibilidade com permissões em nível de recurso, use um curinga (\$1) para indicar que a instrução se aplica a todos os recursos.

```
"Resource": "*"
```


**AWS IoT recursos**  

| Ações de políticas | AWS IoT API | Recursos | 
| --- | --- | --- | 
| IoT: AcceptCertificateTransfer | AcceptCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  O Conta da AWS especificado no ARN deve ser a conta para a qual o certificado está sendo transferido.   | 
| 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 | Nenhum  | 
| IoT: AttachPolicy | AttachPolicy | `arn:aws:iot:region:account-id:thinggroup/thing-group-name` or `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`  O Conta da AWS especificado no ARN deve ser a conta para a qual o certificado está sendo transferido.   | 
| 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 | Nenhum | 
| 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`  Isso deve ser uma AWS IoT política, não uma política do 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 o grupo que está sendo criado e para o grupo pai, se usado  | 
| 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: excluir CACertificate | Excluir 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: excluir V2 LoggingLevel | Excluir 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) nenhuma  | 
| IoT: descrever CACertificate | Descreva 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 | Nenhum  | 
| IoT: DescribeEndpoint | DescribeEndpoint | \$1 | 
| IoT: DescribeEventConfigurations | DescribeEventConfigurations | nenhuma  | 
| 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 | Nenhum | 
| 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 | Nenhum | 
| 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` or `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 | Nenhum | 
| 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` or `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: ListAuthorizers | ListAuthorizers | Nenhum | 
| IoT: lista CACertificates | Lista CACertificates | \$1 | 
| IoT: ListCertificates | ListCertificates | \$1 | 
| IoT: CA ListCertificatesBy | ListCertificatesByCA | \$1 | 
| IoT: ListIndices | ListIndices | Nenhum | 
| IoT: ListJobExecutionsForJob | ListJobExecutionsForJob | Nenhum | 
| IoT: ListJobExecutionsForThing | ListJobExecutionsForThing | Nenhum | 
| IoT: ListJobs | ListJobs |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` se o thingGroupName parâmetro for usado  | 
| IoT: ListJobTemplates | ListJobTemplates | Nenhum | 
| 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 | Nenhum | 
| IoT: ListTargetsForPolicy | ListTargetsForPolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: ListThingGroups | ListThingGroups | Nenhum | 
| 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 | Nenhum | 
| IoT: ListThingRegistrationTasks | ListThingRegistrationTasks | Nenhum | 
| 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 | Nenhum | 
| IoT: registro CACertificate | Registre-se CACertificate | \$1 | 
| IoT: RegisterCertificate | RegisterCertificate | \$1 | 
| IoT: RegisterThing | RegisterThing | Nenhum | 
| 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 | Configurar V2 LoggingLevel | \$1 | 
| IoT: SetV2 LoggingOptions | Configurar V2 LoggingOptions | \$1 | 
| IoT: StartThingRegistrationTask | StartThingRegistrationTask | Nenhum | 
| IoT: StopThingRegistrationTask | StopThingRegistrationTask | Nenhum | 
| IoT: TestAuthorization | TestAuthorization |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: TestInvokeAuthorizer | TestInvokeAuthorizer | Nenhum | 
| 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: atualização CACertificate | Atualizar 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 | Nenhum | 
| IoT: UpdateIndexingConfiguration | UpdateIndexingConfiguration | Nenhum | 
| 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 obter mais informações sobre o formato de ARNs, consulte [Amazon Resource Names (ARNs) e AWS Service Namespaces](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).

Algumas AWS IoT ações, como as de criação de recursos, não podem ser executadas em um recurso específico. Nesses casos, é necessário utilizar o caractere curinga (\$1).

```
"Resource": "*"
```

Para ver uma lista dos tipos de AWS IoT recursos e seus ARNs, consulte [Resources Defined by AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-resources-for-iam-policies) no *Guia do usuário do IAM*. Para saber com quais ações você pode especificar o ARN de cada recurso, consulte [Ações definidas pelo AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions).

#### Recursos do Device Advisor
<a name="security_iam_service-device-advisor-resources"></a>

Para definir restrições em nível de recurso para as políticas de IAM do AWS IoT Device Advisor, use os seguintes formatos de ARN de recursos para definições e execuções de suítes.

Formato do ARN de recurso de definição de suíte  
`arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`

Formato do ARN de recurso de execução de suíte  
`arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`

### Chaves de condição
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

Os administradores podem usar políticas AWS JSON para especificar quem tem acesso ao quê. Ou seja, qual **entidade principal** pode executar **ações** em quais **recursos** e em que **condições**.

O elemento `Condition` especifica quando as instruções são executadas com base em critérios definidos. É possível criar expressões condicionais que usem [agentes de condição](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html), como “igual a” ou “menor que”, para fazer a condição da política corresponder aos valores na solicitação. Para ver todas as chaves de condição AWS globais, consulte as [chaves de contexto de condição AWS global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) no *Guia do usuário do IAM*.

AWS IoT define seu próprio conjunto de chaves de condição e também oferece suporte ao uso de algumas chaves de condição globais. Para ver todas as chaves de condição AWS globais, consulte [Chaves de contexto de condição AWS global](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_condition-keys.html) no *Guia do usuário do IAM*. 


**AWS IoT chaves de condição**  

| AWS IoT chaves de condição | Descrição | Tipo | 
| --- | --- | --- | 
| aws:RequestTag/\$1\$1tag-key\$1 | Uma chave de tag que está presente na solicitação que o usuário faz para o AWS IoT. | String | 
| aws:ResourceTag/\$1\$1tag-key\$1 | O componente chave da tag de uma tag anexada a um AWS IoT recurso. | String | 
| aws:TagKeys | A lista de todos os nomes de chaves de etiquetas associadas ao recurso na solicitação. | String | 

Para ver uma lista de chaves de AWS IoT condição, consulte [Chaves de condição AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-policy-keys) no *Guia do usuário do IAM*. Para saber com quais ações e recursos você pode usar uma chave de condição, consulte [Ações definidas por AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions).

### Exemplos
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



Para ver exemplos de políticas AWS IoT baseadas em identidade, consulte. [AWS IoT exemplos de políticas baseadas em identidade](security_iam_id-based-policy-examples.md)

## AWS IoT políticas baseadas em recursos
<a name="security_iam_service-with-iam-resource-based-policies"></a>

Políticas baseadas em recursos são documentos de política JSON que especificam quais ações um diretor específico pode realizar no AWS IoT recurso e sob quais condições.

AWS IoT não é compatível com políticas baseadas em recursos do IAM. No entanto, ele apóia políticas AWS IoT baseadas em recursos. Para obter mais informações, consulte [AWS IoT Core políticas](iot-policies.md).

## Autorização baseada em AWS IoT tags
<a name="security_iam_service-with-iam-tags"></a>

Você pode anexar tags a AWS IoT recursos ou passar tags em uma solicitação para AWS IoT. Para controlar o acesso baseado em tags, forneça informações sobre as tags no [elemento de condição](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_elements_condition.html) de uma política usando as `iot:ResourceTag/key-name`, `aws:RequestTag/key-name` ou chaves de condição `aws:TagKeys`. Para obter mais informações, consulte [Utilização de tags com políticas do IAM](tagging-iot-iam.md). Para obter mais informações sobre a marcação de AWS IoT recursos, consulte[Marcando seus recursos AWS IoT](tagging-iot.md).

Para visualizar um exemplo de política baseada em identidade que visa limitar o acesso a um recurso baseado nas tags desse recurso, consulte [Visualizando AWS IoT recursos com base em tags](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-view-thing-tags).

## AWS IoT Funções do IAM
<a name="security_iam_service-with-iam-roles"></a>

Uma [função do IAM](https://docs.aws.amazon.com/service-authorization/latest/reference/id_roles.html) é uma entidade dentro da sua Conta da AWS que tem permissões específicas.

### Usando credenciais temporárias com AWS IoT
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

É possível usar credenciais temporárias para fazer login com federação, assumir um perfil do IAM ou assumir um perfil entre contas. Você obtém credenciais de segurança temporárias chamando operações de AWS STS API, como [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)ou [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html). 

AWS IoT suporta o uso de credenciais temporárias. 

### Perfis vinculados ao serviço
<a name="security_iam_service-with-iam-roles-service-linked"></a>

[As funções vinculadas ao serviço](https://docs.aws.amazon.com/service-authorization/latest/reference/id_roles_terms-and-concepts.html#iam-term-service-linked-role) permitem que AWS os serviços acessem recursos em outros serviços para concluir uma ação em seu nome. Os perfis vinculados a serviço aparecem em sua conta do IAM e são de propriedade do serviço. Um administrador do IAM pode visualizar, mas não pode editar as permissões para perfis vinculados a serviço.

AWS IoT não oferece suporte a funções vinculadas a serviços.

### Perfis de serviço
<a name="security_iam_service-with-iam-roles-service"></a>

Esse atributo permite que um serviço assuma um [perfil de serviço](https://docs.aws.amazon.com/service-authorization/latest/reference/id_roles_terms-and-concepts.html#iam-term-service-role) em seu nome. O perfil permite que o serviço acesse recursos em outros serviços para concluir uma ação em seu nome. Os perfis de serviço aparecem em sua conta do IAM e são de propriedade da conta. Isso significa que um administrador do IAM pode alterar as permissões para esse perfil. Porém, fazer isso pode alterar a funcionalidade do serviço.

# AWS IoT exemplos de políticas baseadas em identidade
<a name="security_iam_id-based-policy-examples"></a>

Por padrão, os usuários e os perfis do IAM não têm permissão para criar ou modificar recursos do AWS IoT . Eles também não podem realizar tarefas usando a AWS API Console de gerenciamento da AWS AWS CLI, ou. Um administrador do IAM deve criar políticas do IAM que concedam aos usuários e perfis permissão para executarem operações de API específicas nos recursos especificados de que precisam. O administrador deve anexar essas políticas aos usuários ou grupos que exigem essas permissões.

Para saber como criar uma política baseada em identidade do IAM usando esses exemplos de documentos de política JSON, consulte [Criar políticas na guia JSON](https://docs.aws.amazon.com/service-authorization/latest/reference/access_policies_create.html#access_policies_create-json-editor) no *Guia do usuário do IAM*.

**Topics**
+ [Práticas recomendadas de política](#security_iam_service-with-iam-policy-best-practices)
+ [Usando o AWS IoT console](#security_iam_id-based-policy-examples-console)
+ [Permitir que os usuários visualizem suas próprias permissões](#security_iam_id-based-policy-examples-view-own-permissions)
+ [Visualizando AWS IoT recursos com base em tags](#security_iam_id-based-policy-examples-view-thing-tags)
+ [Visualizando recursos AWS IoT do Device Advisor com base em tags](#security_iam-device-advisor-tags)

## Práticas recomendadas de política
<a name="security_iam_service-with-iam-policy-best-practices"></a>

As políticas baseadas em identidade determinam se alguém pode criar, acessar ou excluir AWS IoT recursos em sua conta. Essas ações podem incorrer em custos para sua Conta da AWS. Ao criar ou editar políticas baseadas em identidade, siga estas diretrizes e recomendações:
+ **Comece com políticas AWS gerenciadas e avance para permissões de privilégios mínimos — Para começar a conceder permissões** para seus usuários e cargas de trabalho, use as *políticas AWS gerenciadas* que concedem permissões para muitos casos de uso comuns. Eles estão disponíveis no seu Conta da AWS. Recomendamos que você reduza ainda mais as permissões definindo políticas gerenciadas pelo AWS cliente que sejam específicas para seus casos de uso. Para saber mais, consulte [Políticas gerenciadas pela AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) ou [Políticas gerenciadas pela AWS para funções de trabalho](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) no *Guia do usuário do IAM*.
+ **Aplique permissões de privilégio mínimo**: ao definir permissões com as políticas do IAM, conceda apenas as permissões necessárias para executar uma tarefa. Você faz isso definindo as ações que podem ser executadas em recursos específicos sob condições específicas, também conhecidas como *permissões de privilégio mínimo*. Para saber mais sobre como usar o IAM para aplicar permissões, consulte [Políticas e permissões no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) no *Guia do usuário do IAM*.
+ **Use condições nas políticas do IAM para restringir ainda mais o acesso**: é possível adicionar uma condição às políticas para limitar o acesso a ações e recursos. Por exemplo, é possível escrever uma condição de política para especificar que todas as solicitações devem ser enviadas usando SSL. Você também pode usar condições para conceder acesso às ações de serviço se elas forem usadas por meio de uma ação específica AWS service (Serviço da AWS), como CloudFormation. Para saber mais, consulte [Elementos da política JSON do IAM: condição](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) no *Guia do usuário do IAM*.
+ **Use o IAM Access Analyzer para validar suas políticas do IAM a fim de garantir permissões seguras e funcionais**: o IAM Access Analyzer valida as políticas novas e existentes para que elas sigam a linguagem de política do IAM (JSON) e as práticas recomendadas do IAM. O IAM Access Analyzer oferece mais de cem verificações de política e recomendações práticas para ajudar a criar políticas seguras e funcionais. Para saber mais, consulte [Validação de políticas do IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) no *Guia do Usuário do IAM*.
+ **Exigir autenticação multifator (MFA**) — Se você tiver um cenário que exija usuários do IAM ou um usuário root, ative Conta da AWS a MFA para obter segurança adicional. Para exigir MFA quando as operações de API forem chamadas, adicione condições de MFA às suas políticas. Para saber mais, consulte [Configuração de acesso à API protegido por MFA](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) no *Guia do Usuário do IAM*.

Para saber mais sobre as práticas recomendadas do IAM, consulte [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) no *Guia do usuário do IAM*.

## Usando o AWS IoT console
<a name="security_iam_id-based-policy-examples-console"></a>

Para acessar o AWS IoT console, você deve ter um conjunto mínimo de permissões. Essas permissões devem permitir que você liste e visualize detalhes sobre os AWS IoT recursos em seu Conta da AWS. Caso crie uma política baseada em identidade mais restritiva que as permissões mínimas necessárias, o console não funcionará como pretendido para entidades (usuários ou perfis) com essa política.

Para garantir que essas entidades ainda possam usar o AWS IoT console, anexe também a seguinte política AWS gerenciada às entidades:`AWSIoTFullAccess`. Para obter mais informações, consulte [Adicionar permissões a um usuário](https://docs.aws.amazon.com/service-authorization/latest/reference/id_users_change-permissions.html#users_change_permissions-add-console) no *Guia do usuário do IAM*.

Você não precisa permitir permissões mínimas do console para usuários que estão fazendo chamadas somente para a API AWS CLI ou para a AWS API. Em vez disso, permita o acesso somente às ações que correspondem à operação da API que você está tentando executar.

## Permitir que os usuários visualizem suas próprias permissões
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

Este exemplo mostra como criar uma política que permita que os usuários do IAM visualizem as políticas gerenciadas e em linha anexadas a sua identidade de usuário. Essa política inclui permissões para concluir essa ação no console ou programaticamente usando a API AWS CLI ou 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": "*"
        }
    ]
}
```

## Visualizando AWS IoT recursos com base em tags
<a name="security_iam_id-based-policy-examples-view-thing-tags"></a>

É possível utilizar condições na política baseada em identidade para controlar o acesso aos recursos do AWS IoT com base em tags. Este exemplo mostra como é possível criar uma política que permite visualizar um objeto. No entanto, a permissão é concedida somente se a tag do objeto `Owner` tiver o valor do nome de usuário desse usuário. Essa política também concede as permissões necessárias concluir essa ação no console.

****  

```
{
    "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}"}
        }
        }
    ]
}
```

É possível anexar essa política aos usuários do IAM na sua conta. Se um usuário chamado `richard-roe` tentar visualizar um grupo de AWS IoT cobrança, o grupo de cobrança deverá estar marcado com `Owner=richard-roe` ou. `owner=richard-roe` Caso contrário, ele terá o acesso negado. A chave da tag de condição `Owner` corresponde a `Owner` e a `owner` porque os nomes das chaves de condição não fazem distinção entre maiúsculas e minúsculas. Para obter mais informações, consulte [IAM JSON Policy Elements: Condition](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_elements_condition.html) (Elementos da política JSON do IAM: Condição) no *Guia do usuário do IAM*.

## Visualizando recursos AWS IoT do Device Advisor com base em tags
<a name="security_iam-device-advisor-tags"></a>

Você pode usar condições em sua política baseada em identidade para controlar o acesso aos recursos do AWS IoT Device Advisor com base em tags. O exemplo a seguir mostra como criar uma política que permite visualizar uma definição de suíte específica. No entanto, a permissão será concedida somente se a tag de definição de suíte tiver `SuiteType` definido como o valor de `MQTT`. Essa política também concede as permissões necessárias concluir essa ação no console.

****  

```
{
    "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 gerenciadas para AWS IoT
<a name="security-iam-awsmanpol"></a>







Para adicionar permissões a usuários, grupos e funções, é mais fácil usar políticas AWS gerenciadas do que escrever políticas você mesmo. É necessário tempo e experiência para criar [políticas gerenciadas pelo cliente do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) que fornecem à sua equipe apenas as permissões de que precisam. Para começar rapidamente, você pode usar nossas políticas AWS gerenciadas. Essas políticas abrangem casos de uso comuns e estão disponíveis na sua Conta da AWS. Para obter mais informações sobre políticas AWS gerenciadas, consulte [políticas AWS gerenciadas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) no *Guia do usuário do IAM*.

AWS os serviços mantêm e atualizam as políticas AWS gerenciadas. Você não pode alterar as permissões nas políticas AWS gerenciadas. Os serviços ocasionalmente acrescentam permissões adicionais a uma política gerenciada pela AWS para oferecer suporte a novos recursos. Esse tipo de atualização afeta todas as identidades (usuários, grupos e funções) em que a política está anexada. É mais provável que os serviços atualizem uma política gerenciada pela AWS quando um novo recurso for iniciado ou novas operações se tornarem disponíveis. Os serviços não removem as permissões de uma política AWS gerenciada, portanto, as atualizações de políticas não violarão suas permissões existentes.

Além disso, AWS oferece suporte a políticas gerenciadas para funções de trabalho que abrangem vários serviços. Por exemplo, a política **ReadOnlyAccess** AWS gerenciada fornece acesso somente de leitura a todos os AWS serviços e recursos. Quando um serviço inicia um novo atributo, a AWS adiciona permissões somente leitura para novas operações e atributos. Para obter uma lista e descrições das políticas de perfis de trabalho, consulte [Políticas gerenciadas pela AWS para perfis de trabalho](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) no *Guia do usuário do IAM*.

**nota**  
AWS IoT funciona com ambas as políticas AWS IoT e do IAM. Este tópico discute somente as políticas do IAM, que definem uma ação política para operações de API do ambiente de gerenciamento e do plano de dados. Consulte também [AWS IoT Core políticas](iot-policies.md).









## AWS política gerenciada: AWSIo TConfig Acesso
<a name="security-iam-awsmanpol-AWSIoTConfigAccess"></a>





É possível anexar a política `AWSIoTConfigAccess` às suas identidades do IAM.



Essa política concede as permissões de identidade associadas que permitem acesso a todas as operações de configuração de AWS IoT . Essa política pode afetar o processamento de dados e armazenamento. Para ver essa política no Console de gerenciamento da AWS, consulte [AWSIoTConfigAccess](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTConfigAccess$jsonEditor?section=permissions).



**Detalhes das permissões**

Esta política inclui as seguintes permissões.




+ `iot`— Recupere AWS IoT dados e execute ações de configuração 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 gerenciada: AWSIo TConfig ReadOnlyAccess
<a name="security-iam-awsmanpol-AWSIoTConfigReadOnlyAccess"></a>





É possível anexar a política `AWSIoTConfigReadOnlyAccess` às suas identidades do IAM.



Essa política concede as permissões de identidade associadas que permitem acesso somente de leitura a todas as operações de configuração de AWS IoT . Para ver essa política no Console de gerenciamento da AWS, consulte [AWSIoTConfigReadOnlyAccess](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTConfigReadOnlyAccess$jsonEditor?section=permissions).



**Detalhes das permissões**

Esta política inclui as seguintes permissões.




+ `iot` – Executar operações somente de leitura das ações de configuração 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 gerenciada: AWSIo TData Acesso
<a name="security-iam-awsmanpol-AWSIoTDataAccess"></a>





É possível anexar a política `AWSIoTDataAccess` às suas identidades do IAM.



Essa política concede às identidades associadas permissões que permitem o acesso a todas as operações AWS IoT de dados. As operações de dados enviam dados por protocolos MQTT ou HTTP. Para visualizar essa política no Console de gerenciamento da 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).



**Detalhes das permissões**

Esta política inclui as seguintes permissões.




+ `iot`— Recupere AWS IoT dados e permita acesso total às ações AWS IoT de mensagens.



****  

```
{
    "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 gerenciada: AWSIo TFull Acesso
<a name="security-iam-awsmanpol-AWSIoTFullAccess"></a>





É possível anexar a política `AWSIoTFullAccess` às suas identidades do IAM.



Essa política concede as permissões de identidade associadas que permitem acesso a todas as operações de configuração e mensagens de AWS IoT . Para ver essa política no Console de gerenciamento da 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).



**Detalhes das permissões**

Esta política inclui as seguintes permissões.




+ `iot`— recupere AWS IoT dados e permita acesso total às ações AWS IoT de configuração e mensagens.
+ `iotjobsdata`— Recupere os dados do AWS IoT Jobs e permita acesso total às operações da API do plano de dados do AWS IoT Jobs.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:*",
                "iotjobsdata:*"
            ],
            "Resource": "*"
        }
    ]
}
```

## AWS política gerenciada: AWSIo TLogging
<a name="security-iam-awsmanpol-AWSIoTLogging"></a>





É possível anexar a política `AWSIoTLogging` às suas identidades do IAM.



Essa política concede às permissões de identidade associadas que permitem o acesso para criar grupos do Amazon CloudWatch Logs e transmitir registros para os grupos. Essa política está anexada à sua função de CloudWatch registro. Para ver essa política no Console de gerenciamento da 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).



**Detalhes das permissões**

Esta política inclui as seguintes permissões.




+ `logs`— Recuperar CloudWatch registros. Também permite a criação de grupos de CloudWatch registros e registros de streaming para os 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 gerenciada: AWSIo TOTAUpdate
<a name="security-iam-awsmanpol-AWSIoTOTAUpdate"></a>





É possível anexar a política `AWSIoTOTAUpdate` às suas identidades do IAM.



Essa política concede às identidades associadas permissões que permitem acesso para criar AWS IoT trabalhos, trabalhos de assinatura de AWS IoT código e descrever trabalhos de assinantes de AWS código. Para ver essa política no Console de gerenciamento da AWS, consulte [`AWSIoTOTAUpdate`.](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTOTAUpdate?section=permissions)



**Detalhes das permissões**

Esta política inclui as seguintes permissões.




+ `iot`— Crie AWS IoT trabalhos e trabalhos de assinatura de código.
+ `signer`— Execute a criação de trabalhos de assinante de AWS código.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "iot:CreateJob",
            "signer:DescribeSigningJob"
        ],
        "Resource": "*"
    }
}
```

## AWS política gerenciada: AWSIo TRule ações
<a name="security-iam-awsmanpol-AWSIoTRuleActions"></a>





É possível anexar a política `AWSIoTRuleActions` às suas identidades do IAM.



Essa política concede às identidades associadas permissões que permitem acesso a tudo o que AWS service (Serviço da AWS)é suportado em ações de AWS IoT regras. Para ver essa política no Console de gerenciamento da 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).



**Detalhes das permissões**

Esta política inclui as seguintes permissões.




+ `iot` - Executar ações para publicar mensagens de ação de regras.
+ `dynamodb` - Inserir uma mensagem em uma tabela do DynamoDB ou divida uma mensagem em várias colunas de uma tabela do DynamoDB.
+ `s3` - Armazenar um objeto em um bucket do Amazon S3.
+ `kinesis` - Enviar uma mensagem para um objeto de fluxo do Amazon Kinesis.
+ `firehose`: inserir um registro em um objeto de fluxo do Firehose.
+ `cloudwatch`- Altere o estado do CloudWatch alarme ou envie dados da mensagem para a CloudWatch métrica.
+ `sns` - Executar a operação para publicar uma notificação usando o Amazon SNS. Essa operação tem como escopo os tópicos do AWS IoT SNS.
+ `sqs` - Inserir uma mensagem para adicionar à fila do SQS.
+ `es`- Envie uma mensagem para o OpenSearch serviço de serviço.



****  

```
{
    "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 gerenciada: AWSIo TThings Registro
<a name="security-iam-awsmanpol-AWSIoTThingsRegistration"></a>





É possível anexar a política `AWSIoTThingsRegistration` às suas identidades do IAM.



Essa política concede as permissões de identidade associadas que permitem o acesso para registrar objetos em massa usando a API `StartThingRegistrationTask`. Essa política pode afetar o processamento de dados e armazenamento. Para ver essa política no Console de gerenciamento da 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).



**Detalhes das permissões**

Esta política inclui as seguintes permissões.




+ `iot` - Executar ações para criar objetos e anexar políticas e certificados ao se registrar em massa.



****  

```
{
    "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 atualizações nas políticas AWS gerenciadas
<a name="security-iam-awsmanpol-updates"></a>



Veja detalhes sobre as atualizações das políticas AWS gerenciadas AWS IoT desde que esse serviço começou a rastrear essas alterações. Para receber alertas automáticos sobre alterações nessa página, assine o feed RSS na página Histórico do AWS IoT documento.




| Alteração | Descrição | Data | 
| --- | --- | --- | 
|  [AWSIoTFullAcesso](#security-iam-awsmanpol-AWSIoTFullAccess) — Atualização de uma política existente  |  AWS IoT adicionou novas permissões para permitir que os usuários acessem as operações da API do plano de dados do AWS IoT Jobs usando o protocolo HTTP. Um novo prefixo de política do IAM,`iotjobsdata:`, fornece um controle de acesso mais refinado para acessar os endpoints do plano de dados de AWS IoT Jobs. Para operações de API do ambiente de gerenciamento, o prefixo `iot:` ainda é usado. Para obter mais informações, consulte [AWS IoT Core políticas para o protocolo HTTPS](iot-data-plane-jobs.md#iot-jobs-data-http).  | 11 de maio de 2022 | 
|  AWS IoT começou a rastrear as alterações  |  AWS IoT começou a rastrear as mudanças em suas políticas AWS gerenciadas.  | 11 de maio de 2022 | 

# Solução de problemas AWS IoT de identidade e acesso
<a name="security_iam_troubleshoot"></a>

Use as informações a seguir para ajudá-lo a diagnosticar e corrigir problemas comuns que você pode encontrar ao trabalhar com AWS IoT um IAM.

**Topics**
+ [Não estou autorizado a realizar uma ação em AWS IoT](#security_iam_troubleshoot-no-permissions)
+ [Não estou autorizado a realizar iam: PassRole](#security_iam_troubleshoot-passrole)
+ [Quero permitir que pessoas fora da minha Conta da AWS acessem meus AWS IoT recursos](#security_iam_troubleshoot-cross-account-access)

## Não estou autorizado a realizar uma ação em AWS IoT
<a name="security_iam_troubleshoot-no-permissions"></a>

Se você receber uma mensagem de erro informando que não tem autorização para executar uma ação, suas políticas deverão ser atualizadas para permitir que você realize a ação.

O erro do exemplo a seguir ocorre quando o usuário do IAM `mateojackson` tenta usar o console para visualizar detalhes sobre um recurso de objeto, mas não tem as permissões `iot:DescribeThing`.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: iot:DescribeThing on resource: MyIoTThing
```

Nesse caso, a política do usuário `mateojackson` deve ser atualizada para permitir o acesso ao recurso de objeto usando a ação `iot:DescribeThing`. 

Se precisar de ajuda, entre em contato com seu AWS administrador. Seu administrador é a pessoa que forneceu suas credenciais de login.

Usando o AWS IoT Device Advisor  
Se você estiver usando o AWS IoT Device Advisor, o exemplo de erro a seguir ocorre quando o usuário `mateojackson` tenta usar o console para visualizar detalhes sobre a definição de uma suíte, mas não tem as `iotdeviceadvisor:GetSuiteDefinition` permissões.  

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: iotdeviceadvisor:GetSuiteDefinition on resource: MySuiteDefinition
```
Nesse caso, a política do usuário `mateojackson` deve ser atualizada para permitir o acesso ao recurso *`MySuiteDefinition`* usando a ação `iotdeviceadvisor:GetSuiteDefinition`.

## Não estou autorizado a realizar iam: PassRole
<a name="security_iam_troubleshoot-passrole"></a>

Se você receber uma mensagem de erro informando que não está autorizado a executar a ação `iam:PassRole`, as suas políticas devem ser atualizadas para permitir que você passe uma função para o AWS IoT.

Alguns Serviços da AWS permitem que você passe uma função existente para esse serviço em vez de criar uma nova função de serviço ou uma função vinculada ao serviço. Para fazê-lo, você deve ter permissões para passar o perfil para o serviço.

O exemplo de erro a seguir ocorre quando uma usuária do IAM chamada `marymajor` tenta utilizar o console para executar uma ação no AWS IoT. No entanto, a ação exige que o serviço tenha permissões concedidas por um perfil de serviço. Mary não tem permissões para passar o perfil para o serviço.

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

Nesse caso, as políticas de Mary devem ser atualizadas para permitir que ela realize a ação `iam:PassRole`.

Se precisar de ajuda, entre em contato com seu AWS administrador. Seu administrador é a pessoa que forneceu suas credenciais de login.

## Quero permitir que pessoas fora da minha Conta da AWS acessem meus AWS IoT recursos
<a name="security_iam_troubleshoot-cross-account-access"></a>

É possível criar um perfil que os usuários de outras contas ou pessoas fora da organização podem usar para acessar seus recursos. É possível especificar quem é confiável para assumir o perfil. Para serviços que oferecem suporte a políticas baseadas em recursos ou listas de controle de acesso (ACLs), você pode usar essas políticas para conceder às pessoas acesso aos seus recursos.

Para saber mais, consulte:
+ Para saber se é AWS IoT compatível com esses recursos, consulte[Como AWS IoT funciona com o IAM](security_iam_service-with-iam.md).
+ Para saber como fornecer acesso aos seus recursos em todos os Contas da AWS que você possui, consulte Como [fornecer acesso a um usuário do IAM em outro Conta da AWS que você possui](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html) no *Guia do usuário do IAM*.
+ Para saber como fornecer acesso aos seus recursos a terceiros Contas da AWS, consulte Como [fornecer acesso Contas da AWS a terceiros](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html) no *Guia do usuário do IAM*.
+ Para saber como conceder acesso por meio da federação de identidades, consulte [Conceder acesso a usuários autenticados externamente (federação de identidades)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html) no *Guia do usuário do IAM*.
+ Para saber a diferença entre perfis e políticas baseadas em recurso para acesso entre contas, consulte [Acesso a recursos entre contas no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) no *Guia do usuário do IAM*.

# Registro em log e monitoramento
<a name="security-logging"></a>

O monitoramento é uma parte importante da manutenção da confiabilidade, disponibilidade e desempenho de AWS IoT suas AWS soluções. Você deve coletar dados de monitoramento de todas as partes da sua AWS solução para poder depurar com mais facilidade uma falha multiponto, caso ocorra. Para obter informações sobre procedimentos de registro em log e monitoramento, consulte [Monitoramento AWS IoT](monitoring_overview.md)

## Ferramentas de monitoramento
<a name="monitoring_automated_manual"></a>

AWS fornece ferramentas que você pode usar para monitorar AWS IoT. Você pode configurar algumas dessas ferramentas para que façam o monitoramento para você. Algumas das ferramentas exigem intervenção manual. Recomendamos que as tarefas de monitoramento sejam automatizadas ao máximo possível.

### Ferramentas de monitoramento automatizadas
<a name="monitoring_automated_tools"></a>

Você pode usar as seguintes ferramentas de monitoramento automatizado para observar AWS IoT e relatar quando algo está errado:
+ **Amazon CloudWatch Alarms** — Observe uma única métrica em um período especificado por você e execute uma ou mais ações com base no valor da métrica em relação a um determinado limite em vários períodos. A ação é uma notificação enviada para um tópico do Amazon Simple Notification Service (Amazon SNS) ou para uma política do Amazon EC2 Auto Scaling. CloudWatch os alarmes não invocam ações simplesmente porque estão em um estado específico. O estado deve ter sido alterado e mantido por uma quantidade especificada de períodos. Para obter mais informações, consulte [Monitore AWS IoT alarmes e métricas usando a Amazon CloudWatch](monitoring-cloudwatch.md).
+ **Amazon CloudWatch Logs** — Monitore, armazene e acesse seus arquivos de log de AWS CloudTrail ou de outras fontes. O Amazon CloudWatch Logs também permite que você veja as etapas críticas que os casos de teste do AWS IoT Device Advisor realizam, eventos gerados e mensagens MQTT enviadas de seus dispositivos ou AWS IoT Core durante a execução do teste. Esses logs possibilitam a depuração e a execução de ações corretivas em seus dispositivos. Para obter mais informações, consulte [Monitore AWS IoT usando CloudWatch registros](cloud-watch-logs.md) Para obter mais informações sobre o uso da Amazon CloudWatch, consulte [Monitoramento de arquivos de log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html) no *Guia CloudWatch do usuário da Amazon*.
+ **Amazon CloudWatch Events** — Combine eventos e encaminhe-os para uma ou mais funções ou streams de destino para fazer alterações, capturar informações de estado e tomar medidas corretivas. Para obter mais informações, consulte [O que são CloudWatch eventos da Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchEvents.html) no *Guia CloudWatch do usuário da Amazon*.
+ **AWS CloudTrail Monitoramento** de registros — compartilhe arquivos de log entre contas, monitore arquivos de CloudTrail log em tempo real enviando-os para o CloudWatch Logs, grave aplicativos de processamento de log em Java e valide se seus arquivos de log não foram alterados após a entrega. CloudTrail Para obter mais informações, consulte [Registrando chamadas de AWS IoT API usando AWS CloudTrail](iot-using-cloudtrail.md) e também Como [trabalhar com arquivos de CloudTrail log](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-working-with-log-files.html) no *Guia AWS CloudTrail do usuário*. 

### Ferramentas de monitoramento manual
<a name="monitoring_manual_tools"></a>

Outra parte importante do monitoramento AWS IoT envolve o monitoramento manual dos itens que os CloudWatch alarmes não cobrem. O AWS IoT, CloudWatch, e outros painéis do console de AWS serviço fornecem uma at-a-glance visão do estado do seu AWS ambiente. Recomendamos que você também verifique os arquivos de log AWS IoT.
+ AWS IoT o painel mostra:
  + certificados CA
  + Certificados
  + Políticas
  + Regras
  + Objetos
+ CloudWatch a página inicial mostra:
  + Alarmes e status atual.
  + Gráficos de alarmes e recursos.
  + Estado de integridade do serviço.

  Você pode usar CloudWatch para fazer o seguinte: 
  + Criar [painéis personalizados](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CloudWatch_Dashboards.html) para monitorar os serviços com os quais você se preocupa.
  + Colocar em gráfico dados de métrica para solucionar problemas e descobrir tendências.
  + Pesquise e navegue por todas as suas métricas AWS de recursos.
  + Criar e editar alertas para ser notificado sobre problemas.

# Validação de conformidade para AWS IoT Core
<a name="compliance"></a>

Para saber se um AWS service (Serviço da AWS) está dentro do escopo de programas de conformidade específicos, consulte [Serviços da AWS Escopo por Programa de Conformidade Serviços da AWS](https://aws.amazon.com/compliance/services-in-scope/) e escolha o programa de conformidade em que você está interessado. Para obter informações gerais, consulte Programas de [AWS conformidade Programas AWS](https://aws.amazon.com/compliance/programs/) de .

Você pode baixar relatórios de auditoria de terceiros usando AWS Artifact. Para obter mais informações, consulte [Baixar relatórios em AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html) .

Sua responsabilidade de conformidade ao usar Serviços da AWS é determinada pela confidencialidade de seus dados, pelos objetivos de conformidade de sua empresa e pelas leis e regulamentações aplicáveis. Para obter mais informações sobre sua responsabilidade de conformidade ao usar Serviços da AWS, consulte a [documentação AWS de segurança](https://docs.aws.amazon.com/security/).

# Resiliência no AWS IoT Core
<a name="disaster-recovery-resiliency"></a>

A infraestrutura AWS global é construída em torno de Região da AWS s e zonas de disponibilidade. Região da AWS s fornecem várias zonas de disponibilidade fisicamente separadas e isoladas, conectadas a redes de baixa latência, alta taxa de transferência e altamente redundantes. Com as zonas de disponibilidade, é possível projetar e operar aplicações e bancos de dados que executam o failover automaticamente entre as zonas de disponibilidade sem interrupção. As zonas de disponibilidade são mais altamente disponíveis, tolerantes a falhas e escaláveis que uma ou várias infraestruturas de data center tradicionais. 

Para obter mais informações sobre Região da AWS s e zonas de disponibilidade, consulte [Infraestrutura AWS global](https://aws.amazon.com/about-aws/global-infrastructure/).

AWS IoT Core armazena informações sobre seus dispositivos no registro do dispositivo. Ele também armazena certificados da CA, certificados do dispositivo e dados de sombra do dispositivo. No caso de falhas de hardware ou de rede, esses dados são replicados automaticamente entre as zonas de disponibilidade, mas não entre as regiões.

AWS IoT Core publica eventos do MQTT quando o registro do dispositivo é atualizado. É possível usar essas mensagens para fazer backup de seus dados de registro e salvá-los em outro lugar, como uma tabela do DynamoDB. Você é responsável por salvar os certificados que AWS IoT Core cria para você ou aqueles que você mesmo cria. O Device Shadow armazena dados de estado sobre seus dispositivos e pode ser reenviado quando um dispositivo fica online novamente. AWS IoT O Device Advisor armazena informações sobre a configuração da sua suíte de testes. Esses dados são replicados automaticamente no caso de falhas de hardware ou de rede.

AWS IoT Core os recursos são específicos da região e não são replicados, a Regiões da AWS menos que você o faça especificamente.

Para obter mais informações sobre as práticas recomendadas de segurança, consulte [Melhores práticas de segurança em AWS IoT Core](security-best-practices.md).

# Usando AWS IoT Core com interface VPC endpoints
<a name="IoTCore-VPC"></a>

[Com AWS IoT Core, você pode criar endpoints de [plano de controle de IoT e endpoints](https://docs.aws.amazon.com//iot/latest/developerguide/connect-to-iot.html#iot-service-endpoint-intro) de [dados de IoT em sua nuvem privada virtual (VPC) usando endpoints](https://docs.aws.amazon.com//iot/latest/developerguide/iot-connect-devices.html) de VPC de interface.](https://docs.aws.amazon.com//vpc/latest/userguide/vpce-interface.html#create-interface-endpoint) Os endpoints VPC de interface são alimentados por AWS PrivateLink uma AWS tecnologia que você pode usar para acessar serviços em execução AWS usando endereços IP privados. Para obter mais informações, consulte o [Amazon Virtual Private Cloud](https://docs.aws.amazon.com//AmazonVPC/latest/UserGuide/VPC_Introduction.html). 

Para conectar dispositivos em campo em redes remotas, como uma rede corporativa, à sua Amazon VPC, consulte as opções listadas na matriz de conectividade da [Network-to-Amazon VPC](https://docs.aws.amazon.com//whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html). 

**Topics**
+ [Criação de endpoints VPC para o plano de controle AWS IoT Core](#Create-VPC-endpoints-CP)
+ [Criação de endpoints VPC para plano de dados AWS IoT Core](#Create-VPC-endpoints)
+ [Criação de endpoints VPC para provedor de credenciais AWS IoT Core](#Create-VPC-endpoints-credential-provider)
+ [Criar um endpoint de interface da Amazon VPC](#Create-VPC-endpoints-core-create-vpc)
+ [Configurar uma zona hospedada privada](#connect-iot-core-create-phz-lns)
+ [Controlando o acesso a AWS IoT Core mais de VPC endpoints](#Control-VPC-access)
+ [Limitações](#VPC-limitations)
+ [Escalando endpoints de VPC com AWS IoT Core](#Scaling-VPC-endpoints)
+ [Usar domínios personalizados com endpoints da VPC](#VPC-custom-domains)
+ [Disponibilidade de VPC endpoints para AWS IoT Core](#VPC-availability)
+ [Usando tunelamento AWS IoT Device Management seguro com endpoints de interface VPC](IoTCore-ST-VPC.md)

## Criação de endpoints VPC para o plano de controle AWS IoT Core
<a name="Create-VPC-endpoints-CP"></a>

Você pode criar um VPC endpoint para a API do plano AWS IoT Core de controle para conectar seus dispositivos a AWS IoT serviços e outros serviços. AWS Para começar a usar VPC endpoints, [crie uma interface VPC endpoint](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#create-interface-endpoint) e selecione como serviço. AWS IoT Core AWS Se você estiver usando a CLI, primeiro ligue [describe-vpc-endpoint-services](https://docs.aws.amazon.com//cli/latest/reference/ec2/describe-vpc-endpoint-services.html)para garantir que está escolhendo uma zona de disponibilidade onde AWS IoT Core esteja presente em sua área específica. Região da AWS Por exemplo, na região us-east-1, esse comando ficaria da seguinte maneira:

```
aws ec2 describe-vpc-endpoint-services --service-name com.amazonaws.us-east-1.iot.api
```

Veja as instruções detalhadas abaixo para [criar um endpoint de interface Amazon VPC](#Create-VPC-endpoints-core-create-vpc) para AWS IoT Core o plano de controle.

## Criação de endpoints VPC para plano de dados AWS IoT Core
<a name="Create-VPC-endpoints"></a>

Você pode criar um VPC endpoint para API de plano de AWS IoT Core dados para conectar seus dispositivos a AWS IoT serviços e outros serviços. AWS Para começar a usar VPC endpoints, [crie uma interface VPC endpoint](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#create-interface-endpoint) e selecione como serviço. AWS IoT Core AWS Se você estiver usando a CLI, primeiro ligue [describe-vpc-endpoint-services](https://docs.aws.amazon.com//cli/latest/reference/ec2/describe-vpc-endpoint-services.html)para garantir que está escolhendo uma zona de disponibilidade onde AWS IoT Core esteja presente em sua área específica. Região da AWS Por exemplo, na região us-east-1, esse comando ficaria da seguinte maneira:

```
aws ec2 describe-vpc-endpoint-services --service-name com.amazonaws.us-east-1.iot.data
```

**nota**  
O atributo de VPC para criar automaticamente um registro DNS está desativado. Para se conectar a esses endpoints, é necessário criar manualmente um registro DNS privado. Para obter mais informações sobre registros DNS de VPC privada, consulte [DNS privado para endpoints de interface](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#vpce-private-dns). Para obter mais informações sobre as limitações da AWS IoT Core VPC, consulte. [Limitações](#VPC-limitations)

Para conectar clientes MQTT às interfaces de endpoint da VPC:
+ É necessário criar manualmente registros DNS em uma zona hospedada privada vinculada à sua VPC. Para começar, consulte [Criar uma zona hospedada privada](https://docs.aws.amazon.com//Route53/latest/DeveloperGuide/hosted-zone-private-creating.html). 
+ Na sua zona hospedada privada, crie um registro de alias para cada IP de interface de rede elástica para o endpoint da VPC. Se você tiver várias interfaces de rede IPs para vários VPC endpoints, crie registros DNS ponderados com pesos iguais em todos os registros ponderados. Esses endereços IP estão disponíveis na chamada da [DescribeNetworkInterfaces](https://docs.aws.amazon.com//AWSEC2/latest/APIReference/API_DescribeNetworkInterfaces.html)API quando filtrados pelo ID do VPC endpoint no campo de descrição.

Veja as instruções detalhadas abaixo para [criar um endpoint de interface Amazon VPC](#Create-VPC-endpoints-core-create-vpc) e [configurar a zona hospedada privada](#connect-iot-core-create-phz-lns) para AWS IoT Core o plano de dados.

## Criação de endpoints VPC para provedor de credenciais AWS IoT Core
<a name="Create-VPC-endpoints-credential-provider"></a>

[Você pode criar um VPC endpoint para que o [provedor de AWS IoT Core credenciais](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.html) conecte dispositivos usando a autenticação baseada em certificado do cliente e obtenha credenciais temporárias AWS no formato Signature versão 4.AWS](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_aws-signing.html) Para começar a usar os VPC endpoints para o provedor de AWS IoT Core credenciais, execute o comando da [create-vpc-endpoint](https://docs.aws.amazon.com//cli/latest/reference/ec2/create-vpc-endpoint.html)CLI para criar [uma interface VPC endpoint](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#create-interface-endpoint) e selecionar o provedor de credenciais como o serviço. AWS IoT Core AWS Para garantir que você esteja escolhendo uma zona de disponibilidade onde AWS IoT Core esteja presente em sua área específica Região da AWS, primeiro execute o [describe-vpc-endpoint-services](https://docs.aws.amazon.com//cli/latest/reference/ec2/describe-vpc-endpoint-services.html)comando. Por exemplo, na região us-east-1, esse comando ficaria da seguinte maneira:

```
aws ec2 describe-vpc-endpoint-services --service-name com.amazonaws.us-east-1.iot.credentials
```

**nota**  
O atributo de VPC para criar automaticamente um registro DNS está desativado. Para se conectar a esses endpoints, é necessário criar manualmente um registro DNS privado. Para obter mais informações sobre registros DNS de VPC privada, consulte [DNS privado para endpoints de interface](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#vpce-private-dns). Para obter mais informações sobre as limitações da AWS IoT Core VPC, consulte. [Limitações](#VPC-limitations)

Para conectar clientes HTTP às interfaces de endpoint da VPC:
+ É necessário criar manualmente registros DNS em uma zona hospedada privada vinculada à sua VPC. Para começar, consulte [Criar uma zona hospedada privada](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html). 
+ Na sua zona hospedada privada, crie um registro de alias para cada IP de interface de rede elástica para o endpoint da VPC. Se você tiver várias interfaces de rede IPs para vários VPC endpoints, crie registros DNS ponderados com pesos iguais em todos os registros ponderados. Esses endereços IP estão disponíveis na chamada da [DescribeNetworkInterfaces](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeNetworkInterfaces.html)API quando filtrados pelo ID do VPC endpoint no campo de descrição.

Veja as instruções detalhadas abaixo para [criar um endpoint de interface Amazon VPC](#Create-VPC-endpoints-core-create-vpc) e [configurar a zona hospedada privada](#connect-iot-core-create-phz-lns) para AWS IoT Core o provedor de credenciais.

## Criar um endpoint de interface da Amazon VPC
<a name="Create-VPC-endpoints-core-create-vpc"></a>

Você pode criar uma interface VPC endpoint para se conectar aos AWS serviços fornecidos pelo. AWS PrivateLink Use o procedimento a seguir para criar uma interface VPC endpoint que se conecta ao plano de AWS IoT Core dados ou AWS IoT Core ao provedor de credenciais. Para obter mais informações, consulte [Acessar um AWS serviço usando uma interface VPC](https://docs.aws.amazon.com//vpc/latest/privatelink/create-interface-endpoint.html) endpoint. 

**nota**  
Os processos para criar um endpoint de interface Amazon VPC para plano de AWS IoT Core dados e provedor de AWS IoT Core credenciais são semelhantes, mas você deve fazer alterações específicas no endpoint para que a conexão funcione.

 **Para criar um endpoint da VPC de interface usando o console [VPC](https://console.aws.amazon.com/vpc/home#/endpoints) **Endpoints**** 

1. **Navegue até o console [VPC](https://console.aws.amazon.com/vpc/home#/endpoints) **Endpoints**, em **Nuvem privada virtual** no menu à esquerda, escolha **Endpoints** e, em seguida, Criar endpoint**. 

1. Na página **Criar endpoint**, especifique as seguintes informações.
   + Escolha **AWS service (Serviço da AWS)** para a **Categoria de serviço**. 
   + Para **Nome do serviço**, pesquise inserindo a palavra-chave `iot`. Na lista de serviços do `iot` exibida, escolha o endpoint. 

     Se você criar um endpoint VPC para o plano de AWS IoT Core controle, escolha o endpoint da API do plano AWS IoT Core de controle para o seu. Região da AWS O endpoint será do formato `com.amazonaws.region.iot.api`. 

     Se você criar um VPC endpoint para o plano de AWS IoT Core dados, escolha o endpoint da API do plano de AWS IoT Core dados para sua região. O endpoint será do formato `com.amazonaws.region.iot.data`. 

     Se você criar um VPC endpoint para o provedor de AWS IoT Core credenciais, escolha o endpoint do provedor de AWS IoT Core credenciais para sua região. O endpoint será do formato `com.amazonaws.region.iot.credentials`. 

     Se você criar um VPC endpoint para regiões do Federal Information Processing Standard (FIPS), escolha o endpoint da API FIPS para você. Região da AWS O endpoint será do formato `com.amazonaws.region.iot-fips.api`. Isso é apenas para o plano de controle.
**nota**  
O nome do serviço para o plano de AWS IoT Core dados na região da China terá o formato`cn.com.amazonaws.region.iot.data`. O nome do serviço para AWS IoT Core o avião de controle na região da China terá o formato`com.amazonaws.region.iot.api`. 
   + Para **VPC** e **sub-redes**, escolha a VPC em que você deseja criar o endpoint e as zonas de disponibilidade (AZs) nas quais você deseja criar a rede de endpoints.
   + Em **Habilitar nome DNS**, certifique-se de que **Habilitar para este endpoint** não esteja selecionado para plano de AWS IoT Core dados e provedor de AWS IoT Core credenciais. Nem o plano AWS IoT Core de dados nem o provedor de AWS IoT Core credenciais oferecem suporte a nomes DNS privados ainda.

     Para o plano AWS IoT Core de controle, **Habilitar nome DNS** é selecionado por padrão. Isso garante que todas as solicitações aos endpoints públicos do plano de AWS IoT Core controle sejam roteadas pelos endpoints da VPC. Quando isso está habilitado, você não precisa configurar uma zona hospedada privada.
   + Em **Grupo de segurança**, selecione os grupos de segurança a serem associados às interfaces de rede do endpoint.
   + Se quiser, adicione ou remova tags. As tags são pares de nome-valor usados para associar ao seu endpoint. 

1. Para criar um endpoint da VPC, selecione **Criar endpoint**. 

Depois de criar o AWS PrivateLink endpoint, na guia **Detalhes** do seu endpoint, você verá uma lista de nomes de DNS. Você pode usar um desses nomes DNS criados nesta seção para [configurar a zona hospedada privada](#connect-iot-core-create-phz-lns). Se você estiver usando o plano de AWS IoT Core controle, não precisará configurar uma zona hospedada privada.

## Configurar uma zona hospedada privada
<a name="connect-iot-core-create-phz-lns"></a>

**nota**  
Se você estiver usando o plano de AWS IoT Core controle e tiver **o nome Ativar DNS** selecionado, não precisará configurar uma zona hospedada privada. Se você desativá-la, deverá seguir este procedimento para configurar uma zona hospedada privada.

Você pode usar um desses nomes DNS criados na seção anterior para configurar a zona hospedada privada.

 **Para plano AWS IoT Core de dados** 

O nome DNS deve ser o nome de configuração do domínio ou o endpoint do `IoT:Data-ATS`. Um exemplo de nome DNS pode ser: ` xxx-ats.data.iot.region.amazonaws.com`. 

 **Para provedor de AWS IoT Core credenciais** 

O nome DNS deve estar sem o endpoint do `iot:CredentialProvider`. Um exemplo de nome DNS pode ser: ` xxxx.credentials.iot.region.amazonaws.com`. 

 **Para plano AWS IoT Core de controle** 

O nome DNS deve ser o ponto final do plano AWS IoT Core de controle. Um exemplo de nome DNS para o plano AWS IoT Core de controle é` xxxx.api.iot.region.amazonaws.com`. 

**nota**  
Os processos para configurar a zona hospedada privada para o plano de AWS IoT Core dados e o provedor de AWS IoT Core credenciais são semelhantes, mas você deve fazer alterações específicas no endpoint para que a conexão funcione.

### Criar uma zona hospedada privada
<a name="connect-iot-core-create-phz-lns-private-hosted-zone"></a>

 **Para criar uma zona hospedada privada usando o console do Route 53** 

1. Navegue até o console de **zonas hospedadas** do [Route 53](https://console.aws.amazon.com/route53/v2/hostedzones#/) e escolha **Criar zona hospedada**. 

1. Na página **Criar zona hospedada**, especifique as seguintes informações.
   + Em **Nome do domínio**, insira o endereço do endpoint do seu `iot:Data-ATS` ou o endpoint do `iot:CredentialProvider`. O comando da CLI da AWS a seguir mostra como obter o endpoint por meio de uma rede pública: `aws iot describe-endpoint --endpoint-type iot:Data-ATS`, ou `aws iot describe-endpoint --endpoint-type iot:CredentialProvider`. 
**nota**  
Se você estiver usando domínios personalizados, consulte [Usar domínios personalizados com endpoints da VPC](https://docs.aws.amazon.com/iot/latest/developerguide/IoTCore-VPC.html#VPC-custom-domains). Os domínios personalizados não são compatíveis com o provedor de AWS IoT Core credenciais.
   + Em **Tipo**, escolha **Zona hospedada privada**. 
   + Opcionalmente, você pode adicionar ou remover tags para associar à zona hospedada.

1. Para criar a zona hospedada privada, escolha **Criar zona hospedada**. 

Para obter mais informações, consulte [Criar uma zona hospedada privada](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html). 

### Criar um registro
<a name="connect-iot-core-create-phz-lns-create-record"></a>

Depois de criar uma zona hospedada privada, é possível criar um registro que informe ao DNS como você deseja que o tráfego seja direcionado para esse domínio. 

 **Para criar um registro** 

1. Na lista de zonas hospedadas exibida, escolha a zona hospedada privada que você criou antes e escolha **Criar registro**. 

1. Use o método do assistente para criar o registro. Se o console apresentar o método de **Criação rápida**, escolha **Alternar para assistente**. 

1. Escolha **Roteamento simples** em **Política de roteamento** e, em seguida, **Próximo**. 

1. Na página **Configurar registros**, escolha **Definir registro simples**. 

1. Na página **Definir registro simples**:
   + Em **Nome do registro**, insira endpoint do `iot:Data-ATS` ou endpoint do `iot:CredentialProvider`. Deve ser igual ao nome da zona hospedada privada.
   + Para o **tipo de registro**, se você quiser apenas IPv4 suporte, mantenha o valor como`A - Routes traffic to an IPv4 address and some AWS resources`. Se você quiser apenas IPv6 suporte, mantenha o valor como`AAAA - Routes traffic to an IPv6 address and some AWS resources`. Se você quiser suporte de pilha dupla (ambos IPv4 e IPv6), crie dois registros (e `AAAA` na zona hospedada) com o mesmo **nome de registro `A`** e **valor/roteamento** de tráfego para. 
   + Em **Valor/rotear tráfego para**, escolha **Alias para endpoint da VPC**. Em seguida, escolha a **Região** e, em seguida, escolha o endpoint que você criou antes, conforme descrito em [Criar um endpoint de interface da Amazon VPC](#Create-VPC-endpoints-core-create-vpc) na lista de endpoints exibida.

1. Escolha **Definir registro simples** para criar seu registro.

## Controlando o acesso a AWS IoT Core mais de VPC endpoints
<a name="Control-VPC-access"></a>

[Você pode restringir o acesso ao dispositivo AWS IoT Core para que seja permitido somente por meio do VPC endpoint usando as chaves de contexto de condição da VPC.](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html) AWS IoT Core é compatível com as seguintes chaves de contexto relacionadas à 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 não oferece suporte às [políticas de endpoints para endpoints VPC](https://docs.aws.amazon.com//vpc/latest/privatelink/vpc-endpoints-access.html#vpc-endpoint-policies). 

Por exemplo, a política a seguir concede permissão para se conectar AWS IoT Core usando uma ID de cliente que corresponda ao nome da coisa e para publicar em qualquer tópico prefixado pelo nome da coisa, desde que o dispositivo se conecte a um VPC endpoint com uma determinada ID de VPC Endpoint. Essa política nega tentativas de conexão com o endpoint de dados 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}/*"
            ]
        }
    ]
}
```

## Limitações
<a name="VPC-limitations"></a>

[Atualmente, os endpoints VPC são compatíveis com endpoints do [plano de AWS IoT Core controle, endpoints de AWS IoT Core dados e endpoints](https://docs.aws.amazon.com//iot/latest/developerguide/connect-to-iot.html#iot-service-endpoint-intro)[do provedor de credenciais](https://docs.aws.amazon.com//iot/latest/developerguide/iot-connect-devices.html#iot-connect-device-endpoints).AWS IoT Core](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.htm) Os endpoints VPC são compatíveis somente com endpoints do [Federal Information Processing Standard (FIPS) ao usar o plano de controle](https://docs.aws.amazon.com//iot/latest/developerguide/iot-connect-fips.html). AWS IoT Core 

### Limitações dos endpoints VPC do plano de controle de IoT
<a name="VPC-limitations-iot-control"></a>

Esta seção aborda as limitações dos endpoints VPC do plano de controle de IoT.
+ Os endpoints da VPC servirão somente certificados ATS.
+ Domínios personalizados não são compatíveis com endpoints do plano de controle.
+ Para obter informações sobre as políticas de segurança do FIPS, consulte as políticas de [segurança do FIPS](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/describe-ssl-policies.html#fips-security-policies). 

### Limitações dos endpoints da VPC de dados de IoT
<a name="VPC-limitations-iot-data"></a>

Esta seção aborda as limitações dos endpoints da VPC de dados de IoT.
+ Os períodos de keep alive do MQTT são limitados a 230 segundos. Períodos de manutenção maiores do que isso serão automaticamente reduzidos para 230 segundos.
+ Cada endpoint da VPC é compatível com um total de 100.000 dispositivos conectados simultaneamente. Se você precisar de mais conexões, consulte[Escalando endpoints de VPC com AWS IoT Core](#Scaling-VPC-endpoints).
+ Os endpoints da VPC servirão somente [certificados ATS](https://docs.aws.amazon.com//iot/latest/developerguide/server-authentication.html), exceto para domínios personalizados.
+  As [Políticas de endpoint da VPC](https://docs.aws.amazon.com//vpc/latest/privatelink/vpc-endpoints-access.html) não são compatíveis.
+ Para endpoints VPC criados para o plano de AWS IoT Core dados, AWS IoT Core não é compatível com o uso de registros DNS públicos zonais ou regionais.

### Limitações dos endpoints do provedor de credenciais
<a name="VPC-limitations-credential-provider"></a>

Esta seção aborda as limitações dos endpoints da VPC do provedor de credenciais.
+ Os endpoints da VPC servirão somente [certificados ATS](https://docs.aws.amazon.com//iot/latest/developerguide/server-authentication.html).
+  As [Políticas de endpoint da VPC](https://docs.aws.amazon.com//vpc/latest/privatelink/vpc-endpoints-access.html) não são compatíveis.
+ Os domínios personalizados não são compatíveis com os endpoints do provedor de credenciais.
+ Para endpoints VPC criados para o provedor de AWS IoT Core credenciais, AWS IoT Core não é compatível com o uso de registros DNS públicos zonais ou regionais.

## Escalando endpoints de VPC com AWS IoT Core
<a name="Scaling-VPC-endpoints"></a>

AWS IoT Core Os endpoints VPC de interface são limitados a 100.000 dispositivos conectados em um único endpoint de interface. Se seu caso de uso exigir mais conexões simultâneas com o agente, recomendamos usar vários endpoints da VPC e rotear manualmente seus dispositivos pelos endpoints da interface. Ao criar registros DNS privados para rotear o tráfego para seus endpoints da VPC, certifique-se de criar o mesmo número de registros ponderados que os endpoints da VPC para distribuir o tráfego entre os vários endpoints. 

## Usar domínios personalizados com endpoints da VPC
<a name="VPC-custom-domains"></a>

Para usar domínios personalizados com endpoints da VPC, é necessário criar os registros de nome de domínio personalizados em uma zona hospedada privada e criar registros de roteamento no Route53. Para obter mais informações, consulte [Criar uma zona hospedada privada](https://docs.aws.amazon.com//Route53/latest/DeveloperGuide/hosted-zone-private-creating.html). 

**nota**  
Domínios personalizados só são compatíveis com endpoints de AWS IoT Core dados.

## Disponibilidade de VPC endpoints para AWS IoT Core
<a name="VPC-availability"></a>

AWS IoT Core [Os endpoints VPC da interface estão disponíveis em todas AWS IoT Core as regiões com suporte.](https://aws.amazon.com//about-aws/global-infrastructure/regional-product-services/) AWS IoT Core Os endpoints VPC de interface para provedor de AWS IoT Core credenciais não são suportados na região da China e. AWS GovCloud (US) Regions

# Usando tunelamento AWS IoT Device Management seguro com endpoints de interface VPC
<a name="IoTCore-ST-VPC"></a>

AWS IoT Device Management o tunelamento seguro oferece suporte a endpoints de interface VPC. Você pode usar VPC endpoints para manter o tráfego entre sua VPC e AWS IoT Secure Tunneling dentro da AWS rede, sem precisar de um gateway de internet, dispositivo NAT, conexão VPN ou conexão. AWS Direct Connect 

Os endpoints VPC da Interface são alimentados por [AWS PrivateLink](https://docs.aws.amazon.com//vpc/latest/privatelink/what-is-privatelink.html)uma tecnologia que permite acessar serviços de forma privada usando endereços IP privados. Para obter mais informações, consulte [Acessar um AWS serviço usando uma interface VPC endpoint no Guia](https://docs.aws.amazon.com//vpc/latest/privatelink/create-interface-endpoint.html). AWS PrivateLink 

**Topics**
+ [Pré-requisitos](#Create-ST-VPC-endpoints-prereq)
+ [Recebendo notificações de túnel por meio de VPC endpoints](#ST-VPC-Receive-notifications)
+ [Criação de endpoints de VPC para tunelamento seguro](#Create-ST-VPC-endpoints-Create)
+ [Configurando políticas de VPC endpoint no servidor proxy](#Create-ST-VPC-endpoints-Configure)
+ [Próximas etapas](#Create-ST-VPC-endpoints-Next)

## Pré-requisitos
<a name="Create-ST-VPC-endpoints-prereq"></a>

Antes de criar VPC endpoints para AWS IoT Secure Tunneling, verifique se você tem o seguinte:
+ Uma AWS conta com as permissões necessárias para criar VPC endpoints.
+ Uma VPC na sua conta. AWS 
+ Compreensão dos conceitos de tunelamento AWS IoT Device Management seguro.
+ Familiaridade com as políticas AWS Identity and Access Management de VPC endpoint e (IAM)

## Recebendo notificações de túnel por meio de VPC endpoints
<a name="ST-VPC-Receive-notifications"></a>

Para receber notificações de túnel por meio de um VPC endpoint, seus dispositivos podem se conectar ao plano de AWS IoT Core dados por meio de um endpoint VPC e assinar o tópico MQTT reservado para tunelamento seguro.

Para obter instruções sobre como criar e configurar um VPC endpoint no plano de AWS IoT Core dados, consulte Como [usar com AWS IoT Core interface VPC endpoints](https://docs.aws.amazon.com/iot/latest/developerguide/IoTCore-VPC.html) no Guia do desenvolvedor. AWS IoT 

## Criação de endpoints de VPC para tunelamento seguro
<a name="Create-ST-VPC-endpoints-Create"></a>

Você pode criar endpoints VPC tanto para o plano de controle de tunelamento seguro quanto para o servidor proxy.

**Para criar um VPC endpoint para tunelamento seguro**

1. Siga as etapas em [Criação de um endpoint de interface](https://docs.aws.amazon.com//vpc/latest/privatelink/create-interface-endpoint.html) no Amazon VPC Developer Guide

1. Em **Nome do serviço**, escolha uma das seguintes opções com base no seu tipo de endpoint:

**Ambiente de gerenciamento**
   + Padrão: `com.amazonaws.<region>.iot.tunneling.api` 
   + FIPS (disponível nas regiões FIPS): `com.amazonaws.<region>.iot-fips.tunneling.api` 

**Servidor de proxy**
   + Padrão: `com.amazonaws.<region>.iot.tunneling.data` 
   + FIPS (disponível nas regiões FIPS): `com.amazonaws.<region>.iot-fips.tunneling.data` 

   *<region>*Substitua pelo seu Região da AWS. Por exemplo, .`us-east-1` 

1. Conclua as etapas restantes no processo de criação do VPC endpoint de acordo com seus requisitos de rede.

## Configurando políticas de VPC endpoint no servidor proxy
<a name="Create-ST-VPC-endpoints-Configure"></a>

Além da autorização baseada em token de acesso ao cliente que é usada para autorizar conexões com túneis, você pode usar políticas de endpoint de VPC para restringir ainda mais a forma como os dispositivos podem usar um endpoint de VPC para se conectar ao Secure Tunneling Proxy Server. As políticas de VPC endpoint seguem uma sintaxe semelhante à IAM e são configuradas no próprio VPC endpoint.

Observe que a única ação do IAM compatível com as políticas de endpoint VPC do servidor proxy é. `iot:ConnectToTunnel` 

Abaixo estão exemplos de diferentes políticas de VPC endpoint.

### Exemplos de políticas de endpoint VPC de servidor proxy
<a name="w2aac17c35c31c15b9"></a>

Os exemplos a seguir mostram as configurações da política de endpoint VPC do Proxy Server para casos de uso comuns.

**Example - Política padrão**  
Essa política permite que dispositivos em sua VPC se conectem a qualquer túnel no mesmo Região da AWS local em que o endpoint é criado, em qualquer conta. AWS   

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*"
        }
    ]
}
```

**Example - Restringir o acesso a AWS contas específicas**  
Essa política permite que o VPC endpoint se conecte somente a túneis em contas 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 - Restringir conexões por ponto final do túnel**  
Você pode restringir o acesso ao VPC endpoint para permitir que apenas os dispositivos se conectem à extremidade de origem ou destino de um túnel.  
Somente fonte:  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iot:ClientMode": "source"
                }
            }
        }
    ]
}
```

Somente destino:

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iot:ClientMode": "destination"
                }
            }
        }
    ]
}
```

**Example - Restrinja o acesso com base em tags de recursos**  
Essa política permite que o VPC endpoint se conecte somente a túneis marcados com um par de valores-chave específico.  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Environment": "Production"
                }
            }
        }
    ]
}
```

**Example - Condições de apólice combinadas**  
Essa política demonstra a combinação de vários elementos da política. Ele permite conexões com qualquer túnel em uma AWS conta específica, mas somente se o túnel estiver marcado com `AllowConnectionsThroughPrivateLink` definido como `true` e o cliente não estiver se conectando à extremidade de destino do 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"
                }
            }
        }
    ]
}
```

## Próximas etapas
<a name="Create-ST-VPC-endpoints-Next"></a>

Depois de criar e configurar seus VPC endpoints para AWS IoT Secure Tunneling, considere o seguinte:
+ Teste sua configuração de VPC endpoint conectando dispositivos por meio do endpoint.
+ Monitore o uso do VPC endpoint por meio de métricas. Amazon CloudWatch 
+ Revise e atualize suas políticas de VPC endpoint conforme necessário para seus requisitos de segurança.

Para obter mais informações sobre tunelamento AWS IoT Device Management seguro, consulte. [AWS IoT Secure Tunneling](https://docs.aws.amazon.com//iot/latest/developerguide/secure-tunneling.html) 

# Segurança da infraestrutura em AWS IoT
<a name="infrastructure-security"></a>

Como um conjunto de serviços gerenciados, AWS IoT é protegido pelos procedimentos AWS globais de segurança de rede descritos no whitepaper [Amazon Web Services: Visão geral dos processos de segurança](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf).

Você usa chamadas de API AWS publicadas para acessar AWS IoT pela rede. Os clientes devem oferecer suporte a Transport Layer Security (TLS) 1.2 ou posterior. Os clientes também devem ter suporte a conjuntos de criptografia com perfect forward secrecy (PFS) como Ephemeral Diffie-Hellman (DHE) ou Ephemeral Elliptic Curve Diffie-Hellman (ECDHE). A maioria dos sistemas modernos, como o Java 7 e versões posteriores, oferece suporte a esses modos. Para obter mais informações, consulte [Segurança de transporte em AWS IoT Core](transport-security.md).

As solicitações devem ser assinadas usando um ID da chave de acesso e uma chave de acesso secreta associada a uma entidade principal do IAM. Ou você pode usar o [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) para gerar credenciais de segurança temporárias para assinar solicitações.

# Monitoramento de segurança de frotas ou dispositivos de produção com Core AWS IoT
<a name="security-monitoring"></a>

Frotas de IoT consistem em grandes quantidades de dispositivos com diversos recursos, duradouros e geograficamente distribuídos. Essas características tornam a configuração da frota complexa e propensa a erros. E como os dispositivos, quase sempre, têm restrições quanto à capacidade computacional e aos recursos de memória e armazenamento, isso limita o uso de criptografia e outras formas de segurança nos próprios dispositivos. Além disso, muitas vezes, os dispositivos usam software com vulnerabilidades conhecidas. Esses fatores tornam frotas de IoT um alvo atrativo para hackers e tornam difícil proteger a frota de dispositivos de forma contínua.

AWS IoT Device Defender aborda esses desafios fornecendo ferramentas para identificar problemas de segurança e desvios das melhores práticas. Você pode usar o AWS IoT Device Defender para analisar, auditar e monitorar dispositivos conectados para detectar comportamentos anormais e mitigar os riscos de segurança. AWS IoT Device Defender pode auditar frotas de dispositivos para garantir que elas sigam as melhores práticas de segurança e detectem comportamentos anormais nos dispositivos. Isso possibilita aplicar políticas de segurança consistentes em toda a sua frota de AWS IoT dispositivos e responder rapidamente quando os dispositivos são comprometidos. Para obter mais informações, consulte [AWS IoT Device Defender](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/what-is-device-defender.html).

AWS IoT O Device Advisor envia atualizações e corrige sua frota conforme necessário. AWS IoT O Device Advisor atualiza os casos de teste automaticamente. Os casos de teste que você seleciona estão sempre com a versão mais recente. Para obter mais informações, consulte [Device Advisor](device-advisor.md).

# Melhores práticas de segurança em AWS IoT Core
<a name="security-best-practices"></a>

Esta seção contém informações sobre as melhores práticas de segurança para AWS IoT Core. Para obter mais informações sobre regras de segurança para soluções de IoT industrial, consulte [Dez regras de ouro de segurança para soluções de IoT industrial](https://aws.amazon.com/blogs/iot/ten-security-golden-rules-for-industrial-iot-solutions/).

## Protegendo conexões MQTT em AWS IoT
<a name="secure-mqtt"></a>

[AWS IoT Core](https://aws.amazon.com/iot-core/)é um serviço de nuvem gerenciado que possibilita que dispositivos conectados interajam com aplicativos em nuvem e outros dispositivos de forma fácil e segura. AWS IoT Core suporta HTTP e [MQTT [WebSocket](https://en.wikipedia.org/wiki/WebSocket)](https://en.wikipedia.org/wiki/MQTT), um protocolo de comunicação leve projetado especificamente para tolerar conexões intermitentes. Se você estiver se conectando AWS IoT usando o MQTT, cada uma de suas conexões deverá estar associada a um identificador conhecido como ID do cliente. O cliente MQTT identifica de IDs forma exclusiva as conexões MQTT. Se uma nova conexão for estabelecida usando um ID de cliente que já foi reivindicado para outra conexão, o agente de AWS IoT mensagens descarta a conexão antiga para permitir a nova conexão. O cliente IDs deve ser único em Conta da AWS cada um Região da AWS. Isso significa que você não precisa impor a exclusividade global do cliente IDs fora da sua Conta da AWS ou em todas as regiões da sua. Conta da AWS

O impacto e a gravidade de descartar conexões MQTT em sua frota de dispositivos dependem de vários fatores. Isso inclui:
+ Seu caso de uso (por exemplo, os dados para os quais seus dispositivos enviam AWS IoT, a quantidade de dados e a frequência com que os dados são enviados).
+ A configuração do cliente MQTT (por exemplo, as configurações de reconexão automática, as temporizações de retirada associadas e o uso de [Sessões MQTT persistentes](mqtt.md#mqtt-persistent-sessions)).
+ Restrições de recursos de dispositivo.
+ A causa raiz das desconexões, sua agressividade e persistência.

Para evitar conflitos de ID de cliente e seus possíveis impactos negativos, certifique-se de que cada dispositivo ou aplicativo móvel tenha uma política AWS IoT ou IAM que restrinja qual cliente IDs pode ser usado para conexões MQTT com o agente de AWS IoT mensagens. Por exemplo, você pode usar uma política do IAM para impedir que um dispositivo feche involuntariamente a conexão de outro dispositivo usando um ID de cliente que já esteja em uso. Para obter mais informações, consulte [Autorização](iot-authorization.md).

Todos os dispositivos da sua frota devem ter credenciais com privilégios que autorizem somente as ações pretendidas, que incluem (mas não se limitam a) ações do AWS IoT MQTT, como publicar mensagens ou assinar tópicos com escopo e contexto específicos. As políticas de permissão específicas podem variar para seus casos de uso. Identifique as políticas de permissão que melhor atendem aos seus requisitos de negócios e de segurança.

Para simplificar a criação e o gerenciamento de políticas de permissão, é possível usar [AWS IoT Core variáveis de política](iot-policy-variables.md) e [Variáveis de políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html). As variáveis de políticas podem ser colocadas em uma política e, quando a política for avaliada, as variáveis serão substituídas por valores fornecidos na solicitação do dispositivo. Usando variáveis de políticas, você pode criar uma única política para conceder permissões a vários dispositivos. Você pode identificar as variáveis de política relevantes para seu caso de uso com base na configuração AWS IoT da conta, no mecanismo de autenticação e no protocolo de rede usados na conexão com o agente de AWS IoT mensagens. No entanto, para escrever as melhores políticas de permissão, você precisa considerar informações específicas sobre seu caso de uso e o [modelo de ameaça](https://en.wikipedia.org/wiki/Threat_model).

Por exemplo, se você registrou seus dispositivos no AWS IoT registro, você pode usar [variáveis de política de coisas](thing-policy-variables.md) em AWS IoT políticas para conceder ou negar permissões com base em propriedades de coisas, como nomes de coisas, tipos de coisas e valores de atributos de coisas. O nome da coisa é obtido do ID do cliente na mensagem de conexão do MQTT enviada quando uma coisa se conecta a. AWS IoT As variáveis de política da coisa são substituídas quando uma coisa se conecta pelo MQTT usando a autenticação mútua TLS ou AWS IoT ao MQTT pelo WebSocket protocolo usando identidades autenticadas do Amazon [Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identities.html). Você pode usar a [AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html)API para anexar certificados e identidades autenticadas do Amazon Cognito a uma coisa. `iot:Connection.Thing.ThingName`é uma variável de política útil para impor restrições de ID do cliente. O exemplo de AWS IoT política a seguir exige que o nome de uma coisa registrada seja usado como ID do cliente para conexões MQTT com o agente de AWS IoT mensagens:

****  

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

Se você quiser identificar conflitos contínuos de ID de cliente, você pode ativar e usar o [CloudWatch Logs for AWS IoT](cloud-watch-logs.md). Para cada conexão MQTT que o agente de AWS IoT mensagens desconecta devido a conflitos de ID do cliente, um registro de log semelhante ao seguinte é gerado:

```
{
    "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"
}
```

Você pode usar um [filtro de CloudWatch registros](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html) `{$.reason= "DUPLICATE_CLIENT_ID" }` para pesquisar instâncias de conflitos de ID de cliente ou configurar [filtros de CloudWatch métricas](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringPolicyExamples.html) e CloudWatch alarmes correspondentes para monitoramento e geração de relatórios contínuos.

Você pode usar o [AWS IoT Device Defender](https://aws.amazon.com/iot-device-defender/) para identificar políticas excessivamente permissivas AWS IoT e do IAM. AWS IoT O Device Defender também fornece uma verificação de auditoria que notifica você se vários dispositivos em sua frota estão se conectando ao agente de AWS IoT mensagens usando o mesmo ID de cliente.

Você pode usar o AWS IoT Device Advisor para validar se seus dispositivos podem se conectar de forma confiável AWS IoT Core e seguir as melhores práticas de segurança.

### Consulte também
<a name="mqtt-security-see-also"></a>
+ [AWS IoT Core](https://aws.amazon.com/iot-core/)
+ [Recursos de segurança do AWS IoT](authentication.md)
+ [AWS IoT Core variáveis de política](iot-policy-variables.md)
+ [Variáveis de políticas do IAM](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_variables.html)
+ [Identidade do 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 Registros para AWS IoT](cloud-watch-logs.md)

## Manter o relógio do dispositivo sincronizado
<a name="device-clock"></a>

É importante ter a hora exata no seu dispositivo. Os certificados X.509 têm data e hora de expiração. O relógio em seu dispositivo é usado para verificar se um certificado de servidor ainda é válido. Se você estiver criando dispositivos comerciais de IoT, lembre-se de que seus produtos podem ser armazenados por períodos prolongados antes de serem vendidos. Os relógios em tempo real podem ter desvios durante esse período, e as baterias podem ser descarregadas, portanto, definir a hora na definição de fábrica não é suficiente.

Para a maioria dos sistemas, isso indica que o software do dispositivo deve incluir um cliente de protocolo de tempo de rede (NTP). O dispositivo deve aguardar até ser sincronizado com um servidor NTP antes de tentar se conectar ao AWS IoT Core. Se isso não for possível, o sistema deve fornecer uma maneira de um usuário definir a hora do dispositivo para que as conexões subsequentes tenham êxito.

Depois que o dispositivo for sincronizado com um servidor NTP, ele poderá abrir uma conexão com o AWS IoT Core. A inclinação do relógio que é permitida depende do que você está tentando fazer com a conexão. 

## Validar o certificado do servidor
<a name="validate-server-cert"></a>

A primeira coisa que um dispositivo faz para interagir AWS IoT é abrir uma conexão segura. Ao conectar seu dispositivo a AWS IoT, verifique se você está falando com outro servidor AWS IoT e não se passando AWS IoT por outro servidor. Cada um dos AWS IoT servidores é provisionado com um certificado emitido para o `iot.amazonaws.com` domínio. Esse certificado foi emitido AWS IoT por uma autoridade de certificação confiável que verificou nossa identidade e propriedade do domínio.

Uma das primeiras coisas AWS IoT Core que fazemos quando um dispositivo se conecta é enviar ao dispositivo um certificado de servidor. Os dispositivos podem verificar se eles esperavam se conectar ao `iot.amazonaws.com` e se o servidor no destino dessa conexão possui um certificado de uma autoridade confiável para esse domínio.

Os certificados TLS estão no formato X.509 e incluem uma grande variedade de informações, como nome, localização, nome de domínio e um período de validade da organização. O período de validade é especificado como um par de valores de tempo chamados `notBefore` e `notAfter`. Serviços como AWS IoT Core usam períodos de validade limitados (por exemplo, um ano) para seus certificados de servidor e começam a oferecer novos antes que os antigos expirem.

## Usar uma identidade única por dispositivo
<a name="cert-per-device"></a>

Use uma única identidade por cliente. Os dispositivos geralmente usam certificados de cliente X.509. Aplicações da Web e móveis usam a identidade do Amazon Cognito. Isso permite aplicar permissões refinadas aos seus dispositivos.

Por exemplo, você tem um aplicativo que consiste em um dispositivo móvel que recebe atualizações de status de dois objetos domésticos inteligentes diferentes: uma lâmpada e um termostato. A lâmpada envia o status do nível de bateria e um termostato envia mensagens que relatam a temperatura.

AWS IoT autentica dispositivos individualmente e trata cada conexão individualmente. Você pode aplicar controles de acesso refinados usando políticas de autorização. É possível definir uma política para o termostato que permite que ele publique em um espaço de tópico. É possível definir uma política separada para a lâmpada que permite que ela publique em um espaço de tópico diferente. Por fim, é possível definir uma política para o aplicativo móvel que só permite que ele se conecte e se inscreva nos tópicos para o termostato e a lâmpada para receber mensagens desses dispositivos.

Aplique o princípio do privilégio mínimo e diminua o escopo das permissões por dispositivo o máximo possível. Todos os dispositivos ou usuários devem ter uma AWS IoT política AWS IoT que permita somente a conexão com um ID de cliente conhecido e a publicação e assinatura de um conjunto fixo e identificado de tópicos.

## Use um segundo Região da AWS como backup
<a name="use-second-region"></a>

Considere armazenar uma cópia dos seus dados em um segundo Região da AWS como backup. Observe que a AWS solução chamada [Disaster Recovery AWS IoT for](https://aws.amazon.com/solutions/implementations/disaster-recovery-for-aws-iot/) não está mais disponível. Embora a [GitHubbiblioteca](https://github.com/awslabs/disaster-recovery-for-aws-iot) associada permaneça acessível, ela AWS foi descontinuada em julho de 2023 e não fornece mais manutenção ou suporte para ela. Para implementar suas próprias soluções ou explorar outras opções de suporte, acesse [Entrar em contato com a AWS](https://aws.amazon.com/contact-us/). Se houver um gerente AWS técnico de contas associado à sua conta, entre em contato com ele para obter ajuda.

## Usar provisionamento just-in-time
<a name="use-jitp"></a>

Criar e provisionar manualmente cada dispositivo pode ser demorado. AWS IoT fornece uma maneira de definir um modelo para provisionar dispositivos quando eles se conectam pela primeira vez AWS IoT. Para obter mais informações, consulte [Just-in-time provisionamento](jit-provisioning.md).

## Permissões para executar testes AWS IoT do Device Advisor
<a name="device-advisor-perms"></a>

O modelo de política a seguir mostra as permissões mínimas e a entidade IAM necessárias para executar os casos de teste AWS IoT do Device Advisor. [Você precisará substituir pela função *your-device-role-arn* de dispositivo Amazon Resource Name (ARN) que você criou de acordo com os pré-requisitos.](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": "*"
        }
    ]
}
```

## Prevenção do problema do substituto confuso entre serviços para o Device Advisor
<a name="cross-service-confused-deputy-prevention-DA"></a>

O problema "confused deputy" é um problema de segurança em que uma entidade que não tem permissão para executar uma ação pode coagir uma entidade mais privilegiada a executar a ação. Em AWS, a falsificação de identidade entre serviços pode resultar no problema confuso do deputado. A personificação entre serviços pode ocorrer quando um serviço (o *serviço de chamada*) chama outro serviço (o *serviço chamado*). O serviço de chamada pode ser manipulado de modo a usar suas permissões para atuar nos recursos de outro cliente de uma forma na qual ele não deveria ter permissão para acessar. Para evitar isso, AWS fornece ferramentas que ajudam você a proteger seus dados para todos os serviços com diretores de serviços que receberam acesso aos recursos em sua conta. 

Recomendamos o uso das chaves de contexto de condição 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) e [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) em políticas de recursos para limitar as permissões que o Device Advisor concede a outro serviço para o recurso. Se você utilizar ambas as chaves de contexto de condição global, o valor `aws:SourceAccount` e a conta `aws:SourceArn` no valor deverão utilizar o mesmo ID de conta quando utilizados na mesma instrução de política.

O valor de `aws:SourceArn` deve ser o ARN do seu recurso de definição de suíte. O recurso de definição da suíte se refere à suíte de testes criada com o Device Advisor.

A maneira mais eficaz de se proteger do problema ‘confused deputy’ é usar a chave de contexto de condição global `aws:SourceArn` com o ARN completo do recurso. Se você não souber o ARN completo do recurso ou se estiver especificando vários recursos, use a chave de condição de contexto global `aws:SourceArn` com curingas (`*`) para as partes desconhecidas do ARN. Por exemplo, `arn:aws:iotdeviceadvisor:*:account-id:suitedefinition/*`. 

O exemplo a seguir mostra como é possível usar as chaves de contexto de condição globais `aws:SourceArn` e `aws:SourceAccount` no Device Advisor para evitar o problema de substituto confuso.

****  

```
{
    "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 treinamento e certificação
<a name="iot-security-training"></a>

Faça o curso a seguir para aprender sobre os principais conceitos de AWS IoT segurança: [AWS IoT Security Primer](https://www.aws.training/Details/Curriculum?id=42304).