Beispiele für Veröffentlichungs-/Abonnement-Richtlinien - AWS IoT Core

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Beispiele für Veröffentlichungs-/Abonnement-Richtlinien

Welche Richtlinie Sie verwenden, hängt davon ab, wie Sie eine Verbindung herstellen AWS IoT Core. Sie können eine Verbindung herstellen, AWS IoT Core indem Sie einen MQTT-Client, HTTP oder WebSocket verwenden. Wenn Sie sich über einen MQTT-Client verbinden, nutzen Sie für die Authentifizierung ein X.509-Zertifikat. Wenn Sie eine Verbindung über HTTP oder das WebSocket Protokoll herstellen, authentifizieren Sie sich mit Signature Version 4 und Amazon Cognito.

Anmerkung

Für registrierte Geräte empfehlen wir, Objektrichtlinienvariablen für Connect-Aktionen zu verwenden und das Objekt an den Prinzipal anzuhängen, der für die Verbindung verwendet wird.

Verwenden von Platzhalterzeichen in MQTT und AWS IoT Core -Richtlinien

MQTT und AWS IoT Core Richtlinien haben unterschiedliche Platzhalterzeichen, und Sie sollten sie nach reiflicher Überlegung auswählen. In MQTT # werden die Platzhalterzeichen + und in MQTT-Themenfiltern verwendet, um mehrere Themennamen zu abonnieren. AWS IoT Core Richtlinien verwenden * und ? als Platzhalterzeichen und folgen den Konventionen der IAM-Richtlinien. In einem Richtliniendokument steht * für eine beliebige Kombination von mehreren Zeichen und ein Fragezeichen ? entspricht einem beliebigen einzelnen Zeichen. In Richtliniendokumenten werden die MQTT-Platzhalterzeichen + und # als Zeichen ohne besondere Bedeutung behandelt. Verwenden Sie die Platzhalterzeichen * und ? anstelle der MQTT-Platzhalterzeichen, um mehrere Topic-Namen und -Filter im resource-Attribut einer Richtlinie zu beschreiben,

Beachten Sie bei der Auswahl der Platzhalterzeichen für die Verwendung in einem Richtliniendokument, dass das * Zeichen nicht auf eine einzelne Themenebene beschränkt ist. Das + Zeichen ist in einem MQTT-Themenfilter auf eine einzelne Themenebene beschränkt. Ziehen Sie die Verwendung mehrerer ?-Zeichen in Betracht, um eine Platzhalterspezifikation auf eine einzige MQTT-Topic-Filterebene zu beschränken, Weitere Informationen zur Verwendung von Platzhalterzeichen in einer Richtlinienressource und weitere Beispiele für deren Übereinstimmung finden Sie unter Verwenden von Platzhaltern in Ressourcen. ARNs

Die folgende Tabelle zeigt die verschiedenen Platzhalterzeichen, die in MQTT und AWS IoT Core -Richtlinien für MQTT-Clients verwendet werden.

Platzhalterzeichen Ist ein MQTT-Platzhalterzeichen Beispiel in MQTT Ist ein Platzhalterzeichen AWS IoT Core für Richtlinien Beispiel für AWS IoT Core Richtlinien für MQTT-Clients
# Ja some/# Nein N/A
+ Ja some/+/topic Nein N/A
* Nein N/A Ja

topicfilter/some/*/topic

topicfilter/some/sensor*/topic

? Nein N/A Ja

topic/some/?????/topic

topicfilter/some/sensor???/topic

Richtlinien zum Veröffentlichen, Abonnieren und Empfangen von Nachrichten zu/von bestimmten Topics

Im Folgenden finden Sie Beispiele für registrierte und nicht registrierte Geräte zum Veröffentlichen, Abonnieren und Empfangen von Nachrichten zum/vom Topic „some_specific_topic“. In diesen Beispielen wird ebenfalls hervorgehiben, dass Publish und Receive „topic“ als Ressource und Subscribe „topicfilter“ als Ressource verwenden.

Registered devices

