

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.

# Autorisierung
<a name="iot-authorization"></a>

Autorisierung ist der Prozess der Erteilung von Berechtigungen an eine authentifizierte Identität. Sie gewähren Nutzungsberechtigungen AWS IoT Core und IAM-Richtlinien. AWS IoT Core Dieses Thema behandelt AWS IoT Core -Richtlinien. Weitere Informationen zu IAM-Richtlinien finden Sie unter [Identitäts- und Zugriffsmanagement für AWS IoT](security-iam.md) und [Wie AWS IoT funktioniert mit IAM](security_iam_service-with-iam.md).

AWS IoT Core Richtlinien bestimmen, was eine authentifizierte Identität bewirken kann. Eine authentifizierte Identität wird von Geräten, mobilen Anwendungen, Webanwendungen und Desktop-Anwendungen verwendet. Eine authentifizierte Identität kann sogar ein Benutzer sein, der AWS IoT Core CLI-Befehle eingibt. Eine Identität kann nur dann AWS IoT Core Operationen ausführen, wenn sie über eine Richtlinie verfügt, die ihr die Erlaubnis für diese Operationen erteilt.

Sowohl AWS IoT Core Richtlinien als auch IAM-Richtlinien werden verwendet, um die Operationen AWS IoT Core zu steuern, die eine Identität (auch *Principal* genannt) ausführen kann. Welchen Richtlinientyp Sie verwenden, hängt von der Art der Identität ab, mit der Sie sich authentifizieren. AWS IoT Core

AWS IoT Core Operationen sind in zwei Gruppen unterteilt: 
+ Mit der API der Steuerebene können Sie administrative Aufgaben wie Erstellen oder Aktualisieren von Zertifikaten, Things, Regeln usw. ausführen.
+ Die Datenebene-API ermöglicht das Senden von Daten an und das Empfangen von Daten von AWS IoT Core. 

Der von Ihnen verwendete Richtlinientyp hängt davon ab, ob Sie die API der Steuerebene oder der Datenebene nutzen.

In der folgenden Tabelle sind die Identitätstypen, die von ihnen verwendeten Protokolle und die Richtlinientypen für die Autorisierung aufgelistet.


**AWS IoT Core Datenebenen-API und Richtlinientypen**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/iot-authorization.html)


**AWS IoT Core API- und Richtlinientypen auf der Kontrollebene**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/iot-authorization.html)

AWS IoT Core Richtlinien sind an X.509-Zertifikate, Amazon Cognito Cognito-Identitäten oder Dinggruppen angehängt. IAM-Richtlinien sind einem IAM-Benutzer, einer IAM-Gruppe oder einer IAM-Rolle angefügt. Wenn Sie die AWS IoT Konsole oder die AWS IoT Core CLI verwenden, um die Richtlinie anzuhängen (an ein Zertifikat, Amazon Cognito Identity oder eine Dinggruppe), verwenden Sie eine AWS IoT Core Richtlinie. Andernfalls verwenden Sie eine IAM-Richtlinie. AWS IoT Core Richtlinien, die einer Dinggruppe zugeordnet sind, gelten für alle Dinge innerhalb dieser Dinggruppe. Damit die AWS IoT Core Richtlinie wirksam wird, müssen der Name `clientId` und der Name der Sache übereinstimmen.

Die richtlinienbasierte Autorisierung ist ein leistungsstarkes Werkzeug. Sie gibt Ihnen die komplette Kontrolle darüber, welche Berechtigungen ein Gerät, ein Benutzer oder eine Anwendung in AWS IoT Core hat. Stellen Sie sich zum Beispiel ein Gerät vor, zu dem über ein Zertifikat eine AWS IoT Core Verbindung hergestellt wird. Sie können dem Gerät den Zugriff auf alle MQTT-Topics gewähren oder seinen Zugriff auf ein einzelnes Topic einschränken. Ein anderes Beispiel ist ein Benutzer, der CLI-Befehle in der Befehlszeile eingibt. Mithilfe einer Richtlinie können Sie dem Benutzer den Zugriff auf Befehle oder AWS IoT Core Ressourcen gewähren oder verweigern. Sie können auch den Zugriff einer Anwendung auf AWS IoT Core -Ressourcen steuern.

Aufgrund der Art und Weise, in der AWS IoT Richtliniendokumente zwischenspeichert, kann es einige Minuten dauern, bis Änderungen an einer Richtlinie wirksam werden. Das heißt, dass es einige Minuten dauern kann, bis der kürzlich gewährte Zugriff auf eine Ressource tatsächlich hergestellt ist. Außerdem kann nach dem Widerruf des Zugriffs noch mehrere Minuten lang auf eine Ressource zugegriffen werden.

## AWS Schulung und Zertifizierung
<a name="iot-authorization-training"></a>

