Statische Objektgruppen - 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.

Statische Objektgruppen

Mithilfe von statischen Objektgruppen können Sie verschiedene Objekte gleichzeitig verwalten, indem Sie sie in Gruppen zusammenfassen. Statische Objektgruppen enthalten eine Gruppe von Objekten, die über die Konsole, die CLI oder die API verwaltet werden. Dynamische Objektgruppen dagegen enthalten Objekte, die mit einer angegebenen Abfrage übereinstimmen. Statische Objektgruppen können auch andere statische Objektgruppen enthalten - Sie können eine Gruppenhierarchie aufbauen. Sie können eine Richtlinie mit einer übergeordneten Gruppe verbinden, die von den dieser untergeordneten Gruppen und von allen Objekten in der Gruppe sowie allen untergeordneten Gruppen übernommen wird. Dies vereinfacht die Steuerung von Berechtigungen für große Zahlen von Objekten.

Anmerkung

Richtlinien für Dinggruppen erlauben keinen Zugriff auf AWS IoT Greengrass Datenebenenoperationen. Um einer Sache den Zugriff auf einen Vorgang auf der AWS IoT Greengrass Datenebene zu gewähren, fügen Sie die Berechtigung zu einer AWS IoT Richtlinie hinzu, die Sie dem Zertifikat der Sache hinzufügen. Weitere Informationen finden Sie unter Geräteauthentifizierung und -autorisierung im AWS IoT Greengrass Entwicklerhandbuch.

Folgende Aktionen sind mit statischen Objektgruppen möglich:

  • Eine Gruppe erstellen, beschreiben oder löschen.

  • Ein Objekt zu einer Gruppe oder zu mehreren Gruppen hinzufügen.

  • Ein Objekt aus einer Gruppe entfernen.

  • Die erstellten Gruppen auflisten.

  • Alle (direkt oder indirekt) untergeordneten Gruppen einer Gruppe auflisten.

  • Die Objekte in einer Gruppe, einschließlich aller Objekte in dieser untergeordneten Gruppen, auflisten.

  • Alle (direkt oder indirekt) übergeordneten Gruppen einer Gruppe auflisten.

  • Die Attribute einer Gruppe hinzufügen, löschen oder aktualisieren. (Attribute sind Name/Wert-Paare, mit denen Sie Informationen zu einer Gruppe speichern können.)

  • Eine Richtlinie mit einer Gruppe verbinden oder von dieser entfernen.

  • Die mit einer Gruppe verbundenen Richtlinien auflisten.

  • Die von einem Objekt (aufgrund der mit seiner Gruppe oder einer der dieser übergeordneten Gruppen verbundenen Richtlinie) übernommenen Richtlinien auflisten.

  • Konfiguration von Protokollierungsoptionen für Objekte in einer Gruppe. Siehe Konfigurieren Sie die AWS IoT Protokollierung.

  • Erstellen von Aufträgen, die an jedes Objekt in einer Gruppe und in dieser untergeordneten Gruppen gesendet und dort ausgeführt werden. Siehe Aufträge.

Anmerkung

Wenn ein Ding an eine statische Dinggruppe angehängt ist, an die eine AWS IoT Core Richtlinie angehängt ist, muss der Name des Dings mit der Client-ID übereinstimmen.

Hier sind Sie einige Einschränkungen für statische Objektgruppen:

  • Eine Gruppe kann höchstens eine direkt übergeordnete Gruppe haben.

  • Wenn eine Gruppe einer anderen Gruppe untergeordnet ist, geben Sie dies bei der Erstellung an.

  • Sie können das übergeordnete Element einer Gruppe nicht später ändern. Planen Sie daher die Gruppenhierarchie, und erstellen Sie eine übergeordnete Gruppe, bevor Sie untergeordnete Gruppen erstellen.

  • Die Anzahl der Gruppen, zu denen ein Objekt gehören kann, ist begrenzt.

  • Ein Objekt kann nicht mehr als einer Gruppe in derselben Hierarchie hinzugefügt werden. (Anders ausgedrückt: Sie können ein Objekt nicht zwei Gruppen mit derselben übergeordneten Gruppe hinzufügen).

  • Gruppen können nicht umbenannt werden.

  • Namen der Objektgruppen dürfen keine internationale Zeichen enthalten, z. B. û, é und ñ.

  • Verwenden Sie keine persönlich identifizierbaren Informationen in Ihrem Ding-Gruppennamen. Der Name der Objektgruppe kann in unverschlüsselten Mitteilungen und Berichten vorkommen.

