Exemplos de política de publicação/inscrição - AWS IoT Core

Exemplos de política de publicação/inscrição

A política usada depende de como você está se conectando ao AWS IoT Core. É possível se conectar ao AWS IoT Core usando um cliente MQTT, o HTTP ou o WebSocket. Ao se conectar a um cliente MQTT, você está se autenticando com um certificado X.509. Ao se conectar por meio de HTTP ou do protocolo WebSocket, 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 para ações de Connect e anexar o objeto à entidade principal usada para a conexão.

Usar caracteres curinga nas políticas do MQTT e AWS IoT Core

As políticas do MQTT e do AWS IoT Core têm caracteres curinga diferentes e você deve escolhê-los após uma análise cuidadosa. No MQTT, os caracteres curinga + e # são usados nos filtros de tópicos do MQTT para assinar vários nomes de tópicos. As políticas do AWS IoT Core usam * e ? como caracteres curinga e seguem as convenções das políticas do IAM. 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 Usar curingas em ARNs de recursos.

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 política AWS IoT Core é um caractere curinga? Exemplo de políticas do AWS IoT Core para clientes MQTT
# Sim some/# Não N/D
+ Sim some/+/topic Não N/D
* 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/enviar mensagens de tópicos específicos

Veja a seguir exemplos de dispositivos registrados e não registrados para publicar, assinar e receber/enviar mensagens do tópico chamado “some_specific_topic”. Os exemplos também destacam que Publish e Receive usam "topic" como recurso, enquanto Subscribe usa "topicfilter".

Registered devices

Para dispositivos registrados no Registro do AWS IoT Core, a política a seguir permite que os dispositivos se conectem com o clientId que corresponde ao nome de um objeto no Registro. Ele também fornece permissões de Publish, Subscribe e Receive para o tópico chamado “some_specific_topic”.