Weitere Informationen zur Autorisierung finden Sie im AWS IoT Core Kurs [Deep Dive into AWS IoT Core Authentication and Authorization](https://www.aws.training/Details/Curriculum?id=42335) auf der Website für AWS Schulungen und Zertifizierungen.

# AWS IoT Core Richtlinien
<a name="iot-policies"></a>

AWS IoT Core Richtlinien sind JSON-Dokumente. Sie folgen denselben Konventionen wie IAM-Richtlinien. AWS IoT Core unterstützt benannte Richtlinien, sodass viele Identitäten auf dasselbe Richtliniendokument verweisen können. Bei benannten Richtlinien wird Versionierung verwendet, um Rollbacks zu vereinfachen.

AWS IoT Core Mithilfe von Richtlinien können Sie den Zugriff auf die AWS IoT Core Datenebene steuern. Die AWS IoT Core -Datenebene besteht aus Operationen, mit denen Sie eine Verbindung zum AWS IoT Core Message Broker herstellen, MQTT-Nachrichten senden und empfangen sowie einen Geräteschatten abrufen oder aktualisieren können.

Eine AWS IoT Core Richtlinie ist ein JSON-Dokument, das eine oder mehrere Richtlinienerklärungen enthält. Jede Anweisung enthält:
+ `Effect`, das angibt, ob die Aktion zugelassen oder verweigert wird.
+ `Action`, das die Aktion angibt, die die Richtlinie zulässt oder verweigert.
+ `Resource`, das die Ressource oder die Ressourcen angibt, für die die Aktion zugelassen oder verweigert wird.

Es kann zwischen 6 und 8 Minuten dauern, bis Änderungen an einer Richtlinie wirksam werden, da die Richtliniendokumente AWS IoT zwischengespeichert werden. Das heißt, dass es einige Minuten dauern kann, bis der kürzlich gewährte Zugriff auf eine Ressource tatsächlich hergestellt ist. Außerdem kann nach dem Widerruf des Zugriffs noch mehrere Minuten lang auf eine Ressource zugegriffen werden.

AWS IoT Core Richtlinien können an X.509-Zertifikate, Amazon Cognito Cognito-Identitäten und Dinggruppen angehängt werden. Die einer Objektgruppe angefügten Richtlinien gelten für alle Objekte innerhalb dieser Gruppe. Damit die Richtlinie wirksam wird, müssen die `clientId` und der Objektname übereinstimmen. AWS IoT Core -Richtlinien folgen derselben Richtlinienbewertungslogik wie IAM-Richtlinien. Standardmäßig werden alle Richtlinien implizit verweigert. Eine explizite Zugriffserlaubnis in einer identitätsbasierten oder ressourcenbasierten Richtlinie setzt das Standardverhalten außer Kraft. Eine explizite Zugriffsverweigerung überschreibt jede Zugriffserlaubnis in einer Richtlinie. Weitere Informationen finden Sie unter [Auswertungslogik für Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow) im *AWS Identity and Access Management -Benutzerhandbuch*.

**Topics**
+ [

# AWS IoT Core politische Maßnahmen
](iot-policy-actions.md)
+ [

# AWS IoT Core Ressourcen für Aktionen
](iot-action-resources.md)
+ [

# AWS IoT Core Richtlinienvariablen
](iot-policy-variables.md)
+ [

# Serviceübergreifende Confused-Deputy-Prävention
](cross-service-confused-deputy-prevention.md)
+ [

# AWS IoT Core Beispiele für Richtlinien
](example-iot-policies.md)
+ [

# Autorisierung mit Amazon-Cognito-Identitäten
](cog-iot-policies.md)

# AWS IoT Core politische Maßnahmen
<a name="iot-policy-actions"></a>

Die folgenden Richtlinienaktionen werden von AWS IoT Core definiert:MQTT-Richtlinienaktionen

`iot:Connect`  
Stellt die Berechtigung dar, eine Verbindung zum AWS IoT Core Message Broker herzustellen. Die Berechtigung `iot:Connect` wird jedes Mal geprüft, wenn eine `CONNECT`-Anforderung an den Broker gesendet wird. Der Message Broker ermöglicht nicht die gleichzeitige Verbindung von zwei Clients mit der gleichen Client-ID. Nachdem sich der zweite Client verbunden hat, schließt der Broker die bestehende Verbindung. Verwenden Sie die `iot:Connect`-Berechtigung, um sicherzustellen, dass sich nur autorisierte Clients mit einer bestimmten Client-ID verbinden können.

`iot:DeleteConnection`  
Stellt die Berechtigung dar, die Verbindung zu einem verbundenen MQTT-Client zu trennen. AWS IoT Core Die `iot:DeleteConnection` Berechtigung wird jedes Mal überprüft, wenn eine Anfrage gestellt wird, um die Verbindung zu einem Client gewaltsam zu trennen. Wenn Sie die Verbindung zu einem Client trennen, AWS IoT Core wird die Netzwerkverbindung des Clients geschlossen und optional der Sitzungsstatus gelöscht.

`iot:GetRetainedMessage`  
Dies ist die Berechtigung zum Abrufen des Inhalts einer einzelnen beibehaltenen Nachricht. Bei gespeicherten Nachrichten handelt es sich um Nachrichten, die mit gesetztem RETAIN-Flag veröffentlicht und von AWS IoT Core gespeichert wurden. Informationen zur Berechtigung zum Abrufen einer Liste aller beibehaltenen Nachrichten des Kontos finden Sie unter [iot:ListRetainedMessages](#action_listretainedmessages).

`iot:ListRetainedMessages`  
Dies ist die Berechtigung, zusammenfassende Informationen über die beibehaltenen Nachrichten des Kontos abzurufen, nicht jedoch den Inhalt der Nachrichten. Archivierte Nachrichten sind Nachrichten, die mit gesetztem RETAIN-Flag veröffentlicht und von gespeichert wurden AWS IoT Core. Der für diese Aktion angegebene Ressourcen-ARN muss `*` lauten. Informationen zur Berechtigung zum Abrufen des Inhalts einer einzelnen beibehaltenen Nachricht finden Sie unter [iot:GetRetainedMessage](#action_getretainpublish).

`iot:Publish`  
Dies ist die Berechtigung zum Veröffentlichen unter einem MQTT-Topic. Diese Berechtigung wird jedes Mal geprüft, wenn eine PUBLISH-Anforderung an den Broker gesendet wird. Sie können es verwenden, um Clients Nachrichten unter bestimmten Topic-Mustern veröffentlichen zu lassen.  
Um die Berechtigung `iot:Publish` zu erteilen, müssen Sie auch die Berechtigung `iot:Connect` erteilen.

`iot:Receive`  
Stellt die Berechtigung dar, eine Nachricht von zu empfangen AWS IoT Core. Die `iot:Receive`-Berechtigung wird jedes Mal geprüft, wenn eine Nachricht an einen Client zugestellt wird. Da diese Berechtigung bei jedem Zustellvorgang geprüft wird, können Sie sie nutzen, um Clients, die zurzeit ein Topic abonnieren, Berechtigungen zu entziehen.

`iot:RetainPublish`  
Dies ist die Berechtigung, eine MQTT-Nachricht mit gesetztem RETAIN-Flag zu veröffentlichen.  
Um die Berechtigung `iot:RetainPublish` zu erteilen, müssen Sie auch die Berechtigung `iot:Publish` erteilen.

`iot:Subscribe`  
Dies ist die Berechtigung zum Abonnieren eines Topic-Filters. Diese Berechtigung wird jedes Mal geprüft, wenn eine SUBSCRIBE-Anforderung an den Broker gesendet wird. Verwenden Sie sie, um Clients das Abonnieren von Topics zu ermöglichen, die bestimmten Topic-Mustern entsprechen.  
Um die Berechtigung `iot:Subscribe` zu erteilen, müssen Sie auch die Berechtigung `iot:Connect` erteilen.Aktionen für Geräteschattenrichtlinien

`iot:DeleteThingShadow`  
Dies ist die Berechtigung zum Löschen des Geräteschattens eines Objekts. Die Berechtigung `iot:DeleteThingShadow` wird bei jeder Anforderung zum Löschen des Geräteschatteninhalts eines Objekts geprüft.

`iot:GetThingShadow`  
Dies ist die Berechtigung zum Abrufen des Geräteschattens eines Objekts. Die Berechtigung `iot:GetThingShadow` wird bei jeder Anforderung zum Abrufen des Geräteschatteninhalts eines Objekts geprüft.

`iot:ListNamedShadowsForThing`  
Dies ist die Berechtigung zum Auflisten der benannten Schatten eines Objekts. Die Berechtigung `iot:ListNamedShadowsForThing` wird bei jeder Anforderung zum Auflisten der benannten Schatten eines Objekts geprüft.

`iot:UpdateThingShadow`  
Dies ist die Berechtigung zum Aktualisieren eines Device Shadow. Die Berechtigung `iot:UpdateThingShadow` wird bei jeder Anforderung zum Aktualisieren des Geräteschatteninhalts eines Objekts geprüft.

**Anmerkung**  
Der Richtlinienaktionen für die Auftragsausführung gilt nur für den HTTP-TLS-Endpunkt. Wenn Sie den MQTT-Endpunkt verwenden, müssen Sie die in diesem Thema definierten MQTT-Richtlinienaktionen verwenden.  
Ein Beispiel für eine Richtlinie zur Auftragsausführung, die dies veranschaulicht, finden Sie unter [Beispiel für grundlegende Auftragsrichtlinie](basic-jobs-example.md), das mit dem MQTT-Protokoll funktioniert.AWS IoT Core Politische Maßnahmen zur Ausführung von Job

`iotjobsdata:DescribeJobExecution`  
Stellt die Berechtigung für den Abruf einer Auftragsausführung für ein bestimmtes Objekt dar. Die `iotjobsdata:DescribeJobExecution`-Berechtigung wird jedes Mal überprüft, wenn eine Anforderung zur Ausführung eines Auftrags gestellt wird.

`iotjobsdata:GetPendingJobExecutions`  
Stellt die Berechtigung zum Abrufen der Liste der Aufträge dar, die sich nicht in einem Endstatus für ein Objekt befinden. Die Berechtigung `iotjobsdata:GetPendingJobExecutions` wird jedes Mal überprüft, wenn eine Anforderung zum Abrufen der Liste gestellt wird. 

`iotjobsdata:UpdateJobExecution`  
Stellt die Berechtigung zum Aktualisieren einer Auftragsausführung dar. Die Berechtigung `iotjobsdata:UpdateJobExecution` wird jedes Mal überprüft, wenn eine Anforderung zum Aktualisieren des Status einer Auftragsausführung gestellt wird.

`iotjobsdata:StartNextPendingJobExecution`  
Stellt die Berechtigung zum Abrufen und Starten der nächsten ausstehenden Auftragsausführung für ein Objekt dar. (Um eine Auftragsausführung mit dem Status QUEUED auf IN\$1PROGRESS zu aktualisieren.) Die Berechtigung `iotjobsdata:StartNextPendingJobExecution` wird jedes Mal überprüft, wenn eine Anforderung zum Starten der nächsten ausstehenden Auftragsausführung gestellt wird.AWS IoT Core Richtlinienaktion des Anmeldeinformationsanbieters

`iot:AssumeRoleWithCertificate`  
Stellt die Berechtigung dar, den AWS IoT Core Anmeldeinformationsanbieter anzurufen, um eine IAM-Rolle mit zertifikatsbasierter Authentifizierung zu übernehmen. Die `iot:AssumeRoleWithCertificate` Berechtigung wird jedes Mal überprüft, wenn eine Anfrage an den AWS IoT Core Anmeldeinformationsanbieter gestellt wird, eine Rolle zu übernehmen.

# AWS IoT Core Ressourcen für Aktionen
<a name="iot-action-resources"></a>

Um eine Ressource für eine AWS IoT Core Richtlinienaktion anzugeben, verwenden Sie den Amazon-Ressourcennamen (ARN) der Ressource. Alle Ressourcen ARNs folgen dem folgenden Format:

```
arn:partition:iot:region:AWS-account-ID:Resource-type/Resource-name
```

Die folgende Tabelle zeigt die Ressource, die für jeden Aktionstyp angegeben werden muss. Die ARN-Beispiele beziehen sich auf die Konto-ID`123456789012`, in der Partition `aws` und sind regionsspezifisch`us-east-1`. Weitere Informationen zu den Formaten für ARNs finden Sie unter [Amazon Resource Names (ARNs)](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference-arns.html) im AWS Identity and Access Management Benutzerhandbuch.


| Action | Ressourcentyp | Ressourcenname | ARN-Beispiel | 
| --- | --- | --- | --- | 
| iot:Connect | client |  Die Client-ID des Clients  | arn:aws:iot:us-east-1:123456789012:client/myClientId | 
| iot:DeleteConnection | client |  Die Client-ID des Clients  | arn:aws:iot:us-east-1:123456789012:client/myClientId | 
| iot:DeleteThingShadow | thing |  Der Name des Objekts und gegebenenfalls der Name des Schattens  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne arn:aws:iot:us-east-1:123456789012:thing/thingOne/shadowOne  | 
| iotjobsdata:DescribeJobExecution | thing |  Der Name des Objekts  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iotjobsdata:GetPendingJobExecutions | thing |  Der Name des Objekts  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iot:GetRetainedMessage | topic |  Ein beibehaltenes Nachrichten-Topic  |  arn:aws:iot:us-east-1:123456789012:topic/myTopicName  | 
| iot:GetThingShadow | thing |  Der Name des Objekts und gegebenenfalls der Name des Schattens  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne arn:aws:iot:us-east-1:123456789012:thing/thingOne/shadowOne  | 
| iot:ListNamedShadowsForThing | Alle | Alle |  \$1 | 
| iot:ListRetainedMessages | Alle | Alle |  \$1 | 
| iot:Publish | topic |  Eine Topic-Zeichenfolge  | arn:aws:iot:us-east-1:123456789012:topic/myTopicName | 
| iot:Receive | topic |  Eine Topic-Zeichenfolge  | arn:aws:iot:us-east-1:123456789012:topic/myTopicName | 
| iot:RetainPublish | topic |  Ein Topic, das mit gesetztem RETAIN-Flag veröffentlicht werden soll  |  arn:aws:iot:us-east-1:123456789012:topic/myTopicName  | 
| iotjobsdata:StartNextPendingJobExecution | thing |  Der Name des Objekts  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iot:Subscribe | topicfilter | Eine Zeichenfolge für einen Topic-Filter | arn:aws:iot:us-east-1:123456789012:topicfilter/myTopicFilter | 
| iotjobsdata:UpdateJobExecution | thing |  Der Name des Objekts  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iot:UpdateThingShadow | thing |  Der Name des Objekts und gegebenenfalls der Name des Schattens  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne arn:aws:iot:us-east-1:123456789012:thing/thingOne/shadowOne  | 
| iot:AssumeRoleWithCertificate | rolealias |  Das Rollenalias, das auf einen Rollen-ARN verweist  |  arn:aws:iot:us-east-1:123456789012:rolealias/CredentialProviderRole\$1alias | 

# AWS IoT Core Richtlinienvariablen
<a name="iot-policy-variables"></a>

AWS IoT Core definiert Richtlinienvariablen, die in AWS IoT Core Richtlinien im `Condition` Block `Resource` oder verwendet werden können. Bei Anwendung der Richtlinien werden die Variablen durch tatsächliche Werte ersetzt. Wenn beispielsweise ein Gerät mit der Client-ID 100-234-3456 mit dem AWS IoT Core Message Broker verbunden ist, wird die `iot:ClientId` Richtlinienvariable im Richtliniendokument durch 100-234-3456 ersetzt.

AWS IoT Core Richtlinien können Platzhalterzeichen verwenden und folgen einer ähnlichen Konvention wie IAM-Richtlinien. Ein in die Zeichenfolge eingefügtes `*` (Sternchen) kann als Platzhalter behandelt werden, der mit beliebigen Zeichen übereinstimmt. Sie können beispielsweise `*` verwenden, um mehrere MQTT-Topic-Namen im `Resource`-Attribut einer Richtlinie zu beschreiben. Die Zeichen `+` und `#` werden in einer Richtlinie als Literalzeichenfolgen behandelt. Ein Beispiel für eine Richtlinie, die die Verwendung von Platzhaltern veranschaulicht, finden Sie unter [Verwendung von Platzhalterzeichen in MQTT und Richtlinien AWS IoT Core](pub-sub-policy.md#pub-sub-policy-cert).

Sie können auch vordefinierte Richtlinienvariablen mit festen Werten verwenden, um Zeichen darzustellen, die andernfalls eine besondere Bedeutung haben. Zu diesen Sonderzeichen gehören `$(*)`, `$(?)` und `$($)`. Weitere Informationen zu Richtlinienvariablen und Sonderzeichen finden Sie unter [IAM-Richtlinienelemente: Variablen und Tags](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html) und [Erstellen einer Bedingung mit mehreren Schlüsseln oder Werten](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html).

**Topics**
+ [

# Grundlegende Richtlinienvariablen AWS IoT Core
](basic-policy-variables.md)
+ [

# Objektrichtlinienvariablen
](thing-policy-variables.md)
+ [

# AWS IoT Core Richtlinienvariablen für X.509-Zertifikate
](cert-policy-variables.md)

# Grundlegende Richtlinienvariablen AWS IoT Core
<a name="basic-policy-variables"></a>

AWS IoT Core definiert die folgenden grundlegenden Richtlinienvariablen:
+ `aws:SourceIp`: Die IP-Adresse des Clients, der mit dem AWS IoT Core Message Broker verbunden ist.
+ `iot:ClientId`: Die Client-ID für die Verbindung zum AWS IoT Core Message Broker.
+ `iot:DomainName`: Der Domainname des Clients, mit dem eine Verbindung hergestellt wurde AWS IoT Core.

**Topics**
+ [

## Beispiele für `ClientId` und `SourceIp` Richtlinienvariablen
](#basic-policy-variables-example)
+ [

## Beispiele für `iot:DomainName` Richtlinienvariablen
](#basic-policy-variables-example-domain)

## Beispiele für `ClientId` und `SourceIp` Richtlinienvariablen
<a name="basic-policy-variables-example"></a>

Die folgende AWS IoT Core Richtlinie zeigt eine Richtlinie, die Richtlinienvariablen verwendet. `aws:SourceIp`kann im Condition-Element Ihrer Richtlinie verwendet werden, um es Prinzipalen zu ermöglichen, API-Anfragen nur innerhalb eines bestimmten Adressbereichs zu stellen. Beispiele finden Sie unter [Autorisieren von Benutzern und Cloud-Diensten zur Nutzung von Jobs AWS IoT](iam-policy-users-jobs.md).

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/clientid1"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:ClientId}"
			],
			"Condition": {
				"IpAddress": {
					"aws:SourceIp": "123.45.167.89"
				}
			}
		}
	]
}
```

In diesen Beispielen `${iot:ClientId}` wird bei der Auswertung der Richtlinie durch die ID des Clients ersetzt, der mit dem AWS IoT Core Message Broker verbunden ist. Wenn Sie Richtlinienvariablen wie beispielsweise `${iot:ClientId}` verwenden, können Sie versehentlich den Zugriff auf Themen ermöglichen. Wenn Sie beispielsweise eine Richtlinie nutzen, in der mit `${iot:ClientId}` ein bestimmter Topic-Filter angegeben wird:

```
{
	"Effect": "Allow",
	"Action": [
		"iot:Subscribe"
	],
	"Resource": [
		"arn:aws:iot:us-east-1:123456789012:topicfilter/my/${iot:ClientId}/topic"
	]
}
```

... kann ein Client mit der Client-ID `+` eine Verbindung zum &IoT; Message Broker herstellen. Damit könnte der Benutzer jedes Thema abonnieren, das dem Themenfilter `my/+/topic` entspricht. Um sich vor solchen Sicherheitslücken zu schützen, verwenden Sie die `iot:Connect` Richtlinienaktion, um zu kontrollieren, welcher Client eine Verbindung herstellen IDs kann. Mit dieser Richtlinie zum Beispiel dürfen nur die Clients mit der Client-ID `clientid1` eine Verbindung herstellen:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/clientid"
			]
		}
	]
}
```

**Anmerkung**  
Die Verwendung der Richtlinienvariable `${iot:ClientId}` mit `Connect` wird nicht empfohlen. Der `ClientId`-Wert wird nicht überprüft, sodass eine Anfügung mit einer anderen Client-ID die Validierung zwar bestehen, aber einen Verbindungsabbruch verursachen kann. Da jede `ClientId` erlaubt ist, können mit einer zufälligen Client-ID die Richtlinien für Objektgruppen umgangen werden.

## Beispiele für `iot:DomainName` Richtlinienvariablen
<a name="basic-policy-variables-example-domain"></a>

Sie können die `iot:DomainName` Richtlinienvariable hinzufügen, um einzuschränken, welche Domänen verwendet werden dürfen. Durch das Hinzufügen der `iot:DomainName` Richtlinienvariablen können Geräte nur eine Verbindung zu bestimmten konfigurierten Endpunkten herstellen.

Die folgende Richtlinie ermöglicht es Geräten, eine Verbindung mit der angegebenen Domäne herzustellen.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": {
		"Sid": "AllowConnectionsToSpecifiedDomain",
		"Effect": "Allow",
		"Action": [
			"iot:Connect"
		],
		"Resource": "arn:aws:iot:us-east-1:123456789012:client/clientid",
		"Condition": {
			"StringEquals": {
				"iot:DomainName": "d1234567890abcdefghij-ats.iot.us-east-1.amazonaws.com"
			}
		}
	}
}
```

Die folgende Richtlinie verweigert Geräten die Verbindung mit der angegebenen Domäne.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": {
		"Sid": "DenyConnectionsToSpecifiedDomain",
		"Effect": "Deny",
		"Action": [
			"iot:Connect"
		],
		"Resource": "arn:aws:iot:us-east-1:123456789012:client/clientid",
		"Condition": {
			"StringEquals": {
				"iot:DomainName": "d1234567890abcdefghij-ats.iot.us-east-1.amazonaws.com"
			}
		}
	}
}
```

Weitere Informationen zum Bedingungsoperator für Richtlinien finden Sie unter [IAM-JSON-Richtlinienelemente: Bedingungsoperatoren](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html). Weitere Informationen zu Domänenkonfigurationen finden Sie unter [Was ist eine Domänenkonfiguration](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html)? .

# Objektrichtlinienvariablen
<a name="thing-policy-variables"></a>

Mithilfe von Dingrichtlinienvariablen können Sie AWS IoT Core Richtlinien schreiben, die Berechtigungen auf der Grundlage von Dingeigenschaften wie Dingnamen, Dingtypen und Dingattributwerten gewähren oder verweigern. Sie können Ding-Richtlinienvariablen verwenden, um dieselbe Richtlinie auf die Steuerung vieler AWS IoT Core Geräte anzuwenden. Weitere Informationen zur Gerätebereitstellung finden Sie unter [Gerätebereitstellung](iot-provision.html).

Wenn Sie eine nicht ausschließliche Zuordnung von Dingen verwenden, kann dasselbe Zertifikat an mehrere Dinge angehängt werden. Um eine klare Zuordnung aufrechtzuerhalten und mögliche Konflikte zu vermeiden, müssen Sie Ihre Client-ID mit dem Namen des Dings abgleichen. In diesem Fall erhalten Sie den Namen des Dings aus der Client-ID in der `Connect` MQTT-Nachricht, die gesendet wird, wenn ein Ding eine Verbindung AWS IoT Core herstellt.

Beachten Sie Folgendes, wenn Sie Objektrichtlinienvariablen in AWS IoT Core -Richtlinien verwenden.
+ Verwenden Sie die [AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html)API, um Zertifikate oder Principals (authentifizierte Amazon Cognito Cognito-Identitäten) an eine Sache anzuhängen.
+ Wenn eine nicht ausschließliche Ding-Assoziation vorhanden ist und Sie Ding-Namen durch Ding-Richtlinienvariablen ersetzen, muss der Wert von `clientId` in der MQTT-Verbindungsnachricht oder der TLS-Verbindung exakt mit dem Ding-Namen übereinstimmen.

Folgende Thing-Richtlinienvariablen stehen zur Verfügung:
+ `iot:Connection.Thing.ThingName`

  Dies ergibt den Namen der Sache in der AWS IoT Core Registrierung, für die die Richtlinie ausgewertet wird. AWS IoT Core verwendet das Zertifikat, das das Gerät bei der Authentifizierung vorlegt, um zu ermitteln, welches Objekt zur Überprüfung der Verbindung verwendet werden soll. Diese Richtlinienvariable ist nur verfügbar, wenn ein Gerät eine Verbindung über MQTT oder MQTT über das Protokoll herstellt. WebSocket 