Für Geräte, die in der AWS IoT Core Registrierung registriert sind, ermöglicht die folgende Richtlinie, dass Geräte eine Verbindung mit einer clientId herstellen, die dem Namen einer Sache in der Registrierung entspricht. Sie bietet auch Publish-, Subscribe- und Receive-Berechtigungen für das Topic namens „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

Für Geräte, die nicht in der AWS IoT Core Registrierung registriert sind, ermöglicht die folgende Richtlinie, dass Geräte entweder über ClientID1, ClientID2 oder ClientID3 eine Verbindung herstellen. Sie bietet auch Publish-, Subscribe- und Receive-Berechtigungen für das Topic namens „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" ] } ] }

Richtlinien zum Veröffentlichen, Abonnieren und Empfangen von Nachrichten zu/von Topics mit einem bestimmten Präfix

Im Folgenden finden Sie Beispiele für registrierte und nicht registrierte Geräte zum Veröffentlichen, Abonnieren und Empfangen von Nachrichten zu/von Topics mit dem Präfix „topic_prefix“.

Anmerkung

Beachten Sie die Verwendung des Platzhalterzeichens in diesem Beispiel. * Es * ist zwar nützlich, Berechtigungen für mehrere Themennamen in einer einzigen Anweisung bereitzustellen, kann jedoch zu unbeabsichtigten Folgen führen, da Geräten mehr Rechte gewährt werden als erforderlich. Wir empfehlen daher, das Platzhalterzeichen nur * nach reiflicher Überlegung zu verwenden.

Registered devices

Für Geräte, die in der AWS IoT Core Registrierung registriert sind, ermöglicht die folgende Richtlinie, dass Geräte eine Verbindung mit einer clientId herstellen, die dem Namen einer Sache in der Registrierung entspricht. Sie bietet Publish-, Subscribe- and Receive-Berechtigungen für Topics mit dem Präfix „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

Für Geräte, die nicht in der AWS IoT Core Registrierung registriert sind, ermöglicht die folgende Richtlinie, dass Geräte entweder über ClientID1, ClientID2 oder ClientID3 eine Verbindung herstellen. Sie bietet Publish-, Subscribe- and Receive-Berechtigungen für Topics mit dem Präfix „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*" ] } ] }

Richtlinien zum Veröffentlichen, Abonnieren und Empfangen von Nachrichten zu/von spezifischen Topics einzelner Geräte

Im Folgenden finden Sie Beispiele für registrierte und nicht registrierte Geräte zum Veröffentlichen, Abonnieren und Empfangen von Nachrichten zu/von Topics eines bestimmten Geräts.

Registered devices

Für Geräte, die in der AWS IoT Core Registrierung registriert sind, ermöglicht die folgende Richtlinie, dass Geräte eine Verbindung mit einer clientId herstellen, die dem Namen einer Sache in der Registrierung entspricht. Sie berechtigt zum Veröffentlichen von Inhalten zum objektspezifischen Topic (sensor/device/${iot:Connection.Thing.ThingName}) sowie zum Abonnieren und Empfangen von Inhalten zum objektspezifischen Topic (command/device/${iot:Connection.Thing.ThingName}). Wenn der Name des Objekts in der Registrierung „thing1" lautet, kann das Gerät unter dem Thema" 1" veröffentlichen. 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

Für Geräte, die nicht in der AWS IoT Core Registrierung registriert sind, ermöglicht die folgende Richtlinie, dass Geräte entweder über ClientID1, ClientID2 oder ClientID3 eine Verbindung herstellen. Sie berechtigt zum Veröffentlichen von Inhalten zum clientspezifischen Topic (sensor/device/${iot:ClientId}) sowie zum Abonnieren und Empfangen von Inhalten zum clientspezifischen Topic (command/device/${iot:ClientId}). Wenn das Gerät eine Verbindung mit clientId als ClientID1 herstellt, kann es zum Thema "1" veröffentlichen. sensor/device/clientId Das Gerät kann das Thema auch abonnieren und Inhalte empfangen. 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}" ] } ] }