JSON
JSON
{ "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 Registro do AWS IoT Core, 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_specific_topic”.

JSON
JSON
{ "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/enviar mensagens de tópicos com um prefixo específico

Veja a seguir exemplos de dispositivos registrados e não registrados para publicar, assinar e receber/enviar mensagens de tópicos com "topic_prefix".

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 Registro do AWS IoT Core, a política a seguir permite que os dispositivos se conectem com o clientId que corresponde ao nome de um objeto no Registro. Ele também fornece permissões de Publish, Subscribe e Receive para tópicos com o prefixo “topic_prefix”.

JSON
JSON
{ "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 Registro do AWS IoT Core, 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_prefix”.

JSON
JSON
{ "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/enviar mensagens de tópicos específicos de cada dispositivo

Veja a seguir exemplos de dispositivos registrados e não registrados para publicar, assinar e receber/enviar mensagens de tópicos específicos do dispositivo em questão.

Registered devices

Para dispositivos registrados no Registro do AWS IoT Core, a política a seguir permite que os dispositivos se conectem com o clientId que corresponde ao nome de um objeto 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 do objeto no registro for “thing1”, o dispositivo poderá publicar no tópico “sensor/device/thing1”. O dispositivo também poderá se inscrever e receber do tópico “command/device/thing1".

JSON
JSON
{ "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 Registro do AWS IoT Core, 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 "sensor/device/clientId1". O dispositivo também poderá se inscrever e receber do tópico device/clientId1/command.

JSON
JSON
{ "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/enviar mensagens de tópicos com o atributo de objeto no nome do tópico

A seguir, é mostrado um exemplo de dispositivos registrados para publicar, assinar e receber/enviar mensagens de tópicos cujos nomes incluem atributos de objetos.

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 Registro do AWS IoT Core, a política a seguir permite que os dispositivos se conectem com o clientId que corresponde ao nome de um objeto 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 do objeto no Registro tiver version=v1 e location=Seattle, o dispositivo poderá publicar no tópico "sensor/v1", assinar e receber do tópico "command/Seattle".

JSON
JSON
{ "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

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 Registro do AWS IoT Core, a política a seguir permite que os dispositivos se conectem com o clientId que corresponde ao nome de um objeto 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".

JSON
JSON
{ "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 Registro do AWS IoT Core, 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".

JSON
JSON
{ "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

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 Registro do AWS IoT Core, a política a seguir permite que os dispositivos se conectem com o clientId que corresponde ao nome de um objeto no Registro. A política permite que os dispositivos assinem qualquer tópico com o prefixo "topic_prefix". Ao usar NotResource na instrução para iot:Receive, permitimos que o dispositivo receba mensagens de todos os tópicos dos quais ele é assinante, exceto os tópicos com o prefixo "topic_prefix/restricted". Por exemplo, com essa política, os dispositivos podem assinar “topic_prefix/topic1” e até mesmo “topic_prefix/restricted”; no entanto, eles só receberão mensagens do tópico “topic_prefix/topic1” e nenhuma mensagem do tópico “topic_prefix/restricted”.

JSON
JSON
{ "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 Registro do AWS IoT Core, 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_prefix". Ao usar NotResource na instrução para iot:Receive, permitimos que o dispositivo receba mensagens de todos os tópicos dos quais ele é assinante, exceto os tópicos com o prefixo "topic_prefix/restricted". Por exemplo, com essa política, os dispositivos podem assinar “topic_prefix/topic1” e até mesmo “topic_prefix/restricted”. No entanto, eles só receberão mensagens do tópico “topic_prefix/topic1” e nenhuma mensagem do tópico “topic_prefix/restricted”.

JSON
JSON
{ "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

Os caracteres curinga + e # do MQT são tratados como strings literais, mas não como curingas quando usados nas políticas do AWS IoT Core. No MQTT, + e # 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 políticas do AWS IoT Core após uma análise cuidadosa.

A seguir, mostramos exemplos de itens registrados e não registrados usando curingas do MQTT nas políticas do AWS IoT Core. Esses curingas são tratados como strings literais.

Registered devices

Para dispositivos registrados no Registro do AWS IoT Core, a política a seguir permite que os dispositivos se conectem com o clientId que corresponde ao nome de um objeto no Registro. A política permite que os dispositivos assinem os tópicos "department/+/employees" e "location/#". Como + e # são tratados como strings literais nas políticas do AWS IoT Core, os dispositivos podem assinar o tópico "department/+/employees", mas não o tópico "department/engineering/employees". Da mesma forma, os dispositivos podem assinar o tópico "location/#", mas não o tópico "location/Seattle". No entanto, quando o dispositivo assinar o tópico "department/+/employees", a política permitirá que ele receba mensagens do tópico "department/engineering/employees". Da mesma forma, quando o dispositivo assinar o tópico "location/#", ele também receberá mensagens do tópico "location/Seattle".

JSON
JSON
{ "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 Registro do AWS IoT Core, 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/+/employees" e "location/#". Como + e # são tratados como strings literais nas políticas do AWS IoT Core, os dispositivos podem assinar o tópico "department/+/employees", mas não o tópico "department/engineering/employees". Da mesma forma, os dispositivos podem assinar o tópico "location/#", mas não "location/Seattle". No entanto, quando o dispositivo assinar o tópico "department/+/employees", a política permitirá que ele receba mensagens do tópico "department/engineering/employees". Da mesma forma, quando o dispositivo assinar o tópico "location/#", ele também receberá mensagens do tópico "location/Seattle".

JSON
JSON
{ "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 clientes HTTP e WebSocket

Ao se conectar por meio de HTTP ou do protocolo WebSocket, 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 exclusivo e credenciais da AWS para oferecer suporte a identidades não autenticadas. Para obter mais informações, consulte Autorização com identidades do Amazon Cognito.

Para as seguintes operações, AWS IoT Core usa políticas AWS IoT Core 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 doAWS IoT Core. Você anexa a política de perfil do IAM pool e a política do AWS IoT Core ao Amazon Cognito Identity por meio da API AWS IoT Core AttachPolicy.

Usuários autenticados e não autenticados são tipos de identidade diferentes. Se você não anexar uma política do AWS IoT à identidade do Amazon Cognito, um usuário autenticado falhará na autorização do AWS IoT e não terá acesso aos recursos e ações do AWS IoT.

nota

Para outras operações do AWS IoT Core ou para identidades não autenticadas, o AWS IoT Core não diminui o escopo das permissões anexadas ao perfil do banco 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:

JSON
{ "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 ao perfil do banco de identidades do Amazon Cognito e à identidade do Amazon Cognito usando a API AttachPrincipalPolicy do AWS IoT Core.

nota

Ao autorizar identidades do Amazon Cognito, o AWS IoT Core considera as duas políticas e concede os privilégios mínimos 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 as identidades do Amazon Cognito não autenticadas publiquem mensagens MQTT via WebSocket em um tópico específico da identidade do Amazon Cognito em sua conta, anexe a seguinte política do IAM ao perfil do banco de identidades do Amazon Cognito:

JSON
{ "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 ao perfil do banco de identidades do Amazon Cognito e à identidade do Amazon Cognito usando a API AttachPrincipalPolicy do AWS IoT Core.

nota

Ao autorizar identidades do Amazon Cognito, o AWS IoT Core considera as duas e concede os privilégios mínimos 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.