+ `iot:Connection.Thing.ThingTypeName`

  Dies wird in den Objekttyp aufgelöst, auf das die Richtlinie angewendet wurde. Die Client-ID der WebSocket MQTT/-Verbindung muss mit dem Namen der Sache identisch sein. Diese Richtlinienvariable ist nur verfügbar, wenn eine Verbindung über MQTT oder MQTT über das Protokoll hergestellt wird. WebSocket
+ `iot:Connection.Thing.Attributes[attributeName]`

  Dies wird in den Wert des angegebenen Attributs aufgelöst, das mit dem Thing verknüpft ist, auf das die Richtlinie angewendet wurde. Ein Thing kann bis zu 50 Attribute aufweisen. Jedes Attribut ist als Richtlinienvariable verfügbar: `iot:Connection.Thing.Attributes[attributeName]` wo *attributeName* ist der Name des Attributs. Die Client-ID der MQTT/WebSocket Verbindung muss mit dem Namen des Dings identisch sein. Diese Richtlinienvariable ist nur verfügbar, wenn eine Verbindung über MQTT oder MQTT über das WebSocket Protokoll hergestellt wird.
+ `iot:Connection.Thing.IsAttached`

  `iot:Connection.Thing.IsAttached: ["true"]`erzwingt, dass nur die Geräte, die sowohl im AWS IoT Principal registriert als auch mit diesem verbunden sind, auf die in der Richtlinie enthaltenen Berechtigungen zugreifen können. Sie können diese Variable verwenden, um zu verhindern, dass ein Gerät eine Verbindung herstellt, AWS IoT Core wenn es ein Zertifikat vorlegt, das nicht an ein IoT-Ding in der AWS IoT Core Registrierung angehängt ist. Diese Variable hat Werte `true` oder `false` gibt an, dass das verbindende Ding über die API an das Zertifikat oder die Amazon Cognito Cognito-Identität in der Registrierung angehängt ist. [AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html) Der Objektname wird als Client-ID verwendet. 

