View a markdown version of this page

Publish/Subscribe Beispiele für 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.

Publish/Subscribe Beispiele für 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 eine Verbindung mit einem MQTT-Client herstellen, authentifizieren Sie sich mit einem Zertifikat. X.509 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.

Verwendung 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 von IAM-Richtlinien. https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html#policies-grammar-json 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, die in einem Richtliniendokument verwendet werden sollen, dass das * Zeichen nicht auf eine einzelne Themenebene beschränkt ist. Das + Zeichen ist in einem MQTT-Themenfilter auf eine einzige 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 in 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 to/from bestimmten Themen

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

Registered devices

Bei Geräten, 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 Nachrichtenthemen mit einem bestimmten Präfix to/from

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

Anmerkung

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

Registered devices

Bei Geräten, 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, die für jedes Gerät spezifisch sind to/from

Im Folgenden finden Sie Beispiele für registrierte und nicht registrierte Geräte zum Veröffentlichen, Abonnieren und Empfangen von Nachrichten to/from , die für das jeweilige Gerät spezifisch sind.

Registered devices

Bei Geräten, 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 Dings in der Registrierung „thing1" lautet, kann das Gerät Beiträge zum Thema" sensor/device /thing1“ veröffentlichen. Das Gerät wird auch in der Lage sein, das Thema "command/device/thing1“ zu abonnieren und von diesem zu empfangen.

{ "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 können. 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 im Thema "/clientID1" veröffentlichen. sensor/device Das Gerät wird das Thema auch abonnieren und empfangen können. 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 to/from Nachrichtenthemen mit einem Ding-Attribut im Themennamen

Im Folgenden finden Sie ein Beispiel für registrierte Geräte zum Veröffentlichen, Abonnieren und Empfangen von to/from Nachrichtenthemen, deren Namen Dingattribute enthalten.

Anmerkung

Dingattribute 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

Bei Geräten, 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 location=Seattle Wert version=v1 und hat, kann das Gerät Beiträge zum Thema "sensor/v1" veröffentlichen und das Thema "" command/Seattle abonnieren und empfangen.

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

Bei Geräten, 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 aller Themen, denen „department/“ vorangestellt ist, aber nicht zum Unterthema "". 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 Beiträgen zu allen Themen, denen „department/“ vorangestellt ist, jedoch nicht zum Unterthema "". 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

Bei Geräten, 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 für ermöglichen wir dem Gerätiot:Receive, Nachrichten zu allen Themen zu empfangen, die das Gerät abonniert hat, mit Ausnahme der Themen, denen "" vorangestellt ist. topic_prefix/restricted Mit dieser Richtlinie können Geräte beispielsweise "" und sogar topic_prefix/topic1 "" abonnieren. Sie erhalten jedoch nur Nachrichten zum Thema "topic_prefix/topic1" und keine Nachrichten zum Thema "“topic_prefix/restricted. 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 für ermöglichen wir dem Gerätiot:Receive, Nachrichten zu allen Themen zu empfangen, die das Gerät abonniert hat, mit Ausnahme von Themen, denen "" vorangestellt ist. topic_prefix/restricted Mit dieser Richtlinie können Geräte beispielsweise "" und sogar topic_prefix/topic1 "topic_prefix/restricted“ abonnieren. Sie erhalten jedoch nur Nachrichten zum Thema "topic_prefix/topic1" und keine Nachrichten zum Thema "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, sie werden jedoch 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 reiflicher Überlegung 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

Bei Geräten, 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, nicht jedoch das Thema "/employees“. department/engineering Ebenso können Geräte das Thema „location/#“ abonnieren, nicht aber das Thema "“. location/Seattle Sobald das Gerät jedoch das Thema „Abteilung/+/Mitarbeiter“ abonniert hat, ermöglicht die Richtlinie den Empfang von Nachrichten zum Thema "/employees“. department/engineering Ebenso erhält das Gerät, sobald es das Thema „Standort/#“ abonniert hat, auch Nachrichten zum Thema "". 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 können. 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, nicht jedoch das Thema "/employees“. department/engineering Ebenso können Geräte das Thema „location/#“ abonnieren, "“ jedoch nicht. location/Seattle Sobald das Gerät jedoch das Thema „Abteilung/+/Mitarbeiter“ abonniert hat, ermöglicht die Richtlinie den Empfang von Nachrichten zum Thema "/employees“. department/engineering Ebenso erhält das Gerät, sobald es das Thema „Standort/#“ abonniert hat, auch Nachrichten zum Thema "". 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 Amazon Cognito-Identitäten über die API zugeordnet sind. AttachPolicy Dadurch werden die an den Amazon Cognito-Identitätspool mit authentifizierten Identitäten verknüpften Berechtigungen eingeschränkt.

  • iot:Connect

  • iot:Publish

  • iot:Subscribe

  • iot:Receive

  • iot:GetThingShadow

  • iot:UpdateThingShadow

  • iot:DeleteThingShadow

Das bedeutet, dass eine Amazon Cognito Identity die Genehmigung der IAM-Rollenrichtlinie und der Richtlinie benötigt. AWS IoT Core Sie hängen die IAM-Rollenrichtlinie an den Pool und die AWS IoT Core Richtlinie über die API an die Amazon Cognito Identity an. AWS IoT Core AttachPolicy

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

Anmerkung

Bei anderen AWS IoT Core Vorgängen oder bei nicht authentifizierten Identitäten werden die Berechtigungen, die der Amazon AWS IoT Core Cognito-Identitätspool-Rolle zugeordnet sind, 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 vorherige Richtlinie mithilfe der API an die Amazon Cognito Identity Pool-Rolle und an Amazon Cognito Identity an. AWS IoT Core AttachPolicy

Anmerkung

Berücksichtigt bei der Autorisierung von Amazon Cognito-Identitäten beide Richtlinien und AWS IoT Core gewährt die geringsten angegebenen Rechte. 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

Damit nicht authentifizierte Amazon Cognito-Identitäten MQTT-Nachrichten zu einem bestimmten Thema der Amazon Cognito-Identität in Ihrem Konto veröffentlichen können, fügen Sie der Amazon Cognito-Identity-Pool-Rolle die folgende IAM-Richtlinie hinzu: WebSocket

{ "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 vorherige Richtlinie mithilfe der API an die Amazon Cognito Identity-Pool-Rolle und an Amazon Cognito Identity an. AWS IoT Core AttachPolicy

Anmerkung

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