Richtlinien zum Veröffentlichen, Abonnieren und Empfangen von Nachrichten zu/von Topics, bei denen das Objektattribut im Namen des Topics steht

Im Folgenden finden Sie ein Beispiel für registrierte Geräte zum Veröffentlichen, Abonnieren und Empfangen von Nachrichten zu/von Topics, deren Namen Objektattribute enthalten.

Anmerkung

Thing-Attribute existieren nur für Geräte, die in der AWS IoT Core Registrierung registriert sind. Es gibt kein entsprechendes Beispiel für nicht registrierte Geräte.

Registered devices

Für Geräte, die in der AWS IoT Core Registrierung registriert sind, ermöglicht die folgende Richtlinie, dass Geräte eine Verbindung mit einer clientId herstellen, die dem Namen einer Sache in der Registrierung entspricht. Sie berechtigt zum Veröffentlichen von Inhalten im Topic (sensor/${iot:Connection.Thing.Attributes[version]}) sowie zum Abonnieren und Empfangen von Inhalten zum Topic (command/${iot:Connection.Thing.Attributes[location]}), wenn der Name des Topics Objektattribute enthält. Wenn der Name des Objekts in der Registrierung den version=v1 Wert und hatlocation=Seattle, kann das Gerät Beiträge zum Thema "" sensor/v1", and subscribe to and receive from the topic "command/Seattle veröffentlichen.

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

Da Ding-Attribute nur für Geräte existieren, die in der AWS IoT Core Registrierung registriert sind, gibt es kein entsprechendes Beispiel für nicht registrierte Dinge.

Richtlinien, um die Veröffentlichung von Nachrichten zu untergeordneten Topics eines Topic-Namens zu verweigern

Im Folgenden finden Sie Beispiele für registrierte und nicht registrierte Geräte, mit denen Nachrichten zu allen Topics außer bestimmten untergeordneten Topics veröffentlicht werden können.

Registered devices

Für Geräte, die in der AWS IoT Core Registrierung registriert sind, ermöglicht die folgende Richtlinie, dass Geräte eine Verbindung mit einer clientId herstellen, die dem Namen einer Sache in der Registrierung entspricht. Sie berechtigt zur Veröffentlichung von Inhalten zu allen Topics mit dem Präfix „department/“, nicht jedoch zum untergeordneten Topic „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

Für Geräte, die nicht in der AWS IoT Core Registrierung registriert sind, ermöglicht die folgende Richtlinie, dass Geräte entweder über ClientID1, ClientID2 oder ClientID3 eine Verbindung herstellen. Sie berechtigt zur Veröffentlichung von Inhalten zu allen Topics mit dem Präfix „department/“, nicht jedoch zum untergeordneten Topic „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" ] } ] }

Richtlinien, um den Empfang von Nachrichten von untergeordneten Topics eines Topic-Namens zu verweigern

Im Folgenden finden Sie Beispiele für registrierte und nicht registrierte Geräte, die Nachrichten von allen Topics mit bestimmten Präfixen außer gewissen untergeordneten Topics abonnieren und empfangen.

Registered devices

Für Geräte, die in der AWS IoT Core Registrierung registriert sind, ermöglicht die folgende Richtlinie, dass Geräte eine Verbindung mit einer clientId herstellen, die dem Namen einer Sache in der Registrierung entspricht. Die Richtlinie ermöglicht es Geräten, jedes Topic mit dem Präfix „topic_prefix“ zu abonnieren. Durch die Verwendung NotResource in der Anweisung for ermöglichen wir dem Gerätiot:Receive, Nachrichten zu allen Themen zu empfangen, die das Gerät abonniert hat, mit Ausnahme der Themen mit dem Präfix „topic_“. prefix/restricted". For example, with this policy, devices can subscribe to "topic_prefix/topic1" and even "topic_prefix/restricted", however, they will only receive messages from the topic "topic_prefix/topic1" and no messages from the topic "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