Wenn Ihre Client-ID mit Ihrem Ding-Namen übereinstimmt oder wenn Sie Ihr Zertifikat ausschließlich an eine Sache anhängen, kann die Verwendung von Richtlinienvariablen in der Richtliniendefinition die Richtlinienverwaltung vereinfachen. Anstatt individuelle Richtlinien für jedes IoT-Ding zu erstellen, können Sie mithilfe der Ding-Richtlinienvariablen eine einzelne Richtlinie definieren. Diese Richtlinie kann dynamisch auf alle Geräte angewendet werden. Im Folgenden finden Sie ein Beispiel für eine Richtlinie, die zeigt, wie sie funktioniert. Weitere Informationen finden Sie unter [Einer AWS IoT MQTT-Clientverbindung ein Ding zuordnen](exclusive-thing.md).

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Condition": {
				"StringLike": {
					"iot:ClientId": "*${iot:Connection.Thing.Attributes[envType]}"
				}
			},
			"Effect": "Allow",
			"Action": "iot:Connect",
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/*"
		}
	]
}
```

In diesem Richtlinienbeispiel können Dinge eine Verbindung herstellen, AWS IoT Core wenn ihre Client-ID mit dem Wert ihres `envType` Attributs endet. Nur Dinge mit einem passenden Client-ID-Muster dürfen eine Verbindung herstellen.

# AWS IoT Core Richtlinienvariablen für X.509-Zertifikate
<a name="cert-policy-variables"></a>

X.509-Zertifikatsrichtlinienvariablen helfen beim Schreiben AWS IoT Core von Richtlinien. Diese Richtlinien gewähren Berechtigungen auf der Grundlage von X.509-Zertifikatsattributen. In den folgenden Abschnitten wird beschrieben, wie diese Zertifikatsrichtlinienvariablen verwendet werden.

**Wichtig**  
Wenn Ihr X.509-Zertifikat kein bestimmtes Zertifikatattribut enthält, aber die entsprechende Zertifikatsrichtlinienvariable in Ihrem Richtliniendokument verwendet wird, kann die Richtlinienbewertung zu unerwartetem Verhalten führen.

## CertificateId
<a name="cert-policy-variables-certid"></a>

In der [RegisterCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCertificate.html)API `certificateId` erscheint das im Antworttext. Um Informationen zu Ihrem Zertifikat zu erhalten, verwenden Sie das `certificateId` in [DescribeCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeCertificate.html).

## Ausstellerattribute
<a name="issuer-attributes"></a>

Die folgenden AWS IoT Core Richtlinienvariablen unterstützen das Zulassen oder Verweigern von Berechtigungen auf der Grundlage von Zertifikatsattributen, die vom Zertifikataussteller festgelegt wurden.
+ `iot:Certificate.Issuer.DistinguishedNameQualifier`
+ `iot:Certificate.Issuer.Country`
+ `iot:Certificate.Issuer.Organization`
+ `iot:Certificate.Issuer.OrganizationalUnit`
+ `iot:Certificate.Issuer.State`
+ `iot:Certificate.Issuer.CommonName`
+ `iot:Certificate.Issuer.SerialNumber`
+ `iot:Certificate.Issuer.Title`
+ `iot:Certificate.Issuer.Surname`
+ `iot:Certificate.Issuer.GivenName`
+ `iot:Certificate.Issuer.Initials`
+ `iot:Certificate.Issuer.Pseudonym`
+ `iot:Certificate.Issuer.GenerationQualifier` 

## Subject-Attribute
<a name="subject-attributes"></a>

Die folgenden AWS IoT Core Richtlinienvariablen unterstützen das Erteilen oder Verweigern von Berechtigungen auf der Grundlage der vom Zertifikatsaussteller festgelegten Attributen des Zertifikatsinhabers.
+ `iot:Certificate.Subject.DistinguishedNameQualifier`
+ `iot:Certificate.Subject.Country`
+ `iot:Certificate.Subject.Organization`
+ `iot:Certificate.Subject.OrganizationalUnit`
+ `iot:Certificate.Subject.State`
+ `iot:Certificate.Subject.CommonName`
+ `iot:Certificate.Subject.SerialNumber`
+ `iot:Certificate.Subject.Title`
+ `iot:Certificate.Subject.Surname`
+ `iot:Certificate.Subject.GivenName`
+ `iot:Certificate.Subject.Initials`
+ `iot:Certificate.Subject.Pseudonym`
+ `iot:Certificate.Subject.GenerationQualifier` 

X.509-Zertifikate bieten diesen Attributen die Möglichkeit, einen oder mehrere Werte zu enthalten. Standardmäßig wird bei Attributen mit mehreren Werten der erste Wert zurückgegeben. So kann beispielsweise das Attribut `Certificate.Subject.Country` eine Liste von Ländernamen enthalten, aber wenn es in einer Richtlinie ausgewertet wird, wird `iot:Certificate.Subject.Country` durch den ersten Ländernamen ersetzt.

Einen spezifischen Attributwert, der nicht dem ersten Wert entspricht, können Sie unter Verwendung eines 1-basierten Indexes anfordern. `iot:Certificate.Subject.Country.1` wird z. B. durch den zweiten Ländernamen im Attribut `Certificate.Subject.Country` ersetzt. Wenn Sie einen Index angeben, der nicht vorhanden ist (wenn Sie zum Beispiel einen dritten Wert anfordern, obwohl dem Attribut nur zwei Werte zugeordnet sind), findet keine Ersetzung statt und die Autorisierung schlägt fehl. Sie können das Suffix `.List` verwenden, um alle Werte des Attributs anzugeben.

## Attribute des alternativen Ausstellernamens
<a name="issuer-alternate-name-attributes"></a>

Die folgenden AWS IoT Core Richtlinienvariablen unterstützen die Erteilung oder Verweigerung von Berechtigungen auf der Grundlage von Attributen mit alternativen Namen des Ausstellers, die vom Zertifikataussteller festgelegt wurden.
+ `iot:Certificate.Issuer.AlternativeName.RFC822Name`
+ `iot:Certificate.Issuer.AlternativeName.DNSName`
+ `iot:Certificate.Issuer.AlternativeName.DirectoryName`
+ `iot:Certificate.Issuer.AlternativeName.UniformResourceIdentifier`
+ `iot:Certificate.Issuer.AlternativeName.IPAddress`

## Attribute des alternativen Subjektnamens
<a name="subject-alternate-name-attributes"></a>

Die folgenden AWS IoT Core Richtlinienvariablen unterstützen die Erteilung oder Verweigerung von Berechtigungen auf der Grundlage von Attributen mit alternativen Namen, die vom Zertifikataussteller festgelegt wurden.
+ `iot:Certificate.Subject.AlternativeName.RFC822Name`
+ `iot:Certificate.Subject.AlternativeName.DNSName`
+ `iot:Certificate.Subject.AlternativeName.DirectoryName`
+ `iot:Certificate.Subject.AlternativeName.UniformResourceIdentifier`
+ `iot:Certificate.Subject.AlternativeName.IPAddress`

## Weitere Attribute
<a name="other-attributes"></a>

Sie können sie verwenden`iot:Certificate.SerialNumber`, um den Zugriff auf AWS IoT Core Ressourcen auf der Grundlage der Seriennummer eines Zertifikats zu erlauben oder zu verweigern. Die Richtlinienvariable `iot:Certificate.AvailableKeys` enthält die Namen aller Zertifikat-Richtlinienvariablen, die Werte enthalten.

# Verwenden von X.509-Zertifikatsrichtlinienvariablen
<a name="use-policy-variables"></a>

Dieses Thema enthält Einzelheiten zur Verwendung von Zertifikatsrichtlinienvariablen. X.509-Zertifikatsrichtlinienvariablen sind wichtig, wenn Sie AWS IoT Core Richtlinien erstellen, die Berechtigungen auf der Grundlage von X.509-Zertifikatattributen gewähren. Wenn Ihr X.509-Zertifikat kein bestimmtes Zertifikatattribut enthält, aber die entsprechende Zertifikatsrichtlinienvariable in Ihrem Richtliniendokument verwendet wird, kann die Richtlinienbewertung zu unerwartetem Verhalten führen. Dies liegt daran, dass die fehlende Richtlinienvariable in der Richtlinienerklärung nicht bewertet wird.

**Topics**
+ [

## Beispiel für ein X.509-Zertifikat
](#certificate-example)
+ [

## Verwendung von Zertifikatsausstellerattributen als Zertifikatsrichtlinienvariablen
](#issuer-attributes-policy)
+ [

## Verwendung von Zertifikatsantragsattributen als Variablen für die Zertifikatsrichtlinie
](#subject-attributes-policy)
+ [

## Verwendung von alternativen Namensattributen des Zertifikatausstellers als Variablen für die Zertifikatsrichtlinie
](#issuer-alternate-name-attributes-policy)
+ [

## Verwendung von Attributen mit alternativen Namen für den Antragsteller des Zertifikats als Variablen für die Zertifikatsrichtlinie
](#subject-alternate-name-attributes-policy)
+ [

## Verwendung eines anderen Zertifikatsattributs als Zertifikatsrichtlinienvariable
](#other-attributes-policy)
+ [

## Einschränkungen bei Richtlinienvariablen für X.509-Zertifikate
](#policy-limits)
+ [

## Beispielrichtlinien, die Zertifikatsrichtlinienvariablen verwenden
](#example-attributes-policy)

## Beispiel für ein X.509-Zertifikat
<a name="certificate-example"></a>

Ein typisches X.509-Zertifikat könnte wie folgt aussehen. Dieses Beispielzertifikat enthält Zertifikatattribute. Bei der Bewertung von AWS IoT Core Richtlinien werden die folgenden Zertifikatsattribute als Zertifikatsrichtlinienvariablen aufgefüllt: `Serial Number``Issuer`,`Subject`,`X509v3 Issuer Alternative Name`, und`X509v3 Subject Alternative Name`.

```
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            92:12:85:cb:b7:a5:e0:86
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=IoT Devices, OU=SmartHome, ST=WA, CN=IoT Devices Primary CA, 
				GN=Primary CA1/initials=XY/dnQualifier=Example corp,
				SN=SmartHome/ title=CA1/pseudonym=Primary_CA/generationQualifier=2/serialNumber=987		
        Validity
            Not Before: Mar 26 03:25:40 2024 GMT
            Not After : Apr 28 03:25:40 2025 GMT
        Subject: C=US, O=IoT Devices, OU=LightBulb, ST=NY, CN=LightBulb Device Cert, 
				GN=Bulb/initials=ZZ/dnQualifier=Bulb001, 
				SN=Multi Color/title=RGB/pseudonym=RGB Device/generationQualifier=4/serialNumber=123
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    << REDACTED >>
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            X509v3 Key Usage: 
                Digital Signature, Non Repudiation, Key Encipherment
            X509v3 Subject Alternative Name: 
                DNS:example.com, IP Address:1.2.3.4, URI:ResourceIdentifier001, email:device1@example.com, DirName:/C=US/O=IoT/OU=SmartHome/CN=LightBulbCert
            X509v3 Issuer Alternative Name: 
                DNS:issuer.com, IP Address:5.6.7.8, URI:PrimarySignerCA, email:primary@issuer.com, DirName:/C=US/O=Issuer/OU=IoT Devices/CN=Primary Issuer CA
    Signature Algorithm: sha256WithRSAEncryption
         << REDACTED >>
```

## Verwendung von Zertifikatsausstellerattributen als Zertifikatsrichtlinienvariablen
<a name="issuer-attributes-policy"></a>

Die folgende Tabelle enthält Einzelheiten dazu, wie die Attribute des Zertifikatsausstellers in eine AWS IoT Core Richtlinie eingefügt werden.


**Ausstellerattribute, die in einer Richtlinie ausgefüllt werden sollen**  

| Attribute des Zertifikatsausstellers | Variablen für die Zertifikatsrichtlinie | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/use-policy-variables.html)  | 

## Verwendung von Zertifikatsantragsattributen als Variablen für die Zertifikatsrichtlinie
<a name="subject-attributes-policy"></a>

Die folgende Tabelle enthält Einzelheiten dazu, wie die Attribute des Zertifikatssubjekts in einer AWS IoT Core Richtlinie aufgefüllt werden.


**Betreff-Attribute, die in einer Richtlinie ausgefüllt werden sollen**  

| Betreff-Attribute des Zertifikats | Variablen für die Zertifikatsrichtlinie | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/use-policy-variables.html)  | 

## Verwendung von alternativen Namensattributen des Zertifikatausstellers als Variablen für die Zertifikatsrichtlinie
<a name="issuer-alternate-name-attributes-policy"></a>

Die folgende Tabelle enthält Einzelheiten darüber, wie alternative Namensattribute von Zertifikatsausstellern in eine AWS IoT Core Richtlinie eingefügt werden.


**Attribute für alternative Namen des Ausstellers, die in eine Richtlinie eingetragen werden sollen**  

| Alternativer Name des X509v3-Emittenten | Attribut in einer Richtlinie | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/use-policy-variables.html)  | 

## Verwendung von Attributen mit alternativen Namen für den Antragsteller des Zertifikats als Variablen für die Zertifikatsrichtlinie
<a name="subject-alternate-name-attributes-policy"></a>

Die folgende Tabelle enthält Einzelheiten dazu, wie die Attribute für alternative Namen von Zertifikatsempfängern in einer AWS IoT Core Richtlinie aufgefüllt werden.


**Attribute mit alternativen Namen für Antragsteller, die in einer Richtlinie ausgefüllt werden sollen**  

| X509v3 Alternativer Name des Betreffs | Attribut in einer Richtlinie | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/use-policy-variables.html)  | 

## Verwendung eines anderen Zertifikatsattributs als Zertifikatsrichtlinienvariable
<a name="other-attributes-policy"></a>

Die folgende Tabelle enthält Einzelheiten dazu, wie andere Zertifikatsattribute in eine AWS IoT Core Richtlinie aufgenommen werden.


**Andere Attribute, die in einer Richtlinie aufgefüllt werden sollen**  

| Anderes Zertifikatsattribut | Variable für die Zertifikatsrichtlinie | 
| --- | --- | 
|  `Serial Number: 92:12:85:cb:b7:a5:e0:86`  |  `iot:Certificate.SerialNumber = 10525622389124227206`  | 

## Einschränkungen bei Richtlinienvariablen für X.509-Zertifikate
<a name="policy-limits"></a>

Folgende Einschränkungen gelten bei den Richtlinienvariablen für X.509-Zertifikate:

Fehlende Richtlinienvariablen  
Wenn Ihr X.509-Zertifikat kein bestimmtes Zertifikatattribut enthält, aber die entsprechende Zertifikatsrichtlinienvariable in Ihrem Richtliniendokument verwendet wird, kann die Richtlinienbewertung zu unerwartetem Verhalten führen. Dies liegt daran, dass die fehlende Richtlinienvariable in der Richtlinienerklärung nicht bewertet wird.

 SerialNumber Format des Zertifikats  
AWS IoT Core behandelt die Seriennummer des Zertifikats als Zeichenkettendarstellung einer dezimalen Ganzzahl. Wenn eine Richtlinie beispielsweise nur Verbindungen zulässt, deren Client-ID mit der Seriennummer des Zertifikats übereinstimmt, muss die Client-ID die Seriennummer im Dezimalformat sein.

Platzhalter  
Wenn Platzhalterzeichen in Zertifikatattributen vorhanden sind, wird die Richtlinienvariable nicht durch den Wert des Zertifikatsattributs ersetzt. Dadurch bleibt der `${policy-variable}` Text im Richtliniendokument erhalten. Dies kann zu einem Autorisierungsfehler führen. Die folgenden Platzhalterzeichen können verwendet werden: `*`, `$`, `+`, `?` und `#`.

Array-Felder  
Arrays in Zertifikatattributen sind auf fünf Elemente beschränkt. Zusätzliche Elemente werden ignoriert.

Länge der Zeichenfolge  
Alle Zeichenfolgenwerte sind auf maximal 1.024 Zeichen beschränkt. Wenn ein Zertifikatsattribut eine Zeichenfolge enthält, die länger als 1024 Zeichen ist, wird die Richtlinienvariable nicht durch den Wert des Zertifikatsattributs ersetzt. Dadurch bleibt das `${policy-variable}` im Richtliniendokument. Dies kann zu einem Autorisierungsfehler führen.

Sonderzeichen  
Jedem Sonderzeichen, wie `,`, `"`, `\`, `+`, `=`, `<`, `>` und `;`, muss ein umgekehrter Schrägstrich (`\`) vorangestellt werden, wenn es in einer Richtlinienvariablen verwendet wird. Beispielsweise wird `Amazon Web Services O=Amazon.com Inc. L=Seattle ST=Washington C=US` zu `Amazon Web Service O\=Amazon.com Inc. L\=Seattle ST\=Washington C\=US`.

## Beispielrichtlinien, die Zertifikatsrichtlinienvariablen verwenden
<a name="example-attributes-policy"></a>

Das folgende Richtliniendokument ermöglicht Verbindungen mit einer Client-ID, die der Seriennummer des Zertifikats entspricht, und das Veröffentlichen zu dem Thema, das dem Muster entspricht:`${iot:Certificate.Subject.Organization}/device-stats/${iot:ClientId}/*`. 

**Wichtig**  
Wenn Ihr X.509-Zertifikat kein bestimmtes Zertifikatattribut enthält, aber die entsprechende Zertifikatsrichtlinienvariable in Ihrem Richtliniendokument verwendet wird, kann die Richtlinienbewertung zu unerwartetem Verhalten führen. Dies liegt daran, dass die fehlende Richtlinienvariable in der Richtlinienerklärung nicht bewertet wird. Wenn Sie beispielsweise das folgende Richtliniendokument an ein Zertifikat anhängen, das das `iot:Certificate.Subject.Organization` Attribut nicht enthält, werden die `iot:Certificate.Subject.Organization` Zertifikatsrichtlinienvariablen bei der Richtlinienbewertung nicht aufgefüllt.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Certificate.SerialNumber}"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/${iot:Certificate.Subject.Organization}/device-stats/${iot:ClientId}/*"
			]
		}
	]
}
```

Sie können auch den [Bedingungsoperator Null](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null) verwenden, um sicherzustellen, dass die in einer Richtlinie verwendeten Zertifikatsrichtlinienvariablen bei der Richtlinienbewertung aufgefüllt werden. Im folgenden Richtliniendokument sind Zertifikate nur `iot:Connect` zulässig, wenn die Attribute Certificate Serial Number und Certificate Subject Common Name vorhanden sind.

Alle Variablen der Zertifikatsrichtlinie haben Zeichenkettenwerte, sodass alle [Bedingungsoperatoren vom Typ „Zeichenfolge](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String)“ unterstützt werden.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/*"
			],
			"Condition": {
				"Null": {
					"iot:Certificate.SerialNumber": "false",
					"iot:Certificate.Subject.CommonName": "false"
				}
			}
		}
	]
}
```

# Serviceübergreifende Confused-Deputy-Prävention
<a name="cross-service-confused-deputy-prevention"></a>

Das *Confused-Deputy-Problem* ist ein Sicherheitsproblem, bei dem eine Entität, die nicht über die Berechtigung zum Ausführen einer Aktion verfügt, eine Entität mit größeren Rechten zwingen kann, die Aktion auszuführen. In kann AWS ein dienstübergreifender Identitätswechsel zum Problem des verwirrten Stellvertreters führen. Ein serviceübergreifender Identitätswechsel kann auftreten, wenn ein Service (der *Anruf-Service*) einen anderen Service anruft (den *aufgerufenen Service*). Der Anruf-Service kann so manipuliert werden, dass er seine Berechtigungen verwendet, um auf die Ressourcen eines anderen Kunden zu reagieren, auf die er sonst nicht zugreifen dürfte. Um dies zu verhindern, bietet AWS Tools, mit denen Sie Ihre Daten für alle Services mit Serviceprinzipalen schützen können, die Zugriff auf Ressourcen in Ihrem Konto erhalten haben. 

Um die Berechtigungen einzuschränken, die AWS IoT der Ressource einen anderen Dienst gewähren, empfehlen wir die Verwendung der Kontextschlüssel [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)und der [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)globalen Bedingungsschlüssel in Ressourcenrichtlinien. Wenn Sie beide globalen Bedingungskontextschlüssel verwenden, müssen der `aws:SourceAccount`-Wert und das Konto im `aws:SourceArn`-Wert dieselbe Konto-ID verwenden, wenn sie in derselben Richtlinienanweisung verwendet werden.

Der effektivste Weg, um sich vor dem Verwirrter-Stellvertreter-Problem zu schützen, ist die Verwendung des `aws:SourceArn` globalen Bedingungskontextschlüssels mit dem vollständigen Amazon-Ressourcenname (ARN) der Ressource. Für AWS IoT`aws:SourceArn` müssen Sie das Format einhalten: `arn:aws:iot:region:account-id:resource-type/resource-id` für ressourcenspezifische Berechtigungen oder`arn:aws:iot:region:account-id:*`. Bei der Ressourcen-ID kann es sich um den Namen oder die ID der zugelassenen Ressource oder um eine Platzhalterangabe der zulässigen Ressource handeln. IDs Stellen Sie sicher, dass das *region* mit Ihrer AWS IoT Region und das mit Ihrer *account-id* Kundenkonto-ID übereinstimmt. 

Das folgende Beispiel zeigt, wie Sie das Problem mit dem verwirrten Stellvertreter verhindern können, indem Sie die Kontextschlüssel `aws:SourceArn` und die `aws:SourceAccount` globale Bedingung in der AWS IoT Rollenvertrauensrichtlinie verwenden. Weitere Beispiele finden Sie unter [Ausführliche Beispiele für die Prävention verwirrter Stellvertreter](#cross-service-confused-deputy-prevention-examples).

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":"iot.amazonaws.com"
         },
         "Action":"sts:AssumeRole",
         "Condition":{
            "StringEquals":{
               "aws:SourceAccount":"123456789012"
        },
            "ArnLike":{
               "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:*"
        }
         }
      }
   ]
}
```

**Anmerkung**  
Wenn Sie die Fehlermeldung „Zugriff verweigert“ erhalten, kann dies daran liegen, dass die Dienstintegration mit AWS Security Token Service (STS) die Kontextschlüssel `aws:SourceArn` und die `aws:SourceAccount` Kontextschlüssel nicht unterstützt.

## Ausführliche Beispiele für die Prävention verwirrter Stellvertreter
<a name="cross-service-confused-deputy-prevention-examples"></a>

**Dieser Abschnitt enthält ausführliche Beispiele dafür, wie das Problem der verwirrten Stellvertreter verhindert werden kann, indem die Kontextschlüssel `aws:SourceArn` und die `aws:SourceAccount` globalen Bedingungsschlüssel in der AWS IoT Rollenvertrauensrichtlinie verwendet werden.**
+ [

### Flottenbereitstellung
](#cross-service-confused-deputy-prevention-fleet-provision)
+ [

### JITP
](#cross-service-confused-deputy-prevention-JITP)
+ [

### Anbieter von Anmeldeinformationen
](#cross-service-confused-deputy-prevention-credential-provider)

### Flottenbereitstellung
<a name="cross-service-confused-deputy-prevention-fleet-provision"></a>

Sie können die [Flottenbereitstellung mithilfe einer Provisioning-Vorlagenressource](https://docs.aws.amazon.com/iot/latest/developerguide/iot-provision.html) konfigurieren. Wenn eine Bereitstellungsvorlage auf eine Bereitstellungsrolle verweist, kann die Vertrauensrichtlinie dieser Rolle die Bedingungsschlüssel und die `aws:SourceArn` Bedingungsschlüssel enthalten. `aws:SourceAccount` Diese Schlüssel begrenzen die Ressourcen, für die die Konfiguration die Anforderung aufrufen kann. `sts:AssumeRole`

Die Rolle mit der folgenden Vertrauensrichtlinie kann nur vom IoT-Prinzipal (`iot.amazonaws.com`) für die in der `SourceArn` angegebene Bereitstellungsvorlage übernommen werden.

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":"iot.amazonaws.com"
         },
         "Action":"sts:AssumeRole",
         "Condition":{
            "StringEquals":{
               "aws:SourceAccount":"123456789012"
        },
            "ArnLike":{
               "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:provisioningtemplate/example_template"
        }
         }
      }
   ]
}
```

### JITP
<a name="cross-service-confused-deputy-prevention-JITP"></a>

Bei der [just-in-time Bereitstellung (JITP)](https://docs.aws.amazon.com//iot/latest/developerguide/jit-provisioning.html) können Sie entweder die Bereitstellungsvorlage als separate Ressource von der CA verwenden oder den Vorlagentext und die Rolle als Teil der CA-Zertifikatskonfiguration definieren. Der Wert von `aws:SourceArn` in der AWS IoT Rollenvertrauensrichtlinie hängt davon ab, wie Sie die Bereitstellungsvorlage definieren.

#### Definieren Sie die Bereitstellungsvorlage als separate Ressource
<a name="cross-service-confused-deputy-prevention-JITP-template"></a>

Wenn Sie Ihre Bereitstellungsvorlage als separate Ressource definieren, `aws:SourceArn` kann der Wert von sein. `"arn:aws:iot:region:account-id:provisioningtemplate/example_template"` Sie können dasselbe Richtlinienbeispiel in [Flottenbereitstellung](#cross-service-confused-deputy-prevention-fleet-provision) verwenden.

#### Definieren einer Bereitstellungsvorlage in einem CA-Zertifikat
<a name="cross-service-confused-deputy-prevention-JITP-CA"></a>

Wenn Sie Ihre Bereitstellungsvorlage innerhalb einer CA-Zertifikatsressource definieren, `aws:SourceArn` kann der Wert von oder sein`"arn:aws:iot:region:account-id:cacert/cert_id"`. `"arn:aws:iot:region:account-id:cacert/*"` Sie können einen Platzhalter verwenden, wenn die Ressourcenkennung, z. B. die ID eines CA-Zertifikats, zum Zeitpunkt der Erstellung unbekannt ist.

Die Rolle mit der folgenden Vertrauensrichtlinie kann nur vom IoT-Prinzipal (`iot.amazonaws.com`) für das in der angegebene CA-Zertifikat übernommen werden`SourceArn`.

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":"iot.amazonaws.com"
         },
         "Action":"sts:AssumeRole",
         "Condition":{
            "StringEquals":{
               "aws:SourceAccount":"123456789012"
        },
            "ArnLike":{
               "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:cacert/8ecde6884f3d87b1125ba31ac3fcb13d7016de7f57cc904fe1cb97c6ae98196e"
        }
         }
      }
   ]
}
```

Beim Erstellen eines CA-Zertifikats können Sie in der Registrierungskonfiguration auf eine Bereitstellungsrolle verweisen. Die Vertrauensrichtlinie der Bereitstellungsrolle kann verwendet werden`aws:SourceArn`, um einzuschränken, für welche Ressourcen die Rolle verwendet werden kann. Beim ersten [CACertificateRegister-Aufruf](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html) zur Registrierung des CA-Zertifikats müssten Sie jedoch nicht den ARN des CA-Zertifikats in der `aws:SourceArn` Bedingung angeben.

Um dieses Problem zu umgehen, d. h. um die Vertrauensrichtlinie der Bereitstellungsrolle für das spezifische CA-Zertifikat anzugeben, mit dem registriert ist AWS IoT Core, können Sie wie folgt vorgehen:
+ Rufen Sie zunächst [Register](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html) auf, CACertificate ohne den `RegistrationConfig` Parameter anzugeben.
+ Nachdem das CA-Zertifikat registriert wurde AWS IoT Core, rufen Sie [Update CACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCACertificate.html) auf.

  Geben Sie im CACertificate Aktualisierungsaufruf eine `RegistrationConfig` an, die die Vertrauensrichtlinie für die Bereitstellungsrolle enthält und auf den ARN des neu registrierten CA-Zertifikats `aws:SourceArn` festgelegt ist.

### Anbieter von Anmeldeinformationen
<a name="cross-service-confused-deputy-prevention-credential-provider"></a>

Verwenden Sie für [AWS IoT Core Credential Provider](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.html) dasselbe, das AWS-Konto Sie zum Erstellen des Rollenalias in verwenden`aws:SourceAccount`, und geben Sie eine Anweisung an, die dem Ressourcen-ARN des Rolealias-Ressourcentyps in entspricht. `aws:SourceArn` Wenn Sie eine IAM-Rolle für die Verwendung mit dem AWS IoT Core Anmeldeinformationsanbieter erstellen, müssen Sie alle Rollenaliase, die möglicherweise die Rolle übernehmen müssen, in die `aws:SourceArn` ARNs Bedingung aufnehmen, um so die dienstübergreifende Anfrage zu autorisieren. `sts:AssumeRole`

Die Rolle mit der folgenden Vertrauensrichtlinie kann nur vom Principal von AWS IoT Core Credential Provider (`credentials.iot.amazonaws.com`) für den in der angegebenen roleAlias übernommen werden. `SourceArn` Wenn ein Principal versucht, Anmeldeinformationen für einen anderen Rollenalias als den in der `aws:SourceArn` Bedingung angegebenen abzurufen, wird die Anfrage abgelehnt, auch wenn dieser andere Rollenalias auf dieselbe IAM-Rolle verweist.

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "credentials.iot.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:iot:us-east-1:123456789012:rolealias/example_rolealias"
        }
      }
    }
  ]
}
```

# AWS IoT Core Beispiele für Richtlinien
<a name="example-iot-policies"></a>

Die Beispielrichtlinien in diesem Abschnitt veranschaulichen die Richtliniendokumente, die zur Ausführung allgemeiner Aufgaben in AWS IoT Core verwendet werden. Sie können sie als Beispiele verwenden, um darauf aufbauend mit der Erstellung der Richtlinien für Ihre Lösungen zu beginnen.<a name="example-iot-policies-elements"></a>

Für die Beispiele in diesem Abschnitt werden die folgenden Richtlinienelemente verwendet:
+ [AWS IoT Core politische Maßnahmen](iot-policy-actions.md)
+ [AWS IoT Core Ressourcen für Aktionen](iot-action-resources.md)
+ [AWS IoT Beispiele für identitätsbasierte Richtlinien](security_iam_id-based-policy-examples.md)
+ [Grundlegende Richtlinienvariablen AWS IoT Core](basic-policy-variables.md)
+ [AWS IoT Core Richtlinienvariablen für X.509-Zertifikate](cert-policy-variables.md)

**Topics**
+ [

# Beispiel für die Verbinden-Richtlinie
](connect-policy.md)
+ [

# Beispiele für Veröffentlichungs-/Abonnement-Richtlinien
](pub-sub-policy.md)
+ [

# Beispiele zu den Verbinden- und Veröffentlichen-Richtlinien
](connect-and-pub.md)
+ [

# Beispielrichtlinien für beibehaltene Nachrichten
](retained-message-policy-examples.md)
+ [

# Beispiele für die Zertifikatrichtlinie
](certificate-policy-examples.md)
+ [

# Beispiel für Objektrichtlinien
](thing-policy-examples.md)
+ [

# Beispiel für grundlegende Auftragsrichtlinie
](basic-jobs-example.md)

# Beispiel für die Verbinden-Richtlinie
<a name="connect-policy"></a>

Die folgende Richtlinie verweigert dem Client IDs `client1` und dem Herstellen einer `client2` Verbindung die Erlaubnis AWS IoT Core, Geräte können jedoch über eine Client-ID eine Verbindung herstellen. Die Client-ID entspricht dem Namen einer Sache, die in der AWS IoT Core Registrierung registriert und dem Prinzipal zugeordnet ist, der für die Verbindung verwendet wird:

**Anmerkung**  
Für registrierte Geräte empfehlen wir, [Objektrichtlinienvariablen](thing-policy-variables.md) für `Connect`-Aktionen zu verwenden und das Objekt an den Prinzipal anzuhängen, der für die Verbindung verwendet wird.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Deny",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/client1",
				"arn:aws:iot:us-east-1:123456789012:client/client2"
			]
		},
		{
			"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"
				}
			}
		}
	]
}
```

Die folgende Richtlinie erteilt die Erlaubnis, eine Verbindung AWS IoT Core mit der Client-ID herzustellen`client1`. Dieses Richtlinienbeispiel bezieht sich auf nicht registrierte Geräte.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/client1"
			]
		}
	]
}
```

## Richtlinienbeispiele für persistente MQTT-Sitzungen
<a name="persistent-sessions-examples"></a>

`connectAttributes` ermöglichen es Ihnen, in Ihren IAM-Richtlinien `PersistentConnect` und `LastWill` anzugeben, welche Attribute Sie in Ihrer Connect-Meldung verwenden möchten. Weitere Informationen finden Sie unter [ConnectAttributes verwenden](mqtt.md#connect-attribute).

Die folgende Richtlinie ermöglicht, eine Verbindung mit dem `PersistentConnect`-Feature herzustellen:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect"
					]
				}
			}
		}
	]
}
```

Die folgende Richtlinie untersagt `PersistentConnect`, andere Features hingegen sind erlaubt:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringNotEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect"
					]
				}
			}
		}
	]
}
```

Die oben genannte Richtlinie kann auch mit `StringEquals` ausgedrückt werden, sodass alle anderen Features, einschließlich neuer Features, zulässig sind:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1"
        },
        {
            "Effect": "Deny",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:ConnectAttributes": [
                        "PersistentConnect"
                    ]
            }
        }
        }
    ]
}
```

Die folgende Richtlinie erlaubt das Herstellen einer Verbindung über beide Methoden, `PersistentConnect` und `LastWill`. Alle anderen neue Features sind nicht erlaubt:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect",
						"LastWill"
					]
				}
			}
		}
	]
}
```

Die folgende Richtlinie ermöglicht eine nahtlose Verbindung von Clients mit oder ohne `LastWill`. Andere anderen Features sind nicht zulässig:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "iot:Connect"
        ],
        "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
        "Condition": {
            "StringEquals": {
                "iot:ConnectAttributes": "LastWill"
        }
        }
    }]
}
```

Die folgende Richtlinie erlaubt nur Verbindungen unter Verwendung von Standardfeatures:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": []
				}
			}
		}
	]
}
```

Die folgende Richtlinie erlaubt nur die Verbindung mit `PersistentConnect`. Jedes neue Feature ist zulässig, solange die Verbindung `PersistentConnect` verwendet:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:ConnectAttributes": [
                        "PersistentConnect"
                    ]
            }
        }
        }
    ]
}
```

Die folgende Richtlinie besagt, dass die Verbindung sowohl `PersistentConnect` als auch `LastWill` verwendet werden muss. Neue Features sind nicht zulässig:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect",
						"LastWill"
					]
				}
			}
		},
		{
			"Effect": "Deny",
			"Action": [
				"iot:Connect"
			],
			"Resource": "*",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect"
					]
				}
			}
		},
		{
			"Effect": "Deny",
			"Action": [
				"iot:Connect"
			],
			"Resource": "*",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"LastWill"
					]
				}
			}
		},
		{
			"Effect": "Deny",
			"Action": [
				"iot:Connect"
			],
			"Resource": "*",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": []
				}
			}
		}
	]
}
```

Die folgende Richtlinie darf `PersistentConnect` nicht verwenden, kann aber `LastWill` verwenden; alle anderen neuen Features sind nicht erlaubt:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:ConnectAttributes": [
                        "PersistentConnect"
                    ]
            }
        }
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
            "Condition": {
                "ForAllValues:StringEquals": {
                    "iot:ConnectAttributes": [
                        "LastWill"
                    ]
            }
        }
        }
    ]
}
```

Die folgende Richtlinie erlaubt Verbindungen nur für Clients, die einen `LastWill` mit dem Topic `"my/lastwill/topicName"` haben; alle anderen Features sind erlaubt, solange sie das Topic `LastWill` verwenden:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
            "Condition": {
                "ArnEquals": {
                "iot:LastWillTopic": "arn:aws:iot:us-east-1:123456789012:topic/my/lastwill/topicName"
            }
        }
        }
    ]
}
```

Die folgende Richtlinie erlaubt nur die Verbindung mit einem spezifischen `LastWillTopic`; andere Features sind zulässig, solange es das `LastWillTopic` verwendet:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
            "Condition": {
                "ArnEquals": {
                "iot:LastWillTopic": "arn:aws:iot:us-east-1:123456789012:topic/my/lastwill/topicName"
            }
        }
        },
        {
            "Effect": "Deny",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:ConnectAttributes": [
                        "PersistentConnect"
                    ]
            }
        }
        }
    ]
}
```

# Beispiele für Veröffentlichungs-/Abonnement-Richtlinien
<a name="pub-sub-policy"></a>

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

**Anmerkung**  
Für registrierte Geräte empfehlen wir, [Objektrichtlinienvariablen](thing-policy-variables.md) für `Connect`-Aktionen zu verwenden und das Objekt an den Prinzipal anzuhängen, der für die Verbindung verwendet wird. 

**Topics**
+ [

## Verwendung von Platzhalterzeichen in MQTT und Richtlinien AWS IoT Core
](#pub-sub-policy-cert)
+ [

## Richtlinien zum Veröffentlichen, Abonnieren und Empfangen von Nachrichten zu to/from bestimmten Themen
](#pub-sub-specific-topic)
+ [

## Richtlinien zum Veröffentlichen, Abonnieren und Empfangen von Nachrichten, Themen mit einem bestimmten Präfix to/from
](#pub-sub-policy-specific-topic-prefix)
+ [

## Richtlinien zum Veröffentlichen, Abonnieren und Empfangen von Nachrichten — Themen, die für jedes Gerät spezifisch sind to/from
](#pub-sub-specific-topic-device)
+ [

## Richtlinien zum Veröffentlichen, Abonnieren und Empfangen von Nachrichten — to/from Themen, bei denen das Thing-Attribut im Themennamen enthalten ist
](#pub-sub-topic-attribute)
+ [

## Richtlinien, um die Veröffentlichung von Nachrichten zu untergeordneten Topics eines Topic-Namens zu verweigern
](#pub-sub-deny-publish)
+ [

## Richtlinien, um den Empfang von Nachrichten von untergeordneten Topics eines Topic-Namens zu verweigern
](#pub-sub-deny-receive)
+ [

## Richtlinien zum Abonnieren von Topics mit MQTT-Platzhalterzeichen
](#pub-sub-topic-wildcard)
+ [

## Richtlinien für HTTP und Clients WebSocket
](#pub-sub-policy-cognito)

## Verwendung von Platzhalterzeichen in MQTT und Richtlinien AWS IoT Core
<a name="pub-sub-policy-cert"></a>

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](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html#topicfilters) zu abonnieren. AWS IoT Core [Richtlinien verwenden `*` und `?` als Platzhalterzeichen und folgen den Konventionen der 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 für die Verwendung in einem Richtliniendokument, dass das `*` Zeichen nicht auf eine einzelne Themenebene beschränkt ist. Das `+` Zeichen ist in einem MQTT-Themenfilter auf eine einzelne Themenebene beschränkt. Ziehen Sie die Verwendung mehrerer `?`-Zeichen in Betracht, um eine Platzhalterspezifikation auf eine einzige MQTT-Topic-Filterebene zu beschränken, Weitere Informationen zur Verwendung von Platzhalterzeichen in einer Richtlinienressource und weitere Beispiele für deren Übereinstimmung finden Sie unter [Verwenden von Platzhaltern](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_resource.html#reference_policies_elements_resource_wildcards) in Ressourcen. ARNs

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


| Platzhalterzeichen | Ist ein MQTT-Platzhalterzeichen | Beispiel in MQTT | Ist ein Platzhalterzeichen AWS IoT Core für Richtlinien | Beispiel für AWS IoT Core Richtlinien für MQTT-Clients | 
| --- | --- | --- | --- | --- | 
| \$1 | Ja | some/\$1 | Nein | – | 
| \$1 | Ja | some/\$1/topic | Nein | – | 
| \$1 | Nein | – | Ja | `topicfilter/some/*/topic` `topicfilter/some/sensor*/topic`  | 
| ? | Nein | – | Ja |  `topic/some/?????/topic` `topicfilter/some/sensor???/topic`  | 

## Richtlinien zum Veröffentlichen, Abonnieren und Empfangen von Nachrichten zu to/from bestimmten Themen
<a name="pub-sub-specific-topic"></a>

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

------
#### [ Registered devices ]

Für Geräte, die in der AWS IoT Core Registrierung registriert sind, ermöglicht die folgende Richtlinie, dass Geräte eine Verbindung mit einer clientId herstellen, die dem Namen einer Sache in der Registrierung entspricht. Sie bietet auch `Publish`-, `Subscribe`- und `Receive`-Berechtigungen für das Topic namens „some\$1specific\$1topic“.

****  

```
{
	"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\$1specific\$1topic“.

****  

```
{
    "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, Themen mit einem bestimmten Präfix to/from
<a name="pub-sub-policy-specific-topic-prefix"></a>

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\$1prefix“.

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

------
#### [ Registered devices ]

Für Geräte, die in der AWS IoT Core Registrierung registriert sind, ermöglicht die folgende Richtlinie, dass Geräte eine Verbindung mit einer clientId herstellen, die dem Namen einer Sache in der Registrierung entspricht. Sie bietet `Publish`-, `Subscribe`- and `Receive`-Berechtigungen für Topics mit dem Präfix „topic\$1prefix“.

****  

```
{
	"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\$1prefix“.

****  

```
{
    "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 — Themen, die für jedes Gerät spezifisch sind to/from
<a name="pub-sub-specific-topic-device"></a>

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 ]

Für Geräte, die in der AWS IoT Core Registrierung registriert sind, ermöglicht die folgende Richtlinie, dass Geräte eine Verbindung mit einer clientId herstellen, die dem Namen einer Sache in der Registrierung entspricht. Sie berechtigt zum Veröffentlichen von Inhalten zum objektspezifischen Topic (`sensor/device/${iot:Connection.Thing.ThingName}`) sowie zum Abonnieren und Empfangen von Inhalten zum objektspezifischen Topic (`command/device/${iot:Connection.Thing.ThingName}`). Wenn der Name des Objekts in der Registrierung „thing1" lautet, kann das Gerät unter dem Thema" 1" veröffentlichen. sensor/device/thing1". The device will also be able to subscribe to and receive from the topic "command/device/thing

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			],
			"Condition": {
				"Bool": {
					"iot:Connection.Thing.IsAttached": "true"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/sensor/device/${iot:Connection.Thing.ThingName}"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Subscribe"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topicfilter/command/device/${iot:Connection.Thing.ThingName}"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Receive"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/command/device/${iot:Connection.Thing.ThingName}"
			]
		}
	]
}
```

------
#### [ Unregistered devices ]

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/clientId1",
                "arn:aws:iot:us-east-1:123456789012:client/clientId2",
                "arn:aws:iot:us-east-1:123456789012:client/clientId3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/sensor/device/${iot:Connection.Thing.ThingName}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topicfilter/command/device/${iot:Connection.Thing.ThingName}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/command/device/${iot:Connection.Thing.ThingName}"
            ]
        }
    ]
}
```

------

## Richtlinien zum Veröffentlichen, Abonnieren und Empfangen von Nachrichten — to/from Themen, bei denen das Thing-Attribut im Themennamen enthalten ist
<a name="pub-sub-topic-attribute"></a>

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

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

------
#### [ Registered devices ]

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

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			],
			"Condition": {
				"Bool": {
					"iot:Connection.Thing.IsAttached": "true"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/sensor/${iot:Connection.Thing.Attributes[version]}"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Subscribe"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topicfilter/command/${iot:Connection.Thing.Attributes[location]}"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Receive"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/command/${iot:Connection.Thing.Attributes[location]}"
			]
		}
	]
}
```

