View a markdown version of this page

Publish/Subscribe Beispiele aus der Politik - 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 aus der Politik

Welche Richtlinie Sie verwenden, hängt davon ab, wie Sie eine Verbindung herstellen AWS IoT Core. Sie können eine Verbindung herstellen mit AWS IoT Core mithilfe eines MQTT-Clients, HTTP oder WebSocket. Wenn Sie eine Verbindung mit einem MQTT-Client herstellen, authentifizieren Sie sich mit einem X.509 Zertifikat. Wenn Sie eine Verbindung über HTTP herstellen oder WebSocket Protokoll, Sie authentifizieren 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 diese nach reiflicher Überlegung auswählen. In MQTT die Platzhalterzeichen + und # werden verwendet in MQTT-Themenfilter um mehrere Themennamen zu abonnieren. AWS IoT Core Richtlinien verwenden * und ? als Platzhalterzeichen und folgen Sie den Konventionen von 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, die in einem Richtliniendokument verwendet werden sollen, dass * Das Zeichen ist nicht auf eine einzelne Themenebene beschränkt. Der + 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 AWS IoT Core Platzhalterzeichen 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 to/from spezifische Themen

Im Folgenden finden Sie Beispiele für registrierte und nicht registrierte Geräte zum Veröffentlichen, Abonnieren und Empfangen von Nachrichten to/from das Thema mit dem Namen „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 registriert sind in AWS IoT Core Registrierung, die folgende Richtlinie ermöglicht es Geräten, eine Verbindung mit einer ClientID herzustellen, 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 registriert sind in AWS IoT Core In der Registrierung ermöglicht die folgende Richtlinie Geräten, eine Verbindung mit ClientID1, ClientID2 oder ClientID3 herzustellen. 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 to/from Themen 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 to/from Themen mit dem Präfix „topic_prefix“.

Anmerkung

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

Registered devices

Für Geräte, die registriert sind AWS IoT Core Registrierung, die folgende Richtlinie ermöglicht es Geräten, eine Verbindung mit einer ClientID herzustellen, 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 registriert sind in AWS IoT Core In der Registrierung ermöglicht die folgende Richtlinie Geräten, eine Verbindung mit ClientID1, ClientID2 oder ClientID3 herzustellen. 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 to/from Themen, die für jedes Gerät spezifisch sind

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

Registered devices

Für Geräte, die registriert sind in AWS IoT Core Registrierung, die folgende Richtlinie ermöglicht es Geräten, eine Verbindung mit einer ClientID herzustellen, 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 der Sache in der Registrierung „thing1" lautet, kann das Gerät Beiträge zum Thema“ veröffentlichensensor/device/Ding1“. Das Gerät wird auch das Thema“ abonnieren und empfangen können.command/device/Sach1“.

