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, mit welcher Methode Sie eine Verbindung herstellen AWS IoT Core. Sie können AWS IoT Core mithilfe eines MQTT Clients,HTTP, oder eine Verbindung herstellen WebSocket. Wenn Sie eine Verbindung mit einem MQTT Client herstellen, authentifizieren Sie sich mit einem X.509-Zertifikat. Wenn Sie eine Verbindung über HTTP 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 und -Richtlinien MQTT AWS IoT Core

MQTTund AWS IoT Core Richtlinien haben unterschiedliche Platzhalterzeichen, und Sie sollten sie nach reiflicher Überlegung auswählen. In MQTT sind die Platzhalterzeichen + und # werden in MQTTThemenfiltern 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 B als solche Zeichen ohne besondere Bedeutung behandelt. Um mehrere Themennamen und Themenfilter im resource Attribut einer Richtlinie zu beschreiben, verwenden Sie die ? Platzhalterzeichen * und anstelle der MQTT Platzhalterzeichen.

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 Themenfilter auf eine einzelne MQTT Themenebene beschränkt. Um eine Platzhalterspezifikation auf eine einzige MQTT Themenfilterebene zu beschränken, sollten Sie mehrere ? Zeichen verwenden. 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 Clients verwendet werden, MQTT und AWS IoT Core die Richtlinien für Clients. MQTT

Platzhalterzeichen Ist ein MQTT Platzhalterzeichen Beispiel in MQTT Ist eine AWS IoT Core Richtlinie ein Platzhalterzeichen Beispiel für AWS IoT Core Richtlinien für Kunden MQTT
# 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, clientId dass Geräte eine Verbindung herstellen können, deren Name dem Namen eines Objekts 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 clientId 1, clientId 2 oder clientId 3 eine Verbindung herstellen können. 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

Bei Geräten, die in der AWS IoT Core Registrierung registriert sind, ermöglicht die folgende Richtlinie, clientId dass Geräte eine Verbindung herstellen können, deren Name dem Namen eines Objekts 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 clientId 1, clientId 2 oder clientId 3 eine Verbindung herstellen können. 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, clientId dass Geräte eine Verbindung herstellen können, deren Name dem Namen eines Objekts 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 Ding-Name in der Registrierung „thing1" lautet, kann das Gerät unter dem Thema „sensor/device/thing1" veröffentlichen. Das Gerät wird außerdem in der Lage sein, das Thema „Befehl/Gerät/Sach1“ zu abonnieren und Inhalte davon 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 clientId 1, 2 oder 3 eine Verbindung herstellen können. clientId clientId 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 AS clientId 1 herstellt, kann es zum Thema „Sensor/Gerät/1" clientId veröffentlichen. 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, clientId dass Geräte eine Verbindung herstellen können, deren Name dem Namen eines Objekts 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 das Ding in der Registrierung den Wert version=v1 und hatlocation=Seattle, 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 Thing-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, clientId dass Geräte eine Verbindung herstellen können, deren Name dem Namen eines Objekts 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 clientId 1, clientId 2 oder clientId 3 eine Verbindung herstellen können. 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, clientId dass Geräte eine Verbindung herstellen können, deren Name dem Namen eines Objekts in der Registrierung entspricht. Die Richtlinie ermöglicht es Geräten, jedes Topic mit dem Präfix „topic_prefix“ zu abonnieren. Durch die Verwendung von NotResource in der Anweisung für iot:Receive ermöglichen wir dem Gerät, Nachrichten zu allen Topics zu empfangen, die das Gerät abonniert hat, mit Ausnahme der Topics mit dem Präfix „topic_prefix/restricted“. Mit dieser Richtlinie können Geräte beispielsweise „topic_prefix/topic1“ und sogar „topic_prefix/restricted“ abonnieren, sie erhalten jedoch nur Nachrichten vom Topic „topic_prefix/topic1“ und keine Nachrichten vom 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 clientId 1, clientId 2 oder clientId 3 eine Verbindung herstellen können. Die Richtlinie ermöglicht es Geräten, jedes Topic mit dem Präfix „topic_prefix“ zu abonnieren. Durch die Verwendung von NotResource in der Anweisung für iot:Receive ermöglichen wir dem Gerät, Nachrichten zu allen Topics zu empfangen, die das Gerät abonniert hat, mit Ausnahme von Topics mit dem Präfix „topic_prefix/restricted“. Mit dieser Richtlinie können Geräte beispielsweise „topic_prefix/topic1" und sogar „topic_prefix/restricted“ abonnieren. Sie erhalten jedoch nur Nachrichten vom Thema „topic_prefix/topic1" und keine Nachrichten vom 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 Themen mit Platzhalterzeichen MQTT

