Ejemplos de política de publicación/suscripción
La política que utilice dependerá de cómo se conecte con AWS IoT Core. Puede conectarse con AWS IoT Core mediante un cliente MQTT, HTTP o WebSocket. Al conectarse con un cliente MQTT, se autenticará con un certificado X.509. Al conectarse mediante HTTP o el protocolo WebSocket, se autenticará con Signature Version 4 y Amazon Cognito.
En el caso de los dispositivos registrados, recomendamos que utilice variables de política de objetos para las acciones de Connect y que los asocie a la entidad principal que se utiliza para la conexión.
Uso de caracteres comodín en MQTT y en las políticas de AWS IoT Core
MQTT y las políticas de AWS IoT Core tienen caracteres comodín diferentes y debe elegirlos tras considerarlos detenidamente. En MQTT, los caracteres comodín + y # se utilizan en los filtros de temas de MQTT para suscribirse a varios nombres de temas. Las políticas de AWS IoT Core utilizan * y ? como caracteres comodín y siguen las convenciones de las políticas de IAM. En un documento de política el * representa cualquier combinación de caracteres y un signo de interrogación ? representa cualquier carácter único. En los documentos de política, los caracteres comodín MQTT + y # se consideran caracteres sin ningún significado especial. Para describir varios nombres de temas y filtros de temas en el atributo resource de una política, utilice los caracteres comodín * y ? en lugar de los caracteres comodín de MQTT.
Al elegir caracteres comodín para usarlos en un documento de política, tenga en cuenta que el carácter * no se limita a un único nivel de tema. El carácter + se limita a un único nivel de tema en un filtro de temas de MQTT. Para limitar una especificación de comodín a un único nivel de filtro de temas de MQTT, considere la posibilidad de utilizar varios caracteres ?. Para obtener más información sobre el uso de caracteres comodín en un recurso de políticas y más ejemplos de sus coincidencias, consulte Uso de caracteres comodín en los ARN de los recursos.
En la siguiente tabla se muestran los distintos caracteres comodín que se utilizan en MQTT y en las políticas de AWS IoT Core de los clientes de MQTT.
| Carácter comodín |
¿Es un carácter comodín de MQTT? |
Ejemplo en MQTT |
¿Es un carácter comodín de política de AWS IoT Core? |
Ejemplo de políticas de AWS IoT Core para clientes de MQTT |
# |
Sí |
some/# |
No |
N/A |
+ |
Sí |
some/+/topic |
No |
N/A |
* |
No |
N/A |
Sí |
topicfilter/some/*/topic
topicfilter/some/sensor*/topic
|
? |
No |
N/A |
Sí |
topic/some/?????/topic
topicfilter/some/sensor???/topic
|
Políticas para publicar, suscribirse y recibir mensajes hacia/desde temas específicos
A continuación se muestran ejemplos de dispositivos registrados y no registrados para publicar, suscribirse y recibir mensajes hacia/desde el tema denominado «some_specific_topic». Los ejemplos también destacan que Publish y Receive utilizan “topic” como recurso y Subscribe utiliza “topicfilter” como recurso.
- Registered devices
-
Para los dispositivos registrados en el registro de AWS IoT Core, la siguiente política permite que los dispositivos se conecten con un clientId que coincida con el nombre de un objeto del registro. También proporciona permisos Publish, Subscribe y Receive para el tema denominado “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
-
En el caso de los dispositivos que no están registrados en el registro de AWS IoT Core, la siguiente política permite que los dispositivos se conecten mediante clientId1, clientId2 o clientId3. También proporciona permisos Publish, Subscribe y Receive para el tema denominado “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, suscribirse y recibir mensajes hacia/desde temas con un prefijo específico
A continuación se muestran ejemplos de dispositivos registrados y no registrados para publicar, suscribirse y recibir mensajes hacia/desde temas con el prefijo «topic_prefix».
Observe el uso del carácter comodín * en este ejemplo. Si bien el carácter comodín * es útil para permitir el uso de varios nombres de temas en una sola instrucción, puede tener consecuencias imprevistas, ya que proporciona a los dispositivos más privilegios de los necesarios. Por lo tanto, le recomendamos que utilice únicamente el carácter comodín * después de considerarlo detenidamente.
- Registered devices
-
Para los dispositivos registrados en el registro de AWS IoT Core, la siguiente política permite que los dispositivos se conecten con un clientId que coincida con el nombre de un objeto del registro. También proporciona permisos Publish, Subscribe y Receive para los temas con el prefijo «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
-
En el caso de los dispositivos que no están registrados en el registro de AWS IoT Core, la siguiente política permite que los dispositivos se conecten mediante clientId1, clientId2 o clientId3. También proporciona permisos Publish, Subscribe y Receive para los temas con el prefijo «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, suscribirse y recibir mensajes hacia/desde temas específicos de cada dispositivo
A continuación se muestran ejemplos de dispositivos registrados y no registrados para publicar, suscribirse y recibir mensajes hacia/desde temas específicos de un determinado dispositivo.
- Registered devices
-
Para los dispositivos registrados en el registro de AWS IoT Core, la siguiente política permite que los dispositivos se conecten con un clientId que coincida con el nombre de un objeto del registro. Da permiso para publicar en un tema de objeto específico (sensor/device/${iot:Connection.Thing.ThingName}) y también para suscribirse y recibir información del tema de objeto específico (command/device/${iot:Connection.Thing.ThingName}). Si el nombre del objeto en el registro es thing1, el dispositivo podrá publicar en el tema sensor/device/thing1. El dispositivo también podrá suscribirse y recibir información sobre el tema 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
-
En el caso de los dispositivos que no están registrados en el registro de AWS IoT Core, la siguiente política permite que los dispositivos se conecten mediante clientId1, clientId2 o clientId3. Da permiso para publicar en un tema de cliente específico (sensor/device/${iot:ClientId}) y también para suscribirse y recibir información del tema de cliente específico (command/device/${iot:ClientId}). Si el dispositivo se conecta con clientId como clientId1, podrá publicar en el tema sensor/device/clientId1. El dispositivo también podrá suscribirse y recibir información del tema 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, suscribirse y recibir mensajes hacia/desde temas con un atributo en el nombre del tema
A continuación se muestra un ejemplo de dispositivos registrados para publicar, suscribirse y recibir mensajes hacia/desde temas cuyos nombres incluyen atributos de objetos.
Los atributos de objeto solo existen para los dispositivos registrados en el registro de AWS IoT Core. No existe un ejemplo correspondiente a los dispositivos no registrados.
- Registered devices
-
Para los dispositivos registrados en el registro de AWS IoT Core, la siguiente política permite que los dispositivos se conecten con un clientId que coincida con el nombre de un objeto del registro. Da permiso para publicar en el tema (sensor/${iot:Connection.Thing.Attributes[version]}) y suscribirse y recibir información del tema (command/${iot:Connection.Thing.Attributes[location]}) si el nombre del tema incluye atributos de objeto. Si el nombre del objeto incluye version=v1 y location=Seattle, el dispositivo podrá publicar en el tema sensor/v1 y suscribirse y recibir información del tema 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
-
Como los atributos de objetos solo existen para los dispositivos registrados en el registro de AWS IoT Core, no existe un ejemplo correspondiente para los dispositivos no registrados.
Políticas para denegar la publicación de mensajes en subtemas del nombre de un tema
A continuación, se muestran ejemplos de dispositivos registrados y no registrados para publicar mensajes en todos los temas, excepto en algunos subtemas.
- Registered devices
-
Para los dispositivos registrados en el registro de AWS IoT Core, la siguiente política permite que los dispositivos se conecten con un clientId que coincida con el nombre de un objeto del registro. Da permiso para publicar en todos los temas con el prefijo «departament/», pero no en el subtema «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
-
En el caso de los dispositivos que no están registrados en el registro de AWS IoT Core, la siguiente política permite que los dispositivos se conecten mediante clientId1, clientId2 o clientId3. Da permiso para publicar en todos los temas con el prefijo «departament/», pero no en el subtema «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 denegar la recepción de mensajes de subtemas del nombre de un tema
A continuación se muestran ejemplos para que dispositivos registrados y no registrados se suscriban y reciban mensajes de temas con prefijos específicos, excepto determinados subtemas.
- Registered devices
-
Para los dispositivos registrados en el registro de AWS IoT Core, la siguiente política permite que los dispositivos se conecten con un clientId que coincida con el nombre de un objeto del registro. La política permite a los dispositivos suscribirse a cualquier tema con el prefijo «topic_prefix». Al utilizar NotResource en la declaración para iot:Receive, permitimos que el dispositivo reciba mensajes de todos los temas a los que esté suscrito, excepto los temas con el prefijo «topic_prefix/restricted». Por ejemplo, con esta política, los dispositivos pueden suscribirse a «topic_prefix/topic1» e incluso a «topic_prefix/restricted»; sin embargo, solo recibirán mensajes del tema «topic_prefix/topic1» y no mensajes del tema «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
-
En el caso de los dispositivos que no están registrados en el registro de AWS IoT Core, la siguiente política permite que los dispositivos se conecten mediante clientId1, clientId2 o clientId3. La política permite a los dispositivos suscribirse a cualquier tema con el prefijo «topic_prefix». Al utilizar NotResource en la declaración para iot:Receive, permitimos que el dispositivo reciba mensajes de todos los temas a los que esté suscrito, excepto los temas con el prefijo «topic_prefix/restricted». Por ejemplo, con esta política, los dispositivos pueden suscribirse a topic_prefix/topic1 e incluso a topic_prefix/restricted. Sin embargo, solo recibirán mensajes del tema topic_prefix/topic1 y ningún mensaje del tema 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 suscribirse a temas con caracteres comodín de MQTT
Los caracteres comodín + y # de MQTT se tratan como cadenas literales, pero no se tratan como caracteres comodín cuando se utilizan en las políticas de AWS IoT Core. En MQTT, + y # se tratan como caracteres comodín solo cuando se suscribe a un filtro de tema, pero se tratan como cadenas literales en todos los demás contextos. Le recomendamos que utilice estos caracteres comodín de MQTT únicamente como parte de las políticas de AWS IoT Core tras considerarlos detenidamente.
A continuación se muestran ejemplos de elementos registrados y no registrados que utilizan caracteres comodín de MQTT en las políticas de AWS IoT Core. Estos caracteres comodín se tratan como cadenas literales.
- Registered devices
-
Para los dispositivos registrados en el registro de AWS IoT Core, la siguiente política permite que los dispositivos se conecten con un clientId que coincida con el nombre de un objeto del registro. La política permite que los dispositivos se suscriban a los temas «department/+/employees» y «location/#». Dado que + y # se tratan como cadenas literales en las políticas de AWS IoT Core, los dispositivos pueden suscribirse al tema department/+/employees, pero no al tema department/engineering/employees. Del mismo modo, los dispositivos pueden suscribirse al tema «location/#» pero no al tema «location/Seattle». Sin embargo, una vez que el dispositivo se suscriba al tema «departament/+/employees», la política le permitirá recibir mensajes sobre el tema «department/engineering/employees». Del mismo modo, una vez que el dispositivo se suscriba al tema «location/#», también recibirá mensajes del tema «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
-
En el caso de los dispositivos que no están registrados en el registro de AWS IoT Core, la siguiente política permite que los dispositivos se conecten mediante clientId1, clientId2 o clientId3. La política permite que los dispositivos se suscriban a los temas de «department/+/employees» y «location/#». Dado que + y # se tratan como cadenas literales en las políticas de AWS IoT Core, los dispositivos pueden suscribirse al tema department/+/employees, pero no al tema department/engineering/employees. Del mismo modo, los dispositivos pueden suscribirse al tema «location/#» pero no a «location/Seattle». Sin embargo, una vez que el dispositivo se suscriba al tema «departament/+/employees», la política le permitirá recibir mensajes sobre el tema «department/engineering/employees». Del mismo modo, una vez que el dispositivo se suscriba al tema «location/#», también recibirá mensajes del tema «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 de HTTP y WebSocket
Al conectarse mediante HTTP o el protocolo WebSocket, se autenticará con Signature Version 4 y Amazon Cognito. Las identidades de Amazon Cognito pueden ser autenticadas o no autenticadas. Las identidades autenticadas pertenecen a los usuarios que se han autenticado mediante un proveedor de identidad compatible. Las identidades no autenticadas suelen pertenecer a usuarios invitados que no se autentiquen con un proveedor de identidades. Amazon Cognito proporciona un identificador único y credenciales de AWS para admitir identidades no autenticadas. Para obtener más información, consulte Autorización con identidades de Amazon Cognito.
Para las siguientes operaciones, AWS IoT Core utiliza políticas de AWS IoT Core asociadas a las identidades de Amazon Cognito a través de la API AttachPolicy. Esto reduce los permisos asociados al grupo de identidades de Amazon Cognito con identidades autenticadas.
-
iot:Connect
-
iot:Publish
-
iot:Subscribe
-
iot:Receive
-
iot:GetThingShadow
-
iot:UpdateThingShadow
-
iot:DeleteThingShadow
Esto significa que una identidad de Amazon Cognito necesita el permiso de la política de rol de IAM y la política de AWS IoT Core. Puede asociar la política de rol de IAM al grupo y la política de AWS IoT Core a la identidad de Amazon Cognito mediante la API AttachPolicy de AWS IoT Core.
Los usuarios autenticados y no autenticados son tipos de identidad diferentes. Si no se asocia una política de AWS IoT a Amazon Cognito Identity, un usuario autenticado no podrá obtener la autorización en AWS IoT y no tendrá acceso a los recursos ni a las acciones de AWS IoT.
En el caso de otras operaciones de AWS IoT Core o de identidades sin autenticar, AWS IoT Core no reduce el ámbito de los permisos asociados al rol del grupo de identidades de Amazon Cognito. Para las identidades autenticadas y sin autenticar, esta es la política más permisiva que recomendamos asociar al rol del grupo de Amazon Cognito.
HTTP
Para permitir que identidades de Amazon Cognito sin autenticar publiquen mensajes sobre HTTP en un tema específico de la identidad de Amazon Cognito, asocie la política de IAM siguiente al rol de grupo de identidades de Amazon Cognito:
- 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 la autenticación de usuarios, asocie la política anterior al rol del grupo de identidades de Amazon Cognito Identity y a Amazon Cognito Identity mediante la API AttachPolicy de AWS IoT Core.
Al autorizar identidades de Amazon Cognito, AWS IoT Core tendrá en cuenta ambas políticas y concederá los mínimos privilegios especificados. Solo se permite una acción si ambas políticas permiten la acción solicitada. Si una de ellas no permite una acción, esa acción no se autoriza.
MQTT
Para permitir que identidades de Amazon Cognito sin autenticar publiquen mensajes MQTT a través de WebSocket en un tema específico de la identidad de Amazon Cognito en su cuenta, asocie la siguiente política de IAM al rol de grupo de identidades de 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 la autenticación de usuarios, asocie la política anterior al rol del grupo de identidades de Amazon Cognito Identity y a Amazon Cognito Identity mediante la API AttachPolicy de AWS IoT Core.
Al autorizar identidades de Amazon Cognito, AWS IoT Core tendrá en cuenta ambas y concederá los mínimos privilegios especificados. Solo se permite una acción si ambas políticas permiten la acción solicitada. Si una de ellas no permite una acción, esa acción no se autoriza.