{ "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 registriert sind in AWS IoT Core In der Registrierung ermöglicht die folgende Richtlinie Geräten, eine Verbindung mit ClientID1, ClientID2 oder ClientID3 herzustellen. 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 Beiträge zum Thema“ veröffentlichensensor/device/clientID1“. 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 Nachrichten to/from Themen mit einem Dingattribut im Themennamen

Das Folgende zeigt ein Beispiel für registrierte Geräte zum Veröffentlichen, Abonnieren und Empfangen von Nachrichten to/from Themen, deren Namen Dingattribute enthalten.

Anmerkung

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

Registered devices

Für Geräte, die registriert sind in AWS IoT Core Registrierung, die folgende Richtlinie ermöglicht es Geräten, eine Verbindung mit einer ClientID herzustellen, 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 Dings in der Registrierung lautet version=v1 und location=Seattle, das Gerät wird in der Lage sein, Beiträge zum Thema“ zu veröffentlichensensor/v1„, und das Thema abonnieren und empfangen“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

Weil Dingattribute nur für Geräte existieren, die registriert sind AWS IoT Core Registry, es gibt kein entsprechendes Beispiel für unregistrierte 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 registriert sind in AWS IoT Core Registrierung, die folgende Richtlinie ermöglicht es Geräten, eine Verbindung mit einer ClientID herzustellen, die dem Namen einer Sache in der Registrierung entspricht. Sie berechtigt zur Veröffentlichung aller Themen, denen das Präfix „department/“ vorangestellt ist, aber nicht zu den Themen“department/admins„Unterthema.

{ "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 registriert sind AWS IoT Core In der Registrierung ermöglicht die folgende Richtlinie Geräten, eine Verbindung mit ClientID1, ClientID2 oder ClientID3 herzustellen. Sie berechtigt zur Veröffentlichung aller Themen, denen das Präfix „Abteilung/“ vorangestellt ist, aber nicht zu den Themen“department/admins„Unterthema.

{ "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 registriert sind in AWS IoT Core Registrierung, die folgende Richtlinie ermöglicht es Geräten, eine Verbindung mit einer ClientID herzustellen, 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 NotResource in der Erklärung für iot:Receive, wir erlauben dem Gerät, Nachrichten zu allen Themen zu empfangen, die das Gerät abonniert hat, mit Ausnahme der Themen, denen“ vorangestellt isttopic_prefix/restricted“. Mit dieser Richtlinie können Geräte beispielsweise“ abonnierentopic_prefix/topic1„und sogar“topic_prefix/restricted„, sie erhalten jedoch nur Nachrichten zum Thema“topic_prefix/topic1„und keine Nachrichten aus dem Thema“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 registriert sind AWS IoT Core In der Registrierung ermöglicht die folgende Richtlinie Geräten, eine Verbindung mit ClientID1, ClientID2 oder ClientID3 herzustellen. Die Richtlinie ermöglicht es Geräten, jedes Topic mit dem Präfix „topic_prefix“ zu abonnieren. Durch NotResource in der Erklärung für iot:Receive, wir erlauben dem Gerät, Nachrichten zu allen Themen zu empfangen, die das Gerät abonniert hat, mit Ausnahme von Themen, denen“ vorangestellt isttopic_prefix/restricted“. Mit dieser Richtlinie können Geräte beispielsweise“ abonnierentopic_prefix/topic1„und sogar“topic_prefix/restricted“. Sie erhalten jedoch nur Nachrichten zum Thema“topic_prefix/topic1„und keine Nachrichten aus dem 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, aber sie werden nicht als Platzhalter behandelt, wenn sie in verwendet werden AWS IoT Core Richtlinien. 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, dass Sie diese MQTT-Platzhalter nur als Teil von verwenden AWS IoT Core Richtlinien nach reiflicher Überlegung.

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

Registered devices

Für Geräte, die registriert sind AWS IoT Core Registrierung, die folgende Richtlinie ermöglicht es Geräten, eine Verbindung mit einer ClientID herzustellen, die dem Namen einer Sache in der Registrierung entspricht. Die Richtlinie ermöglicht es Geräten, die Topics „department/+/employees“ und „location/#“ zu abonnieren. Weil + und # als Literalzeichenfolgen in behandelt werden AWS IoT Core Richtlinien, Geräte können das Thema „Abteilung/+/Mitarbeiter“ abonnieren, aber nicht das Thema“department/engineering/Mitarbeiter“. Ebenso können Geräte das Thema „Ort/#“ abonnieren, aber nicht 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“department/engineering/Mitarbeiter“. Ebenso erhält das Gerät, sobald es das Thema „Ort/#“ abonniert hat, Nachrichten zum Thema“location/Seattle"ebenfalls.

{ "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 registriert sind AWS IoT Core In der Registrierung ermöglicht die folgende Richtlinie Geräten, eine Verbindung mit ClientID1, ClientID2 oder ClientID3 herzustellen. Mit der Richtlinie können Geräte die Topics „department/+/employees“ und „location/#“ abonnieren. Weil + und # als Literalzeichenfolgen behandelt werden in AWS IoT Core Richtlinien, Geräte können das Thema „Abteilung/+/Mitarbeiter“ abonnieren, aber nicht das Thema“department/engineering/Mitarbeiter“. Ebenso können Geräte das Thema „Ort/#“ abonnieren, aber nicht“location/Seattle“. Sobald das Gerät jedoch das Thema „Abteilung/+/Mitarbeiter“ abonniert hat, ermöglicht die Richtlinie den Empfang von Nachrichten zum Thema“department/engineering/Mitarbeiter“. Ebenso erhält das Gerät, sobald es das Thema „Ort/#“ abonniert hat, Nachrichten zum Thema“location/Seattle"ebenfalls.

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

Wenn Sie eine Verbindung über HTTP herstellen oder WebSocket Protokoll, Sie authentifizieren 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.

Für die folgenden Operationen AWS IoT Core Verwendungszwecke AWS IoT Core Richtlinien, die mit Amazon Cognito-Identitäten verknüpft sind, und zwar über AttachPolicy API. Dadurch werden die dem Amazon Cognito-Identitätspool mit authentifizierten Identitäten zugewiesenen 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 AWS IoT Core Richtlinie. Sie hängen die IAM-Rollenrichtlinie an den Pool an und AWS IoT Core Richtlinie an die Amazon Cognito Identity über AWS IoT Core AttachPolicy API.

Authentifizierte und nicht authentifizierte Benutzer sind unterschiedliche Identitätstypen. Wenn Sie kein anhängen AWS IoT Gemäß der Richtlinie für Amazon Cognito Identity schlägt die Autorisierung eines authentifizierten Benutzers fehl AWS IoT und hat keinen Zugriff auf AWS IoT Ressourcen und Maßnahmen.

Anmerkung

Für andere AWS IoT Core Operationen oder für nicht authentifizierte Identitäten, AWS IoT Core beschränkt nicht den Umfang der Berechtigungen, die der Amazon Cognito-Identitätspool-Rolle zugeordnet sind. 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 der Amazon Cognito Identity Pool-Rolle und der Amazon Cognito Identity hinzu. Verwenden Sie dazu AWS IoT Core AttachPolicy API.

Anmerkung

Bei der Autorisierung von Amazon Cognito-Identitäten AWS IoT Core berücksichtigt beide Richtlinien und 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

Um nicht authentifizierten Amazon Cognito-Identitäten das Veröffentlichen von MQTT-Nachrichten über zu ermöglichen WebSocket Fügen Sie der Amazon Cognito Identity-Pool-Rolle die folgende IAM-Richtlinie zu einem speziellen Thema für die Amazon Cognito Identity in Ihrem Konto 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 vorherige Richtlinie der Amazon Cognito Identity-Pool-Rolle und der Amazon Cognito Identity hinzu. Verwenden Sie dazu AWS IoT Core AttachPolicy API.

Anmerkung

Bei der Autorisierung von Amazon Cognito-Identitäten AWS IoT Core berücksichtigt beide und 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.