MQTTDie Platzhalterzeichen + und # werden als Literalzeichenfolgen behandelt, sie werden jedoch nicht als Platzhalter behandelt, wenn sie in Richtlinien verwendet werden. AWS IoT Core InMQTT, + und # werden nur als Platzhalter behandelt, wenn Sie einen Themenfilter abonnieren, in allen anderen Kontexten jedoch als Literalzeichenfolgen. Wir empfehlen, diese MQTT Platzhalter nur nach sorgfältiger Prüfung als Teil von AWS IoT Core Richtlinien zu verwenden.

Im Folgenden finden Sie Beispiele für registrierte und nicht registrierte Dinge, bei denen MQTT Platzhalter in Richtlinien verwendet werden. 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, clientId dass Geräte eine Verbindung herstellen können, deren Name dem Namen eines Objekts 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 das Thema „Abteilung/Technik/Mitarbeiter“. Ebenso können Geräte das Topic „location/#“ abonnieren, aber nicht das Topic „location/Seattle“. Sobald das Gerät jedoch das Topic „department/+/employees“ abonniert hat, ermöglicht ihm die Richtlinie, Nachrichten zum Topic „department/engineering/employees“ zu empfangen. Ebenso empfängt das Gerät, sobald es das Topic „location/#“ abonniert hat, auch Nachrichten zum 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 mit 1, 2 oder 3 eine Verbindung herstellen können. clientId clientId clientId 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 das Thema „Abteilung/Technik/Mitarbeiter“. Ebenso können Geräte das Topic „location/#“ abonnieren, aber nicht das Topic „location/Seattle“. Sobald das Gerät jedoch das Topic „department/+/employees“ abonniert hat, ermöglicht ihm die Richtlinie, Nachrichten zum Topic „department/engineering/employees“ zu empfangen. Ebenso empfängt das Gerät, sobald es das Topic „location/#“ abonniert hat, auch Nachrichten zum 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 WebSocket Kunden

Wenn Sie eine Verbindung über HTTP 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 Vorgänge AWS IoT Core Richtlinien, die Amazon Cognito Cognito-Identitäten über die zugewiesen sind. AttachPolicy API 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 dem Pool und die AWS IoT Core Richtlinie der Amazon Cognito Cognito-Identität über die AWS IoT Core AttachPolicy API hinzu.

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 die Veröffentlichung von Nachrichten zu einem spezifischen Thema der Amazon HTTP Cognito Cognito-Identität zu ermöglichen, fügen Sie der Amazon Cognito Identity-Pool-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}"] } ] }

Um authentifizierte Benutzer zuzulassen, fügen Sie die obige Richtlinie der Amazon Cognito Identity-Pool-Rolle und der Amazon Cognito Identity hinzu, indem Sie den verwenden. AWS IoT Core AttachPolicyAPI

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

Damit nicht authentifizierte Amazon Cognito-Identitäten MQTT Nachrichten zu einem Thema veröffentlichen können, das für die Amazon Cognito Cognito-Identität in Ihrem Konto spezifisch ist, 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 obige Richtlinie der Amazon Cognito Identity-Pool-Rolle und der Amazon Cognito Identity hinzu, indem Sie den verwenden. AWS IoT Core AttachPolicyAPI

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.