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

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á.

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

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

Usando caracteres curinga em MQTT e AWS IoT Core políticas

MQTTe AWS IoT Core as políticas têm caracteres curinga diferentes e você deve escolhê-las após uma análise cuidadosa. EmMQTT, os caracteres curinga + e # são usados em filtros de MQTT tópicos 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 IAM políticas. 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 MQTT curinga + e e # são tratados como aqueles caracteres sem significado especial. Para descrever vários nomes de tópicos e filtros de tópicos no resource atributo de uma política, use os caracteres ? curinga * e no lugar dos caracteres MQTT curinga.

Ao escolher os caracteres curinga a serem usados em um documento de política, considere que o * caractere não está confinado a um único nível de tópico. O + personagem está confinado a um único nível de tópico em um filtro de MQTT tópicos. Para ajudar a restringir uma especificação de curinga a um único nível de filtro de MQTT tópico, 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 recurso. ARNs

A tabela abaixo mostra os diferentes caracteres curinga usados em MQTT e AWS IoT Core políticas para MQTT clientes.

Caractere curinga É um MQTT caractere curinga Exemplo em MQTT É AWS IoT Core caractere curinga de política Exemplo em AWS IoT Core políticas para MQTT clientes
# 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 em AWS IoT Core registro, a política a seguir permite clientId que dispositivos se conectem com o nome de uma coisa no registro. Ele também fornece permissões de Publish, Subscribe e Receive para o tópico chamado “some_specific_topic”.

{ "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 em AWS IoT Core registro, a política a seguir permite que os dispositivos se conectem usando clientId 1, clientId 2 ou clientId 3. Ele também fornece permissões de Publish, Subscribe e Receive para o tópico chamado “some_specific_topic”.

{ "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 * seja útil fornecer permissões para vários nomes de tópicos em uma única declaração, isso pode levar a consequências indesejadas 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 em AWS IoT Core registro, a política a seguir permite clientId que dispositivos se conectem com o nome de uma coisa no registro. Ele também fornece permissões de Publish, Subscribe e Receive para tópicos com o prefixo “topic_prefix”.

{ "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 em AWS IoT Core registro, a política a seguir permite que os dispositivos se conectem usando clientId 1, clientId 2 ou clientId 3. Ele também fornece permissões de Publish, Subscribe e Receive para tópicos com o prefixo “topic_prefix”.

{ "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 em AWS IoT Core registro, a política a seguir permite clientId que dispositivos se conectem com o 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 “sensor/dispositivo/coisa1". O dispositivo também poderá se inscrever e receber do tópico “comando/dispositivo/coisa1".

{ "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 em AWS IoT Core registro, a política a seguir permite que os dispositivos se conectem usando clientId 1, clientId 2 ou clientId 3. 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 com clientId as clientId 1, ele poderá publicar no tópico “clientIdsensor/dispositivo/1". O dispositivo também poderá se inscrever e receber informações do tópicodevice/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/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 Thing só existem para dispositivos registrados em AWS IoT Core Registro. Não há um exemplo correspondente para dispositivos não registrados.

Registered devices

Para dispositivos registrados em AWS IoT Core registro, a política a seguir permite clientId que dispositivos se conectem com o 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 elocation=Seattle, o dispositivo poderá publicar no tópico “sensor/v1", assinar e receber do tópico “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

Porque os atributos das coisas só existem para dispositivos registrados em AWS IoT Core registro, não há um exemplo correspondente para coisas 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 em AWS IoT Core registro, a política a seguir permite clientId que dispositivos se conectem com o 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 em AWS IoT Core registro, a política a seguir permite que os dispositivos se conectem usando clientId 1, clientId 2 ou clientId 3. 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

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 em AWS IoT Core registro, a política a seguir permite clientId que dispositivos se conectem com o nome de uma coisa 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”.

{ "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 em AWS IoT Core registro, a política a seguir permite que os dispositivos se conectem usando clientId 1, clientId 2 ou clientId 3. 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”.

{ "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 MQTT caracteres curinga

MQTTos caracteres curinga + e # são tratados como cadeias de caracteres literais, mas não são tratados como curingas quando usados em AWS IoT Core políticas. EmMQTT, + 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 MQTT curingas somente como parte do AWS IoT Core políticas após uma análise cuidadosa.

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

Registered devices

Para dispositivos registrados em AWS IoT Core registro, a política a seguir permite clientId que dispositivos se conectem com o nome de uma coisa no registro. A política permite que os dispositivos assinem os tópicos "department/+/employees" e "location/#". Porque + e # são tratados como cadeias de caracteres literais em AWS IoT Core políticas, os dispositivos podem se inscrever no tópico “departamento/+/funcionários”, mas não no tópico “departamento/engenharia/funcionários”. 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".

{ "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 em AWS IoT Core registro, a política a seguir permite que os dispositivos se conectem usando clientId 1, clientId 2 ou clientId 3. A política permite que os dispositivos assinem os tópicos "department/+/employees" e "location/#". Porque + e # são tratados como cadeias de caracteres literais em AWS IoT Core políticas, os dispositivos podem se inscrever no tópico “departamento/+/funcionários”, mas não no tópico “departamento/engenharia/funcionários”. 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".

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

Ao se conectar ao HTTP 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 exclusivo e AWS credenciais 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 uses AWS IoT Core políticas anexadas às identidades do Amazon Cognito por meio do. AttachPolicy API Isso define as permissões anexadas ao pool de identidades do Amazon Cognito com identidades autenticadas.

  • iot:Connect

  • iot:Publish

  • iot:Subscribe

  • iot:Receive

  • iot:GetThingShadow

  • iot:UpdateThingShadow

  • iot:DeleteThingShadow

Isso significa que uma identidade do Amazon Cognito precisa da permissão da política de IAM função e da AWS IoT Core política. Você anexa a política de IAM função ao pool e ao AWS IoT Core política para a Identidade do Amazon Cognito por meio do AWS IoT Core AttachPolicy API.

Usuários autenticados e não autenticados são tipos de identidade diferentes. Se você não anexar um AWS IoT política para o Amazon Cognito Identity, um usuário autenticado falha na autorização em AWS IoT e não tem acesso a AWS IoT recursos e ações.

nota

Para outros 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 identidades não autenticadas do Amazon Cognito publiquem mensagens HTTP sobre um tópico específico da Identidade do Amazon Cognito, anexe a seguinte política à função do pool de Identidade do Amazon IAM 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 o AWS IoT Core AttachPolicy API.

nota

Ao autorizar as identidades do Amazon Cognito, AWS IoT Core considera as duas políticas e concede 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 MQTT publiquem mensagens WebSocket sobre um tópico específico da Identidade do Amazon Cognito em sua conta, anexe a seguinte política à função do pool de Identidade do Amazon IAM 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 o AWS IoT Core AttachPolicy API.

nota

Ao autorizar as identidades do Amazon Cognito, AWS IoT Core considera ambos e concede 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.