Für Geräte, die nicht in der AWS IoT Core Registrierung registriert sind, ermöglicht die folgende Richtlinie, dass Geräte entweder über ClientID1, ClientID2 oder ClientID3 eine Verbindung herstellen. Die Richtlinie ermöglicht es Geräten, jedes Topic mit dem Präfix „topic_prefix“ zu abonnieren. Durch die Verwendung NotResource in der Anweisung for ermöglichen wir dem Gerätiot:Receive, Nachrichten zu allen Themen zu empfangen, die das Gerät abonniert hat, mit Ausnahme von Themen mit dem Präfix „topic_“. prefix/restricted". For example, with this policy, devices can subscribe to "topic_prefix/topic1" and even "topic_prefix/restricted". However, they will only receive messages from the topic "topic_prefix/topic1" and no messages from the topic "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/*" } ] }

Richtlinien zum Abonnieren von Topics mit MQTT-Platzhalterzeichen

Die MQTT-Platzhalterzeichen + und # werden als Literalzeichenfolgen behandelt, aber sie werden nicht als Platzhalter behandelt, wenn sie in Richtlinien verwendet werden. AWS IoT Core In MQTT werden + und # nur als Platzhalter behandelt, wenn ein Topic-Filter abonniert wird. In anderen Zusammenhängen werden sie als wörtliche Zeichenfolge gehandhabt. Wir empfehlen, diese MQTT-Platzhalter nur nach sorgfältiger Prüfung als Teil von Richtlinien zu verwenden. AWS IoT Core

Im Folgenden finden Sie Beispiele für registrierte und nicht registrierte Dinge, die MQTT-Platzhalter in Richtlinien verwenden. AWS IoT Core Diese Platzhalter werden als Literalzeichenfolgen behandelt.

Registered devices

Für Geräte, die in der AWS IoT Core Registrierung registriert sind, ermöglicht die folgende Richtlinie, dass Geräte eine Verbindung mit einer clientId herstellen, die dem Namen einer Sache in der Registrierung entspricht. Die Richtlinie ermöglicht es Geräten, die Topics „department/+/employees“ und „location/#“ zu abonnieren. Da + und # in AWS IoT Core Richtlinien als wörtliche Zeichenketten behandelt werden, können Geräte das Thema „Abteilung/+/Mitarbeiter“ abonnieren, aber nicht auch das Thema "". department/engineering/employees". Similarly, devices can subscribe to the topic "location/#" but not to the topic "location/Seattle". However, once the device subscribes to the topic "department/+/employees", the policy will allow them to receive messages from the topic "department/engineering/employees". Similarly, once the device subscribes to the topic "location/#", 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

Für Geräte, die nicht in der AWS IoT Core Registrierung registriert sind, ermöglicht die folgende Richtlinie, dass Geräte entweder über ClientID1, ClientID2 oder ClientID3 eine Verbindung herstellen. Mit der Richtlinie können Geräte die Topics „department/+/employees“ und „location/#“ abonnieren. Da + und # in AWS IoT Core Richtlinien als wörtliche Zeichenketten behandelt werden, können Geräte das Thema „Abteilung/+/Mitarbeiter“ abonnieren, aber nicht auch das Thema "". department/engineering/employees". Similarly, devices can subscribe to the topic "location/#" but not "location/Seattle". However, once the device subscribes to the topic "department/+/employees", the policy will allow them to receive messages from the topic "department/engineering/employees". Similarly, once the device subscribes to the topic "location/#", 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/*" } ] }

Richtlinien für HTTP und Clients WebSocket

Wenn Sie eine Verbindung über HTTP oder das WebSocket Protokoll herstellen, authentifizieren Sie sich mit Signature Version 4 und Amazon Cognito. Amazon-Cognito-Identitäten können authentifiziert oder nicht authentifiziert sein. Authentifizierte Identitäten gehören zu Benutzer, die von einem unterstützten Identitätsanbieter authentifiziert werden. Nicht authentifizierte Identitäten gehören in der Regel Gastbenutzern, die sich nicht bei einem Identitätsanbieter authentifizieren. Amazon Cognito bietet eine eindeutige Kennung und AWS Anmeldeinformationen zur Unterstützung nicht authentifizierter Identitäten. Weitere Informationen finden Sie unter Autorisierung mit Amazon-Cognito-Identitäten.

AWS IoT Core Verwendet für die folgenden Operationen AWS IoT Core Richtlinien, die über die API an Amazon Cognito Cognito-Identitäten angehängt sind. AttachPolicy Dadurch werden die Berechtigungen, die dem Amazon Cognito Cognito-Identitätspool mit authentifizierten Identitäten zugewiesen sind, eingeschränkt.

  • iot:Connect

  • iot:Publish

  • iot:Subscribe

  • iot:Receive

  • iot:GetThingShadow

  • iot:UpdateThingShadow

  • iot:DeleteThingShadow

Das bedeutet, dass eine Amazon Cognito Cognito-Identität die Genehmigung der IAM-Rollenrichtlinie und der AWS IoT Core Richtlinie benötigt. Sie fügen die IAM-Rollenrichtlinie über die API dem Pool und die AWS IoT Core Richtlinie der Amazon Cognito Identity hinzu. AWS IoT Core AttachPolicy

Authentifizierte und nicht authentifizierte Benutzer sind unterschiedliche Identitätstypen. Wenn Sie der Amazon Cognito Identity keine AWS IoT Richtlinie beifügen, schlägt ein authentifizierter Benutzer die Autorisierung fehl AWS IoT und hat keinen Zugriff auf AWS IoT Ressourcen und Aktionen.

Anmerkung

Bei anderen AWS IoT Core Vorgängen oder bei AWS IoT Core nicht authentifizierten Identitäten werden die mit der Amazon Cognito Cognito-Identitätspool-Rolle verbundenen Berechtigungen nicht eingeschränkt. Dies ist sowohl für authentifizierte als auch für nicht authentifizierte Identitäten die großzügigste Richtlinie, die Sie der Amazon-Cognito-Poolrolle hinzufügen sollten.

HTTP

Um nicht authentifizierten Amazon-Cognito-Identitäten zu ermöglichen, Nachrichten über HTTP zu einem für die Amazon-Cognito-Identität spezifischen Thema zu veröffentlichen, fügen Sie der Amazon-Cognito-Identitätspoolrolle die folgende IAM-Richtlinie an:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", ], "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${cognito-identity.amazonaws.com:sub}"] } ] }

Um authentifizierte Benutzer zuzulassen, fügen Sie die obige Richtlinie der Amazon Cognito Identity-Pool-Rolle und der Amazon Cognito Identity mithilfe der API hinzu. AWS IoT Core AttachPolicy

Anmerkung

Bei der Autorisierung von Amazon Cognito Cognito-Identitäten werden beide Richtlinien AWS IoT Core berücksichtigt und die geringsten angegebenen Rechte gewährt. Eine Aktion ist nur zulässig, wenn beide Richtlinien die angeforderte Aktion zulassen. Wenn eine Richtlinie eine Aktion verbietet, wird diese Aktion nicht erlaubt.

MQTT

Um nicht authentifizierten Amazon Cognito Cognito-Identitäten die Veröffentlichung von MQTT-Nachrichten zu einem WebSocket Thema zu ermöglichen, das für die Amazon Cognito Cognito-Identität in Ihrem Konto spezifisch ist, fügen Sie der Amazon Cognito Cognito-Identitätspool-Rolle die folgende IAM-Richtlinie hinzu:

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

Um authentifizierte Benutzer zuzulassen, fügen Sie die obige Richtlinie der Amazon Cognito Identity-Pool-Rolle und der Amazon Cognito Identity mithilfe der API hinzu. AWS IoT Core AttachPolicy

Anmerkung

Bei der Autorisierung von Amazon Cognito Cognito-Identitäten werden beide AWS IoT Core berücksichtigt und die geringsten angegebenen Rechte gewährt. Eine Aktion ist nur zulässig, wenn beide Richtlinien die angeforderte Aktion zulassen. Wenn eine Richtlinie eine Aktion verbietet, wird diese Aktion nicht erlaubt.