Das Anfügen bzw. Entfernen von Richtlinien zu/von Gruppen kann die Sicherheit Ihrer AWS IoT -Operationen unter verschiedenen Aspekten verbessern. Das Anfügen einer Richtlinie pro Gerät zu einem Zertifikat, das wiederum mit einem Objekt verbunden wird, ist zeitaufwändig und erschwert die schnelle Aktualisierung oder Änderung von Richtlinien für eine ganze Geräteflotte. Das Anhängen einer Richtlinie an die Gruppe des Objekts erspart Schritte, wenn die Zertifikate auf einem Objekt rotiert werden müssen. Dazu werden Richtlinien dynamisch auf Objekte angewendet, wenn sich deren Gruppenmitgliedschaft ändert, Sie müssen daher nicht jedes Mal, wenn ein Gerät Mitglied einer anderen Gruppe wird, einen komplexen Satz von Berechtigungen neu erstellen.

Erstellen einer statischen Objektgruppe

Mit dem Befehl CreateThingGroup können Sie eine statische Objektgruppe erstellen:

$ aws iot create-thing-group --thing-group-name LightBulbs

Der Befehl CreateThingGroup gibt eine Antwort zurück, die den Namen, die ID und den ARN der statischen Objektgruppe enthält:

{ "thingGroupName": "LightBulbs", "thingGroupId": "abcdefgh12345678ijklmnop12345678qrstuvwx", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs" }
Anmerkung

Es wird nicht empfohlen, für Objektgruppennamen personenbezogene Informationen zu verwenden.

Hier ist ein Beispiel, bei dem bei der Erstellung eine der statischen Objektgruppe übergeordnete Gruppe angegeben wird:

$ aws iot create-thing-group --thing-group-name RedLights --parent-group-name LightBulbs

Wie zuvor gibt der Befehl CreateThingGroup eine Antwort zurück, die den Namen, die ID und den ARN der statischen Objektgruppe enthält:

{ "thingGroupName": "RedLights", "thingGroupId": "abcdefgh12345678ijklmnop12345678qrstuvwx", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights", }
Wichtig

Beachten Sie beim Erstellen von Objektgruppenhierarchien die folgenden Einschränkungen:

  • Zu einer Objektgruppe kann es nur eine direkte übergeordnete Gruppe geben.

  • Die Anzahl der direkten untergeordneten Gruppen, die eine Objektgruppe haben kann, ist begrenzt.

  • Die maximale Tiefe einer Gruppenhierarchie ist begrenzt.

  • Die Anzahl der Attribute, die eine Objektgruppe haben kann, ist begrenzt. (Attribute sind Name/Wert-Paare, mit denen Sie Informationen zu einer Gruppe speichern können.) Die Längen der einzelnen Attributnamen und Werte sind ebenfalls begrenzt.

Beschreiben einer Objektgruppe

Mit dem Befehl DescribeThingGroup können Sie Informationen zu einer Objektgruppe abrufen:

$ aws iot describe-thing-group --thing-group-name RedLights

Der Befehl DescribeThingGroup gibt Informationen zur angegebenen Gruppe zurück:

{ "thingGroupName": "RedLights", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights", "thingGroupId": "12345678abcdefgh12345678ijklmnop12345678", "version": 1, "thingGroupMetadata": { "creationDate": 1478299948.882 "parentGroupName": "Lights", "rootToParentThingGroups": [ { "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/ShinyObjects", "groupName": "ShinyObjects" }, { "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs", "groupName": "LightBulbs" } ] }, "thingGroupProperties": { "attributePayload": { "attributes": { "brightness": "3400_lumens" }, }, "thingGroupDescription": "string" }, }

Hinzufügen eines Objekts zu einer statischen Objektgruppe

Mit dem Befehl AddThingToThingGroup können Sie einer statischen Objektgruppe ein Objekt hinzufügen:

$ aws iot add-thing-to-thing-group --thing-name MyLightBulb --thing-group-name RedLights

Der Befehl AddThingToThingGroup erzeugt keine Ausgabe.

Wichtig

Sie können ein Objekt maximal 10 Gruppen hinzufügen. Ein Objekt kann jedoch nicht mehr als einer Gruppe in derselben Hierarchie hinzugefügt werden. (Anders ausgedrückt: Sie können ein Objekt nicht zwei Gruppen mit derselben übergeordneten Gruppe hinzufügen).

Wenn ein Objekt zu der maximalen Anzahl an Objektgruppen gehört und es sich bei einer oder mehreren dieser Gruppen um (eine) dynamische Objektgruppe(n) handelt, können Sie mit der Markierung overrideDynamicGroups statischen Gruppen den Vorrang vor dynamischen Gruppen geben.

Entfernen eines Objekts aus einer statischen Objektgruppe

Mit dem Befehl RemoveThingFromThingGroup können Sie ein Objekt aus einer Objektgruppe entfernen:

$ aws iot remove-thing-from-thing-group --thing-name MyLightBulb --thing-group-name RedLights

Der Befehl RemoveThingFromThingGroup erzeugt keine Ausgabe.

Auflisten von Objekten in einer Objektgruppe

Mit dem Befehl ListThingsInThingGroup können Sie die Objekte einer Gruppe auflisten:

$ aws iot list-things-in-thing-group --thing-group-name LightBulbs

Der Befehl ListThingsInThingGroup gibt eine Liste der Objekte in der betreffenden Gruppe aus:

{ "things":[ "TestThingA" ] }

Mit dem Parameter --recursive können Sie die Objekte einer Gruppe und in allen dieser untergeordneten Gruppen auflisten:

$ aws iot list-things-in-thing-group --thing-group-name LightBulbs --recursive
{ "things":[ "TestThingA", "MyLightBulb" ] }
Anmerkung

Diese Operation ist letztlich konsistent. Mit anderen Worten, Änderungen an der Dinggruppe werden möglicherweise nicht sofort übernommen.

Auflisten von Objektgruppen

Mit dem Befehl ListThingGroups können Sie die Objektgruppen Ihres Kontos auflisten:

$ aws iot list-thing-groups

Der ListThingGroups Befehl gibt eine Liste der Dinggruppen in Ihrem zurück AWS-Konto:

{ "thingGroups": [ { "groupName": "LightBulbs", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs" }, { "groupName": "RedLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights" }, { "groupName": "RedLEDLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLEDLights" }, { "groupName": "RedIncandescentLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedIncandescentLights" } { "groupName": "ReplaceableObjects", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/ReplaceableObjects" } ] }

Verwenden Sie die optionalen Filter, um die Gruppen aufzulisten, die eine bestimmte Gruppe als übergeordnete Gruppe haben (--parent-group), oder deren Namen mit einem bestimmten Präfix beginnen (--name-prefix-filter). Mit dem Parameter --recursive können Sie alle untergeordneten Gruppen auflisten, nicht nur die direkt untergeordneten Gruppen einer Objektgruppe:

$ aws iot list-thing-groups --parent-group LightBulbs

In diesem Fall gibt der ListThingGroups Befehl eine Liste der direkten untergeordneten Gruppen der Dinggruppe zurück, die in Ihrem definiert ist AWS-Konto:

{ "childGroups":[ { "groupName": "RedLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights" } ] }

Verwenden Sie den Parameter --recursive mit dem Befehl ListThingGroups, um alle (und nicht nur die direkt) untergeordneten Gruppen einer Objektgruppe aufzulisten:

$ aws iot list-thing-groups --parent-group LightBulbs --recursive

Der Befehl ListThingGroups gibt eine Liste aller untergeordneten Gruppen einer Objektgruppe zurück:

{ "childGroups":[ { "groupName": "RedLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights" }, { "groupName": "RedLEDLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLEDLights" }, { "groupName": "RedIncandescentLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedIncandescentLights" } ] }
Anmerkung

Diese Operation ist letztlich konsistent. Mit anderen Worten, Änderungen an der Dinggruppe werden möglicherweise nicht sofort übernommen.

Auflisten von Gruppen für ein Objekt

Mit dem Befehl ListThingGroupsForThing können Sie die Objekte einer Gruppe auflisten, zu denen ein Objekt gehört:

$ aws iot list-thing-groups-for-thing --thing-name MyLightBulb

Der Befehl ListThingGroupsForThing gibt eine Liste aller Objektgruppen aus, zu denen dieses Objekt gehört:

{ "thingGroups":[ { "groupName": "LightBulbs", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs" }, { "groupName": "RedLights", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights" }, { "groupName": "ReplaceableObjects", "groupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/ReplaceableObjects" } ] }

Aktualisieren einer statischen Objektgruppe

Mit dem Befehl UpdateThingGroup können Sie die Attribute einer statischen Objektgruppe aktualisieren:

$ aws iot update-thing-group --thing-group-name "LightBulbs" --thing-group-properties "thingGroupDescription=\"this is a test group\", attributePayload=\"{\"attributes\"={\"Owner\"=\"150\",\"modelNames\"=\"456\"}}"

Der UpdateThingGroup Befehl gibt eine Antwort zurück, die die Versionsnummer der Gruppe nach der Aktualisierung enthält:

{ "version": 4 }
Anmerkung

Die Anzahl der Attribute, die ein Objekt haben kann, ist begrenzt.

Löschen einer Objektgruppe

Mit dem Befehl DeleteThingGroup können Sie eine Objektgruppe löschen:

$ aws iot delete-thing-group --thing-group-name "RedLights"

Der Befehl DeleteThingGroup erzeugt keine Ausgabe.

Wichtig

Wenn Sie versuchen, eine Objektgruppe zu löschen, zu der untergeordnete Gruppen gehören, führt dies zu einem Fehler:

A client error (InvalidRequestException) occurred when calling the DeleteThingGroup operation: Cannot delete thing group : RedLights when there are still child groups attached to it.

Bevor Sie die Gruppe löschen, löschen Sie zunächst alle untergeordneten Gruppen.

Sie können eine Gruppe löschen, die untergeordnete Objekte hat, Berechtigungen, die aufgrund der Mitgliedschaft des Objekts in dieser Gruppe bestehen, gelten dann jedoch nicht mehr. Prüfen Sie vor dem Löschen einer Gruppe, der eine Richtlinie zugeordnet ist, sorgfältig, dass das Entfernen dieser Berechtigungen nicht dazu führt, dass die Objekte in der Gruppe ihre Funktionen nicht mehr korrekt ausführen können. Außerdem kann es sein, dass Befehle, die angeben, zu welchen Gruppen ein Objekt gehört (z. B.ListGroupsForThing), die Gruppe weiterhin anzeigen, während Datensätze in der Cloud aktualisiert werden.

Anfügen einer Richtlinie an eine statische Objektgruppe

Mit dem Befehl AttachPolicy können Sie eine Richtlinie an eine statische Objektgruppe und damit auch an alle Objekte in dieser Gruppe und in allen ihren untergeordneten Gruppen anfügen:

$ aws iot attach-policy \ --target "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs" \ --policy-name "myLightBulbPolicy"

Der Befehl AttachPolicy erzeugt keine Ausgabe

Wichtig

Sie können maximal zwei Richtlinien an eine Gruppe anhängen.

Anmerkung

Es wird nicht empfohlen, für Richtliniennamen personenbezogene Informationen zu verwenden.

Der Parameter --target kann ein Objektsgruppen-ARN (wie oben), ein Zertifikat-ARN oder eine Amazon Cognito-Identität sein. Weitere Informationen zu Richtlinien, Zertifikaten und Authentifizierung finden Sie unter Authentifizierung.

Weitere Informationen finden Sie unter AWS IoT Core Richtlinien.

Trennen einer Richtlinie von einer statischen Objektgruppe

Mit dem Befehl DetachPolicy können Sie eine Richtlinie von einer Gruppe und damit von alle Objekten in dieser Gruppe und in allen ihren untergeordneten Gruppen trennen:

$ aws iot detach-policy --target "arn:aws:iot:us-west-2:123456789012:thinggroup/LightBulbs" --policy-name "myLightBulbPolicy"

Der Befehl DetachPolicy erzeugt keine Ausgabe.

Auflisten der an eine statische Objektgruppe angefügten Richtlinien

Mit dem Befehl ListAttachedPolicies können Sie die an eine statische Objektgruppe angefügten Richtlinien auflisten:

$ aws iot list-attached-policies --target "arn:aws:iot:us-west-2:123456789012:thinggroup/RedLights"

Der Parameter --target kann ein Objektsgruppen-ARN (wie oben), ein Zertifikat-ARN oder eine Amazon Cognito -Identität sein.

Fügen Sie den optionalen Parameter --recursive hinzu, um alle den übergeordneten Gruppen der Gruppe angehängten Richtlinien einzuschließen.

Der Befehl ListAttachedPolicies gibt eine Liste von Richtlinien zurück:

{ "policies": [ "MyLightBulbPolicy" ... ] }

Auflisten der Gruppen für eine Richtlinie

Mit dem Befehl ListTargetsForPolicy können Sie die Ziele auflisten, einschließlich aller Gruppen, an die eine Richtlinie angehängt ist:

$ aws iot list-targets-for-policy --policy-name "MyLightBulbPolicy"

Fügen Sie den optionalen Parameter --page-size number hinzu, um die maximale Anzahl der für jede Abfrage anzuzeigenden Ergebnisse anzugeben, sowie den Parameter --marker string auf allen folgenden Aufrufen, um den eventuell vorhandenen nächsten Ergebnissatz abzurufen.

Der Befehl ListTargetsForPolicy gibt eine Liste von Zielen und das Token für den Abruf weiterer Ergebnisse zurück:

{ "nextMarker": "string", "targets": [ "string" ... ] }

Abrufen gültiger Richtlinien für ein Objekt

Mit dem Befehl GetEffectivePolicies können Sie die für ein Objekt geltenden Richtlinien auflisten, einschließlich der Richtlinien, die an Gruppen angehängt sind, zu denen das Objekt gehört (unabhängig davon, ob es sich um direkt oder indirekt übergeordnete Gruppen handelt):

$ aws iot get-effective-policies \ --thing-name "MyLightBulb" \ --principal "arn:aws:iot:us-east-1:123456789012:cert/a0c01f5835079de0a7514643d68ef8414ab739a1e94ee4162977b02b12842847"

Mit dem Parameter --principal geben Sie den ARN des an das Objekt angehängten Zertifikats an. Wenn Sie die Amazon Cognito-Identitätsauthentifizierung verwenden, verwenden Sie den Parameter --cognito-identity-pool-id, und fügen Sie optional den Parameter --principal hinzu, um eine Amazon Cognito-Identität anzugeben. Wenn Sie nur die --cognito-identity-pool-id angeben, werden die mit der Rolle des Identitätspools verbundenen Richtlinien für nicht authentifizierte Benutzer zurückgegeben. Wenn Sie beide verwenden, werden die mit der Rolle des Identitätspools verbundenen Richtlinien für authentifizierte Benutzer zurückgegeben.

Der Parameter --thing-name ist optional und kann anstelle des Parameters --principal verwendet werden. Wenn er verwendet wird, werden die mit einer Gruppe, zu der das Objekt gehört, verbundenen Richtlinien, sowie die Richtlinien, die eventuellen dieser Gruppe übergeordneten Gruppen angefügt sind (bis zur Root-Gruppe in dieser Hierarchie) zurückgegeben.

Der Befehl GetEffectivePolicies gibt eine Liste von Richtlinien zurück:

{ "effectivePolicies": [ { "policyArn": "string", "policyDocument": "string", "policyName": "string" } ... ] }

Test-Autorisierung für MQTT-Aktionen

Mit dem Befehl TestAuthorization können Sie testen, ob eine MQTT-Aktion (Publish, Subscribe) für ein Objekt zulässig ist:

aws iot test-authorization \ --principal "arn:aws:iot:us-east-1:123456789012:cert/a0c01f5835079de0a7514643d68ef8414ab739a1e94ee4162977b02b12842847" \ --auth-infos "{\"actionType\": \"PUBLISH\", \"resources\": [ \"arn:aws:iot:us-east-1:123456789012:topic/my/topic\"]}"

Mit dem Parameter --principal geben Sie den ARN des an das Objekt angehängten Zertifikats an. Wenn Sie die Amazon Cognito-Identitätsauthentifizierung verwenden, geben Sie eine Cognito-Identität als --principal an, oder verwenden Sie den Parameter --cognito-identity-pool-id oder beides. (Wenn Sie nur die --cognito-identity-pool-id angeben, werden die mit der Rolle des Identitätspools verbundenen Richtlinien für nicht authentifizierte Benutzer berücksichtigt. Wenn Sie beide verwenden, werden die mit der Rolle des Identitätspools verbundenen Richtlinien für authentifizierte Benutzer berücksichtigt.

Geben Sie eine oder mehrere MQTT-Aktionen an, die Sie testen möchten, indem Sie Sätze von Ressourcen und Aktionstypen nach dem Parameter --auth-infos auflisten. Das Feld actionType sollte „PUBLISH“, „SUBSCRIBE“, „RECEIVE” oder „CONNECT“ enthalten. Das Feld resources sollte eine Liste von Ressourcen-ARNs enthalten. Weitere Informationen finden Sie unter AWS IoT Core Richtlinien.

Sie können die Auswirkungen des Hinzufügens von Richtlinien testen, indem Sie sie mit dem Parameter --policy-names-to-add angeben. Sie können auch die Auswirkungen des Entfernens von Richtlinien testen, indem Sie den Parameter --policy-names-to-skip verwenden.

Mit dem optionalen Parameter --client-id können Sie Ihre Ergebnisse weiter verfeinern.

Der Befehl TestAuthorization gibt Details zu Aktionen aus, die für jeden angegebenen Satz von --auth-infos-Abfragen zulässig sind oder abgelehnt wurden:

{ "authResults": [ { "allowed": { "policies": [ { "policyArn": "string", "policyName": "string" } ] }, "authDecision": "string", "authInfo": { "actionType": "string", "resources": [ "string" ] }, "denied": { "explicitDeny": { "policies": [ { "policyArn": "string", "policyName": "string" } ] }, "implicitDeny": { "policies": [ { "policyArn": "string", "policyName": "string" } ] } }, "missingContextValues": [ "string" ] } ] }