------
#### [ Unregistered devices ]

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

------

## Richtlinien, um die Veröffentlichung von Nachrichten zu untergeordneten Topics eines Topic-Namens zu verweigern
<a name="pub-sub-deny-publish"></a>

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

------
#### [ Registered devices ]

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

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			],
			"Condition": {
				"Bool": {
					"iot:Connection.Thing.IsAttached": "true"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/department/*"
			]
		},
		{
			"Effect": "Deny",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/department/admins"
			]
		}
	]
}
```

------
#### [ Unregistered devices ]

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/clientId1",
                "arn:aws:iot:us-east-1:123456789012:client/clientId2",
                "arn:aws:iot:us-east-1:123456789012:client/clientId3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/department/*"
            ]
        },
        {
            "Effect": "Deny",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/department/admins"
            ]
        }
    ]
}
```

------

## Richtlinien, um den Empfang von Nachrichten von untergeordneten Topics eines Topic-Namens zu verweigern
<a name="pub-sub-deny-receive"></a>

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

------
#### [ Registered devices ]

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

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

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

------
#### [ Registered devices ]

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

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			],
			"Condition": {
				"Bool": {
					"iot:Connection.Thing.IsAttached": "true"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": "iot:Subscribe",
			"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/department/+/employees"
		},
		{
			"Effect": "Allow",
			"Action": "iot:Subscribe",
			"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/location/#"
		},
		{
			"Effect": "Allow",
			"Action": "iot:Receive",
			"Resource": "arn:aws:iot:us-east-1:123456789012:topic/*"
		}
	]
}
```

------
#### [ Unregistered devices ]

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/clientId1",
                "arn:aws:iot:us-east-1:123456789012:client/clientId2",
                "arn:aws:iot:us-east-1:123456789012:client/clientId3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iot:Subscribe",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/department/+/employees"
        },
        {
            "Effect": "Allow",
            "Action": "iot:Subscribe",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/location/#"
        },
        {
            "Effect": "Allow",
            "Action": "iot:Receive",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topic/*"
        }
    ]
}
```

------

## Richtlinien für HTTP und Clients WebSocket
<a name="pub-sub-policy-cognito"></a>

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](cog-iot-policies.md).

 AWS IoT Core Verwendet für die folgenden Operationen AWS IoT Core Richtlinien, die über die API mit Amazon Cognito Cognito-Identitäten verknüpft sind. `AttachPolicy` Dadurch werden die Berechtigungen, die dem Amazon Cognito Cognito-Identitätspool mit authentifizierten Identitäten zugewiesen sind, eingeschränkt.
+ `iot:Connect`
+ `iot:Publish`
+ `iot:Subscribe`
+ `iot:Receive`
+ `iot:GetThingShadow`
+ `iot:UpdateThingShadow`
+ `iot:DeleteThingShadow`

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

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

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

**HTTP**

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

****  

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

Um authentifizierte Benutzer zuzulassen, fügen Sie die obige Richtlinie der Amazon Cognito Identity-Pool-Rolle und der Amazon Cognito Identity mithilfe der API hinzu. AWS IoT Core [AttachPolicy](https://docs.aws.amazon.com//iot/latest/apireference/API_AttachPolicy.html)

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

**MQTT**

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

****  

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

Um authentifizierte Benutzer zuzulassen, fügen Sie die obige Richtlinie der Amazon Cognito Identity-Pool-Rolle und der Amazon Cognito Identity mithilfe der API hinzu. AWS IoT Core [AttachPolicy](https://docs.aws.amazon.com//iot/latest/apireference/API_AttachPolicy.html)

**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.

# Beispiele zu den Verbinden- und Veröffentlichen-Richtlinien
<a name="connect-and-pub"></a>

Für Geräte, die als Dinge in der AWS IoT Core Registrierung registriert sind, gewährt die folgende Richtlinie die Erlaubnis, eine Verbindung AWS IoT Core mit einer Client-ID herzustellen, die dem Ding-Namen entspricht, und beschränkt das Gerät auf die Veröffentlichung zu einem Client-ID- oder Dingnamen-spezifischen MQTT-Thema. Damit eine Verbindung erfolgreich hergestellt werden kann, muss der Name des Dings in der AWS IoT Core Registrierung registriert und mithilfe einer Identität oder eines Prinzipals authentifiziert werden, der dem Ding zugeordnet ist:

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:topic/${iot:Connection.Thing.ThingName}"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Connect"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
      ]
    }
  ]
}
```

Für Geräte, die nicht als Dinge in der AWS IoT Core Registrierung registriert sind, gewährt die folgende Richtlinie die Erlaubnis, eine Verbindung AWS IoT Core mit einer Client-ID herzustellen, `client1` und beschränkt das Gerät auf die Veröffentlichung zu einem clientID-spezifischen MQTT-Thema:

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:topic/${iot:ClientId}"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Connect"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:client/client1"
      ]
    }
  ]
}
```

# Beispielrichtlinien für beibehaltene Nachrichten
<a name="retained-message-policy-examples"></a>

Die Verwendung [beibehaltener Nachrichten](mqtt.md#mqtt-retain) erfordert spezielle Richtlinien. Aufbewahrte Nachrichten sind MQTT-Nachrichten, bei denen das RETAIN-Flag gesetzt und von gespeichert wurde. AWS IoT Core Dieser Abschnitt enthält Beispielrichtlinien, die die allgemeine Verwendung von beibehaltenen Nachrichten ermöglichen.

**Topics**
+ [

## Richtlinie zum Verbinden und Veröffentlichen von beibehaltenen Nachrichten
](#retained-message-policy-examples-publish)
+ [

## Richtlinie zum Verbinden und Veröffentlichen von beibehaltenen Will-Nachrichten
](#retained-message-policy-examples-publish-lwt)
+ [

## Richtlinie zum Auflisten und Abrufen von beibehaltenen Nachrichten
](#retained-message-policy-examples-list-get)

## Richtlinie zum Verbinden und Veröffentlichen von beibehaltenen Nachrichten
<a name="retained-message-policy-examples-publish"></a>

Damit ein Gerät beibehaltene Nachrichten veröffentlichen kann, muss das Gerät in der Lage sein, eine Verbindung herzustellen, (jede MQTT-Nachricht) zu veröffentlichen und beibehaltene MQTT-Nachrichten zu veröffentlichen. Die folgende Richtlinie gewährt dem Client **device1** diese Berechtigungen für das Topic `device/sample/configuration`. Ein weiteres Beispiel für die Berechtigung zum Herstellen einer Verbindung finden Sie unter [Beispiele zu den Verbinden- und Veröffentlichen-Richtlinien](connect-and-pub.md).

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/device1"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish",
				"iot:RetainPublish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/device/sample/configuration"
			]
		}
	]
}
```

## Richtlinie zum Verbinden und Veröffentlichen von beibehaltenen Will-Nachrichten
<a name="retained-message-policy-examples-publish-lwt"></a>

Clients können eine Nachricht konfigurieren, die veröffentlicht AWS IoT Core wird, wenn der Client die Verbindung unerwartet trennt. Im MQTT werden solche Nachrichten als [http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Will_Flag](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Will_Flag) bezeichnet. Die Verbindungsberechtigung eines Clients muss um eine zusätzliche Bedingung erweitert werden, damit sie einbezogen werden können. 

Das folgende Richtliniendokument gewährt allen Clients die Berechtigung, eine Verbindung herzustellen und eine Will-Nachricht mit dem Topic `will` zu veröffentlichen, die auch von AWS IoT Core beibehalten wird.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/device1"
			],
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"LastWill"
					]
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish",
				"iot:RetainPublish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/will"
			]
		}
	]
}
```

## Richtlinie zum Auflisten und Abrufen von beibehaltenen Nachrichten
<a name="retained-message-policy-examples-list-get"></a>

Services und Anwendungen können auf beibehaltene Nachrichten zugreifen, ohne einen MQTT-Client unterstützen zu müssen, indem sie [https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_ListRetainedMessages.html](https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_ListRetainedMessages.html) und [https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_GetRetainedMessage.html](https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_GetRetainedMessage.html) aufrufen. Die Services und Anwendungen, die diese Aktionen aufrufen, müssen mithilfe einer Richtlinie wie dem folgenden Beispiel autorisiert werden.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:ListRetainedMessages"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/device1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:GetRetainedMessage"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/foo"
            ]
        }
    ]
}
```

# Beispiele für die Zertifikatrichtlinie
<a name="certificate-policy-examples"></a>

Für Geräte, die in der AWS IoT Core Registrierung registriert sind, gewährt die folgende Richtlinie die Erlaubnis, eine Verbindung AWS IoT Core mit einer Client-ID herzustellen, die einem Ding-Namen entspricht, und zu einem Thema zu veröffentlichen, dessen Name dem `certificateId` des Zertifikats entspricht, mit dem sich das Gerät authentifiziert hat:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:CertificateId}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
        }
    ]
}
```

Für Geräte, die nicht in der AWS IoT Core Registrierung registriert sind, gewährt die folgende Richtlinie die Erlaubnis, eine Verbindung AWS IoT Core mit dem Client herzustellen IDs `client1``client2`, `client3` und zu einem Thema zu veröffentlichen, dessen Name dem `certificateId` des Zertifikats entspricht, mit dem sich das Gerät authentifiziert hat:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:CertificateId}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1",
                "arn:aws:iot:us-east-1:123456789012:client/client2",
                "arn:aws:iot:us-east-1:123456789012:client/client3"
            ]
        }
    ]
}
```

Für Geräte, die in der AWS IoT Core Registrierung registriert sind, gewährt die folgende Richtlinie die Erlaubnis, eine Verbindung AWS IoT Core mit einer Client-ID herzustellen, die dem Namen des Dings entspricht, und zu einem Thema zu veröffentlichen, dessen Name dem `CommonName` Feld des Antragstellers des Zertifikats entspricht, mit dem sich das Gerät authentifiziert hat:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:Certificate.Subject.CommonName}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
        }
    ]
}
```

**Anmerkung**  
In diesem Beispiel wird der Subject Common Name des Zertifikats als Topic-ID verwendet, mit der Annahme, dass der Subject Common Name für jedes registrierte Zertifikat eindeutig ist. Wenn die Zertifikate für mehrere Geräte gemeinsam genutzt werden, ist der gemeinsame Betreff-Name für alle Geräte, die dieses Zertifikat gemeinsam nutzen, identisch, sodass Veröffentlichungsrechte für dasselbe Thema von mehreren Geräten aus möglich sind (nicht empfohlen).

Für Geräte, die nicht in der AWS IoT Core Registrierung registriert sind, gewährt die folgende Richtlinie die Erlaubnis, eine Verbindung AWS IoT Core mit dem Client IDs `client1``client2`,, `client3` und herzustellen und zu einem Thema zu veröffentlichen, dessen Name dem `CommonName` Feld des Antragstellers des Zertifikats entspricht, mit dem sich das Gerät authentifiziert hat:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:Certificate.Subject.CommonName}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1",
                "arn:aws:iot:us-east-1:123456789012:client/client2",
                "arn:aws:iot:us-east-1:123456789012:client/client3"
            ]
        }
    ]
}
```

**Anmerkung**  
In diesem Beispiel wird der Subject Common Name des Zertifikats als Topic-ID verwendet, mit der Annahme, dass der Subject Common Name für jedes registrierte Zertifikat eindeutig ist. Wenn die Zertifikate für mehrere Geräte gemeinsam genutzt werden, ist der gemeinsame Betreff-Name für alle Geräte, die dieses Zertifikat gemeinsam nutzen, identisch, sodass Veröffentlichungsrechte für dasselbe Thema von mehreren Geräten aus möglich sind (nicht empfohlen).

Für Geräte, die in der AWS IoT Core Registrierung registriert sind, gewährt die folgende Richtlinie die Erlaubnis, eine Verbindung AWS IoT Core mit einer Client-ID herzustellen, die dem Namen der Sache entspricht, und zu einem Thema zu veröffentlichen, dessen Name mit einem Präfix versehen ist, `admin/` wenn das `Subject.CommonName.2` Feld für das Zertifikat, das zur Authentifizierung des Geräts verwendet wird, auf gesetzt ist`Administrator`:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/admin/*"],
            "Condition": {
                "StringEquals": {
                    "iot:Certificate.Subject.CommonName.2": "Administrator"
            }
        }
        }
    ]
}
```

Für Geräte, die nicht in der AWS IoT Core Registrierung registriert sind, gewährt die folgende Richtlinie die Erlaubnis IDs `client1``client2`, eine Verbindung AWS IoT Core mit dem Client herzustellen `client3` und zu einem Thema zu veröffentlichen, dessen Name mit dem Präfix versehen ist, `admin/` wenn das `Subject.CommonName.2` Feld für das Zertifikat, das zur Authentifizierung des Geräts verwendet wird, auf gesetzt ist`Administrator`:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1",
                "arn:aws:iot:us-east-1:123456789012:client/client2",
                "arn:aws:iot:us-east-1:123456789012:client/client3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/admin/*"],
            "Condition": {
                "StringEquals": {
                    "iot:Certificate.Subject.CommonName.2": "Administrator"
            }
        }
        }
    ]
}
```

Bei Geräten, die in der AWS IoT Core Registrierung registriert sind, erlaubt die folgende Richtlinie einem Gerät, seinen Ding-Namen für Veröffentlichungen zu einem bestimmten Thema zu verwenden, das aus `admin/` folgenden Optionen besteht`Subject.CommonName`: `ThingName` `Administrator`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/admin/${iot:Connection.Thing.ThingName}"],
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:Certificate.Subject.CommonName.List": "Administrator"
            }
        }
        }
    ]
}
```

Für Geräte, die nicht in der AWS IoT Core Registrierung registriert sind, gewährt die folgende Richtlinie die Erlaubnis IDs `client1``client2`, eine Verbindung zum Client herzustellen `client3` und zum Thema zu veröffentlichen, `admin` wenn für das Zertifikat, AWS IoT Core mit dem das Gerät authentifiziert wurde, eines der `Subject.CommonName` Felder wie folgt gesetzt ist: `Administrator`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1",
                "arn:aws:iot:us-east-1:123456789012:client/client2",
                "arn:aws:iot:us-east-1:123456789012:client/client3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/admin"],
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:Certificate.Subject.CommonName.List": "Administrator"
            }
        }
        }
    ]
}
```

# Beispiel für Objektrichtlinien
<a name="thing-policy-examples"></a>

Die folgende Richtlinie ermöglicht es einem Gerät, eine Verbindung herzustellen, wenn das zur Authentifizierung verwendete Zertifikat an das Objekt angehängt AWS IoT Core ist, für das die Richtlinie geprüft wird:

****  

```
{  
    "Version":"2012-10-17",		 	 	 
    "Statement":[
        {  
            "Effect":"Allow",
            "Action":["iot:Connect"],
            "Resource":[ "*" ],
            "Condition": {
                "Bool": {
                    "iot:Connection.Thing.IsAttached": ["true"]
            }
        }
        }
    ]
}
```

Die folgende Richtlinie ermöglicht einem Gerät das Veröffentlichen von Inhalten, wenn das Zertifikat an ein Objekt mit einem bestimmten Objekttyp angehängt ist und das Objekt das Attribut `attributeName` mit dem Wert `attributeValue` hat. Weitere Informationen über Objektrichtlinienvariablen finden Sie unter [Objektrichtlinienvariablen](thing-policy-variables.md).

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish"
      ],
      "Resource": "arn:aws:iot:us-east-1:123456789012:topic/device/stats",
      "Condition": {
        "StringEquals": {
          "iot:Connection.Thing.Attributes[attributeName]": "attributeValue",
          "iot:Connection.Thing.ThingTypeName": "Thing_Type_Name"
        },
        "Bool": {
          "iot:Connection.Thing.IsAttached": "true"
        }
      }
    }
  ]
}
```

Mit der folgenden Richtlinie kann ein Gerät zu einem Topic veröffentlichen, das mit einem Attribut des Objekts beginnt. Wenn das Gerätezertifikat nicht mit dem Objekt verknüpft ist, wird diese Variable nicht aufgelöst und der Fehler „Zugriff verweigert“ wird angezeigt. Weitere Informationen über Objektrichtlinienvariablen finden Sie unter [Objektrichtlinienvariablen](thing-policy-variables.md).

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish"
      ],
      "Resource": "arn:aws:iot:us-east-1:123456789012:topic/${iot:Connection.Thing.Attributes[attributeName]}/*"
    }
  ]
}
```

# Beispiel für grundlegende Auftragsrichtlinie
<a name="basic-jobs-example"></a>

In diesem Beispiel werden die für ein Auftragsziel erforderlichen Richtlinienanweisungen gezeigt, bei dem es sich um ein einzelnes Gerät handelt, das eine Jobanfrage empfängt und dem AWS IoT den Status der Auftragsausführung mitteilt.

*us-west-2:57EXAMPLE833*Ersetzen Sie es durch Ihr AWS-Region, einen Doppelpunkt (:) und Ihre 12-stellige AWS-Konto Zahl und *uniqueThingName* ersetzen Sie es dann durch den Namen der Ding-Ressource, in der das Gerät steht. AWS IoT

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:client/uniqueThingName"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:topic/test/dc/pubtopic",
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/job/*",
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/jobExecution/*",
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName/jobs/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:topicfilter/test/dc/subtopic",
                "arn:aws:iot:us-west-2:123456789012:topicfilter/$aws/events/jobExecution/*",
                "arn:aws:iot:us-west-2:123456789012:topicfilter/$aws/things/uniqueThingName/jobs/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:topic/test/dc/subtopic",
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName/jobs/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iotjobsdata:DescribeJobExecution",
                "iotjobsdata:GetPendingJobExecutions",
                "iotjobsdata:StartNextPendingJobExecution",
                "iotjobsdata:UpdateJobExecution"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName"
            ]
        }
    ]
}
```

# Autorisierung mit Amazon-Cognito-Identitäten
<a name="cog-iot-policies"></a>

Es gibt zwei Arten von Amazon–Cognito-Identitäten: nicht authentifiziert und authentifiziert. Wenn Ihre App nicht authentifizierte Amazon-Cognito-Identitäten unterstützt, wird keine Authentifizierung durchgeführt, sodass Sie nicht wissen, wer der Benutzer:in ist. 

**Nicht authentifizierte Identitäten:** Für nicht authentifizierte Amazon-Cognito-Identitäten gewähren Sie Berechtigungen, indem Sie eine IAM-Rolle an einen nicht authentifizierten Identitätspool anfügen. Wir empfehlen, nur jenen Ressourcen Zugriff gewähren, die Sie für unbekannte Benutzer verfügbar haben möchten.

**Wichtig**  
Für nicht authentifizierte Amazon Cognito Cognito-Benutzer, die eine Verbindung herstellen AWS IoT Core, empfehlen wir, in den IAM-Richtlinien Zugriff auf sehr begrenzte Ressourcen zu gewähren.

**Authentifizierte Identitäten:** Für authentifizierte Amazon-Cognito-Identitäten müssen Sie Berechtigungen an zwei Stellen angeben: 
+ Fügen Sie dem authentifizierten Amazon-Cognito-Identitätspool eine IAM-Richtlinie an und
+ Hängen Sie der Amazon Cognito Identity (authentifizierter Benutzer) eine AWS IoT Core Richtlinie an.

## Richtlinienbeispiele für nicht authentifizierte und authentifizierte Amazon Cognito Cognito-Benutzer, die eine Verbindung herstellen AWS IoT Core
<a name="cog-iot-policies-auth-unauth-examples"></a>

Das folgende Beispiel zeigt Berechtigungen sowohl in der IAM-Richtlinie als auch in der IoT-Richtlinie einer Amazon-Cognito-Identität. Der authentifizierte Benutzer möchte zu einem gerätespezifischen Thema veröffentlichen (z. B.). device/DEVICE\$1ID/status

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/Client_ID"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/device/Device_ID/status"
            ]
        }
    ]
}
```

Das folgende Beispiel zeigt Berechtigungen sowohl in der IAM-Richtlinie einer nicht authentifizierten Amazon-Cognito-Rolle. Der nicht authentifizierte Benutzer möchte Inhalte zu nicht gerätespezifischen Topics veröffentlichen, für die keine Authentifizierung erforderlich ist.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/non_device_specific_topic"
            ]
        }
    ]
}
```

## GitHub Beispiele
<a name="cog-iot-policies-github"></a>

In den folgenden Beispiel-Webanwendungen wird GitHub gezeigt, wie das Anhängen von Richtlinien an authentifizierte Benutzer in den Benutzeranmelde- und Authentifizierungsprozess integriert werden kann.
+ [Verwendung der MQTT publish/subscribe React-Webanwendung und AWS AmplifyAWS IoT Device SDK for JavaScript](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-cp)
+ [MQTT publish/subscribe React-Webanwendung mit AWS AmplifyAWS IoT Device SDK for JavaScript, der und einer Lambda-Funktion](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-lambda)

Amplify ist eine Reihe von Tools und Diensten, mit denen Sie Web- und Mobilanwendungen erstellen können, die sich in AWS Dienste integrieren lassen. Weitere Informationen zu Amplify finden Sie in der [Amplify-Framework-Dokumentation](https://docs.amplify.aws/).

In beiden Beispielen werden die folgenden Schritte ausgeführt.

1. Wenn sich ein/e Benutzer:in für ein Konto anmeldet, erstellt die Anwendung einen Amazon-Cognito-Benutzerpool und eine Identität.

1. Wenn sich ein/e Benutzer:in authentifiziert, erstellt die Anwendung eine Richtlinie und fügt sie der Identität an. Dadurch erhält der/die Benutzer:in Veröffentlichungs- und Abonnementberechtigungen.

1. Der/Die Benutzer:in kann die Anwendung verwenden, um MQTT-Thopics zu veröffentlichen und zu abonnieren.

Im ersten Beispiel wird die `AttachPolicy`-API-Operation direkt in der Authentifizierungsoperation verwendet. Im folgenden Beispiel wird gezeigt, wie dieser API-Aufruf in einer React-Webanwendung implementiert wird, die Amplify und das AWS IoT Device SDK for JavaScript verwendet.

```
function attachPolicy(id, policyName) {
    var Iot = new AWS.Iot({region: AWSConfiguration.region, apiVersion: AWSConfiguration.apiVersion, endpoint: AWSConfiguration.endpoint});
    var params = {policyName: policyName, target: id};

    console.log("Attach IoT Policy: " + policyName + " with cognito identity id: " + id);
    Iot.attachPolicy(params, function(err, data) {
         if (err) {
               if (err.code !== 'ResourceAlreadyExistsException') {
                  console.log(err);
               }
          }
         else  {
            console.log("Successfully attached policy with the identity", data);
         }
     });
}
```

Dieser Code erscheint in der [AuthDisplay.js-Datei](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-cp/blob/d1c307b36357be934db9dda020140fa337709cd9/src/AuthDisplay.js#L45).

Im zweiten Beispiel wird die `AttachPolicy`-API-Operation in einer Lambda-Funktion implementiert. Im folgenden Beispiel wird gezeigt, wie Lambda diesen API-Aufruf verwendet.

```
iot.attachPolicy(params, function(err, data) {
     if (err) {
           if (err.code !== 'ResourceAlreadyExistsException') {
              console.log(err);
              res.json({error: err, url: req.url, body: req.body});
           }
      }
     else  {
        console.log(data);
        res.json({success: 'Create and attach policy call succeed!', url: req.url, body: req.body});
     }
 });
```

Dieser Code erscheint in der `iot.GetPolicy`-Funktion in der Datei [app.js](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-lambda/blob/e493039581d2aff0faa3949086deead20a2c5385/amplify/backend/function/amplifyiotlambda/src/app.js#L50).

**Anmerkung**  
Wenn Sie die Funktion mit AWS Anmeldeinformationen aufrufen, die Sie über Amazon Cognito Identity-Pools erhalten, enthält das Kontextobjekt in Ihrer Lambda-Funktion einen Wert für. `context.cognito_identity_id` Weitere Informationen finden Sie unter den folgenden Topics.   
[AWS Lambda Kontextobjekt in Node.js](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-context.html)
[AWS Lambda Kontextobjekt in Python](https://docs.aws.amazon.com/lambda/latest/dg/python-context.html)
[AWS Lambda Kontextobjekt in Ruby](https://docs.aws.amazon.com/lambda/latest/dg/ruby-context.html)
[AWS Lambda Kontextobjekt in Java](https://docs.aws.amazon.com/lambda/latest/dg/java-context.html)
[AWS Lambda Kontextobjekt in Go](https://docs.aws.amazon.com/lambda/latest/dg/golang-context.html)
[AWS Lambda Kontextobjekt in C\$1](https://docs.aws.amazon.com/lambda/latest/dg/csharp-context.html)
[AWS Lambda Kontextobjekt in PowerShell](https://docs.aws.amazon.com/lambda/latest/dg/powershell-context.html)

# Autorisieren von direkten Aufrufen von AWS Diensten mithilfe des AWS IoT Core Credential Providers
<a name="authorizing-direct-aws"></a>

Geräte können X.509-Zertifikate verwenden, um AWS IoT Core mithilfe von TLS-Protokollen eine Verbindung herzustellen. Andere AWS Dienste unterstützen keine zertifikatsbasierte Authentifizierung, sie können jedoch mithilfe von AWS Anmeldeinformationen im [AWS Signature Version](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) 4-Format aufgerufen werden. Der [Signature Version 4-Algorithmus](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) erfordert normalerweise, dass der Anrufer über eine Zugriffsschlüssel-ID und einen geheimen Zugriffsschlüssel verfügt. AWS IoT Core verfügt über einen Anbieter für Anmeldeinformationen, mit dem Sie das integrierte [X.509-Zertifikat](x509-client-certs.html) als eindeutige Geräteidentität zur Authentifizierung AWS von Anfragen verwenden können. Damit ist es nicht mehr erforderlich, eine Zugriffsschlüssel-ID und einen geheimen Zugriffsschlüssel auf Ihrem Gerät zu speichern.

Der Anmeldeinformationsanbieter authentifiziert ein Anrufer unter Verwendung eines X.509-Zertifikats und stellt ein temporäres Sicherheits-Token mit eingeschränkten Berechtigungen aus. Das Token kann verwendet werden, um jede Anfrage zu signieren und zu authentifizieren. AWS Für diese Art der Authentifizierung Ihrer AWS Anfragen müssen Sie eine [AWS Identity and Access Management (IAM-) Rolle erstellen und konfigurieren und der Rolle](https://docs.aws.amazon.com/service-authorization/latest/reference/id_roles.html) entsprechende IAM-Richtlinien zuordnen, damit der Anbieter der Anmeldeinformationen die Rolle in Ihrem Namen übernehmen kann. Weitere Informationen zu AWS IoT Core und IAM finden Sie unter [Identitäts- und Zugriffsmanagement für AWS IoT](security-iam.md).

 AWS IoT erfordert, dass Geräte die [Server Name Indication (SNI) -Erweiterung](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) an das Transport Layer Security (TLS) -Protokoll senden und die vollständige Endpunktadresse vor Ort angeben. `host_name` Im Feld `host_name`muss der Endpunkt angegeben sein. Dabei muss es sich um Folgendes handeln:
+ Die von `aws iot [describe-endpoint](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-endpoint.html) --endpoint-type iot:CredentialProvider` zurückgegebene `endpointAddress`.

Verbindungsversuche von Geräten ohne den richtigen Wert für `host_name` werden fehlschlagen.

Das folgende Diagramm veranschaulicht den Workflow des Anmeldeinformationsanbieters.

![\[AWS IoT Core Workflow für den Anbieter von Anmeldeinformationen.\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/credentials-provider-diagram.png)


1. Das AWS IoT Core Gerät sendet eine HTTPS-Anfrage an den Anbieter für Anmeldeinformationen nach einem Sicherheitstoken. Die Anfrage enthält das X.509-Zertifikat des Geräts für die Authentifizierung.

1. Der Anbieter für Anmeldeinformationen leitet die Anfrage an das AWS IoT Core Authentifizierungs- und Autorisierungsmodul weiter, um das Zertifikat zu validieren und zu überprüfen, ob das Gerät berechtigt ist, das Sicherheitstoken anzufordern.

1. Wenn das Zertifikat gültig ist und berechtigt ist, ein Sicherheitstoken anzufordern, meldet das AWS IoT Core Authentifizierungs- und Autorisierungsmodul Erfolg. Andernfalls sendet es eine Ausnahme an das Gerät.

1. Nach der erfolgreichen Validierung des Zertifikats ruft der Anmeldeinformationsanbieter [AWS -Security-Token-Service (AWS STS)](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) auf, um die IAM-Rolle anzunehmen, die Sie für ihn erstellt haben.

1. AWS STS gibt ein temporäres Sicherheitstoken mit eingeschränkten Rechten an den Anmeldeinformationsanbieter zurück.

1. Der Anmeldeinformationsanbieter gibt das Sicherheits-Token an das Gerät zurück.

1. Das Gerät verwendet das Sicherheitstoken, um eine AWS Anfrage mit AWS Signature Version 4 zu signieren.

1. Der angeforderte Service ruft IAM auf, um die Signatur zu validieren und die Anforderung anhand der Zugriffsrichtlinien zu autorisieren, die der IAM-Rolle zugeordnet sind, die Sie für den Anmeldeinformationsanbieter erstellt haben.

1. Wenn IAM die Signatur erfolgreich validiert und die Anforderung autorisiert, ist die Anforderung erfolgreich. Andernfalls sendet IAM eine Ausnahme.

Im folgenden Abschnitt wird beschrieben, wie Sie ein Zertifikat verwenden, um ein Sicherheits-Token abzurufen. Es ist in der Annahme geschrieben, dass Sie bereits [ein Gerät registriert haben](register-device.html) und für es [ein eigenes Zertifikat erstellt und aktiviert haben](device-certs-your-own.html).

## So verwenden Sie ein Zertifikat zum Abrufen eines Sicherheits-Tokens
<a name="authorizing-direct-aws.walkthrough"></a>

1. Konfigurieren Sie die IAM-Rolle, die der Anmeldeinformationsanbieter im Namen Ihres Geräts annimmt. Fügen Sie der Rolle die folgende Vertrauensrichtlinie hinzu.   
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Principal": {"Service": "credentials.iot.amazonaws.com"},
           "Action": "sts:AssumeRole"
       }
   }
   ```

   Fügen Sie der Rolle für jeden AWS Dienst, den Sie aufrufen möchten, eine Zugriffsrichtlinie hinzu. Der Anmeldeinformationsanbieter unterstützt die folgenden Richtlinienvariablen:
   + `credentials-iot:ThingName`
   + `credentials-iot:ThingTypeName`
   + `credentials-iot:AwsCertificateId`

   Wenn das Gerät den Objektnamen in seiner Anforderung an einen AWS -Service bereitstellt, fügt der Anmeldeinformationsanbieter dem Sicherheits-Token `credentials-iot:ThingName` und `credentials-iot:ThingTypeName` als Kontextvariablen hinzu. Der Anmeldeinformationsanbieter stellt `credentials-iot:AwsCertificateId` als Kontextvariable bereit, auch wenn das Gerät den Dingnamen nicht in der Anfrage angibt. Sie übergeben den Dingnamen als Wert des `x-amzn-iot-thingname` HTTP-Anfrage-Headers.

   Diese drei Variablen funktionieren nur für IAM-Richtlinien, nicht für AWS IoT Core -Richtlinien.

1. Stellen Sie sicher, dass der Benutzer, der den nächsten Schritt ausführt (Anlegen eines Rollenalias), die Berechtigung hat, die neu erstellte Rolle an AWS IoT Core zu übergeben. Die folgende Richtlinie gewährt einem AWS Benutzer `iam:GetRole` sowohl `iam:PassRole` Berechtigungen als auch Berechtigungen. Die `iam:GetRole`-Berechtigung ermöglicht es dem Benutzer, Informationen über die Rolle zu abzurufen, die Sie gerade erstellt haben. Die `iam:PassRole` Berechtigung ermöglicht es dem Benutzer, die Rolle an einen anderen AWS Dienst zu übergeben.  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": [
               "iam:GetRole",
               "iam:PassRole"
           ],
           "Resource": "arn:aws:iam::123456789012:role/your role name"
       }
   }
   ```

1. Erstellen Sie einen AWS IoT Core Rollenalias. Das Gerät, das direkte Anrufe an AWS Dienste tätigen soll, muss wissen, zu welcher Rolle der ARN für die Verbindung verwendet AWS IoT Core werden soll. Eine Hartcodierung des Rollen-ARN stellt jedoch keine gute Lösung dar, da Sie das Gerät bei jeder Änderung des Rollen-ARN aktualisieren müssten. Eine bessere Lösung ist es, mit der `CreateRoleAlias`-API einen Rollenalias zu erstellen, der auf den Rollen-ARN verweist. Wenn sich der Rollen-ARN ändert, können Sie einfach den Rollenalias aktualisieren. Auf dem Gerät ist keine Änderung erforderlich. Diese API verwendet die folgenden Parameter:  
`roleAlias`  
Erforderlich Eine beliebige Zeichenfolge, die den Rollenalias identifiziert. Sie dient als Primärschlüssel im Rollenalias-Datenmodell. Sie hat 1-128 Zeichen und darf nur alphanumerische Zeichen und die Symbole =, @ und - enthalten. Großbuchstaben und Kleinbuchstaben sind zulässig. Bei Rollenaliasnamen wird zwischen Groß- und Kleinschreibung unterschieden.  
`roleArn`  
Erforderlich Der ARN der Rolle, auf den sich der Rollenalias bezieht.  
`credentialDurationSeconds`  
Optional. Die Gültigkeitsdauer (in Sekunden) der Anmeldeinformationen. Die Mindestwert beträgt 900 Sekunden (15 Minuten). Der Höchstwert beträgt 43.200 Sekunden (12 Stunden). Der Standardwert ist 3.600 Sekunden (1 Stunde).   
Der AWS IoT Core Credential Provider kann Anmeldeinformationen mit einer maximalen Lebensdauer von 43.200 Sekunden (12 Stunden) ausstellen. Wenn die Anmeldeinformationen bis zu 12 Stunden gültig sind, kann die Anzahl der Anrufe beim Anmeldeinformationsanbieter reduziert werden, da die Anmeldeinformationen länger zwischengespeichert werden.  
Der `credentialDurationSeconds`-Wert muss kleiner oder gleich der maximalen Sitzungsdauer der IAM-Rolle sein, auf die der Rollenalias verweist. Weitere Informationen finden Sie unter [Ändern der maximalen Sitzungsdauer (AWS API) einer Rolle](https://docs.aws.amazon.com//IAM/latest/UserGuide/roles-managingrole-editing-api.html#roles-modify_max-session-duration-api) im AWS Identity and Access Management-Benutzerhandbuch.

   Weitere Informationen über diese API finden Sie unter [CreateRoleAlias](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateRoleAlias.html). 

1. Anfügen einer Richtlinie an das Gerätezertifikat. Die an das Gerätezertifikat angefügte Richtlinie muss dem Gerät die Berechtigung erteilen, die Rolle zu übernehmen. Dies erreichen Sie, indem Sie dem Rollenalias die Berechtigung für die Aktion `iot:AssumeRoleWithCertificate` erteilen, wie im folgenden Beispiel gezeigt.  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "iot:AssumeRoleWithCertificate",
               "Resource": "arn:aws:iot:us-east-1:123456789012:rolealias/your role alias"
           }
       ]
   }
   ```

1. Stellen Sie eine HTTPS-Anfrage an den Anmeldeinformationsanbieter, um ein Sicherheits-Token zu erhalten. Geben Sie die folgenden Informationen an:
   + *Zertifikat*: Da es sich um eine HTTP-Anfrage zur gegenseitigen TLS-Authentifizierung handelt, müssen Sie Ihrem Client bei der Anfrage das Zertifikat und den privaten Schlüssel zur Verfügung stellen. Verwenden Sie dasselbe Zertifikat und denselben privaten Schlüssel, mit dem Sie Ihr Zertifikat registriert haben AWS IoT Core.

     Um sicherzustellen, dass Ihr Gerät mit AWS IoT Core (und nicht mit einem Dienst, der sich als solches ausgibt) kommuniziert, finden Sie weitere Informationen unter [Serverauthentifizierung](x509-client-certs.html#server-authentication). Folgen Sie den Links, um die entsprechenden CA-Zertifikate herunterzuladen, und kopieren Sie sie dann auf Ihr Gerät.
   + *RoleAlias*: Der Name des Rollenalias, den Sie für den Anmeldeinformationsanbieter erstellt haben. Bei Rollenaliasnamen wird zwischen Groß- und Kleinschreibung unterschieden und sie müssen mit dem Rollenalias übereinstimmen, der in erstellt wurde AWS IoT Core.
   + *ThingName*: Der Name des Dings, den Sie bei der Registrierung Ihres Dings erstellt AWS IoT Core haben. Dieser wird als Wert des `x-amzn-iot-thingname` HTTP-Headers übergeben. Dieser Wert ist nur erforderlich, wenn Sie Ding-Attribute als Richtlinienvariablen in AWS IoT Core oder IAM-Richtlinien verwenden.
**Anmerkung**  
Der Wert *ThingName*, den Sie angeben, `x-amzn-iot-thingname` muss mit dem Namen der Dingressource AWS IoT übereinstimmen, die einem Zertifikat zugewiesen ist. Wenn sie nicht übereinstimmen, wird ein 403-Fehler zurückgegeben.

   Führen Sie den folgenden Befehl in der aus AWS CLI , um den Endpunkt des Anmeldeinformationsanbieters für Ihren AWS-Konto zu erhalten. Weitere Informationen über diese API finden Sie unter [DescribeEndpoint](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeEndpoint.html). Informationen zu FIPS-fähigen Endpunkten finden Sie unter. [AWS IoT Core- Endpunkte des Anmeldeinformationsanbieters](iot-connect-fips.md#iot-connect-fips-credential)

   ```
   aws iot describe-endpoint --endpoint-type iot:CredentialProvider
   ```

   Das folgende JSON-Objekt ist die Beispielausgabe des **describe-endpoint**-Befehls. Es enthält die `endpointAddress` , die Sie verwenden, um ein Sicherheits-Token anzufordern.

   ```
   {
       "endpointAddress": "your_aws_account_specific_prefix.credentials.iot.your region.amazonaws.com"
   }
   ```

   Verwenden Sie den Endpunkt, um eine HTTPS-Anfrage an den Anmeldeinformationsanbieter zu stellen, ein Sicherheits-Token zurückzugeben. Der folgende Beispielbefehl verwendet `curl`, aber Sie können jeden beliebigen HTTP-Client verwenden.
**Anmerkung**  
Beim Namen *roleAlias* wird zwischen Groß- und Kleinschreibung unterschieden und er muss mit dem Rollenalias übereinstimmen, der in erstellt wurde. AWS IoT

   ```
   curl --cert your certificate --key your private key -H "x-amzn-iot-thingname: your thing name" --cacert AmazonRootCA1.pem https://your endpoint /role-aliases/your role alias/credentials
   ```

   Dieser Befehl gibt ein Sicherheits-Token-Objekt zurück, das einen `accessKeyId`, einen `secretAccessKey`, ein `sessionToken`, und einen Ablaufzeitpunkt enthält. Das folgende JSON-Objekt ist die Beispielausgabe des `curl`-Befehls.

   ```
       {"credentials":{"accessKeyId":"access key","secretAccessKey":"secret access key","sessionToken":"session token","expiration":"2018-01-18T09:18:06Z"}}
   ```

   Anschließend können Sie die `sessionToken` Werte, und verwenden `accessKeyId``secretAccessKey`, um Anfragen an Dienste zu signieren. AWS Eine end-to-end Demonstration finden Sie [im Blogbeitrag So vermeiden Sie fest codierte AWS Anmeldeinformationen auf Geräten mithilfe des AWS IoT Credential Providers im AWS](https://aws.amazon.com/blogs/security/how-to-eliminate-the-need-for-hardcoded-aws-credentials-in-devices-by-using-the-aws-iot-credentials-provider/) *Security* Blog.

# Kontenübergreifender Zugriff mit IAM
<a name="cross-account-access"></a>

AWS IoT Core ermöglicht es Ihnen, einem Prinzipal die Möglichkeit zu geben, ein Thema zu veröffentlichen oder zu abonnieren, das AWS-Konto nicht dem Prinzipal gehört. Den kontoübergreifenden Zugriff konfigurieren Sie durch Erstellung einer IAM-Richtlinie und einer IAM-Rolle und das anschließende Anfügen der Richtlinie an die Rolle.

Erstellen Sie zunächst eine kundenseitig verwaltete IAM-Richtlinie wie in [Erstellen von IAM-Richtlinien](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_create.html) beschrieben, genauso wie für andere Benutzer und Zertifikate in Ihrem AWS-Konto. 

Für Geräte, die in der AWS IoT Core Registrierung registriert sind, gewährt die folgende Richtlinie Geräten die Erlaubnis, eine Verbindung herzustellen, indem sie eine Client-ID AWS IoT Core verwenden, die dem Ding-Namen des Geräts entspricht, und dass sie dort veröffentlichen, `my/topic/thing-name ` wo *thing-name* sich der Ding-Name des Geräts befindet:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:Connection.Thing.ThingName}"
            ]
        }
    ]
}
```

Für Geräte, die nicht in der AWS IoT Core Registrierung registriert sind, erteilt die folgende Richtlinie einem Gerät die Erlaubnis, den in der AWS IoT Core Registrierung Ihres Kontos (123456789012) `client1` registrierten Dingnamen zu verwenden, um eine Verbindung zu einem Client-ID-spezifischen Thema herzustellen AWS IoT Core und dort zu veröffentlichen, dessen Name mit einem Präfix versehen ist: `my/topic/`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:ClientId}"
            ]
        }
    ]
}
```

Führen Sie als Nächstes die unter [Erstellen einer Rolle zum Delegieren von Berechtigungen an einen IAM-Benutzer](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) beschriebenen Schritte aus. Geben Sie die ID des AWS-Konto ein, für das gemeinsamer Zugriff gewährt werden soll. Fügen Sie dann im letzten Schritt die gerade erstellte Richtlinie an die Rolle an. Wenn Sie später die AWS -Konto-ID ändern müssen, auf die Sie den Zugriff gewährt haben, können Sie das folgende Vertrauensrichtlinienformat nutzen: 

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": { 
                "AWS": "arn:aws:iam::567890123456:user/MyUser"
        },
            "Action": "sts:AssumeRole"
        }
    ]
}
```