

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.

# Sicherheit in AWS IoT
<a name="security"></a>

Cloud-Sicherheit AWS hat höchste Priorität. Als AWS Kunde profitieren Sie von einer Rechenzentrums- und Netzwerkarchitektur, die darauf ausgelegt sind, die Anforderungen der sicherheitssensibelsten Unternehmen zu erfüllen.

Sicherheit ist eine gemeinsame Verantwortung von Ihnen AWS und Ihnen. Das [Modell der geteilten Verantwortung](https://aws.amazon.com/compliance/shared-responsibility-model/) beschreibt dies als Sicherheit *der* Cloud und Sicherheit *in* der Cloud:
+ **Sicherheit der Cloud** — AWS ist verantwortlich für den Schutz der Infrastruktur, die AWS Dienste in der AWS Cloud ausführt. AWS bietet Ihnen auch Dienste, die Sie sicher nutzen können. Auditoren von Drittanbietern testen und überprüfen die Effektivität unserer Sicherheitsmaßnahmen im Rahmen der [AWS -Compliance-Programme](https://aws.amazon.com/compliance/programs/) regelmäßig. Weitere Informationen zu den Compliance-Programmen, die für gelten AWS IoT, finden Sie unter [AWS Services in Umfang nach Compliance-Programmen](https://aws.amazon.com/compliance/services-in-scope/).
+ **Sicherheit in der Cloud** — Ihre Verantwortung richtet sich nach dem AWS Dienst, den Sie nutzen. Sie sind auch für andere Faktoren verantwortlich, einschließlich der Vertraulichkeit Ihrer Daten, für die Anforderungen Ihres Unternehmens und für die geltenden Gesetze und Vorschriften. 

Diese Dokumentation hilft Ihnen zu verstehen, wie Sie das Modell der gemeinsamen Verantwortung bei der Nutzung anwenden können AWS IoT. In den folgenden Themen erfahren Sie, wie Sie die Konfiguration vornehmen AWS IoT , um Ihre Sicherheits- und Compliance-Ziele zu erreichen. Sie erfahren auch, wie Sie andere AWS Dienste nutzen können, die Sie bei der Überwachung und Sicherung Ihrer AWS IoT Ressourcen unterstützen. 

**Topics**
+ [AWS IoT Sicherheit](iot-security.md)
+ [Authentifizierung](authentication.md)
+ [Autorisierung](iot-authorization.md)
+ [Datenschutz in AWS IoT Core](data-protection.md)
+ [Identitäts- und Zugriffsmanagement für AWS IoT](security-iam.md)
+ [Protokollieren und Überwachen](security-logging.md)
+ [Überprüfung der Einhaltung der Vorschriften für AWS IoT Core](compliance.md)
+ [Resilienz im AWS IoT-Kern](disaster-recovery-resiliency.md)
+ [Verwendung AWS IoT Core mit VPC-Endpunkten mit Schnittstelle](IoTCore-VPC.md)
+ [Sicherheit der Infrastruktur in AWS IoT](infrastructure-security.md)
+ [Sicherheitsüberwachung von Produktionsflotten oder Geräten mit Core AWS IoT](security-monitoring.md)
+ [Bewährte Sicherheitsmethoden in AWS IoT Core](security-best-practices.md)
+ [AWS Schulung und Zertifizierung](#iot-security-training)

# AWS IoT Sicherheit
<a name="iot-security"></a>

Jedes verbundene Gerät oder jeder verbundene Client muss über eine Berechtigung verfügen, um mit AWS IoT zu interagieren. Der gesamte Verkehr zu und von AWS IoT dort wird sicher über Transport Layer Security (TLS) gesendet. AWS Cloud-Sicherheitsmechanismen schützen Daten, wenn sie zwischen AWS IoT und anderen AWS Diensten übertragen werden.

![\[AWS IoT Sicherheitsworkflows, einschließlich Anmeldeinformationen für die Interaktion AWS IoT, Transport Layer Security zur sicheren Verbindung und AWS Cloud-Sicherheitsmechanismen zum Schutz von Daten.\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/thunderball-overview.png)

+ Sie sind für die Verwaltung von Geräte-Anmeldeinformationen (X.509-Zertifikate, AWS -Anmeldeinformationen, Amazon Cognito-Identitäten, Verbundidentitäten oder benutzerdefinierte Authentifizierungstoken) und Richtlinien in AWS IoT verantwortlich. Sie sind auch dafür verantwortlich, jedem Gerät eindeutige Identitäten zuzuweisen und die Berechtigungen für jedes Gerät oder jede Gerätegruppe zu verwalten.
+ Ihre Geräte stellen AWS IoT mithilfe von X.509-Zertifikaten oder Amazon Cognito Cognito-Identitäten über eine sichere TLS-Verbindung eine Verbindung her. Während der Forschung und Entwicklung sowie für einige Anwendungen, die API-Aufrufe tätigen oder verwenden WebSockets, können Sie sich auch mithilfe von IAM-Benutzern und -Gruppen oder benutzerdefinierten Authentifizierungstoken authentifizieren. Weitere Informationen finden Sie unter [IAM-Benutzer, -Gruppen und -Rollen](iam-users-groups-roles.md).
+ Wenn Sie die AWS IoT Authentifizierung verwenden, ist der Message Broker dafür verantwortlich, Ihre Geräte zu authentifizieren, Gerätedaten sicher aufzunehmen und Zugriffsberechtigungen zu gewähren oder zu verweigern, die Sie mithilfe von Richtlinien für Ihre Geräte angeben. AWS IoT 
+ Wenn Sie die benutzerdefinierte Authentifizierung verwenden, ist ein benutzerdefinierter Autorisierer dafür verantwortlich, Ihre Geräte zu authentifizieren und Zugriffsberechtigungen zu gewähren oder zu verweigern, die Sie für Ihre Geräte mithilfe unserer IAM-Richtlinien angeben. AWS IoT 
+ Die AWS IoT Regel-Engine leitet Gerätedaten gemäß den von Ihnen definierten Regeln an andere Geräte oder andere AWS Dienste weiter. Es dient AWS Identity and Access Management dazu, Daten sicher an ihren Bestimmungsort zu übertragen. Weitere Informationen finden Sie unter [Identitäts- und Zugriffsmanagement für AWS IoT](security-iam.md).

# Authentifizierung
<a name="authentication"></a>

Die Authentifizierung ist ein Mechanismus, mit dem Sie die Identität eines Clients oder Servers überprüfen können. Bei der Serverauthentifizierung stellen Geräte oder andere Clients sicher, dass sie mit einem tatsächlichen AWS IoT Endpunkt kommunizieren. Die Client-Authentifizierung ist der Prozess, bei dem sich Geräte oder andere Clients selbst authentifizieren. AWS IoT

## Übersicht zum X.509-Zertifikat
<a name="x509-certificate-overview"></a>

X.509-Zertifikate sind digitale Zertifikate, die den [X.509-Standard für Public-Key-Infrastrukturen](https://en.wikipedia.org/wiki/X.509) verwenden, um einen öffentlichen Schlüssel mit einer Identität in einem Zertifikat zu verknüpfen. X.509-Zertifikate werden von einer vertrauenswürdigen Entität ausgegeben, die als Zertifizierungsstelle (Certificate Authority, CA) bezeichnet wird. Die CA nutzen ein oder mehrere spezielle Zertifikate, die als CA-Zertifikate bezeichnet werden, zum Herausgeben der X.509-Zertifikate. Nur die Zertifizierungsstelle kann auf CA-Zertifikate zugreifen. X.509-Zertifikatsketten werden sowohl für die Serverauthentifizierung durch Clients als auch für die Clientauthentifizierung durch den Server verwendet.

# Serverauthentifizierung
<a name="server-authentication"></a>

Wenn Ihr Gerät oder ein anderer Client versucht, eine Verbindung herzustellen AWS IoT Core, sendet der AWS IoT Core Server ein X.509-Zertifikat, das Ihr Gerät zur Authentifizierung des Servers verwendet. Die Authentifizierung erfolgt auf der TLS-Ebene durch die Validierung der [X.509-Zertifikatskette](x509-client-certs.md). Dies ist dieselbe Methode, die Ihr Browser verwendet, wenn Sie eine HTTPS-URL besuchen. Informationen zum Verwenden von Zertifikaten von Ihrer eigenen Zertifizierungsstelle finden Sie unter [Verwalten eigener CA-Zertifikate](manage-your-CA-certs.md).

Wenn Ihre Geräte oder andere Clients eine TLS-Verbindung zu einem AWS IoT Core Endpunkt aufbauen, wird eine Zertifikatskette AWS IoT Core angezeigt, anhand derer die Geräte überprüfen, ob sie mit einem anderen Server kommunizieren AWS IoT Core und nicht, der sich als ein anderer Server ausgibt. AWS IoT Core Welche Kette angezeigt wird, hängt von einer Kombination aus dem Endpunkttyp, zu dem das Gerät eine Verbindung herstellt, und der [Cipher Suite](transport-security.md) ab, die der Client und die während des TLS-Handshakes AWS IoT Core ausgehandelt haben.

## Endpunkttypen
<a name="endpoint-types"></a>

AWS IoT Core unterstützt. `iot:Data-ATS` `iot:Data-ATS`Endgeräte legen ein Serverzertifikat vor, das von einer [Amazon Trust Services-Zertifizierungsstelle](https://www.amazontrust.com/repository/) signiert wurde.

Zertifikate, die von ATS-Endpunkten vorgewiesen werden, sind von Starfield gegensigniert. Einige TLS-Client-Implementierungen erfordern die Überprüfung der Vertrauenswürdigkeit und die Installation der Starfield CA-Zertifikate in den Vertrauensspeichern des Clients.

**Warnung**  
Die Verwendung einer Zertifikat-Pinning-Methode, die das gesamte Zertifikat (einschließlich des Ausstellernamens usw.) hasht, wird nicht empfohlen, da dies zum Scheitern der Zertifikatsprüfung führt, da die von uns bereitgestellten ATS-Zertifikate von Starfield gegensigniert sind und einen anderen Ausstellernamen haben.

**Wichtig**  
Verwenden Sie `iot:Data-ATS` Endpunkte. Zertifikate von Symantec und Verisign sind veraltet und werden von nicht mehr unterstützt. AWS IoT Core

Sie können den Befehl `describe-endpoint` verwenden, um Ihren ATS-Endpunkt zu erstellen.

```
aws iot describe-endpoint --endpoint-type iot:Data-ATS
```

Der Befehl `describe-endpoint` gibt einen Endpunkt im folgenden Format zurück.

```
account-specific-prefix.iot.your-region.amazonaws.com
```

**Anmerkung**  
Beim ersten Aufruf von `describe-endpoint` wird ein Endpunkt erstellt. Alle nachfolgenden Aufrufe von `describe-endpoint` geben den gleichen Endpunkt zurück.

**Anmerkung**  
**Um Ihren `iot:Data-ATS` Endpunkt in der Konsole zu sehen, wählen Sie Einstellungen AWS IoT Core .** Die Konsole zeigt nur den `iot:Data-ATS`-Endpunkt an.

### Erstellen eines `IotDataPlaneClient` mit dem AWS SDK for Java
<a name="java-client"></a>

Um eine zu erstellen`IotDataPlaneClient`, die einen `iot:Data-ATS` Endpunkt verwendet, müssen Sie wie folgt vorgehen. 
+ Erstellen Sie mithilfe der [DescribeEndpoint](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeEndpoint.html)API einen `iot:Data-ATS` Endpunkt.
+ Geben Sie diesen Endpunkt an, wenn Sie den `IotDataPlaneClient` erstellen.

Im folgenden Beispiel werden beide Operationen ausgeführt.

```
public void setup() throws Exception {
        IotClient client = IotClient.builder().credentialsProvider(CREDENTIALS_PROVIDER_CHAIN).region(Region.US_EAST_1).build();
        String endpoint = client.describeEndpoint(r -> r.endpointType("iot:Data-ATS")).endpointAddress();
        iot = IotDataPlaneClient.builder()
                                .credentialsProvider(CREDENTIALS_PROVIDER_CHAIN)
                                .endpointOverride(URI.create("https://" + endpoint))
                                .region(Region.US_EAST_1)
                                .build();
}
```

## CA-Zertifikate für die Serverauthentifizierung
<a name="server-authentication-certs"></a>

Je nachdem, welchen Typ von Datenendpunkt Sie verwenden und welche Verschlüsselungssuite Sie ausgehandelt haben, werden AWS IoT Core Serverauthentifizierungszertifikate mit einem der folgenden Root-CA-Zertifikate signiert:

**Amazon Trust Services-Endpunkte (bevorzugt)**

**Anmerkung**  
Möglicherweise müssen Sie mit der rechten Maustaste auf diese Links klicken und **Link speichern unter...** auswählen, um diese Zertifikate als Dateien zu speichern.
+ RSA 2048-Bit-Schlüssel: [https://www.amazontrust.com/repository/AmazonRootCA1.pem](https://www.amazontrust.com/repository/AmazonRootCA1.pem).
+ RSA 4096-Bit-Schlüssel: Amazon Root CA 2. Für die spätere Verwendung reserviert.
+ ECC-256-Bit-Schlüssel: [https://www.amazontrust.com/repository/AmazonRootCA3.pem](https://www.amazontrust.com/repository/AmazonRootCA3.pem).
+ ECC-384-Bit-Schlüssel: Amazon Root CA 4. Für die spätere Verwendung reserviert.

Diese Zertifikate werden alle durch das [Starfield Root CA-Zertifikat](https://www.amazontrust.com/repository/SFSRootCAG2.pem) signiert. Alle neuen AWS IoT Core Regionen, beginnend mit der Markteinführung von AWS IoT Core in der Region Asien-Pazifik (Mumbai) am 9. Mai 2018, bieten ausschließlich ATS-Zertifikate an.

**VeriSign Endgeräte (veraltet)**
+ RSA 2048-Bit-Schlüssel: [Öffentliches primäres G5-Root-CA-Zertifikat der VeriSign Klasse 3](https://www.digicert.com/kb/digicert-root-certificates.htm)

## Richtlinien für die Serverauthentifizierung
<a name="server-authentication-guidelines"></a>

Es gibt viele Variablen, die die Fähigkeit eines Geräts zur Überprüfung des AWS IoT Core -Server-Authentifizierungszertifikats beeinflussen können. So können beispielsweise Geräte zu speicherbeschränkt sein, um alle möglichen Root-CA-Zertifikate aufzunehmen, oder Geräte können eine nicht standardmäßige Methode der Zertifikatsvalidierung implementieren. Aus diesen Gründen empfehlen wir, diese Richtlinien zu befolgen:
+ Wir empfehlen, dass Sie Ihren ATS-Endpunkt verwenden und alle unterstützten Amazon Root CA-Zertifikate installieren.
+ Wenn Sie nicht alle diese Zertifikate auf Ihrem Gerät speichern können und wenn Ihre Geräte keine ECC-basierte Validierung verwenden, können Sie die ECC-Zertifikate [https://www.amazontrust.com/repository/AmazonRootCA3.pem](https://www.amazontrust.com/repository/AmazonRootCA3.pem) und [https://www.amazontrust.com/repository/AmazonRootCA4.pem](https://www.amazontrust.com/repository/AmazonRootCA4.pem) weglassen. Wenn Ihre Geräte keine RSA-basierte Zertifikatsvalidierung implementieren, können Sie die RSA-Zertifikate [https://www.amazontrust.com/repository/AmazonRootCA1.pem](https://www.amazontrust.com/repository/AmazonRootCA1.pem) und [https://www.amazontrust.com/repository/AmazonRootCA2.pem](https://www.amazontrust.com/repository/AmazonRootCA2.pem) weglassen. Möglicherweise müssen Sie mit der rechten Maustaste auf diese Links klicken und **Link speichern unter...** auswählen, um diese Zertifikate als Dateien zu speichern.
+ Wenn bei der Verbindung mit Ihrem ATS-Endpunkt Probleme bei der Validierung von Serverzertifikaten auftreten, versuchen Sie, das entsprechende signierte Amazon Root CA-Zertifikat in Ihrem Vertrauensspeicher hinzuzufügen. Möglicherweise müssen Sie mit der rechten Maustaste auf diese Links klicken und **Link speichern unter...** auswählen, um diese Zertifikate als Dateien zu speichern.
  + [Gegensigniertes Amazon Root CA 1](https://www.amazontrust.com/repository/G2-RootCA1.pem)
  + [Gegensigniertes Amazon Root CA 2](https://www.amazontrust.com/repository/G2-RootCA2.pem): Für die spätere Verwendung reserviert.
  + [Gegensigniertes Amazon Root CA 3](https://www.amazontrust.com/repository/G2-RootCA3.pem)
  + [Gegensigniertes Amazon Root CA 4: Für die spätere Verwendung reserviert.](https://www.amazontrust.com/repository/G2-RootCA4.pem)
+ Wenn bei der Validierung von Serverzertifikaten Probleme auftreten, muss Ihr Gerät möglicherweise explizit der Stammzertifizierungsstelle vertrauen. Versuchen Sie, das [https://www.amazontrust.com/repository/SFSRootCAG2.pem](https://www.amazontrust.com/repository/SFSRootCAG2.pem) zu Ihrem Trust Store hinzuzufügen.
+ Wenn nach der Ausführung der obigen Schritte immer noch Probleme auftreten, wenden Sie sich bitte an den [AWS -Developer Support](https://aws.amazon.com/premiumsupport/plans/developers/). 

**Anmerkung**  
CA-Zertifikate haben ein Ablaufdatum, nach dem sie nicht mehr zur Validierung eines Serverzertifikats verwendet werden können. Es kann sein, dass CA-Zertifikate vor ihrem Ablaufdatum ersetzt werden müssen. Stellen Sie sicher, dass Sie die CA-Stammzertifikate auf all Ihren Geräten oder Clients aktualisieren können, um eine ununterbrochene Verbindung sicherzustellen und bei bewährten Sicherheitsmethoden stets auf dem aktuellen Stand zu sein.

**Anmerkung**  
Wenn Sie AWS IoT Core in Ihrem Gerätecode eine Verbindung herstellen, übergeben Sie das Zertifikat an die API, die Sie für die Verbindung verwenden. Die von Ihnen verwendete API hängt vom SDK ab. Weitere Informationen finden Sie unter [AWS IoT Core Gerät SDKs](iot-sdks.md).

# Client-Authentifizierung
<a name="client-authentication"></a>

AWS IoT unterstützt drei Arten von Identitätsprinzipalen für die Geräte- oder Client-Authentifizierung:
+ [X.509-Clientzertifikate](x509-client-certs.md)
+ [IAM-Benutzer, -Gruppen und -Rollen](iam-users-groups-roles.md)
+ [Amazon-Cognito-Identitäten](cognito-identities.md)

Diese Identitäten können mit Geräten, mobilen, Web- oder Desktop-Anwendungen verwendet werden. Sie können sogar von Benutzern verwendet werden, die Befehle der AWS IoT Befehlszeilenschnittstelle (CLI) eingeben. In der Regel verwenden AWS IoT Geräte X.509-Zertifikate, während mobile Anwendungen Amazon Cognito Cognito-Identitäten verwenden. Web- und Desktop-Anwendungen verwenden IAM- oder Verbundidentitäten. AWS CLI -Befehle verwenden IAM. Weitere Informationen zu IAM-Identitäten finden Sie unter [Identitäts- und Zugriffsmanagement für AWS IoT](security-iam.md).

# X.509-Clientzertifikate
<a name="x509-client-certs"></a>

X.509-Zertifikate bieten die Möglichkeit, AWS IoT Client- und Geräteverbindungen zu authentifizieren. Client-Zertifikate müssen registriert werden, AWS IoT bevor ein Client mit ihnen kommunizieren kann. AWS IoT Ein Client-Zertifikat kann für mehrere AWS-Konto s in derselben Region registriert werden AWS-Region , um das Verschieben von Geräten zwischen Ihren AWS-Konto s in derselben Region zu erleichtern. Weitere Informationen finden Sie unter [Verwendung von X.509-Clientzertifikaten in mehreren AWS-Konto s mit Registrierung mehrerer Konten](#multiple-account-cert). 

Wir empfehlen, jedem Gerät oder Client ein eindeutiges Zertifikat zuzuordnen, damit feingranulare Client-Verwaltungsaktionen einschließlich Zertifikatswiderruf möglich sind. Geräte und Clients müssen darüber hinaus das Rotieren und Ersetzen von Zertifikaten unterstützen, um eine reibungslose Ausführung sicherzustellen, wenn Zertifikate ablaufen.

Informationen zur Verwendung von X.509-Zertifikaten zur Unterstützung mehrerer Geräte finden Sie unter [Gerätebereitstellung](iot-provision.md). Dort sind die verschiedenen Optionen für die Zertifikatsverwaltung und -bereitstellung aufgeführt, die von AWS IoT unterstützt werden.

**AWS IoT unterstützt die folgenden Typen von X.509-Client-Zertifikaten:**
+  X.509-Zertifikate, generiert von AWS IoT
+  X.509-Zertifikate, signiert von einer Zertifizierungsstelle, die bei registriert ist. AWS IoT
+  Von einer nicht bei AWS IoT registrierten Zertifizierungsstelle signierte X.509-Zertifikate

In diesem Abschnitt wird beschrieben, wie Sie X.509-Zertifikate in AWS IoT verwalten. Sie können die AWS IoT Konsole verwenden oder AWS CLI die folgenden Zertifikatsvorgänge ausführen:
+ [Erstellen Sie AWS IoT Client-Zertifikate](device-certs-create.md)
+ [Erstellen eigener Clientzertifikate](device-certs-your-own.md)
+ [Registrieren eines Clientzertifikats](register-device-cert.md)
+ [Aktivieren oder Deaktivieren eines Clientzertifikats](activate-or-deactivate-device-cert.md)
+ [Widerrufen eines Clientzertifikats](revoke-ca-cert.md)

Weitere Informationen zu den AWS CLI Befehlen, die diese Operationen ausführen, finden Sie unter [AWS IoT CLI-Referenz](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/index.html).

## Verwenden von X.509-Clientzertifikaten
<a name="x509-client-cert-basics"></a>

X.509-Zertifikate authentifizieren Client- und Geräteverbindungen zu. AWS IoT X.509-Zertifikate bieten mehrere Vorteile gegenüber anderen Identifikations- und Authentifizierungsmechanismen. X.509-Zertifikate ermöglichen die Verwendung asymmetrischer Schlüssel mit Geräten. Beispielsweise könnten Sie private Schlüssel nutzen und sicher auf einem Gerät aufbewahren, sodass vertrauliches kryptografisches Material das Gerät niemals verlässt. X.509-Zertifikate bieten eine stärkere Client-Authentifizierung als andere Systeme, wie z. B. Benutzername und Passwort oder Bearer-Token, da der private Schlüssel das Gerät nie verlässt.

AWS IoT authentifiziert Client-Zertifikate mithilfe des Client-Authentifizierungsmodus des TLS-Protokolls. TLS-Unterstützung ist in vielen Programmiersprachen und Betriebssystemen verfügbar und stellt die gängige Verschlüsselungsmethode für Daten dar. AWS IoT Fordert bei der TLS-Client-Authentifizierung ein X.509-Client-Zertifikat an und validiert den Status des Zertifikats AWS-Konto anhand einer Zertifikatsregistrierung. Anschließend fordert es den Client auf, den Besitz des privaten Schlüssels nachzuweisen, der dem im Zertifikat enthaltenen öffentlichen Schlüssel entspricht. AWS IoT verlangt von den Clients, die [Server Name Indication (SNI) -Erweiterung](https://tools.ietf.org/html/rfc3546#section-3.1) an das Transport Layer Security (TLS) -Protokoll zu senden. Weitere Informationen zum Konfigurieren der SNI-Erweiterung finden Sie unter [Transportsicherheit in AWS IoT Core](transport-security.md).

Um eine sichere und konsistente Client-Verbindung zum AWS IoT Core zu ermöglichen, muss ein X.509-Client-Zertifikat über Folgendes verfügen:
+ In AWS IoT Core registriert. Weitere Informationen finden Sie unter [Registrieren eines Clientzertifikats](register-device-cert.md).
+ Über den Status „`ACTIVE`“ verfügen. Weitere Informationen finden Sie unter [Aktivieren oder Deaktivieren eines Clientzertifikats](activate-or-deactivate-device-cert.md).
+ Das Ablaufdatum des Zertifikats ist noch nicht erreicht.

Sie können Clientzertifikate erstellen, die die Amazon Root CA verwenden, und Sie können Ihre eigenen von einer anderen Zertifizierungsstelle (Certificate Authority, CA) signierten Clientzertifikate verwenden. Weitere Informationen zur Verwendung der AWS IoT Konsole zum Erstellen von Zertifikaten, die die Amazon Root-CA verwenden, finden Sie unter[Erstellen Sie AWS IoT Client-Zertifikate](device-certs-create.md). Weitere Informationen zur Verwendung eigener X.509-Zertifikate finden Sie unter [Erstellen eigener Clientzertifikate](device-certs-your-own.md).

Der Ablaufzeitpunkt für mit einem CA-Zertifikat signierte Zertifikate wird bei der Erstellung des entsprechenden Zertifikats festgelegt. Von generierte X.509-Zertifikate AWS IoT laufen am 31. Dezember 2049 um Mitternacht UTC ab (2049-12-31T 23:59:59 Z).

AWS IoT Device Defender kann Audits an Ihren Geräten durchführen AWS-Konto und dabei die gängigen Best Practices für die IoT-Sicherheit unterstützen. Dazu gehört die Verwaltung der Ablaufdaten von X.509-Zertifikaten, die von Ihrer CA oder der Amazon Root CA signiert wurden. Weitere Informationen zur Verwaltung des Ablaufdatums eines Zertifikats finden Sie unter [Ablaufen von Gerätezertifikaten und Ablaufende](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-device-cert-approaching-expiration.html) [Zertifizierungsstellenzertifikate](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-ca-cert-approaching-expiration.html).

Im offiziellen AWS IoT Blog finden Sie einen tieferen Einblick in die Verwaltung der Rotation von Gerätezertifikaten und bewährte Sicherheitsmethoden unter [So verwalten Sie die Rotation von IoT-Gerätezertifikaten mithilfe von AWS IoT](https://aws.amazon.com/blogs/iot/how-to-manage-iot-device-certificate-rotation-using-aws-iot/).

## Verwendung von X.509-Clientzertifikaten in mehreren AWS-Konto s mit Registrierung mehrerer Konten
<a name="multiple-account-cert"></a>

Die Registrierung für mehrere Konten ermöglicht das Verschieben von Geräten zwischen Ihren AWS-Konto innerhalb derselben Region oder in unterschiedlichen Regionen. Sie können ein Gerät in einem Testkonto registrieren, testen und konfigurieren und dasselbe Gerät samt Gerätezertifikat anschließend in einem Produktionskonto registrieren und verwenden. Sie können auch das Client-Zertifikat auf dem Gerät oder die Gerätezertifikate ohne registrierte Zertifizierungsstelle registrieren. AWS IoT Weitere Informationen finden Sie unter [Registrieren eines Clientzertifikats, das von einer nicht registrierten CA (CLI) signiert wurde](manual-cert-registration.md#manual-cert-registration-noca-cli).

**Anmerkung**  
Zertifikate, die für die Registrierung mehrerer Konten verwendet werden, werden auf den Endpunkttypen `iot:Data-ATS`, `iot:Data` (Legacy), `iot:Jobs` und `iot:CredentialProvider` unterstützt. Weitere Informationen zu AWS IoT Geräteendpunkten finden Sie unter[AWS IoT Gerätedaten und Dienstendpunkte](iot-connect-devices.md#iot-connect-device-endpoints).

Geräte, die die Registrierung mehrerer Konten verwenden, müssen die [Server Name Indication (SNI) -Erweiterung](https://tools.ietf.org/html/rfc3546#section-3.1) an das Transport Layer Security (TLS) -Protokoll senden und die vollständige Endpunktadresse im `host_name` Feld angeben, wenn sie eine Verbindung herstellen. AWS IoT AWS IoT verwendet die Endpunktadresse`host_name`, um die Verbindung an das richtige AWS IoT Konto weiterzuleiten. Vorhandene Geräte, die keine gültige Endpunktadresse in `host_name` senden, funktionieren weiterhin, können aber die Funktionen nicht nutzen, für die diese Informationen benötigt werden. Weitere Informationen zur SNI-Erweiterung und zum Identifizieren der Endpunktadresse für das Feld `host_name` finden Sie unter [Transportsicherheit in AWS IoT Core](transport-security.md). 

**So verwenden Sie die Registrierung für mehrere Konten**

1. Sie können die Gerätezertifikate ohne Zertifizierungsstelle registrieren. Sie können die signierende Zertifizierungsstelle in mehreren Konten im `SNI_ONLY`-Modus registrieren und diese Zertifizierungsstelle verwenden, um dasselbe Clientzertifikat für mehrere Konten zu registrieren. Weitere Informationen finden Sie unter [Registrieren Sie ein CA-Zertifikat im SNI\$1ONLY-Modus (CLI) – Empfohlen](manage-your-CA-certs.md#register-CA-cert-SNI-cli).

1. Sie können die Gerätezertifikate ohne Zertifizierungsstelle registrieren. Siehe [Registrieren eines von einer nicht registrierten CA signierten Clientzertifikats (CLI)](manual-cert-registration.md#manual-cert-registration-noca-cli). Die Registrierung einer Zertifizierungsstelle ist optional. Sie müssen die Zertifizierungsstelle, mit der die Gerätezertifikate signiert wurden, nicht registrieren AWS IoT.

## Algorithmen zum Signieren von Zertifikaten werden unterstützt von AWS IoT
<a name="x509-cert-algorithms"></a>

AWS IoT unterstützt die folgenden Algorithmen zum Signieren von Zertifikaten:
+ SHA256MIT RSA
+ SHA384MIT RSA
+ SHA512MIT RSA
+ SHA256WITHRSAANDMGF1 (RSASSA-PSS)
+ SHA384WITHRSAANDMGF1 (RSSA-PSS)
+ SHA512WITHRSAANDMGF1 (RSSA-PSS)
+ DSA\$1MIT\$1 SHA256
+ ECDSA-MIT- SHA256
+ ECDSA-MIT- SHA384
+ ECDSA-MIT- SHA512

Weitere Informationen zur Authentifizierung und Sicherheit von Zertifikaten finden Sie unter Qualität der [Gerätezertifikatschlüssel](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-device-cert-key-quality.html).

**Anmerkung**  
Die Zertifikatssignierungsanforderung (Certificate Signing Request, CSR) muss einen öffentlichen Schlüssel enthalten. Bei dem Schlüssel kann es sich entweder um einen RSA-Schlüssel mit einer Länge von mindestens 2048 Bit oder um einen ECC-Schlüssel aus NIST P-256, NIST P-384 oder NIST P-521-Kurven handeln. Weitere Informationen finden Sie unter [CreateCertificateFromCsr](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCertificateFromCsr.html) in der *AWS IoT -API-Referenz*.

## Schlüsselalgorithmen werden unterstützt von AWS IoT
<a name="x509-cert-key-algorithms"></a>

Die folgende Tabelle zeigt, wie Schlüsselalgorithmen unterstützt werden:


****  

| Schlüsselalgorithmus | Algorithmus zum Signieren von Zertifikaten | TLS-Version | Unterstützt? Sie können zwischen Yes und No wählen | 
| --- | --- | --- | --- | 
| RSA mit einer Schlüsselgröße von mindestens 2048 Bit | Alle | TLS 1.2 TLS 1.3 | Ja | 
| ECC IST P-256/P-384/P-521 | Alle | TLS 1.2 TLS 1.3 | Ja | 
| RSA-PSS mit einer Schlüsselgröße von mindestens 2048 Bit | Alle | TLS 1.2 | Nein | 
| RSA-PSS mit einer Schlüsselgröße von mindestens 2048 Bit | Alle | TLS 1.3 | Ja | 

Um ein Zertifikat mithilfe von [CreateCertificateFromCSR](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateCertificateFromCsr.html) zu erstellen, können Sie einen unterstützten Schlüsselalgorithmus verwenden, um einen öffentlichen Schlüssel für Ihre CSR zu generieren. Um Ihr eigenes Zertifikat mit [RegisterCertificate](https://docs.aws.amazon.com//iot/latest/apireference/API_RegisterCertificate.html)unserer [RegisterCertificateWithoutCA](https://docs.aws.amazon.com//iot/latest/apireference/API_RegisterCertificateWithoutCA.html) zu registrieren, können Sie einen unterstützten Schlüsselalgorithmus verwenden, um einen öffentlichen Schlüssel für das Zertifikat zu generieren.

Weitere Informationen finden Sie unter [Sicherheitsrichtlinien](https://docs.aws.amazon.com//iot/latest/developerguide/transport-security.html#tls-policy-table).

# Erstellen Sie AWS IoT Client-Zertifikate
<a name="device-certs-create"></a>

AWS IoT stellt Client-Zertifikate bereit, die von der Amazon Root Certificate Authority (CA) signiert wurden.

In diesem Thema wird beschrieben, wie Sie ein von der Amazon Root-Zertifizierungsstelle signiertes Clientzertifikat erstellen und die Zertifikatsdateien herunterladen. Nachdem Sie die Clientzertifikatdateien erstellt haben, müssen Sie sie auf dem Client installieren.

**Anmerkung**  
Jedes von bereitgestellte X.509-Client-Zertifikat AWS IoT enthält die Attribute des Ausstellers und des Antragstellers, die Sie bei der Erstellung des Zertifikats festgelegt haben. Die Zertifikatsattribute können erst ab der Erstellung des Zertifikats nicht mehr modifiziert werden.

Sie können die AWS IoT Konsole oder die verwenden AWS CLI , um ein von der Amazon Root-Zertifizierungsstelle signiertes AWS IoT Zertifikat zu erstellen.

## Erstellen Sie ein AWS IoT Zertifikat (Konsole)
<a name="device-certs-create-console"></a>

**Um ein AWS IoT Zertifikat mit der AWS IoT Konsole zu erstellen**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im Navigationsbereich **Sichern**, **Zertifikate** und anschließend **Erstellen**.

1. Wählen Sie **Zertifikat mit einem Klick erstellen (empfohlen)** und dann **Zertifikat erstellen**.

1. Laden Sie die Clientzertifikatdateien für das Objekt, den öffentlichen Schlüssel und den privaten Schlüssel auf der Seite **Zertifikat erstellt\$1** an einen sicheren Speicherort herunter. Diese von generierten Zertifikate AWS IoT sind nur für die Verwendung mit AWS IoT Diensten verfügbar.

   Wenn Sie auch die Amazon-Root-CA-Zertifikatdatei benötigen, finden Sie auf dieser Seite auch den Link zu der Seite, auf der Sie sie herunterladen können.

1. Es wurde nun ein Clientzertifikat erstellt und bei AWS IoT registriert. Sie müssen das Zertifikat aktivieren, bevor Sie es in einem Client verwenden.

    Wählen Sie **Aktivieren**, um das Clientzertifikat jetzt zu aktivieren. Wenn Sie das Zertifikat jetzt nicht aktivieren möchten, können Sie unter [Aktivieren eines Clientzertifikats (Konsole)](activate-or-deactivate-device-cert.md#activate-device-cert-console) erfahren, wie Sie das Zertifikat zu einem späteren Zeitpunkt aktivieren können.

   

1. Wenn Sie eine Richtlinie an das Zertifikat anfügen möchten, wählen Sie **Anfügen einer Richtlinie**.

   Wenn Sie jetzt keine Richtlinie anfügen möchten, wählen Sie **Fertig** , um den Vorgang abzuschließen. Sie können zu einem späteren Zeitpunkt eine Richtlinie anfügen.

Wenn Sie den Vorgang abgeschlossen haben, installieren Sie die Zertifikatdateien auf dem Client.

## AWS IoT Zertifikat erstellen (CLI)
<a name="device-certs-create-cli"></a>

Das AWS CLI bietet den **[create-keys-and-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/create-keys-and-certificate.html)** Befehl zum Erstellen von Client-Zertifikaten, die von der Amazon Root-Zertifizierungsstelle signiert wurden. Mit diesem Befehl wird die Amazon Root-CA-Zertifikatdatei jedoch nicht heruntergeladen. Sie können die Amazon Root-CA-Zertifikatdatei von [CA-Zertifikate für die Serverauthentifizierung](server-authentication.md#server-authentication-certs) herunterladen. 

Dieser Befehl erstellt private Schlüssel-, öffentliche Schlüssel- und X.509-Zertifikatsdateien und registriert und aktiviert das Zertifikat mit AWS IoT.

```
aws iot create-keys-and-certificate \
    --set-as-active \
    --certificate-pem-outfile certificate_filename.pem \
    --public-key-outfile public_filename.key \
    --private-key-outfile private_filename.key
```

Wenn Sie das Zertifikat beim Erstellen und Registrieren nicht aktivieren möchten, erstellt dieser Befehl einen privaten und einen öffentlichen Schlüssel sowie X.509-Zertifikatdateien und registriert das Zertifikat, aktiviert es jedoch nicht. Unter [Aktivieren eines Clientzertifikats (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli) wird beschrieben, wie Sie das Zertifikat zu einem späteren Zeitpunkt aktivieren können.

```
aws iot create-keys-and-certificate \
    --no-set-as-active \
    --certificate-pem-outfile certificate_filename.pem \
    --public-key-outfile public_filename.key \
    --private-key-outfile private_filename.key
```



Installieren Sie die Zertifikatdateien auf dem Client.

# Erstellen eigener Clientzertifikate
<a name="device-certs-your-own"></a>

AWS IoT unterstützt Client-Zertifikate, die von beliebigen Stamm- oder Zwischenzertifizierungsstellen (CA) signiert wurden. AWS IoT verwendet CA-Zertifikate, um den Besitz von Zertifikaten zu überprüfen. Um Gerätezertifikate verwenden zu können, die von einer Zertifizierungsstelle signiert wurden, die nicht die Zertifizierungsstelle von Amazon ist, muss das Zertifikat der Zertifizierungsstelle registriert sein, AWS IoT damit wir den Besitz des Gerätezertifikats überprüfen können.

AWS IoT unterstützt mehrere Möglichkeiten, eigene Zertifikate mitzubringen (BYOC): 
+ Registrieren Sie zunächst die Zertifizierungsstelle, die zum Signieren der Clientzertifikate verwendet wird, und registrieren Sie dann einzelne Clientzertifikate. Wenn Sie das Gerät oder den Client bei der ersten Verbindung mit seinem Client-Zertifikat registrieren möchten AWS IoT (auch bekannt als [Just-in-Time-Provisioning](https://docs.aws.amazon.com//iot/latest/developerguide/jit-provisioning.html)), müssen Sie die signierende Zertifizierungsstelle bei AWS IoT registrieren und die automatische Registrierung aktivieren.
+ Wenn Sie die signierende Zertifizierungsstelle nicht registrieren können, können Sie Clientzertifikate auch ohne CA registrieren. Bei Geräten, die ohne CA registriert sind, müssen Sie [Server Name Indication (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) angeben, wenn Sie eine Verbindung zu AWS IoT herstellen.

**Anmerkung**  
Um Client-Zertifikate mithilfe einer Zertifizierungsstelle zu registrieren, müssen Sie die signierende Zertifizierungsstelle bei AWS IoT keiner anderen Zertifizierungsstelle in der Hierarchie registrieren. CAs 

**Anmerkung**  
Ein CA-Zertifikat kann nur im `DEFAULT`-Modus von einem Konto in einer Region registriert werden. Ein CA-Zertifikat kann nur im `SNI_ONLY`-Modus von mehreren Konten in einer Region registriert werden. 

Weitere Informationen zur Verwendung von X.509-Zertifikaten zur Unterstützung mehrerer Geräte finden Sie unter [Gerätebereitstellung](iot-provision.md). Dort sind die verschiedenen Optionen für die Zertifikatsverwaltung und -bereitstellung aufgeführt, die von AWS IoT unterstützt werden.

**Topics**
+ [Verwalten eigener CA-Zertifikate](manage-your-CA-certs.md)
+ [Erstellen eines Clientzertifikats mit Ihrem CA-Zertifikat](create-device-cert.md)

# Verwalten eigener CA-Zertifikate
<a name="manage-your-CA-certs"></a>

In diesem Abschnitt werden allgemeine Aufgaben für die Verwaltung eigener Zertifizierungsstellenzertifikate (Certificate Authority, CA) beschrieben.

Sie können Ihre Zertifizierungsstelle (CA) bei registrieren, AWS IoT wenn Sie Client-Zertifikate verwenden, die von einer Zertifizierungsstelle signiert wurden, die diese AWS IoT nicht erkennt.

Wenn Sie möchten, dass Clients ihre Client-Zertifikate AWS IoT bei der ersten Verbindung automatisch registrieren, muss die Zertifizierungsstelle, die die Client-Zertifikate signiert hat, bei der registriert sein AWS IoT. Andernfalls müssen Sie das CA-Zertifikat, das die Clientzertifikate signiert hat, nicht registrieren.

**Anmerkung**  
Ein CA-Zertifikat kann nur im `DEFAULT`-Modus von einem Konto in einer Region registriert werden. Ein CA-Zertifikat kann nur im `SNI_ONLY`-Modus von mehreren Konten in einer Region registriert werden.

**Topics**
+ [So erstellen Sie ein CA-Zertifikat](#create-your-CA-cert)
+ [Registrieren eines CA-Zertifikats](#register-CA-cert)
+ [Deaktivieren eines CA-Zertifikats](#deactivate-ca-cert)

## So erstellen Sie ein CA-Zertifikat
<a name="create-your-CA-cert"></a>

Wenn Sie kein CA-Zertifikat besitzen, können Sie [OpenSSL-v1.1.1i](https://www.openssl.org/)-Tools verwenden, um ein Zertifikat zu erstellen.

**Anmerkung**  
Sie können dieses Verfahren nicht in der AWS IoT Konsole ausführen.

**So erstellen Sie ein CA-Zertifikat mit [OpenSSL-v1.1.1i](https://www.openssl.org/)-Tools.**

1. Erzeugen Sie ein Schlüsselpaar.

   ```
   openssl genrsa -out root_CA_key_filename.key 2048
   ```

1. Verwenden Sie den privaten Schlüssel des Schlüsselpaars zur Erzeugung eines CA-Zertifikats.

   ```
   openssl req -x509 -new -nodes \
       -key root_CA_key_filename.key \
       -sha256 -days 1024 \
       -out root_CA_cert_filename.pem
   ```

## Registrieren eines CA-Zertifikats
<a name="register-CA-cert"></a>

Diese Verfahren beschreiben, wie Sie ein Zertifikat von einer Zertifizierungsstelle (CA) registrieren, die nicht die Zertifizierungsstelle von Amazon ist. AWS IoT Core verwendet CA-Zertifikate, um den Besitz von Zertifikaten zu überprüfen. Um Gerätezertifikate zu verwenden, die von einer Zertifizierungsstelle signiert wurden, bei der es sich nicht um die Zertifizierungsstelle von Amazon handelt, müssen Sie das CA-Zertifikat registrieren, AWS IoT Core damit die Inhaberschaft des Gerätezertifikats verifiziert werden kann.

### Registrieren eines CA-Zertifikats (Konsole)
<a name="register-CA-cert-console"></a>

**Anmerkung**  
Starten Sie die Konsole unter [CA-Zertifikat registrieren](https://console.aws.amazon.com//iot/home#/create/cacertificate), um ein CA-Zertifikat in der Konsole zu registrieren. Sie können Ihre CA im Modus für mehrere Konten registrieren, ohne dass Sie ein Verifizierungszertifikat bereitstellen müssen oder Zugriff auf den privaten Schlüssel benötigen. Eine CA kann im Modus für mehrere Konten von mehreren AWS-Konten gleichzeitig in derselben AWS-Region registriert werden. Sie können Ihre CA im Einzelkonto-Modus registrieren, indem Sie ein Verifizierungszertifikat und einen Eigentumsnachweis für den privaten Schlüssel der CA vorlegen.

### Registrieren eines CA-Zertifikats (CLI)
<a name="register-CA-cert-cli"></a>

Sie können ein CA-Zertifikat im `DEFAULT`-Modus oder im `SNI_ONLY`-Modus registrieren. Eine CA kann im `DEFAULT` Modus eins zu eins AWS-Konto registriert werden AWS-Region. Eine CA kann im `SNI_ONLY` Modus von mehreren AWS-Konten gleichzeitig registriert werden AWS-Region. Weitere Informationen zu CA-Zertifikaten finden Sie unter [certificateMode](https://docs.aws.amazon.com//iot/latest/apireference/API_CACertificateDescription.html#iot-Type-CACertificateDescription-certificateMode).

**Anmerkung**  
Es wird empfohlen, dass Sie eine CA im `SNI_ONLY`-Modus registrieren. Sie müssen weder ein Bestätigungszertifikat noch Zugriff auf den privaten Schlüssel vorlegen, und Sie können die Zertifizierungsstelle von mehreren AWS-Konten gleichzeitig registrieren AWS-Region.

#### Registrieren Sie ein CA-Zertifikat im SNI\$1ONLY-Modus (CLI) – Empfohlen
<a name="register-CA-cert-SNI-cli"></a>

**Voraussetzungen**

Stellen Sie sicher, dass Sie auf Ihrem Computer über Folgendes verfügen, bevor Sie fortfahren:
+ Die Zertifikatsdatei der Root-CA (im folgenden Beispiel referenziert als `root_CA_cert_filename.pem`)
+ [OpenSSL v1.1.1i](https://www.openssl.org/) oder höher

**Um ein CA-Zertifikat im `SNI_ONLY` Modus zu registrieren, verwenden Sie AWS CLI**

1. Registrieren Sie das CA-Zertifikat mit AWS IoT. Geben Sie mit dem Befehl **register-ca-certificate** den Namen der CA-Zertifikatsdatei ein. Weitere Informationen finden Sie unter [register-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html) in der Referenz zum *AWS CLI -Befehl*.

   ```
   aws iot register-ca-certificate \
       --ca-certificate file://root_CA_cert_filename.pem \
       --certificate-mode SNI_ONLY
   ```

   Bei Erfolg gibt dieser Befehl den zurück*certificateId*.

1. Zu diesem Zeitpunkt wurde das CA-Zertifikat registriert, ist AWS IoT aber inaktiv. Das CA-Zertifikat muss aktiv sein, damit Sie Clientzertifikate registrieren können, die von diesem Zertifikat signiert sind.

   In diesem Schritt wird das CA-Zertifikat aktiviert.

   Verwenden Sie Befehl **update-certificate** wie folgt, um das CA-Zertifikat zu aktivieren. Weitere Informationen finden Sie unter [update-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) in der *AWS CLI -Befehlsreferenz*.

   ```
   aws iot update-ca-certificate \
       --certificate-id certificateId \
       --new-status ACTIVE
   ```

Verwenden Sie den Befehl **describe-ca-certificate**, um den Status des CA-Zertifikats anzuzeigen. Weitere Informationen finden Sie unter [describe-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) in der Referenz zum *AWS CLI -Befehl*.

#### Registrieren eines CA-Zertifikats im `DEFAULT`-Modus (CLI)
<a name="register-CA-cert-default-cli"></a>

**Voraussetzungen**

Stellen Sie sicher, dass Sie auf Ihrem Computer über Folgendes verfügen, bevor Sie fortfahren:
+ Die Zertifikatsdatei der Root-CA (im folgenden Beispiel referenziert als `root_CA_cert_filename.pem`)
+ Die private Schlüsseldatei des Root-CA-Zertifikats (im folgenden Beispiel referenziert als `root_CA_key_filename.key`)
+ [OpenSSL v1.1.1i](https://www.openssl.org/) oder höher

**Um ein CA-Zertifikat im `DEFAULT` Modus zu registrieren, verwenden Sie den AWS CLI**

1. Um einen Registrierungscode von zu erhalten AWS IoT, verwenden Sie**get-registration-code**. Speichern Sie den zurückgegebenen `registrationCode`, um ihn als `Common Name` des Verifizierungszertifikats für private Schlüssel zu verwenden. Weitere Informationen finden Sie unter [get-registration-code](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/get-registration-code.html) in der Referenz zum *AWS CLI -Befehl*.

   ```
   aws iot get-registration-code
   ```

1. Generieren Sie ein Schlüsselpaar für das Verifizierungszertifikat für private Schlüssel:

   ```
   openssl genrsa -out verification_cert_key_filename.key 2048
   ```

1. Erstellen Sie eine Zertifikatssignierungsanforderung (Certificate Signing Request, CSR) für das Verifizierungszertifikat für private Schlüssel. Geben Sie im Feld `Common Name` des Zertifikats den von **get-registration-code** zurückgegebenen Wert für `registrationCode` ein.

   ```
   openssl req -new \
       -key verification_cert_key_filename.key \
       -out verification_cert_csr_filename.csr
   ```

   Sie werden aufgefordert, einige Informationen zum Zertifikat einzugeben, z. B. den `Common Name`.

   ```
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:
       State or Province Name (full name) []:
       Locality Name (for example, city) []:
       Organization Name (for example, company) []:
       Organizational Unit Name (for example, section) []:
       Common Name (e.g. server FQDN or YOUR name) []:your_registration_code
       Email Address []:
   
       Please enter the following 'extra' attributes
       to be sent with your certificate request
       A challenge password []:
       An optional company name []:
   ```

1. Verwenden Sie die CSR, um ein Verifizierungszertifikat für private Schlüssel zu erstellen:

   ```
   openssl x509 -req \
       -in verification_cert_csr_filename.csr \
       -CA root_CA_cert_filename.pem \
       -CAkey root_CA_key_filename.key \
       -CAcreateserial \
       -out verification_cert_filename.pem \
       -days 500 -sha256
   ```

1. Registrieren Sie das CA-Zertifikat mit AWS IoT. Geben Sie den Dateinamen des CA-Zertifikats und den Dateinamen des Verifizierungszertifikat für private Schlüssel wie folgt an den Befehl **register-ca-certificate** weiter. Weitere Informationen finden Sie unter [register-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html) in der Referenz zum *AWS CLI -Befehl*.

   ```
   aws iot register-ca-certificate \
       --ca-certificate file://root_CA_cert_filename.pem \
       --verification-cert file://verification_cert_filename.pem
   ```

   Dieser Befehl gibt bei Erfolg den *certificateId* zurück.

1. Zu diesem Zeitpunkt wurde das CA-Zertifikat registriert, ist AWS IoT aber nicht aktiv. Das CA-Zertifikat muss aktiv sein, damit Sie Clientzertifikate registrieren können, die von diesem Zertifikat signiert sind.

   In diesem Schritt wird das CA-Zertifikat aktiviert.

   Verwenden Sie Befehl **update-certificate** wie folgt, um das CA-Zertifikat zu aktivieren. Weitere Informationen finden Sie unter [update-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) in der *AWS CLI -Befehlsreferenz*.

   ```
   aws iot update-ca-certificate \
       --certificate-id certificateId \
       --new-status ACTIVE
   ```

Verwenden Sie den Befehl **describe-ca-certificate**, um den Status des CA-Zertifikats anzuzeigen. Weitere Informationen finden Sie unter [describe-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) in der Referenz zum *AWS CLI -Befehl*.

### Erstellen Sie ein CA-Verifizierungszertifikat, um das CA-Zertifikat in der Konsole zu registrieren.
<a name="create-CA-verification-cert"></a>

**Anmerkung**  
Dieses Verfahren wird nur verwendet, wenn Sie ein CA-Zertifikat von der AWS IoT Konsole aus registrieren.  
Wenn Sie dieses Verfahren nicht von der AWS IoT Konsole aus aufgerufen haben, starten Sie den Registrierungsprozess für das CA-Zertifikat in der Konsole unter [CA-Zertifikat registrieren](https://console.aws.amazon.com//iot/home#/create/cacertificate). 

Stellen Sie sicher, dass Sie auf demselben Computer über Folgendes verfügen, bevor Sie fortfahren:
+ Die Zertifikatsdatei der Root-CA (im folgenden Beispiel referenziert als `root_CA_cert_filename.pem`)
+ Die private Schlüsseldatei des Root-CA-Zertifikats (im folgenden Beispiel referenziert als `root_CA_key_filename.key`)
+ [OpenSSL v1.1.1i](https://www.openssl.org/) oder höher

**Erstellen Sie ein CA-Verifizierungszertifikat, um Ihr CA-Zertifikat in der Konsole zu registrieren und die Befehlszeilenschnittstelle zu verwenden.**

1. Ersetzen Sie `verification_cert_key_filename.key` durch den Namen der Schlüsseldatei für das Verifizierungszertifikat, die Sie erstellen möchten (z. B. **verification\$1cert.key**). Führen Sie anschließend diesen Befehl aus, um ein Schlüsselpaar für das Verifizierungszertifikat für private Schlüssel zu generieren:

   ```
   openssl genrsa -out verification_cert_key_filename.key 2048
   ```

1. Ersetzen Sie `verification_cert_key_filename.key` durch den Namen der Schlüsseldatei, die Sie in Schritt 1 erstellt haben.

   Ersetzen Sie `verification_cert_csr_filename.csr` durch den Namen der Zertifikatsignierungsanforderungsdatei (Certificate Signing Request, CSR), die Sie erstellen möchten. Beispiel, **verification\$1cert.csr**.

   Führen Sie den Befehl aus, um die CSR-Datei zu erstellen.

   ```
   openssl req -new \
       -key verification_cert_key_filename.key \
       -out verification_cert_csr_filename.csr
   ```

   Der Befehl fordert Sie zur Eingabe zusätzlicher Informationen auf, die an späterer Stelle erläutert werden.

1. Kopieren Sie in der AWS IoT Konsole im Container für das **Bestätigungszertifikat** den Registrierungscode.

1. Im folgenden Beispiel wird gezeigt, welche Informationen der Befehl **openssl** fordert. Mit Ausnahme des Felds `Common Name` können Sie Ihre eigenen Werte eingeben oder sie leer lassen.

   Fügen Sie in das Feld `Common Name` den Registrierungscode ein, den Sie im vorherigen Schritt kopiert haben.

   ```
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:
       State or Province Name (full name) []:
       Locality Name (for example, city) []:
       Organization Name (for example, company) []:
       Organizational Unit Name (for example, section) []:
       Common Name (e.g. server FQDN or YOUR name) []:your_registration_code
       Email Address []:
   
       Please enter the following 'extra' attributes
       to be sent with your certificate request
       A challenge password []:
       An optional company name []:
   ```

   Danach erstellt der Befehl die CSR-Datei.

1. Ersetzen Sie die `verification_cert_csr_filename.csr` durch die `verification_cert_csr_filename.csr`, die Sie im vorherigen Schritt verwendet haben.

   Ersetzen Sie `root_CA_cert_filename.pem` durch den Namen der CA-Zertifikatsdatei, die Sie registrieren möchten.

   Ersetzen Sie `root_CA_key_filename.key` durch den Namen der privaten Schlüsseldatei des CA-Zertifikats.

   Ersetzen Sie `verification_cert_filename.pem` durch den Namen der Verifizierungszertifikatdatei, die Sie erstellen möchten. Beispiel, **verification\$1cert.pem**.

   ```
   openssl x509 -req \
       -in verification_cert_csr_filename.csr \
       -CA root_CA_cert_filename.pem \
       -CAkey root_CA_key_filename.key \
       -CAcreateserial \
       -out verification_cert_filename.pem \
       -days 500 -sha256
   ```

1. Nachdem der OpenSSL-Befehl abgeschlossen ist, sollten Sie diese Dateien bereit haben, wenn Sie zur Konsole zurückkehren.
   + Ihre CA-Zertifikatsdatei (wurde im vorherigen Befehl `root_CA_cert_filename.pem` verwendet)
   + Das Bestätigungszertifikat, das Sie im vorherigen Schritt erstellt haben (das im vorherigen Befehl *verification\$1cert\$1filename.pem* verwendet wurde)

## Deaktivieren eines CA-Zertifikats
<a name="deactivate-ca-cert"></a>

Wenn ein Zertifizierungsstellenzertifikat (CA) für die automatische Registrierung von Client-Zertifikaten aktiviert ist, wird das CA-Zertifikat AWS IoT überprüft, um sicherzustellen, dass es sich um die Zertifizierungsstelle handelt`ACTIVE`. Wenn das CA-Zertifikat aktiviert ist`INACTIVE`, kann das Client-Zertifikat AWS IoT nicht registriert werden.

Wenn Sie den Status des CA-Zertifikats auf `INACTIVE` setzen, verhindern Sie, dass neue Clientzertifikate, die von der CA ausgestellt werden, automatisch registriert werden.

**Anmerkung**  
Alle registrierten Clientzertifikate, die vom kompromittierten CA-Zertifikat signiert wurden, sind so lange weiterhin aktiv, bis Sie sie jeweils explizit widerrufen.

### Deaktivieren eines CA-Zertifikats (Konsole)
<a name="deactivate-ca-cert-console"></a>

**Um ein CA-Zertifikat mit der AWS IoT Konsole zu deaktivieren**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich die Option **Sicher**, wählen Sie **CAs**.

1. Suchen Sie in der Liste der Zertifizierungsstellen diejenige, die Sie deaktivieren möchten, und öffnen Sie das Optionsmenü über das Ellipsensymbol.

1. Wählen Sie im Optionsmenü die Option **Deaktivieren**.

Die Zertifizierungsstelle sollte in der Liste als **Inaktiv** angezeigt werden.

**Anmerkung**  
Die AWS IoT Konsole bietet keine Möglichkeit, die Zertifikate aufzulisten, die von der Zertifizierungsstelle signiert wurden, die Sie deaktiviert haben. Eine Option zum Auflisten dieser Zertifikate mithilfe der AWS CLI finden Sie unter [Deaktivieren eines CA-Zertifikats (CLI)](#deactivate-ca-cert-cli).

### Deaktivieren eines CA-Zertifikats (CLI)
<a name="deactivate-ca-cert-cli"></a>

Das AWS CLI stellt den [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html)Befehl zum Deaktivieren eines CA-Zertifikats bereit.

```
aws iot update-ca-certificate \
    --certificate-id certificateId \
    --new-status INACTIVE
```

Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-certificates-by-ca.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-certificates-by-ca.html), um eine Liste aller registrierten Clientzertifikate zu erhalten, die von der angegebenen CA signiert wurden. Verwenden Sie für jedes Clientzertifikat, das mit dem angegebenen CA-Zertifikat signiert ist, den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html), um das Clientzertifikat zu widerrufen und dadurch zu verhindern, dass es verwendet wird.

Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html), um den Status des CA-Zertifikats anzuzeigen.

# Erstellen eines Clientzertifikats mit Ihrem CA-Zertifikat
<a name="create-device-cert"></a>

Sie können Ihre eigene Zertifizierungsstelle (Certificate Authority, CA) zum Erstellen von Clientzertifikaten verwenden. Das Client-Zertifikat muss AWS IoT vor der Verwendung registriert werden. Weitere Informationen zu den Registrierungsoptionen für Ihre Clientzertifikate finden Sie unter [Registrieren eines Clientzertifikats](register-device-cert.md).

## Erstellen eines Clientzertifikats (CLI)
<a name="create-device-cert-cli"></a>

**Anmerkung**  
Sie können dieses Verfahren nicht in der AWS IoT Konsole ausführen.

**Um ein Client-Zertifikat mit dem zu erstellen AWS CLI**

1. Erzeugen Sie ein Schlüsselpaar.

   ```
   openssl genrsa -out device_cert_key_filename.key 2048
   ```

1. Erstellen Sie eine CSR für das Clientzertifikat.

   ```
   openssl req -new \
       -key device_cert_key_filename.key \
       -out device_cert_csr_filename.csr
   ```

   Sie werden zur Eingabe einiger Informationen aufgefordert, wie hier gezeigt:

   ```
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:
       State or Province Name (full name) []:
       Locality Name (for example, city) []:
       Organization Name (for example, company) []:
       Organizational Unit Name (for example, section) []:
       Common Name (e.g. server FQDN or YOUR name) []:
       Email Address []:
   
       Please enter the following 'extra' attributes
       to be sent with your certificate request
       A challenge password []:
       An optional company name []:
   ```

1. Erstellen Sie ein Clientzertifikat aus der CSR.

   ```
   openssl x509 -req \
       -in device_cert_csr_filename.csr \
       -CA root_CA_cert_filename.pem \
       -CAkey root_CA_key_filename.key \
       -CAcreateserial \
       -out device_cert_filename.pem \
       -days 500 -sha256
   ```

 Zu diesem Zeitpunkt wurde das Client-Zertifikat erstellt, aber es wurde noch nicht registriert AWS IoT. Weitere Informationen dazu, wie und wann das Clientzertifikat registriert werden soll, finden Sie unter [Registrieren eines Clientzertifikats](register-device-cert.md). 

# Registrieren eines Clientzertifikats
<a name="register-device-cert"></a>

Client-Zertifikate müssen registriert sein AWS IoT , um die Kommunikation zwischen dem Client und zu ermöglichen AWS IoT. Sie können jedes Client-Zertifikat manuell registrieren, oder Sie können die Client-Zertifikate so konfigurieren, dass sie automatisch registriert werden, wenn der Client AWS IoT zum ersten Mal eine Verbindung herstellt.

 Wenn Sie möchten, dass Ihre Clients und Geräte ihre Clientzertifikate registrieren, wenn sie sich zum ersten Mal verbinden, müssen Sie [Registrieren eines CA-Zertifikats](manage-your-CA-certs.md#register-CA-cert) das Clientzertifikat in den Regionen bei AWS IoT signieren, in denen Sie es verwenden möchten. Die Amazon Root-CA wird automatisch bei registriert AWS IoT. 

Kundenzertifikate können nach AWS-Konten Regionen gemeinsam genutzt werden. Die Verfahren in diesen Themen müssen in jedem Konto und jeder Region ausgeführt werden, in der Sie das Clientzertifikat verwenden möchten. Die Registrierung eines Clientzertifikats in einem Konto oder einer Region wird von einem anderen Konto/einer anderen Region nicht automatisch erkannt.

**Anmerkung**  
Clients, die das TLS-Protokoll (Transport Layer Security) verwenden, um eine Verbindung mit AWS IoT herzustellen, müssen die [SNI-Erweiterung (Server Name Indication)](https://tools.ietf.org/html/rfc3546#section-3.1) für TLS unterstützen. Weitere Informationen finden Sie unter [Transportsicherheit in AWS IoT Core](transport-security.md).

**Topics**
+ [Manuelles Registrieren eines Clientzertifikats](manual-cert-registration.md)
+ [Registrieren Sie ein Client-Zertifikat, wenn der Client eine Verbindung zur AWS IoT just-in-time Registrierung herstellt (JITR)](auto-register-device-cert.md)

# Manuelles Registrieren eines Clientzertifikats
<a name="manual-cert-registration"></a>

Sie können ein Client-Zertifikat manuell registrieren, indem Sie die AWS IoT Konsole und verwenden AWS CLI.

Das anzuwendende Registrierungsverfahren hängt davon ab, ob das Zertifikat von AWS-Konto s und Regionen gemeinsam genutzt wird. Die Registrierung eines Clientzertifikats in einem Konto oder einer Region wird von einem anderen Konto/einer anderen Region nicht automatisch erkannt.

Die Verfahren in diesem Thema müssen in jedem Konto und jeder Region ausgeführt werden, in der Sie das Clientzertifikat verwenden möchten. Client-Zertifikate können von AWS-Konto s und Regionen gemeinsam genutzt werden. 

## Registrieren eines von einer registrierten CA signierten Clientzertifikats (Konsole)
<a name="manual-cert-registration-console"></a>

**Anmerkung**  
Bevor Sie dieses Verfahren ausführen, stellen Sie sicher, dass Sie über die PEM-Datei des Client-Zertifikats verfügen und dass das Client-Zertifikat von einer Zertifizierungsstelle signiert wurde, bei der Sie sich [registriert](manage-your-CA-certs.md#register-CA-cert) haben. AWS IoT

**Um ein vorhandenes Zertifikat AWS IoT mithilfe der Konsole zu registrieren**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im Navigationsbereich im Abschnitt **Verwalten** die Option **Sicherheit** und anschließend **Zertifikate**.

1. Wählen Sie auf der Seite **Zertifikate** im Dialogfeld **Zertifikate** die Option **Zertifikat hinzufügen** und dann **Zertifikate registrieren**.

1. Gehen Sie auf der Seite **Zertifikat registrieren** im Dialogfeld **Hochzuladende Zertifikate** wie folgt vor:
   + Wählen Sie **Zertifizierungsstelle ist bei AWS IoT registriert**.
   + Wählen Sie unter **CA-Zertifikat auswählen** Ihre **Zertifizierungsstelle** aus. 
     + Wählen Sie **Neue Zertifizierungsstelle registrieren** aus, um eine neue **Zertifizierungsstelle** zu registrieren, die nicht bei AWS IoT registriert ist.
     + Lassen Sie **CA-Zertifikat auswählen** leer, wenn die **Amazon-Root-Zertifizierungsstelle** Ihre Zertifizierungsstelle ist.
   + Wählen Sie bis zu 10 Zertifikate aus, die Sie hochladen und mit denen Sie sich registrieren möchten AWS IoT.
     + Verwenden Sie die Zertifikatsdateien, die Sie in [Erstellen Sie AWS IoT Client-Zertifikate](device-certs-create.md) und [Erstellen eines Clientzertifikats mit Ihrem CA-Zertifikat](create-device-cert.md) erstellt haben.
   + Wählen Sie **Aktivieren** oder **Deaktivieren**. Wenn Sie **Deaktivieren** wählen, erklärt [Aktivieren oder Deaktivieren eines Clientzertifikats](activate-or-deactivate-device-cert.md), wie Sie Ihr Zertifikat nach der Zertifikatsregistrierung aktivieren.
   + Wählen Sie **Registrieren** aus.

Auf der Seite **Zertifikate** im Dialogfeld **Zertifikate** werden nun Ihre registrierten Zertifikate angezeigt.

## Registrieren eines von einer nicht registrierten CA signierten Clientzertifikats (Konsole)
<a name="manual-cert-registration-console-noca"></a>

**Anmerkung**  
Stellen Sie sicher, dass Sie über die PEM-Datei des Clientzertifikats verfügen, bevor Sie dieses Verfahren ausführen.

**Um ein vorhandenes Zertifikat AWS IoT mithilfe der Konsole zu registrieren**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich **Sichern**, **Zertifikate** und anschließend **Erstellen** aus.

1. Suchen Sie unter **Zertifikat erstellen** den Eintrag **Eigenes Zertifikat verwenden** und wählen Sie **Erste Schritte**.

1. Wählen Sie unter **CA auswählen** die Option **Weiter**.

1.  Wählen Sie unter **Vorhandene Gerätezertifikate registrieren** die Option **Zertifikate auswählen** und wählen Sie bis zu zehn Zertifikatdateien zum Registrieren aus. 

1.  Schließen Sie das Dateidialogfeld und wählen Sie aus, ob Sie die Clientzertifikate bei der Registrierung aktivieren oder widerrufen möchten.

   Wenn Sie ein Zertifikat bei der Registrierung nicht aktivieren, können Sie unter [Aktivieren eines Clientzertifikats (Konsole)](activate-or-deactivate-device-cert.md#activate-device-cert-console) nachlesen, wie Sie es zu einem späteren Zeitpunkt aktivieren können. 

   Wenn ein Zertifikat bei der Registrierung widerrufen wird, kann es später nicht aktiviert werden.

   Nachdem Sie die zu registrierenden Zertifikatdateien und die nach der Registrierung auszuführenden Aktionen ausgewählt haben, klicken Sie auf **Zertifikate registrieren**.

Die erfolgreich registrierten Clientzertifikate werden in der Liste der Zertifikate angezeigt.

## Registrieren eines von einer registrierten CA signierten Clientzertifikats (CLI)
<a name="manual-cert-registration-cli"></a>

**Anmerkung**  
Stellen Sie sicher, dass Sie über die PEM-Datei der CA und über die PEM-Datei des Clientzertifikats verfügen, bevor Sie dieses Verfahren ausführen. Das Client-Zertifikat muss von einer Zertifizierungsstelle (CA) signiert sein, [bei der Sie sich registriert](manage-your-CA-certs.md#register-CA-cert) haben AWS IoT.

Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate.html), um ein Clientzertifikat zu registrieren, ohne es zu aktivieren.

```
aws iot register-certificate \
    --certificate-pem file://device_cert_filename.pem \
    --ca-certificate-pem file://ca_cert_filename.pem
```

Das Client-Zertifikat ist bei registriert AWS IoT, aber es ist noch nicht aktiv. Informationen dazu, wie Sie es zu einem späteren Zeitpunkt aktivieren können, finden Sie unter [Aktivieren eines Clientzertifikats (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli).

Sie können das Clientzertifikat auch aktivieren, wenn Sie es mit dem folgenden Befehl registrieren.

```
aws iot register-certificate \
    --set-as-active \
    --certificate-pem file://device_cert_filename.pem \
    --ca-certificate-pem file://ca_cert_filename.pem
```

Weitere Informationen zur Aktivierung des Zertifikats, sodass es für die Herstellung einer Verbindung verwendet werden kann AWS IoT, finden Sie unter [Aktivieren oder Deaktivieren eines Clientzertifikats](activate-or-deactivate-device-cert.md)

## Registrieren eines von einer nicht registrierten CA signierten Clientzertifikats (CLI)
<a name="manual-cert-registration-noca-cli"></a>

**Anmerkung**  
Stellen Sie sicher, dass Sie über die PEM-Datei des Zertifikats verfügen, bevor Sie dieses Verfahren ausführen.

Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate-without-ca.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate-without-ca.html), um ein Clientzertifikat zu registrieren, ohne es zu aktivieren.

```
aws iot register-certificate-without-ca \
    --certificate-pem file://device_cert_filename.pem
```

Das Client-Zertifikat ist registriert AWS IoT, aber es ist noch nicht aktiv. Informationen dazu, wie Sie es zu einem späteren Zeitpunkt aktivieren können, finden Sie unter [Aktivieren eines Clientzertifikats (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli).

Sie können das Clientzertifikat auch aktivieren, wenn Sie es mit dem folgenden Befehl registrieren.

```
aws iot register-certificate-without-ca \
    --status ACTIVE \
    --certificate-pem file://device_cert_filename.pem
```

Weitere Hinweise zur Aktivierung des Zertifikats, sodass es für die Herstellung einer Verbindung verwendet werden kann AWS IoT, finden Sie unter[Aktivieren oder Deaktivieren eines Clientzertifikats](activate-or-deactivate-device-cert.md).

# Registrieren Sie ein Client-Zertifikat, wenn der Client eine Verbindung zur AWS IoT just-in-time Registrierung herstellt (JITR)
<a name="auto-register-device-cert"></a>

Sie können ein CA-Zertifikat so konfigurieren, dass Client-Zertifikate, mit denen es signiert wurde, AWS IoT automatisch registriert werden, wenn der Client zum AWS IoT ersten Mal eine Verbindung herstellt.

Um Client-Zertifikate zu registrieren, wenn ein Client AWS IoT zum ersten Mal eine Verbindung herstellt, müssen Sie das CA-Zertifikat für die automatische Registrierung aktivieren und die erste Verbindung des Clients so konfigurieren, dass die erforderlichen Zertifikate bereitgestellt werden.

## Konfigurieren eines CA-Zertifikats zur Unterstützung der automatischen Registrierung (Konsole)
<a name="enable-auto-registration-console"></a>

**Um ein CA-Zertifikat zur Unterstützung der automatischen Registrierung von Client-Zertifikaten mithilfe der AWS IoT Konsole zu konfigurieren**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich **Secure**, wählen Sie **CAs**.

1. Suchen Sie in der Liste der Zertifizierungsstellen diejenige, für die Sie die automatische Registrierung aktivieren möchten, und öffnen Sie das Optionsmenü über das Ellipsensymbol.

1. Wählen Sie im Optionsmenü **Automatische Registrierung aktivieren**.

**Anmerkung**  
Der Status der automatischen Registrierung wird in der Liste der Zertifizierungsstellen nicht angezeigt. Um den Status der automatischen Registrierung einer Zertifizierungsstelle anzuzeigen, müssen Sie die Seite **Details** der Zertifizierungsstelle öffnen.

## Konfigurieren eines CA-Zertifikats zur Unterstützung der automatischen Registrierung (CLI)
<a name="enable-auto-registration-cli"></a>

Wenn Sie Ihr CA-Zertifikat bereits registriert haben AWS IoT, verwenden Sie den [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html)Befehl, um das CA-Zertifikat auf festzulegen `autoRegistrationStatus``ENABLE`.

```
aws iot update-ca-certificate \
--certificate-id caCertificateId \
--new-auto-registration-status ENABLE
```

Wenn Sie `autoRegistrationStatus` bei der Registrierung des CA-Zertifikats aktivieren möchten, verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html).

```
aws iot register-ca-certificate \
--allow-auto-registration  \
--ca-certificate file://root_CA_cert_filename.pem \
--verification-cert file://verification_cert_filename.pem
```

Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html), um den Status des CA-Zertifikats anzuzeigen.

## Konfigurieren der ersten Verbindung durch einen Client für die automatische Registrierung
<a name="configure-auto-reg-first-connect"></a>

Wenn ein Client zum ersten Mal versucht, eine Verbindung herzustellen, muss das mit Ihrem CA-Zertifikat signierte Client-Zertifikat während des Transport Layer Security (TLS) -Handshakes auf dem Client vorhanden sein. AWS IoT 

Wenn der Client eine Verbindung herstellt AWS IoT, verwenden Sie das Client-Zertifikat, das Sie unter [AWS IoT Client-Zertifikate erstellen](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-create.html) oder [Eigene Client-Zertifikate erstellen](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-your-own.html) erstellt haben. AWS IoT erkennt das CA-Zertifikat als registriertes CA-Zertifikat, registriert das Client-Zertifikat und setzt seinen Status auf`PENDING_ACTIVATION`. Das bedeutet, dass das Clientzertifikat automatisch registriert wurde und auf die Aktivierung wartet. Das Clientzertifikat muss den Status `ACTIVE` aufweisen, damit es zur Verbindung mit AWS IoT verwendet werden kann. Informationen zur Aktivierung eines Clientzertifikats finden Sie unter [Aktivieren oder Deaktivieren eines Clientzertifikats](activate-or-deactivate-device-cert.md).

**Anmerkung**  
Sie können Geräte mithilfe der AWS IoT Core just-in-time Registrierungsfunktion (JITR) bereitstellen, ohne die gesamte Vertrauenskette bei der ersten Verbindung der Geräte an senden zu müssen. AWS IoT Core Die Vorlage des CA-Zertifikats ist optional, aber das Gerät muss die [Server Name Indication (SNI)](https://datatracker.ietf.org/doc/html/rfc3546#section-3.1) senden, wenn es eine Verbindung herstellt.

Wenn ein Zertifikat AWS IoT automatisch registriert wird oder wenn ein Client ein Zertifikat im `PENDING_ACTIVATION` Status präsentiert, wird eine Nachricht zum folgenden MQTT-Thema AWS IoT veröffentlicht:

`$aws/events/certificates/registered/caCertificateId`

Dabei ist `caCertificateId` die ID des CA-Zertifikats, das das Gerätezertifikat ausgestellt hat.

Die im Topic veröffentlichte Nachricht weist die folgende Struktur auf:

```
{
        "certificateId": "certificateId",
        "caCertificateId": "caCertificateId",
        "timestamp": timestamp,
        "certificateStatus": "PENDING_ACTIVATION",
        "awsAccountId": "awsAccountId",
        "certificateRegistrationTimestamp": "certificateRegistrationTimestamp"
}
```

Sie können eine Regel zum Beobachten dieses Topics und Ausführen bestimmter Aktionen erstellen. Wir empfehlen, eine Lambda-Regel zu erstellen, mit der sichergestellt wird, dass sich das Clientzertifikat nicht auf einer Zertifikataufhebungsliste (Certificate Revocation List, CRL) befindet, und mit der das Zertifikat aktiviert und eine Richtlinie erstellt und an das Zertifikat angefügt wird. Die Richtlinie bestimmt, auf welche Ressourcen der Client zugreifen kann. Wenn die Richtlinie, die Sie erstellen, die Client-ID von den Verbindungsgeräten benötigt, können Sie die Client-ID () -Funktion der Regel verwenden, um die Client-ID abzurufen. Ein Beispiel für eine Regeldefinition kann wie folgt aussehen:

```
SELECT *,
   clientid() as clientid
from $aws/events/certificates/registered/caCertificateId
```

In diesem Beispiel abonniert die Regel das JITR-Thema `$aws/events/certificates/registered/caCertificateID` und verwendet die Funktion clientid (), um die Client-ID abzurufen. Die Regel hängt dann die Client-ID an die JITR-Nutzlast an. [Weitere Hinweise zur clientid () -Funktion der Regel finden Sie unter clientid ().](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-clientid)

Weitere Informationen zum Erstellen einer Lambda-Regel, die das `$aws/events/certificates/registered/caCertificateID` Thema überwacht und diese Aktionen ausführt, finden Sie unter [just-in-time Registrierung von Client-Zertifikaten](https://aws.amazon.com/blogs/iot/just-in-time-registration-of-device-certificates-on-aws-iot/) am. AWS IoT

Wenn bei der automatischen Registrierung der Client-Zertifikate ein Fehler oder eine Ausnahme auftritt, AWS IoT sendet es Ereignisse oder Meldungen an Ihre Logs in CloudWatch Logs. Weitere Informationen zur Einrichtung der Logs für Ihr Konto finden Sie in der [ CloudWatch Amazon-Dokumentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/).

# Kundenzertifikate verwalten
<a name="manage-device-cert"></a>

AWS IoT bietet Funktionen zur Verwaltung von Client-Zertifikaten.

**Topics**
+ [Aktivieren oder Deaktivieren eines Clientzertifikats](activate-or-deactivate-device-cert.md)
+ [Anfügen eines Objekts oder einer Richtlinie an ein Clientzertifikat](attach-to-cert.md)
+ [Widerrufen eines Clientzertifikats](revoke-ca-cert.md)
+ [Übertragen eines Zertifikats in ein anderes Konto](transfer-cert.md)

# Aktivieren oder Deaktivieren eines Clientzertifikats
<a name="activate-or-deactivate-device-cert"></a>

AWS IoT überprüft, ob ein Client-Zertifikat aktiv ist, wenn es eine Verbindung authentifiziert.

Sie können Clientzertifikate erstellen und registrieren, ohne sie zu aktivieren, sodass sie erst verwendet werden können, wenn Sie dies möchten. Sie können auch aktive Clientzertifikate deaktivieren, um sie vorübergehend zu deaktivieren. Und Sie können Clientzertifikate widerrufen, um deren zukünftige Verwendung zu verhindern. 

## Aktivieren eines Clientzertifikats (Konsole)
<a name="activate-device-cert-console"></a>

**Um ein Client-Zertifikat mit der Konsole zu aktivieren AWS IoT**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich **Sichern** und dann **Zertifikate**.

1. Suchen Sie in der Liste der Zertifikate dasjenige, die Sie aktivieren möchten, und öffnen Sie das Optionsmenü über das Ellipsensymbol.

1. Wählen Sie im Optionsmenü die Option **Aktivieren**.

Das Zertifikat sollte in der Liste der Zertifikate als **Aktiv** angezeigt werden.

## Deaktivieren eines Clientzertifikats (Konsole)
<a name="deactivate-device-cert-console"></a>

**Um ein Client-Zertifikat über die AWS IoT Konsole zu deaktivieren**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich **Sichern** und dann **Zertifikate**.

1. Suchen Sie in der Liste der Zertifikate dasjenige, die Sie deaktivieren möchten, und öffnen Sie das Optionsmenü über das Ellipsensymbol.

1. Wählen Sie im Optionsmenü die Option **Deaktivieren**.

Das Zertifikat sollte in der Liste der Zertifikate als **Inaktiv** angezeigt werden.

## Aktivieren eines Clientzertifikats (CLI)
<a name="activate-device-cert-cli"></a>

Das AWS CLI stellt den [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)Befehl zur Aktivierung eines Zertifikats bereit.

```
aws iot update-certificate \
    --certificate-id certificateId \
    --new-status ACTIVE
```

Wenn der Befehl erfolgreich ist, wird der Status des Zertifikats auf `ACTIVE` gesetzt. Führen Sie [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) aus, um den Status des Zertifikats anzuzeigen.

```
aws iot describe-certificate \
    --certificate-id certificateId
```

## Deaktivieren eines Clientzertifikats (CLI)
<a name="deactivate-device-cert-cli"></a>

Der AWS CLI stellt den [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)Befehl zum Deaktivieren eines Zertifikats bereit.

```
aws iot update-certificate \
    --certificate-id certificateId \
    --new-status INACTIVE
```

Wenn der Befehl erfolgreich ist, wird der Status des Zertifikats auf `INACTIVE` gesetzt. Führen Sie [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) aus, um den Status des Zertifikats anzuzeigen.

```
aws iot describe-certificate \
    --certificate-id certificateId
```

# Anfügen eines Objekts oder einer Richtlinie an ein Clientzertifikat
<a name="attach-to-cert"></a>

Wenn Sie ein Zertifikat unabhängig von einer AWS IoT Sache erstellen und registrieren, wird es weder über Richtlinien verfügen, die AWS IoT Operationen autorisieren, noch wird es mit einem Objekt verknüpft. AWS IoT In diesem Abschnitt wird beschrieben, wie Sie diese Beziehungen zu einem registrierten Zertifikat hinzufügen.

**Wichtig**  
Um dieses Verfahren ausführen zu können, müssen Sie das Objekt oder die Richtlinie, das/die Sie an das Zertifikat anfügen möchten, bereits erstellt haben.

Das Zertifikat authentifiziert ein Gerät mit, AWS IoT sodass es eine Verbindung herstellen kann. Durch das Anhängen des Zertifikats an eine Objektressource wird die Beziehung zwischen dem Gerät (über das Zertifikat) und der Objektressource hergestellt. Um das Gerät zur Ausführung von AWS IoT Aktionen zu autorisieren, z. B. damit das Gerät eine Verbindung herstellen und Nachrichten veröffentlichen kann, muss dem Zertifikat des Geräts eine entsprechende Richtlinie beigefügt werden. 

## Anfügen eines Objekts an ein Clientzertifikat (Konsole)
<a name="attach-to-cert-thing-console"></a>

Sie benötigen für dieses Verfahren den Namen des Objekts.

**So fügen Sie ein Objekt an ein registriertes Zertifikat an**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich **Sicher** und dann **Zertifikate**.

1. Suchen Sie in der Zertifikatsliste das Zertifikat, an das Sie eine Richtlinie anfügen möchten, öffnen Sie das Optionsmenü des Zertifikats über das Ellipsensymbol und wählen Sie **Objekt anfügen**.

1. Suchen Sie im Pop-up-Fenster den Namen des Objekts, das Sie an das Zertifikat anfügen möchten, markieren Sie das entsprechende Kontrollkästchen und wählen Sie **Anfügen**.

Das Objekt sollte nun in der Objektliste auf der Detailseite des Zertifikats angezeigt werden.

## Anfügen einer Richtlinie an ein Clientzertifikat (Konsole)
<a name="attach-to-cert-policy-console"></a>

Sie benötigen für dieses Verfahren den Namen des Richtlinienobjekts.

**So fügen Sie ein Richtlinienobjekt an ein registriertes Zertifikat an**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich **Sichern** und dann **Zertifikate**.

1. Suchen Sie in der Zertifikatsliste das Zertifikat, an das Sie eine Richtlinie anfügen möchten, öffnen Sie das Optionsmenü des Zertifikats über das Ellipsensymbol und wählen Sie **Richtlinie anfügen**. 

1. Suchen Sie im Pop-up-Fenster den Namen der Richtlinie, die Sie an das Zertifikat anfügen möchten, markieren Sie das entsprechende Kontrollkästchen und wählen Sie **Anfügen**.

Das Richtlinienobjekt sollte nun in der Richtlinienliste auf der Detailseite des Zertifikats angezeigt werden.

## Anfügen eines Objekts an ein Clientzertifikat (CLI)
<a name="attach-to-cert-thing-cli"></a>

Das AWS CLI stellt den [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-thing-principal.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-thing-principal.html)Befehl zum Anhängen eines Dingobjekts an ein Zertifikat bereit.

```
aws iot attach-thing-principal \
    --principal certificateArn \
    --thing-name thingName
```

## Anfügen einer Richtlinie an ein Clientzertifikat (CLI)
<a name="attach-to-cert-policy-cli"></a>

Der AWS CLI stellt den [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-policy.html)Befehl zum Anhängen eines Richtlinienobjekts an ein Zertifikat bereit.

```
aws iot attach-policy \
    --target certificateArn \
    --policy-name policyName
```

# Widerrufen eines Clientzertifikats
<a name="revoke-ca-cert"></a>

Wenn Sie verdächtige Aktivitäten in einem registrierten Clientzertifikat erkennen, können Sie es widerrufen, damit es nicht noch einmal verwendet werden kann.

**Anmerkung**  
Sobald ein Zertifikat gesperrt wurde, kann sein Status nicht mehr geändert werden. Das heißt, dass der Status des Zertifikats nicht in `Active` oder einen anderen Status geändert werden kann.

## Widerrufen eines Clientzertifikats (Konsole)
<a name="revoke-device-cert-console"></a>

**Um ein Client-Zertifikat mithilfe der AWS IoT Konsole zu widerrufen**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich **Sichern** und dann **Zertifikate**.

1. Suchen Sie in der Liste der Zertifikate dasjenige, die Sie widerrufen möchten, und öffnen Sie das Optionsmenü über das Ellipsensymbol.

1. Wählen Sie im Optionsmenü die Option **Widerrufen**.

Wenn das Zertifikat erfolgreich widerrufen wurde, wird es in der Liste der Zertifikate als **Widerrufen** angezeigt.

## Widerrufen eines Clientzertifikats (CLI)
<a name="revoke-device-cert-cli"></a>

Das AWS CLI stellt den [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)Befehl zum Widerrufen eines Zertifikats bereit.

```
aws iot update-certificate \
    --certificate-id certificateId \
    --new-status REVOKED
```

Wenn der Befehl erfolgreich ist, wird der Status des Zertifikats auf `REVOKED` gesetzt. Führen Sie [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) aus, um den Status des Zertifikats anzuzeigen.

```
aws iot describe-certificate \
    --certificate-id certificateId
```

# Übertragen eines Zertifikats in ein anderes Konto
<a name="transfer-cert"></a>

X.509-Zertifikate, die zu einem Zertifikat gehören, AWS-Konto können auf ein anderes AWS-Kontoübertragen werden.

**Um ein X.509-Zertifikat von einem auf ein anderes zu AWS-Konto übertragen**

1. [Starten einer Zertifikatsübertragung](#transfer-cert-init)

   Das Zertifikat muss deaktiviert und von allen Richtlinien und Objekten getrennt werden, bevor die Übertragung gestartet wird.

1. [Annehmen oder Ablehnen einer Zertifikatsübertragung](#transfer-cert-accept)

   Das empfangende Konto muss das übertragene Zertifikat ausdrücklich akzeptieren oder ablehnen. Nachdem das Empfängerkonto das Zertifikat akzeptiert hat, muss das Zertifikat aktiviert werden, bevor es verwendet werden kann.

1. [Abbrechen einer Zertifikatsübertragung](#transfer-cert-cancel)

   Das ursprüngliche Konto kann eine Übertragung abbrechen, wenn das Zertifikat nicht akzeptiert wurde.

## Starten einer Zertifikatsübertragung
<a name="transfer-cert-init"></a>

Sie können mit der Übertragung eines Zertifikats auf ein anderes beginnen, AWS-Konto indem Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home) oder das AWS CLI verwenden.

### Starten einer Zertifikatsübertragung (Konsole)
<a name="transfer-cert-init-console"></a>

Sie benötigen die ID des Zertifikats, das Sie übertragen möchten. um dieses Verfahren abzuschließen.

Führen Sie dieses Verfahren von dem Konto aus, das das zu übertragende Zertifikat enthält.

**Um mit der Übertragung eines Zertifikats auf ein anderes zu beginnen AWS-Konto**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich **Sichern** und dann **Zertifikate**.

   Wählen Sie das Zertifikat mit dem Status **Aktiv** oder **Inaktiv** aus, das Sie übertragen möchten, und öffnen Sie die zugehörige Detailseite.

1. Wenn auf der Seite **Details** des Zertifikats im Menü **Aktionen** die Option **Deaktivieren** verfügbar ist, wählen Sie die Option **Deaktivieren**, um das Zertifikat zu deaktivieren.

1. Wählen Sie auf der Seite **Details** des Zertifikats im linken Menü die Option **Richtlinien**.

1. Wenn auf der Seite **Richtlinien** des Zertifikats Richtlinien mit dem Zertifikat verknüpft sind, trennen Sie die einzelnen Richtlinien, indem Sie das Optionsmenü der Richtlinie öffnen und **Trennen** wählen.

   Bevor Sie fortfahren, dürfen mit dem Zertifikat keine Richtlinien verbunden sein.

1. Wählen Sie auf der Seite **Richtlinien** des Zertifikats im linken Menü die Option **Objekte**.

1. Wenn auf der Seite **Objekte** des Zertifikats Objekte mit dem Zertifikat verknüpft sind, trennen Sie die einzelnen Objekte, indem Sie das Optionsmenü des Objekts öffnen und **Trennen** wählen.

   Bevor Sie fortfahren, dürfen mit dem Zertifikat keine Objekte verbunden sein.

1. Wählen Sie auf der Seite **Details** des Zertifikats im linken Menü die Option **Details**.

1. Wählen Sie auf der Seite **Details** des Zertifikats im Menü **Aktionen** die Option **Übertragung starten**, um das Dialogfeld **Übertragung starten** zu öffnen.

1. Geben **Sie im Dialogfeld Übertragung starten** die AWS-Konto Nummer des Kontos ein, das das Zertifikat erhalten soll, und optional eine Kurznachricht.

1. Wählen Sie **Übertragung starten**, um das Zertifikat zu übertragen.

Die Konsole sollte eine Meldung anzeigen, die den Erfolg oder Misserfolg der Übertragung angibt. Wenn die Übertragung gestartet wurde, wird der Status des Zertifikats auf **Übertragen** aktualisiert.

### Starten einer Zertifikatsübertragung (CLI)
<a name="transfer-cert-init-cli"></a>

Um dieses Verfahren abzuschließen, benötigen Sie das *certificateId* und das *certificateArn* Zertifikat, das Sie übertragen möchten.

Führen Sie dieses Verfahren von dem Konto aus, das das zu übertragende Zertifikat enthält.

**Um mit der Übertragung eines Zertifikats auf ein anderes AWS Konto zu beginnen**

1. Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) zum Deaktivieren des Zertifikats.

   ```
   aws iot update-certificate --certificate-id certificateId --new-status INACTIVE
   ```

1. Trennen Sie alle Richtlinien.

   1. Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-attached-policies.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-attached-policies.html), um die an das Zertifikat angehängten Richtlinien aufzulisten.

      ```
      aws iot list-attached-policies --target certificateArn
      ```

   1. Verwenden Sie für jede angehängte Richtlinie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-policy.html), um die Richtlinie zu trennen.

      ```
      aws iot detach-policy --target certificateArn --policy-name policy-name
      ```

1. Trennen Sie alle Objekte.

   1. Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-principal-things.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-principal-things.html), um die an das Zertifikat angehängten Objekte aufzulisten.

      ```
      aws iot list-principal-things --principal certificateArn
      ```

   1. Verwenden Sie für jedes angehängte Objekt den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-thing-principal.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-thing-principal.html), um das Objekt zu trennen.

      ```
      aws iot detach-thing-principal --principal certificateArn --thing-name thing-name
      ```

1. Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/transfer-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/transfer-certificate.html), um die Zertifikatsübertragung zu starten.

   ```
   aws iot transfer-certificate --certificate-id certificateId --target-aws-account account-id
   ```

## Annehmen oder Ablehnen einer Zertifikatsübertragung
<a name="transfer-cert-accept"></a>

Sie können ein Zertifikat, das Ihnen AWS-Konto von einem anderen übertragen wurde, akzeptieren oder ablehnen, AWS-Konto indem Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home) oder das verwenden AWS CLI.

### Annehmen oder Ablehnen einer Zertifikatsübertragung (Konsole)
<a name="transfer-cert-accept-console"></a>

Sie benötigen die ID des Zertifikats, das in Ihr Konto übertragen wurde, um dieses Verfahren abzuschließen.

Führen Sie dieses Verfahren von dem Konto aus, das das übertragende Zertifikat empfängt.

**Um ein Zertifikat zu akzeptieren oder abzulehnen, das auf Ihr AWS-Konto**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich **Sichern** und dann **Zertifikate**.

   Wählen Sie das Zertifikat mit dem Status **Ausstehende Übertragung** aus, das Sie akzeptieren oder ablehnen möchten, und öffnen Sie die zugehörige Detailseite.

1. Auf der **Detailseite** des Zertifikats im Menü **Aktionen**,
   + Wählen Sie **Übertragung akzeptieren**, um das Zertifikat zu akzeptieren.
   + Wählen Sie **Übertragung ablehnen**, um das Zertifikat abzulehnen.

### Annehmen oder Ablehnen einer Zertifikatsübertragung (CLI)
<a name="transfer-cert-accept-cli"></a>

Um dieses Verfahren abzuschließen, benötigen Sie den Namen *certificateId* der Zertifikatsübertragung, die Sie akzeptieren oder ablehnen möchten.

Führen Sie dieses Verfahren von dem Konto aus, das das übertragende Zertifikat empfängt.

**Um ein Zertifikat zu akzeptieren oder abzulehnen, das auf Ihr AWS-Konto**

1. Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/accept-certificate-transfer.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/accept-certificate-transfer.html), um das Zertifikat zu akzeptieren.

   ```
   aws iot accept-certificate-transfer --certificate-id certificateId
   ```

1. Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/reject-certificate-transfer.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/reject-certificate-transfer.html), um das Zertifikat abzulehnen.

   ```
   aws iot reject-certificate-transfer --certificate-id certificateId
   ```

## Abbrechen einer Zertifikatsübertragung
<a name="transfer-cert-cancel"></a>

Sie können eine Zertifikatsübertragung abbrechen, bevor sie akzeptiert wurde, indem Sie die [AWS IoT -Konsole](https://console.aws.amazon.com/iot/home) oder die AWS CLI verwenden.

### Abbrechen einer Zertifikatsübertragung (Konsole)
<a name="transfer-cert-cancel-console"></a>

Sie benötigen die ID der Zertifikatsübertragung, die Sie abbrechen möchten, um dieses Verfahren abzuschließen.

Führen Sie dieses Verfahren von dem Konto aus, das die Zertifikatsübertragung gestartet hat.

**So brechen Sie eine Zertifikatsübertragung ab**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich **Sichern** und dann **Zertifikate**.

   Wählen Sie das Zertifikat mit dem Status **Übertragen** aus, dessen Übertragung Sie stornieren möchten, und öffnen Sie das zugehörige Optionsmenü.

1. Wählen Sie im Optionsmenü des Zertifikats die Option **Übertragung widerrufen**, um die Zertifikatsübertragung abzubrechen.
**Wichtig**  
Achten Sie darauf, die Option **Übertragung widerrufen** nicht mit der Option **Widerrufen** zu verwechseln.  
Mit der Option **Übertragung widerrufen** wird die Zertifikatsübertragung abgebrochen, während die Option **Widerrufen** das Zertifikat für das AWS IoT unwiderruflich unbrauchbar macht. 

### Abbrechen einer Zertifikatsübertragung (CLI)
<a name="transfer-cert-cancel-cli"></a>

Um dieses Verfahren abzuschließen, benötigen Sie den Namen *certificateId* der Zertifikatsübertragung, die Sie stornieren möchten.

Führen Sie dieses Verfahren von dem Konto aus, das die Zertifikatsübertragung gestartet hat.

Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/cancel-certificate-transfer.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/cancel-certificate-transfer.html), um die Zertifikatsübertragung abzubrechen.

```
aws iot cancel-certificate-transfer --certificate-id certificateId
```

# Benutzerdefinierte Validierung von Client-Zertifikaten
<a name="customize-client-auth"></a>

AWS IoT Core unterstützt die benutzerdefinierte Validierung von Client-Zertifikaten für X.509-Clientzertifikate, wodurch die Verwaltung der Client-Authentifizierung verbessert wird. Diese Methode zur Zertifikatsvalidierung wird auch als Zertifikatsprüfung vor der Authentifizierung bezeichnet. Dabei bewerten Sie Client-Zertifikate anhand Ihrer eigenen Kriterien (definiert in einer Lambda-Funktion) und widerrufen Client-Zertifikate oder das Zertifikat der Signing Certificate Authority (CA) der Zertifikate, um zu verhindern, dass Clients eine Verbindung herstellen können. AWS IoT Core Sie können beispielsweise Ihre eigenen Zertifikatssperrprüfungen erstellen, die den Status der Zertifikate anhand von Validierungsstellen überprüfen, die [Online Certificate Status Protocol (OCSP)](https://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol) oder [Certificate Revocation Lists (CRL)](https://en.wikipedia.org/wiki/Certificate_revocation_list) Endpunkte unterstützen, und Verbindungen für Clients mit gesperrten Zertifikaten verhindern. Die Kriterien, die zur Bewertung von Client-Zertifikaten verwendet werden, werden in einer Lambda-Funktion (auch bekannt als Lambda vor der Authentifizierung) definiert. Sie müssen die in den Domänenkonfigurationen festgelegten Endpunkte verwenden und der [Authentifizierungstyp](protocols.md#connection-protocol-auth-mode) muss ein X.509-Zertifikat sein. Darüber hinaus müssen Clients die Erweiterung [Server Name Indication (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) angeben, wenn sie eine Verbindung herstellen. AWS IoT Core

**Anmerkung**  
Diese Funktion wird in den AWS GovCloud (US) Regionen nicht unterstützt.

**Topics**
+ [Schritt 1: Registrieren Sie Ihre X.509-Client-Zertifikate bei AWS IoT Core](#client-auth-cert-verification)
+ [Schritt 2: Erstellen einer Lambda-Funktion](#customize-client-auth-lambda)
+ [Schritt 3: Autorisieren Sie AWS IoT den Aufruf Ihrer Lambda-Funktion](#customize-client-configuration-grant-permission)
+ [Schritt 4: Legen Sie die Authentifizierungskonfiguration für eine Domain fest](#customize-client-configuration)

## Schritt 1: Registrieren Sie Ihre X.509-Client-Zertifikate bei AWS IoT Core
<a name="client-auth-cert-verification"></a>

Falls Sie dies noch nicht getan haben, registrieren und aktivieren Sie Ihre [X.509-Client-Zertifikate](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) mit. AWS IoT Core Andernfalls überspringen Sie diesen Schritt und gehen Sie direkt zum nächsten.

Gehen Sie wie folgt vor AWS IoT Core, um Ihre Client-Zertifikate bei zu registrieren und zu aktivieren:

1. Wenn Sie [Kundenzertifikate direkt mit erstellen AWS IoT](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-create.html). Diese Client-Zertifikate werden automatisch bei registriert AWS IoT Core.

1. Wenn Sie [Ihre eigenen Client-Zertifikate erstellen](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-your-own.html), folgen Sie [diesen Anweisungen, um sie zu registrieren AWS IoT Core](https://docs.aws.amazon.com//iot/latest/developerguide/register-device-cert.html).

1. Folgen Sie [diesen Anweisungen](https://docs.aws.amazon.com//iot/latest/developerguide/activate-or-deactivate-device-cert.html), um Ihre Client-Zertifikate zu aktivieren.

## Schritt 2: Erstellen einer Lambda-Funktion
<a name="customize-client-auth-lambda"></a>

Sie müssen eine Lambda-Funktion erstellen, die die Zertifikatsverifizierung durchführt und bei jedem Verbindungsversuch eines Clients für den konfigurierten Endpunkt aufgerufen wird. Folgen Sie beim Erstellen dieser Lambda-Funktion den allgemeinen Anweisungen unter [Erstellen Sie Ihre erste Lambda-Funktion](https://docs.aws.amazon.com//lambda/latest/dg/getting-started.html). Stellen Sie außerdem sicher, dass die Lambda-Funktion die erwarteten Anfrage- und Antwortformate wie folgt einhält:

**Beispiel für ein Lambda-Funktionsereignis**

```
{
	"connectionMetadata": {
		"id": "string"
	},
	"principalId": "string",
	"serverName": "string",
	"clientCertificateChain": [
		"string",
		"string"
	]
}
```

`connectionMetadata`  
Metadaten oder zusätzliche Informationen im Zusammenhang mit der Verbindung des Clients zu AWS IoT Core.

`principalId`  
Die Haupt-ID, die dem Client in der TLS-Verbindung zugeordnet ist.

`serverName`  
Die [Hostnamenzeichenfolge (Server Name Indication, SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1). AWS IoT Core erfordert, dass Geräte die [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 im Feld angeben. `host_name`

`clientCertificateChain`  
Das Zeichenkettenarray, das die X.509-Zertifikatskette des Clients darstellt. 

**Beispiel für eine Antwort auf eine Lambda-Funktion**

```
{
	"isAuthenticated": "boolean"
}
```

`isAuthenticated`  
Ein boolescher Wert, der angibt, ob die Anfrage authentifiziert ist.

**Anmerkung**  
In der Lambda-Antwort `isAuthenticated` muss `true` mit der weiteren Authentifizierung und Autorisierung fortgefahren werden. Andernfalls kann das IoT-Client-Zertifikat deaktiviert und die benutzerdefinierte Authentifizierung mit X.509-Client-Zertifikaten für die weitere Authentifizierung und Autorisierung blockiert werden.

## Schritt 3: Autorisieren Sie AWS IoT den Aufruf Ihrer Lambda-Funktion
<a name="customize-client-configuration-grant-permission"></a>

Nachdem Sie die Lambda-Funktion erstellt haben, müssen Sie mithilfe des AWS IoT CLI-Befehls [add-permission die Erlaubnis erteilen](https://docs.aws.amazon.com//cli/latest/reference/lambda/add-permission.html), sie aufzurufen. Beachten Sie, dass diese Lambda-Funktion bei jedem Verbindungsversuch zu Ihrem konfigurierten Endpunkt aufgerufen wird. Weitere Informationen finden Sie unter [Autorisieren des AWS IoT Aufrufs Ihrer Lambda-Funktion](custom-auth-authorize.md).

## Schritt 4: Legen Sie die Authentifizierungskonfiguration für eine Domain fest
<a name="customize-client-configuration"></a>

Im folgenden Abschnitt wird beschrieben, wie Sie die Authentifizierungskonfiguration für eine benutzerdefinierte Domain mithilfe von festlegen AWS CLI.

### Konfiguration des Client-Zertifikats für eine Domain festlegen (CLI)
<a name="customize-client-auth-cli"></a>

Wenn Sie keine Domänenkonfiguration haben, verwenden Sie den [https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html)CLI-Befehl, um eine zu erstellen. Wenn Sie bereits über eine Domänenkonfiguration verfügen, verwenden Sie den [https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html)CLI-Befehl, um die Konfiguration des Client-Zertifikats für eine Domain zu aktualisieren. Sie müssen den ARN der Lambda-Funktion hinzufügen, die Sie im vorherigen Schritt erstellt haben.

```
aws iot create-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type AWS_X509|CUSTOM_AUTH_X509 \
    --application-protocol SECURE_MQTT|HTTPS \
    --client-certificate-config 'clientCertificateCallbackArn":"arn:aws:lambda:us-east-2:123456789012:function:my-function:1"}'
```

```
aws iot update-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type AWS_X509|CUSTOM_AUTH_X509 \
    --application-protocol SECURE_MQTT|HTTPS \
    --client-certificate-config '{"clientCertificateCallbackArn":"arn:aws:lambda:us-east-2:123456789012:function:my-function:1"}'
```

`domain-configuration-name`  
Der Name der Domänenkonfiguration.

`authentication-type`  
Der Authentifizierungstyp der Domänenkonfiguration. Weitere Informationen finden Sie unter [Auswahl eines Authentifizierungstyps](protocols.md#connection-protocol-auth-mode).

`application-protocol`  
Das Anwendungsprotokoll, mit dem Geräte kommunizieren AWS IoT Core. Weitere Informationen finden Sie unter [Auswahl eines Anwendungsprotokolls](protocols.md#protocol-selection).

`client-certificate-config`  
Ein Objekt, das die Konfiguration der Client-Authentifizierung für eine Domäne angibt.

`clientCertificateCallbackArn`  
Der Amazon-Ressourcenname (ARN) der Lambda-Funktion, die in der AWS IoT TLS-Schicht aufgerufen wird, wenn eine neue Verbindung hergestellt wird. Um die Client-Authentifizierung für die Durchführung einer benutzerdefinierten Client-Zertifikatsvalidierung anzupassen, müssen Sie den ARN der Lambda-Funktion hinzufügen, die Sie im vorherigen Schritt erstellt haben.

Weitere Informationen finden Sie in [CreateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateDomainConfiguration.html)und in [UpdateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateDomainConfiguration.html)der *AWS IoT API-Referenz.* Weitere Informationen zu Domänenkonfigurationen finden Sie unter [Domänenkonfigurationen](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html).

# IAM-Benutzer, -Gruppen und -Rollen
<a name="iam-users-groups-roles"></a>

IAM-Benutzer, -Gruppen und -Rollen sind die Standardmechanismen zum Verwalten von Identitäts- und Authentifizierungsmethoden in AWS. Sie können sie verwenden, um mithilfe des AWS SDK und eine Verbindung zu AWS IoT HTTP-Schnittstellen herzustellen AWS CLI.

Mit IAM-Rollen können AWS IoT Sie auch in Ihrem Namen auf andere AWS Ressourcen in Ihrem Konto zugreifen. Wenn Sie beispielsweise möchten, dass ein Gerät seinen Status in einer DynamoDB-Tabelle veröffentlicht, ermöglichen AWS IoT IAM-Rollen die Interaktion mit Amazon DynamoDB. Weitere Informationen finden Sie unter [IAM-Rollen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html).

 AWS IoT Authentifiziert bei Message-Broker-Verbindungen über HTTP Benutzer, Gruppen und Rollen mithilfe des Signaturprozesses von Signature Version 4. Weitere Informationen finden Sie unter [AWS API-Anfragen signieren](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html).

Wenn Sie AWS Signature Version 4 mit verwenden AWS IoT, müssen Clients in ihrer TLS-Implementierung Folgendes unterstützen:
+ TLS 1.2
+ SHA-256 RSA-Zertifikats-Signaturprüfung für RSA-Zertifikate
+ Eine der Cipher-Suiten aus dem Support-Abschnitt der TLS Cipher Suite.

Weitere Informationen finden Sie unter [Identitäts- und Zugriffsmanagement für AWS IoT](security-iam.md).

# Amazon-Cognito-Identitäten
<a name="cognito-identities"></a>

Amazon Cognito Identity ermöglicht es Ihnen, temporäre AWS Anmeldeinformationen mit eingeschränkten Rechten für die Verwendung in Mobil- und Webanwendungen zu erstellen. Wenn Sie Amazon Cognito Identity verwenden, erstellen Sie Identitätspools, die eindeutige Identitäten für Ihre Benutzer erstellen, und authentifizieren Sie sie bei Identitätsanbietern wie Login with Amazon, Facebook und Google. Sie können auch Amazon-Cognito-Identitäten mit Ihren eigenen vom Entwickler authentifizierten Identitäten verwenden. Weitere Informationen finden Sie unter [ Amazon Cognito Identity](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html).

Um Amazon Cognito Identity zu verwenden, definieren Sie einen Amazon Cognito Cognito-Identitätspool, der einer IAM-Rolle zugeordnet ist. Die IAM-Rolle ist mit einer IAM-Richtlinie verknüpft, die Identitäten aus Ihrem Identitätspool den Zugriff auf Ressourcen wie Anrufdienste gewährt. AWS AWS 

Amazon Cognito Identity erstellt nicht authentifizierte und authentifizierte Identitäten. Nicht authentifizierte Identitäten werden für Gastbenutzer in einer mobilen oder Webanwendung verwendet, die die App ohne Anmeldung nutzen möchten. Nicht authentifizierten Benutzern werden nur die Berechtigungen gewährt, die in der dem Identitätspool zugeordneten IAM-Richtlinie angegeben sind.

Wenn Sie authentifizierte Identitäten verwenden, müssen Sie zusätzlich zu der dem Identitätspool angehängten IAM-Richtlinie eine Richtlinie an eine Amazon Cognito AWS IoT Cognito-Identität anhängen. Um eine AWS IoT Richtlinie anzuhängen, verwenden Sie die [ AttachPolicy](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachPolicy.html)API und erteilen Sie einem einzelnen Benutzer Ihrer Anwendung Berechtigungen. AWS IoT Sie können die AWS IoT Richtlinie verwenden, um spezifische Berechtigungen für bestimmte Kunden und deren Geräte zuzuweisen.

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. Weitere Informationen zum Erstellen von Richtlinien für Amazon-Cognito-Identitäten finden Sie unter [Beispiele für Veröffentlichungs-/Abonnement-Richtlinien](pub-sub-policy.md) und [Autorisierung mit Amazon-Cognito-Identitäten](cog-iot-policies.md).

![\[Anwendung, die mit Amazon Cognito Identity auf ein Gerät zugreift.\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/device-cognito.png)


# Benutzerspezifische Authentifizierung und Autorisierung
<a name="custom-authentication"></a>

 AWS IoT Core ermöglicht es Ihnen, benutzerdefinierte Autorisierer zu definieren, sodass Sie Ihre eigene Client-Authentifizierung und -Autorisierung verwalten können. Dies ist nützlich, wenn Sie andere Authentifizierungsmechanismen als die verwenden müssen, die von Haus aus unterstützt werden. AWS IoT Core (Weitere Informationen zu den nativ unterstützten Mechanismen finden Sie unter [Client-Authentifizierung](client-authentication.md).)  

 Wenn Sie beispielsweise vorhandene Geräte vor Ort zu migrieren AWS IoT Core und diese Geräte ein benutzerdefiniertes Bearer-Token oder einen MQTT-Benutzernamen und ein Passwort zur Authentifizierung verwenden, können Sie sie zu migrieren, AWS IoT Core ohne ihnen neue Identitäten bereitstellen zu müssen. Sie können die benutzerdefinierte Authentifizierung mit jedem der unterstützten Kommunikationsprotokolle verwenden. AWS IoT Core Weitere Informationen zu von AWS IoT Core unterstützten Protokollen finden Sie unter [Gerätekommunikationsprotokolle](protocols.md). 

**Topics**
+ [Grundlegendes zum Workflow für die benutzerdefinierte Authentifizierung](custom-authorizer.md)
+ [Benutzerdefinierte Autorisierer (CLI) erstellen und verwalten](config-custom-auth.md)
+ [Benutzerdefinierte Authentifizierung mit X.509-Client-Zertifikaten](custom-auth-509cert.md)
+ [Mithilfe der benutzerdefinierten Authentifizierung AWS IoT Core wird eine Verbindung hergestellt](custom-auth.md)
+ [Fehlerbehebung für Ihre Genehmiger](custom-auth-troubleshooting.md)

# Grundlegendes zum Workflow für die benutzerdefinierte Authentifizierung
<a name="custom-authorizer"></a>

Mit der benutzerdefinierten Authentifizierung können Sie festlegen, wie Cliente mithilfe von [Genehmigerressourcen](https://docs.aws.amazon.com/iot/latest/apireference/API_AuthorizerDescription.html) authentifiziert und autorisiert werden.  Jeder Autorisierer enthält einen Verweis auf eine vom Kunden verwaltete Lambda-Funktion, einen optionalen öffentlichen Schlüssel zur Überprüfung der Geräteanmeldedaten und zusätzliche Konfigurationsinformationen. Das folgende Diagramm veranschaulicht den Autorisierungsablauf für die benutzerdefinierte Authentifizierung in. AWS IoT Core

![\[Benutzerdefinierter Autorisierungsworkflow für die benutzerdefinierte Authentifizierung in AWS IoT Core.\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/custom-authentication.png)


## AWS IoT Core benutzerdefinierter Authentifizierungs- und Autorisierungs-Workflow
<a name="custom-authentication-workflow"></a>

In der folgenden Liste werden die einzelnen Schritte des benutzerdefinierten Authentifizierungs- und Autorisierungsworkflows erläutert.

1. Ein Gerät stellt über einen der unterstützten Geräte eine Verbindung zum AWS IoT Core Datenendpunkt eines Kunden her[Gerätekommunikationsprotokolle](protocols.md). Das Gerät übergibt Anmeldeinformationen entweder in den Header-Feldern oder Abfrageparametern der Anfrage (für die WebSockets Protokolle HTTP Publish oder MQTT over) oder in das Feld für den Benutzernamen und das Passwort der MQTT CONNECT-Nachricht (für die Protokolle MQTT und MQTT over). WebSockets 

1. AWS IoT Core prüft auf eine von zwei Bedingungen:
   + Die eingehende Anforderung gibt einen Genehmiger an.
   + Für den AWS IoT Core Datenendpunkt, der die Anfrage empfängt, ist ein Standardautorisierer dafür konfiguriert.

   Wenn auf AWS IoT Core eine dieser Arten ein Autorisierer gefunden wird, wird die dem Autorisierer zugeordnete Lambda-Funktion AWS IoT Core ausgelöst.

1.  (Optional) Wenn Sie die Tokensignatur aktiviert haben, AWS IoT Core validiert die Anforderungssignatur mithilfe des im Autorisierer gespeicherten öffentlichen Schlüssels, bevor die Lambda-Funktion ausgelöst wird. Wenn die Validierung fehlschlägt, stoppt AWS IoT Core die Anforderung, ohne die Lambda-Funktion aufzurufen.  

1. Die Lambda-Funktion empfängt die Anmeldeinformationen und Verbindungsmetadaten in der Anforderung und trifft eine Authentifizierungsentscheidung.

1. Die Lambda-Funktion gibt die Ergebnisse der Authentifizierungsentscheidung und ein AWS IoT Core Richtliniendokument zurück, das festlegt, welche Aktionen in der Verbindung zulässig sind. Die Lambda-Funktion gibt auch Informationen zurück, die angeben, wie oft die Anmeldeinformationen in der Anfrage AWS IoT Core erneut validiert werden, indem die Lambda-Funktion aufgerufen wird.

1. AWS IoT Core bewertet die Aktivität auf der Verbindung anhand der Richtlinie, die sie von der Lambda-Funktion erhalten hat.

1. Nachdem die Verbindung hergestellt wurde und Ihr benutzerdefinierter Authorizer Lambda zum ersten Mal aufgerufen wurde, kann der nächste Aufruf bei inaktiven Verbindungen ohne MQTT-Operationen um bis zu 5 Minuten verzögert werden. Danach folgen nachfolgende Aufrufe dem Aktualisierungsintervall in Ihrem benutzerdefinierten Authorizer Lambda. Dieser Ansatz kann übermäßige Aufrufe verhindern, die Ihr Lambda-Parallelitätslimit überschreiten könnten. AWS-Konto

## Überlegungen zur Skalierung
<a name="custom-authentication-scaling"></a>

 Da eine Lambda-Funktion die Authentifizierung und Autorisierung für Ihren Genehmiger abwickelt, unterliegt die Funktion den Lambda-Preis- und Servicebeschränkungen, z. B. der Rate der gleichzeitigen Ausführung. Weitere Informationen zu den Preisen für Lambda finden Sie unter [Lambda-Preise](https://aws.amazon.com/lambda/pricing/). Sie können die Belastung Ihrer Lambda-Funktion verwalten, indem Sie die `refreshAfterInSeconds`- und `disconnectAfterInSeconds`-Parameter in Ihrer Lambda-Funktionsantwort anpassen. Weitere Informationen über den Inhalt Ihrer Lambda-Funktionsantwort finden Sie unter [Definieren Ihrer Lambda-Funktion](custom-auth-lambda.md).

**Anmerkung**  
Wenn Sie die Signierung aktiviert lassen, können Sie verhindern, dass Ihr Lambda übermäßig oft durch unbekannte Clients ausgelöst wird. Bedenken Sie dies, bevor Sie die Signierung in Ihrem Genehmiger deaktivieren.

**Anmerkung**  
Das Timeout-Limit der Lambda-Funktion für den benutzerdefinierten Genehmiger beträgt 5 Sekunden.

# Benutzerdefinierte Autorisierer (CLI) erstellen und verwalten
<a name="config-custom-auth"></a>

AWS IoT Core implementiert benutzerdefinierte Authentifizierungs- und Autorisierungsschemata mithilfe benutzerdefinierter Autorisierer. Ein benutzerdefinierter Autorisierer ist eine AWS IoT Core Ressource, die Ihnen die Flexibilität bietet, Regeln und Richtlinien auf der Grundlage Ihrer spezifischen Anforderungen zu definieren und zu implementieren. Informationen zum Erstellen eines benutzerdefinierten Autorisierers mit step-by-step Anweisungen finden Sie unter [Tutorial: Erstellen eines benutzerdefinierten Autorisierers](https://docs.aws.amazon.com//iot/latest/developerguide/custom-auth-tutorial.html) für. AWS IoT Core

Jeder Genehmiger umfasst folgende Komponenten: 
+  *Name*: Eine eindeutige benutzerdefinierte Zeichenfolge, in der der Genehmiger identifiziert wird.
+  *ARN der Lambda-Funktion*: Der Amazon-Ressourcenname (ARN) der Lambda-Funktion, die die Autorisierungs- und Authentifizierungslogik implementiert.  
+  *Token-Schlüsselname*: Der Schlüsselname, der verwendet wird, um das Token aus den HTTP-Headern, Abfrageparametern oder dem MQTT-CONNECT-Benutzernamen zu extrahieren, um die Signaturvalidierung durchzuführen. Dieser Wert ist erforderlich, wenn in Ihrem Genehmiger die Signierung aktiviert ist. 
+  *Markierung „Signieren deaktiviert“ (optional)*: Ein boolescher Wert, der angibt, ob die Signaturanforderung für Anmeldeinformationen deaktiviert werden soll. Dies ist nützlich für Szenarien, in denen das Signieren der Anmeldeinformationen keinen Sinn macht, z. B. bei Authentifizierungsschemata, die MQTT-Benutzernamen und -Passwörter verwenden. Der Standardwert ist `false`, also ist das Signieren standardmäßig aktiviert. 
+  *Öffentlicher Schlüssel zur Tokensignierung*: Der öffentliche Schlüssel, den AWS IoT Core zur Validierung der Tokensignatur verwendet. Die Mindestlänge beträgt 2.048 Bit. Dieser Wert ist erforderlich, wenn in Ihrem Genehmiger die Signierung aktiviert ist.  

Lambda berechnet Ihnen die Anzahl der Ausführungen Ihrer Lambda-Funktion und die Dauer der Ausführung des Codes in Ihrer Funktion. Weitere Informationen zu den Preisen für Lambda finden Sie unter [Lambda-Preise](https://aws.amazon.com/lambda/pricing/). Weitere Informationen zum Erstellen von Lambda-Funktionen finden Sie im [Lambda-Entwicklerhandbuch](https://docs.aws.amazon.com/lambda/latest/dg/).

**Anmerkung**  
Wenn Sie die Signierung aktiviert lassen, können Sie verhindern, dass Ihr Lambda übermäßig oft durch unbekannte Clients ausgelöst wird. Bedenken Sie dies, bevor Sie die Signierung in Ihrem Genehmiger deaktivieren.

**Anmerkung**  
Das Timeout-Limit der Lambda-Funktion für den benutzerdefinierten Genehmiger beträgt 5 Sekunden.

**Topics**
+ [Definieren Ihrer Lambda-Funktion](custom-auth-lambda.md)
+ [Erstellen eines Genehmigers](custom-auth-create-authorizer.md)
+ [Autorisieren AWS IoT zum Aufrufen Ihrer Lambda-Funktion](custom-auth-authorize.md)
+ [Testen Ihrer Genehmiger](custom-auth-testing.md)
+ [Verwalten von benutzerdefinierten Genehmigern](custom-auth-manage.md)

# Definieren Ihrer Lambda-Funktion
<a name="custom-auth-lambda"></a>

 Wenn AWS IoT Core Sie Ihren Autorisierer aufrufen, löst er das dem Autorisierer zugeordnete Lambda mit einem Ereignis aus, das das folgende JSON-Objekt enthält. Das JSON-Beispielobjekt enthält alle möglichen Felder. Felder, die für die Verbindungsanforderung nicht relevant sind, sind nicht enthalten.

```
{
    "token" :"aToken",
    "signatureVerified": Boolean, // Indicates whether the device gateway has validated the signature.
    "protocols": ["tls", "http", "mqtt"], // Indicates which protocols to expect for the request.
    "protocolData": {
        "tls" : {
            "serverName": "serverName" // The server name indication (SNI) host_name string.
        },
        "http": {
            "headers": {
                "#{name}": "#{value}"
            },
            "queryString": "?#{name}=#{value}"
        },
        "mqtt": {
            "username": "myUserName",
            "password": "myPassword", // A base64-encoded string.
            "clientId": "myClientId" // Included in the event only when the device sends the value.
        }
    },
    "connectionMetadata": {
        "id": UUID // The connection ID. You can use this for logging.
    },
}
```

 Die Lambda-Funktion sollte diese Informationen verwenden, um die eingehende Verbindung zu authentifizieren und zu entscheiden, welche Aktionen in der Verbindung zulässig sind. Die Funktion sollte eine Antwort senden, die die folgenden Werte enthält. 
+  `isAuthenticated`: Ein boolescher Wert, der angibt, ob die Anforderung authentifiziert wurde.
+  `principalId`: Eine alphanumerische Zeichenfolge, die als Kennung für das Token dient, das von der benutzerdefinierten Autorisierungsanforderung gesendet wurde. Der Wert muss eine alphanumerische Zeichenfolge mit mindestens einem und nicht mehr als 128 Zeichen sein und dem folgenden regulären Ausdrucksmuster (Regex) entsprechen: `([a-zA-Z0-9]){1,128}`. Sonderzeichen, die nicht alphanumerisch sind, dürfen nicht zusammen mit dem in verwendet werden. `principalId` AWS IoT Core Informationen darüber, ob nicht-alphanumerische Sonderzeichen für die zulässig sind, finden Sie in der Dokumentation zu anderen AWS Diensten. `principalId`
+  `policyDocuments`: Eine Liste von AWS IoT Core Richtliniendokumenten im JSON-Format Weitere Informationen zum Erstellen von Richtlinien finden Sie unter. AWS IoT Core [AWS IoT Core Richtlinien](iot-policies.md) Die maximale Anzahl von Richtliniendokumenten ist 10. Jedes Richtliniendokument darf maximal 2048 Zeichen enthalten.
+  `disconnectAfterInSeconds`: Eine Ganzzahl, die die maximale Dauer der Verbindung zum AWS IoT Core -Gateway angibt (in Sekunden). Der Mindestwert ist 300 Sekunden und der Höchstwert 86 400 Sekunden. Der Standardwert ist 86.400.
**Anmerkung**  
Der Wert von `disconnectAfterInSeconds` (von der Lambda-Funktion zurückgegeben) wird festgelegt, wenn die Verbindung hergestellt wird. Dieser Wert kann bei nachfolgenden Lambda-Aufrufen zur Richtlinienaktualisierung nicht geändert werden.
+  `refreshAfterInSeconds`: Eine Ganzzahl, die das Intervall zwischen Richtlinienaktualisierungen angibt. Wenn dieses Intervall abläuft, ruft AWS IoT Core die Lambda-Funktion auf, um Richtlinienaktualisierungen zu ermöglichen. Der Mindestwert ist 300 Sekunden und der Höchstwert 86 400 Sekunden. 

  Das folgende JSON-Objekt enthält ein Beispiel für eine Antwort, die Ihre Lambda-Funktion senden kann. 

 **\$1 "isAuthenticated":true, //A Boolean that determines whether client can connect. "principalId": "xxxxxxxx",  //A string that identifies the connection in logs. "disconnectAfterInSeconds": 86400,  "refreshAfterInSeconds": 300,   "policyDocuments": [       \$1         "Version": "2012-10-17",         "Statement": [            \$1               "Action": "iot:Publish",               "Effect": "Allow",               "Resource": "arn:aws:iot:us-east-1:<your\$1aws\$1account\$1id>:topic/customauthtesting"             \$1          ]        \$1     ] \$1**

 Der `policyDocument` Wert muss ein AWS IoT Core gültiges Richtliniendokument enthalten. Weitere Informationen zu AWS IoT Core Richtlinien finden Sie unter[AWS IoT Core Richtlinien](iot-policies.md). In MQTT über TLS und MQTT über WebSockets Verbindungen wird diese Richtlinie für das im Feldwert angegebene Intervall AWS IoT Core zwischengespeichert. `refreshAfterInSeconds` Bei HTTP-Verbindungen wird die Lambda-Funktion für jede Autorisierungsanforderung aufgerufen, es sei denn, Ihr Gerät verwendet persistente HTTP-Verbindungen (auch HTTP-Keep-Alive oder HTTP-Verbindungswiederverwendung genannt). Sie können bei der Konfiguration des Genehmigers wählen, ob Sie das Caching aktivieren möchten. AWS IoT Core Autorisiert während dieses Intervalls Aktionen in einer bestehenden Verbindung gegen diese zwischengespeicherte Richtlinie, ohne dass Ihre Lambda-Funktion erneut ausgelöst wird. Wenn bei der benutzerdefinierten Authentifizierung Fehler auftreten, AWS IoT Core wird die Verbindung beendet. AWS IoT Core beendet die Verbindung auch, wenn sie länger als der im Parameter angegebene Wert geöffnet war. `disconnectAfterInSeconds` 

 Im Folgenden finden JavaScript Sie eine Lambda-Beispielfunktion von Node.js, die in der MQTT Connect-Nachricht nach einem Passwort mit dem Wert von sucht `test` und eine Richtlinie zurückgibt, die die Erlaubnis erteilt, eine Verbindung AWS IoT Core mit einem Client herzustellen `myClientName` und zu einem Thema zu veröffentlichen, das denselben Clientnamen enthält. Wenn es das erwartete Passwort nicht findet, gibt es eine Richtlinie zurück, die diese beiden Aktionen verweigert. 

```
// A simple Lambda function for an authorizer. It demonstrates 
// how to parse an MQTT password and generate a response.

exports.handler = function(event, context, callback) { 
    var uname = event.protocolData.mqtt.username;
    var pwd = event.protocolData.mqtt.password;
    var buff = new Buffer(pwd, 'base64');
    var passwd = buff.toString('ascii');
    switch (passwd) { 
        case 'test': 
            callback(null, generateAuthResponse(passwd, 'Allow')); 
            break;
        default: 
            callback(null, generateAuthResponse(passwd, 'Deny'));  
    }
};

// Helper function to generate the authorization response.
var generateAuthResponse = function(token, effect) { 
    var authResponse = {}; 
    authResponse.isAuthenticated = true; 
    authResponse.principalId = 'TEST123'; 
    
    var policyDocument = {}; 
    policyDocument.Version = '2012-10-17';		 	 	 
    policyDocument.Statement = []; 
    var publishStatement = {}; 
    var connectStatement = {};
    connectStatement.Action = ["iot:Connect"];
    connectStatement.Effect = effect;
    connectStatement.Resource = ["arn:aws:iot:us-east-1:123456789012:client/myClientName"];
    publishStatement.Action = ["iot:Publish"]; 
    publishStatement.Effect = effect; 
    publishStatement.Resource = ["arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"]; 
    policyDocument.Statement[0] = connectStatement;
    policyDocument.Statement[1] = publishStatement; 
    authResponse.policyDocuments = [policyDocument]; 
    authResponse.disconnectAfterInSeconds = 3600; 
    authResponse.refreshAfterInSeconds = 300;
    
    return authResponse; 
}
```

 Die vorhergehende Lambda-Funktion gibt das folgende JSON zurück, wenn sie das erwartete Passwort von `test` in der MQTT-Connect-Nachricht empfängt. Die Werte der `password`- und `principalId`-Eigenschaften sind die Werte aus der MQTT-Connect-Nachricht.

```
{
  "password": "password",
  "isAuthenticated": true,
  "principalId": "principalId",
  "policyDocuments": [
    {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
        {
          "Action": "iot:Connect",
          "Effect": "Allow",
          "Resource": "*"
        },
        {
          "Action": "iot:Publish",
          "Effect": "Allow",
          "Resource": "arn:aws:iot:region:accountId:topic/telemetry/${iot:ClientId}"
        },
        {
          "Action": "iot:Subscribe",
          "Effect": "Allow",
          "Resource": "arn:aws:iot:region:accountId:topicfilter/telemetry/${iot:ClientId}"
        },
        {
          "Action": "iot:Receive",
          "Effect": "Allow",
          "Resource": "arn:aws:iot:region:accountId:topic/telemetry/${iot:ClientId}"
        }
      ]
    }
  ],
  "disconnectAfterInSeconds": 3600,
  "refreshAfterInSeconds": 300
}
```

# Erstellen eines Genehmigers
<a name="custom-auth-create-authorizer"></a>

 [Sie können mithilfe der API einen Autorisierer erstellen. CreateAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateAuthorizer.html) Das folgende Beispiel beschreibt den Befehl. 

```
aws iot create-authorizer
--authorizer-name MyAuthorizer
--authorizer-function-arn arn:aws:lambda:us-west-2:<account_id>:function:MyAuthorizerFunction  //The ARN of the Lambda function.
[--token-key-name MyAuthorizerToken //The key used to extract the token from headers.
[--token-signing-public-keys FirstKey=
 "-----BEGIN PUBLIC KEY-----
  [...insert your public key here...] 
  -----END PUBLIC KEY-----"
[--status ACTIVE]
[--tags <value>]
[--signing-disabled | --no-signing-disabled]
```

Sie können den `signing-disabled`-Parameter verwenden, um die Signaturvalidierung für jeden Aufruf Ihres Genehmigers zu deaktivieren. Es wird ausdrücklich empfohlen, dass die Signierung nur wenn unbedingt notwendig zu deaktivieren. Die Signaturvalidierung schützt Sie vor übermäßigen Aufrufen Ihrer Lambda-Funktion von unbekannten Geräten. Sie können den `signing-disabled`-Status eines Genehmigers nicht mehr ändern, nachdem Sie ihn erstellt haben. Zum Ändern dieses Verhaltens müssen Sie einen anderen benutzerdefinierten Genehmiger mit einem anderen Wert für den `signing-disabled`-Parameter erstellen. 

Die Werte für die `tokenKeyName`- und `tokenSigningPublicKeys`-Parameter sind optional, wenn Sie das Signieren deaktiviert haben. Sie sind jedoch erforderlich, wenn das Signieren aktiviert ist. 

Nachdem Sie Ihre Lambda-Funktion und den benutzerdefinierten Autorisierer erstellt haben, müssen Sie dem AWS IoT Core Dienst ausdrücklich die Berechtigung erteilen, die Funktion in Ihrem Namen aufzurufen. Sie können dies mit dem folgenden Befehl tun. 

**Anmerkung**  
Der Standard-IoT-Endpunkt unterstützt möglicherweise nicht die Verwendung von benutzerdefinierten Autorisierern mit Lambda-Funktionen. Stattdessen können Sie Domänenkonfigurationen verwenden, um einen neuen Endpunkt zu definieren und diesen Endpunkt dann für den benutzerdefinierten Autorisierer anzugeben.

```
aws lambda add-permission --function-name <lambda_function_name>
--principal iot.amazonaws.com --source-arn <authorizer_arn>
--statement-id Id-123 --action "lambda:InvokeFunction"
```

# Autorisieren AWS IoT zum Aufrufen Ihrer Lambda-Funktion
<a name="custom-auth-authorize"></a>

In diesem Abschnitt erteilen Sie der benutzerdefinierten Autorisierungsressource, die Sie gerade erstellt haben, die Erlaubnis, die Lambda-Funktion auszuführen. Um die Berechtigung zu erteilen, können Sie den CLI-Befehl [add-permission](https://docs.aws.amazon.com//cli/latest/reference/lambda/add-permission.html) verwenden.

**Erteilen Sie Ihrer Lambda-Funktion die Erlaubnis mit dem AWS CLI**

1. Geben Sie nach der Eingabe Ihrer Werte den folgenden Befehl ein. Beachten Sie, dass der Wert `statement-id` eindeutig sein muss. `Id-1234`Ersetzen Sie es durch den exakten Wert, den Sie haben, andernfalls wird möglicherweise eine `ResourceConflictException` Fehlermeldung angezeigt.

   ```
   aws lambda add-permission  \
   --function-name "custom-auth-function" \
   --principal "iot.amazonaws.com" \
   --action "lambda:InvokeFunction" \
   --statement-id "Id-1234" \
   --source-arn authorizerArn
   ```

1. Wenn der Befehl erfolgreich ist, gibt er eine Berechtigungsanweisung zurück, wie in diesem Beispiel. Sie können mit dem nächsten Abschnitt fortfahren, um den benutzerdefinierten Autorisierer zu testen.

   ```
   {
       "Statement": "{\"Sid\":\"Id-1234\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iot.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function\",\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function\"}}}"
   }
   ```

   Wenn der Befehl nicht erfolgreich ist, wird ein Fehler zurückgegeben, wie in diesem Beispiel. Sie müssen den Fehler überprüfen und korrigieren, bevor Sie fortfahren können.

   ```
   An error occurred (AccessDeniedException) when calling the AddPermission operation: User: arn:aws:iam::57EXAMPLE833:user/EXAMPLE-1 is not authorized to perform: lambda:AddPer
   mission on resource: arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function
   ```

# Testen Ihrer Genehmiger
<a name="custom-auth-testing"></a>

 Sie können die [TestInvokeAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_TestInvokeAuthorizer.html)API verwenden, um den Aufruf und die Rückgabewerte Ihres Autorisierers zu testen. Mit dieser API können Sie Protokollmetadaten angeben und die Signaturvalidierung in Ihrem Authorizer testen.

Die folgenden Tabs zeigen, wie Sie den verwenden können, AWS CLI um Ihren Authorizer zu testen.

------
#### [ Unix-like ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER \
--token TOKEN_VALUE --token-signature TOKEN_SIGNATURE
```

------
#### [ Windows CMD ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER ^
--token TOKEN_VALUE --token-signature TOKEN_SIGNATURE
```

------
#### [ Windows PowerShell ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER `
--token TOKEN_VALUE --token-signature TOKEN_SIGNATURE
```

------

Der Wert des `token-signature`-Parameters ist das signierte Token. Weitere Informationen zum Abrufen dieses Werts finden Sie unter [Signieren des Tokens](custom-auth.md#custom-auth-token-signature).

Wenn Ihr Genehmiger einen Benutzernamen und ein Passwort verwendet, können Sie diese Informationen mithilfe des `--mqtt-context`-Parameters weitergeben. Die folgenden Registerkarten zeigen, wie Sie mithilfe der `TestInvokeAuthorizer`-API ein JSON-Objekt, das einen Benutzernamen, ein Passwort und einen Clientnamen enthält, an Ihren benutzerdefinierten Genehmiger senden.

------
#### [ Unix-like ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER  \
--mqtt-context '{"username": "USER_NAME", "password": "dGVzdA==", "clientId":"CLIENT_NAME"}'
```

------
#### [ Windows CMD ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER  ^
--mqtt-context '{"username": "USER_NAME", "password": "dGVzdA==", "clientId":"CLIENT_NAME"}'
```

------
#### [ Windows PowerShell ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER  `
--mqtt-context '{"username": "USER_NAME", "password": "dGVzdA==", "clientId":"CLIENT_NAME"}'
```

------

Das Passwort muss base64-kodiert sein. Das folgende Beispiel zeigt, wie Sie ein Passwort in einer Unix-ähnlichen Umgebung kodieren.

```
echo -n PASSWORD | base64
```

# Verwalten von benutzerdefinierten Genehmigern
<a name="custom-auth-manage"></a>

 Sie können Ihre Autorisierer wie folgt verwalten. APIs 
+ [ListAuthorizers](https://docs.aws.amazon.com/iot/latest/apireference/API_ListAuthorizers.html): Zeigt alle Autorisierer in Ihrem Konto an.
+  [DescribeAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeAuthorizer.html): Zeigt die Eigenschaften des angegebenen Autorisierers an. Zu diesen Werten gehören das Erstellungsdatum, das Datum der letzten Änderung und andere Attribute.
+ [SetDefaultAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_SetDefaultAuthorizer.html): Gibt den Standardautorisierer für Ihre AWS IoT Core Datenendpunkte an. AWS IoT Core verwendet diesen Autorisierer, wenn ein Gerät keine AWS IoT Core Anmeldeinformationen weitergibt und keinen Autorisierer angibt. Weitere Informationen zur Verwendung von AWS IoT Core Anmeldeinformationen finden Sie unter. [Client-Authentifizierung](client-authentication.md)
+ [UpdateAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateAuthorizer.html): Ändert den Status, den Namen des Token-Schlüssels oder die öffentlichen Schlüssel für den angegebenen Autorisierer.
+  [DeleteAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteAuthorizer.html): Löscht den angegebenen Autorisierer. 

**Anmerkung**  
 Sie können die Signaturanforderungen eines Genehmigers nicht aktualisieren. Das bedeutet, dass Sie das Signieren in einem vorhandenen Genehmiger, der dies fordert, nicht deaktivieren können. Sie können auch nicht die Anmeldung bei einem vorhandenen Genehmiger verlangen, der dies nicht fordert. 

# Benutzerdefinierte Authentifizierung mit X.509-Client-Zertifikaten
<a name="custom-auth-509cert"></a>

Wenn Sie Geräte mit verbinden AWS IoT Core, stehen Ihnen mehrere [Authentifizierungstypen](protocols.md#connection-protocol-auth-mode) zur Verfügung. Sie können [X.509-Clientzertifikate](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) verwenden, mit denen Sie Client- und Geräteverbindungen authentifizieren können, oder [benutzerdefinierte Autorisierer definieren, um Ihre eigene Client-Authentifizierungs- und Autorisierungslogik](https://docs.aws.amazon.com//iot/latest/developerguide/custom-authentication.html) zu verwalten. In diesem Thema wird beschrieben, wie Sie die benutzerdefinierte Authentifizierung mit X.509-Clientzertifikaten verwenden.

Die Verwendung einer benutzerdefinierten Authentifizierung mit X.509-Zertifikaten kann hilfreich sein, wenn Sie Ihre Geräte bereits mit X.509-Zertifikaten authentifiziert haben und zusätzliche Validierungen und benutzerdefinierte Autorisierungen durchführen möchten. Wenn Sie beispielsweise die Daten Ihrer Geräte, wie z. B. deren Seriennummern, im X.509-Client-Zertifikat speichern, können Sie nach der AWS IoT Core Authentifizierung des X.509-Client-Zertifikats einen benutzerdefinierten Autorisierer verwenden, um bestimmte Geräte anhand der im Feld des Zertifikats gespeicherten Informationen zu identifizieren. CommonName Die Verwendung einer benutzerdefinierten Authentifizierung mit X.509-Zertifikaten kann Ihr Gerätesicherheitsmanagement beim Verbinden von Geräten verbessern AWS IoT Core und bietet mehr Flexibilität bei der Verwaltung der Authentifizierungs- und Autorisierungslogik. AWS IoT Core [unterstützt die benutzerdefinierte Authentifizierung mit X.509-Zertifikaten unter Verwendung des X.509-Zertifikats und des benutzerdefinierten Autorisierungstyps, der sowohl mit dem [MQTT-Protokoll als auch mit dem HTTPS-Protokoll](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html) funktioniert.](https://docs.aws.amazon.com//iot/latest/developerguide/http.html) [Weitere Informationen zu den Authentifizierungstypen und Anwendungsprotokollen, die von AWS IoT Core Geräteendpunkten unterstützt werden, finden Sie unter Gerätekommunikationsprotokolle.](https://docs.aws.amazon.com//iot/latest/developerguide/protocols.html)

**Anmerkung**  
Die benutzerdefinierte Authentifizierung mit X.509-Clientzertifikaten wird in den AWS GovCloud (US) Regionen nicht unterstützt.

**Wichtig**  
Sie müssen einen Endpunkt verwenden, der mithilfe von [Domänenkonfigurationen](iot-custom-endpoints-configurable.md) erstellt wurde. Darüber hinaus müssen Clients die Erweiterung [Server Name Indication (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) angeben, wenn sie eine Verbindung herstellen AWS IoT Core.

**Topics**
+ [Schritt 1: Registrieren Sie Ihre X.509-Clientzertifikate bei AWS IoT Core](#custom-auth-509cert-client)
+ [Schritt 2: Erstellen einer Lambda-Funktion](#custom-auth-509cert-lambda)
+ [Schritt 3: Erstellen Sie einen benutzerdefinierten Autorisierer](#custom-auth-509cert-authorizer)
+ [Schritt 4: Legen Sie den Authentifizierungstyp und das Anwendungsprotokoll in einer Domänenkonfiguration fest](#custom-auth-509cert-domainconfig)

## Schritt 1: Registrieren Sie Ihre X.509-Clientzertifikate bei AWS IoT Core
<a name="custom-auth-509cert-client"></a>

Falls Sie dies noch nicht getan haben, registrieren und aktivieren Sie Ihre [X.509-Client-Zertifikate](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) mit. AWS IoT Core Andernfalls überspringen Sie diesen Schritt und gehen Sie direkt zum nächsten.

Gehen Sie wie folgt vor AWS IoT Core, um Ihre Client-Zertifikate bei zu registrieren und zu aktivieren:

1. Wenn Sie [Kundenzertifikate direkt mit erstellen AWS IoT](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-create.html). Diese Client-Zertifikate werden automatisch bei registriert AWS IoT Core.

1. Wenn Sie [Ihre eigenen Client-Zertifikate erstellen](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-your-own.html), folgen Sie [diesen Anweisungen, um sie zu registrieren AWS IoT Core](https://docs.aws.amazon.com//iot/latest/developerguide/register-device-cert.html).

1. Folgen Sie [diesen Anweisungen](https://docs.aws.amazon.com//iot/latest/developerguide/activate-or-deactivate-device-cert.html), um Ihre Client-Zertifikate zu aktivieren.

## Schritt 2: Erstellen einer Lambda-Funktion
<a name="custom-auth-509cert-lambda"></a>

AWS IoT Core verwendet benutzerdefinierte Autorisierer, um benutzerdefinierte Authentifizierungs- und Autorisierungsschemata zu implementieren. Ein benutzerdefinierter Autorisierer ist mit einer Lambda-Funktion verknüpft, die bestimmt, ob ein Gerät authentifiziert ist und welche Operationen das Gerät ausführen darf. Wenn ein Gerät eine Verbindung herstellt AWS IoT Core, AWS IoT Core ruft es die Autorisierungsdetails ab, einschließlich des Autorisierernamens und der zugehörigen Lambda-Funktion, und ruft die Lambda-Funktion auf. Die Lambda-Funktion empfängt ein Ereignis, das ein JSON-Objekt mit den X.509-Client-Zertifikatsdaten des Geräts enthält. Ihre Lambda-Funktion verwendet dieses Event-JSON-Objekt, um die Authentifizierungsanfrage auszuwerten, die zu ergreifenden Aktionen zu entscheiden und eine Antwort zurückzusenden.

### Beispiel für ein Lambda-Funktionsereignis
<a name="custom-auth-509cert-event"></a>

Das folgende JSON-Beispielobjekt enthält alle möglichen Felder, die eingeschlossen werden können. Das eigentliche JSON-Objekt wird nur Felder enthalten, die für die spezifische Verbindungsanforderung relevant sind.

```
{
	"token": "aToken",
	"signatureVerified": true,
	"protocols": [
		"tls",
		"mqtt"
	],
	"protocolData": {
		"tls": {
			"serverName": "serverName",
			"x509CertificatePem": "x509CertificatePem",
			"principalId": "principalId"
		},
		"mqtt": {
			"clientId": "myClientId",
                     "username": "myUserName",
                     "password": "myPassword"
		}
	},
	"connectionMetadata": {
		"id": "UUID"
	}
}
```

`signatureVerified`  
Ein boolescher Wert, der angibt, ob die im Authorizer konfigurierte Token-Signatur verifiziert wurde oder nicht, bevor die Lambda-Funktion des Autorisierers aufgerufen wird. Wenn der Autorisierer so konfiguriert ist, dass er die Tokensignatur deaktiviert, ist dieses Feld falsch. 

`protocols`  
Ein Array, das die Protokolle enthält, die für die Anfrage zu erwarten sind.

`protocolData`  
Ein Objekt, das Informationen zu den in der Verbindung verwendeten Protokollen enthält. Es enthält protokollspezifische Details, die für Authentifizierung, Autorisierung und mehr nützlich sein können.  
`tls`- Dieses Objekt enthält Informationen zum TLS-Protokoll (Transport Layer Security).   
+ `serverName`- Die Hostnamenzeichenfolge [(Server Name Indication, SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1). AWS IoT Core erfordert, dass Geräte die [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`
+ `x509CertificatePem`- Das X.509-Zertifikat im PEM-Format, das für die Client-Authentifizierung in der TLS-Verbindung verwendet wird.
+ `principalId`- Die dem Client in der TLS-Verbindung zugeordnete Prinzipal-ID.
`mqtt`- Dieses Objekt enthält Informationen zum MQTT-Protokoll.  
+ `clientId`- Eine Zeichenfolge muss nur für den Fall angegeben werden, dass das Gerät diesen Wert sendet.
+ `username`- Der im MQTT Connect-Paket angegebene Benutzername.
+ `password`- Das im MQTT Connect-Paket angegebene Passwort.

`connectionMetadata`  
Metadaten der Verbindung.  
`id`- Die Verbindungs-ID, die Sie für die Protokollierung und Fehlerbehebung verwenden können.

**Anmerkung**  
In diesem Fall `principalId` handelt es sich um das JSON-Objekt `x509CertificatePem` und um zwei neue Felder in der Anfrage. Der Wert von `principalId` ist derselbe wie der Wert von`certificateId`. Weitere Informationen finden Sie unter [Zertifikat](https://docs.aws.amazon.com//iot/latest/apireference/API_Certificate.html).

### Beispiel für eine Antwort auf eine Lambda-Funktion
<a name="custom-auth-509cert-response"></a>

Die Lambda-Funktion sollte Informationen aus dem JSON-Ereignisobjekt verwenden, um die eingehende Verbindung zu authentifizieren und zu entscheiden, welche Aktionen in der Verbindung zulässig sind.

Das folgende JSON-Objekt enthält eine Beispielantwort, die Ihre Lambda-Funktion senden kann.

```
{
	"isAuthenticated": true,
	"principalId": "xxxxxxxx",
	"disconnectAfterInSeconds": 86400,
	"refreshAfterInSeconds": 300,
	"policyDocuments": [
		{
			"Version": "2012-10-17",		 	 	 
			"Statement": [
				{
					"Effect": "Allow",
					"Action": "iot:Publish",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topic/customauthtesting"
				}
			]
		}
	]
}
```

In diesem Beispiel sollte diese Funktion eine Antwort senden, die die folgenden Werte enthält.

`isAuthenticated`  
Ein boolescher Wert, der angibt, ob die Anfrage authentifiziert ist.

`principalId`  
Eine alphanumerische Zeichenfolge, die als Kennung für das von der benutzerdefinierten Autorisierungsanfrage gesendete Token dient. Der Wert muss eine alphanumerische Zeichenfolge mit mindestens einem und nicht mehr als 128 Zeichen sein. Es identifiziert die Verbindung in Protokollen. Der Wert von `principalId` muss mit dem Wert von `principalId` im Event-JSON-Objekt identisch sein (d. h. certificateId des X.509-Zertifikats).

`policyDocuments`  
Eine Liste von Richtliniendokumenten im AWS IoT Core JSON-Format. Der Wert ist optional und unterstützt [Ding-Richtlinienvariablen und [Zertifikatsrichtlinienvariablen](https://docs.aws.amazon.com//iot/latest/developerguide/cert-policy-variables.html)](https://docs.aws.amazon.com//iot/latest/developerguide/thing-policy-variables.html). Die maximale Anzahl von Richtliniendokumenten ist 10. Jedes Richtliniendokument darf maximal 2048 Zeichen enthalten. Wenn Sie mehrere Richtlinien an Ihr Client-Zertifikat und die Lambda-Funktion angehängt haben, ist die Berechtigung eine Sammlung aller Richtlinien. Weitere Informationen zum Erstellen von AWS IoT Core Richtlinien finden Sie unter [Richtlinien](https://docs.aws.amazon.com//iot/latest/developerguide/iot-policies.html).

`disconnectAfterInSeconds`  
Eine Ganzzahl, die die maximale Dauer (in Sekunden) der Verbindung zum AWS IoT Core Gateway angibt. Der Mindestwert ist 300 Sekunden und der Höchstwert ist 86.400 Sekunden. `disconnectAfterInSeconds`gilt für die gesamte Lebensdauer einer Verbindung und wird bei aufeinanderfolgenden Richtlinienaktualisierungen nicht aktualisiert.

`refreshAfterInSeconds`  
Eine Ganzzahl, die das Intervall zwischen Richtlinienaktualisierungen angibt. Wenn dieses Intervall abgelaufen ist, AWS IoT Core ruft die Lambda-Funktion auf, um Richtlinienaktualisierungen zu ermöglichen. Der Mindestwert ist 300 Sekunden und der Höchstwert 86 400 Sekunden.

### Beispiel-Lambda-Funktion
<a name="custom-auth-509cert-js-example"></a>

Im Folgenden finden Sie ein Beispiel für eine Lambda-Funktion von Node.js. Die Funktion untersucht das X.509-Zertifikat des Clients und extrahiert relevante Informationen wie die Seriennummer, den Fingerabdruck und den Namen des Antragstellers. Wenn die extrahierten Informationen den erwarteten Werten entsprechen, wird dem Client der Zugriff auf die Verbindung gewährt. Dieser Mechanismus stellt sicher, dass nur autorisierte Clients mit gültigen Zertifikaten eine Verbindung herstellen können.

```
const crypto = require('crypto');

exports.handler = async (event) => {
    
    // Extract the certificate PEM from the event
    const certPem = event.protocolData.tls.x509CertificatePem;
    
    // Parse the certificate using Node's crypto module
    const cert = new crypto.X509Certificate(certPem);
    
    var effect = "Deny";
    // Allow permissions only for a particular certificate serial, fingerprint, and subject
    if (cert.serialNumber === "7F8D2E4B9C1A5036DE8F7C4B2A91E5D80463BC9A1257" // This is a random serial
       && cert.fingerprint === "F2:9A:C4:1D:B5:E7:08:3F:6B:D0:4E:92:A7:C1:5B:8D:16:0F:E3:7A" // This is a random fingerprint
       && cert.subject === "allow.example.com") {
      effect = "Allow";
    }
    
    return generateAuthResponse(event.protocolData.tls.principalId, effect);
};


// Helper function to generate the authorization response.
function generateAuthResponse(principalId, effect) {
    const authResponse = {
        isAuthenticated: true,
        principalId,
        disconnectAfterInSeconds: 3600,
        refreshAfterInSeconds: 300,
        policyDocuments: [
          {
            Version: "2012-10-17",		 	 	 
            Statement: [
              {
                Action: ["iot:Connect"],
                Effect: effect,
                Resource: [
                  "arn:aws:iot:us-east-1:123456789012:client/myClientName"
                ]
              },
              {
                Action: ["iot:Publish"],
                Effect: effect,
                Resource: [
                  "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
                ]
              },
              {
                Action: ["iot:Subscribe"],
                Effect: effect,
                Resource: [
                   "arn:aws:iot:us-east-1:123456789012:topicfilter/telemetry/myClientName"
                ]
              },
              {
                Action: ["iot:Receive"],
                Effect: effect,
                Resource: [
                   "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
                ]
              }
            ]
          }
        ]
      };

  return authResponse;
}
```

Die vorhergehende Lambda-Funktion gibt das folgende JSON zurück, wenn sie ein Zertifikat mit der erwarteten Seriennummer, dem Fingerabdruck und dem Betreff empfängt. Der Wert von ist `x509CertificatePem` das im TLS-Handshake bereitgestellte Client-Zertifikat. Weitere Informationen finden Sie unter [Definieren Ihrer Lambda-Funktion](https://docs.aws.amazon.com//iot/latest/developerguide/config-custom-auth.html#custom-auth-lambda).

```
{
	"isAuthenticated": true,
	"principalId": "principalId in the event JSON object",
	"policyDocuments": [
		{
			"Version": "2012-10-17",		 	 	 
			"Statement": [
				{
					"Action": "iot:Connect",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:client/myClientName"
				},
				{
					"Action": "iot:Publish",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
				},
				{
					"Action": "iot:Subscribe",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/telemetry/myClientName"
				},
				{
					"Action": "iot:Receive",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
				}
			]
		}
	],
	"disconnectAfterInSeconds": 3600,
	"refreshAfterInSeconds": 300
}
```

## Schritt 3: Erstellen Sie einen benutzerdefinierten Autorisierer
<a name="custom-auth-509cert-authorizer"></a>

Nachdem [Sie die Lambda-Funktion definiert haben](#custom-auth-509cert-lambda), erstellen Sie einen benutzerdefinierten Authorizer, um Ihre eigene Client-Authentifizierungs- und Autorisierungslogik zu verwalten. Sie können den detaillierten Anweisungen in [Schritt 3: Erstellen einer Kundenautorisierungsressource und deren Autorisierung](https://docs.aws.amazon.com//iot/latest/developerguide/custom-auth-tutorial.html#custom-auth-tutorial-authorizer) folgen. Weitere Informationen finden Sie unter [Einen Autorisierer erstellen](https://docs.aws.amazon.com//iot/latest/developerguide/config-custom-auth.html). 

Bei der Erstellung des benutzerdefinierten Autorisierers müssen Sie die AWS IoT Erlaubnis erteilen, die Lambda-Funktion aufzurufen, nachdem sie erstellt wurde. Eine ausführliche Anleitung finden Sie unter [Autorisieren AWS IoT zum Aufrufen Ihrer Lambda-Funktion](custom-auth-authorize.md).

## Schritt 4: Legen Sie den Authentifizierungstyp und das Anwendungsprotokoll in einer Domänenkonfiguration fest
<a name="custom-auth-509cert-domainconfig"></a>

Um Geräte mithilfe einer benutzerdefinierten Authentifizierung mit X.509-Clientzertifikaten zu authentifizieren, müssen Sie den Authentifizierungstyp und das Anwendungsprotokoll in einer Domänenkonfiguration festlegen und die SNI-Erweiterung senden. Der Wert von `authenticationType` muss sein`CUSTOM_AUTH_X509`, und der Wert von `applicationProtocol` kann entweder oder sein. `SECURE_MQTT` `HTTPS`

### Legen Sie den Authentifizierungstyp und das Anwendungsprotokoll in der Domänenkonfiguration (CLI) fest
<a name="custom-auth-509cert-cli"></a>

Wenn Sie keine Domänenkonfiguration haben, verwenden Sie den [https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html)Befehl, um eine zu erstellen. Der Wert von `authenticationType` muss sein`CUSTOM_AUTH_X509`, und der Wert von `applicationProtocol` kann entweder `SECURE_MQTT` oder sein`HTTPS`.

```
aws iot create-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type CUSTOM_AUTH_X509 \  
    --application-protocol SECURE_MQTT \ 
    --authorizer-config '{
        "defaultAuthorizerName": my-custom-authorizer
    }'
```

Wenn Sie bereits über eine Domänenkonfiguration verfügen, verwenden Sie bei `applicationProtocol` Bedarf den [https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html)Befehl update `authenticationType` und. Beachten Sie, dass Sie den Authentifizierungstyp oder das Authentifizierungsprotokoll auf dem Standardendpunkt (`iot:Data-ATS`) nicht ändern können.

```
aws iot update-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type CUSTOM_AUTH_X509 \  
    --application-protocol SECURE_MQTT \
    --authorizer-config '{
        "defaultAuthorizerName": my-custom-authorizer
    }'
```

`domain-configuration-name`  
Der Name der Domänenkonfiguration.

`authentication-type`  
Der Authentifizierungstyp der Domänenkonfiguration. Weitere Informationen finden Sie unter [Auswahl eines Authentifizierungstyps](protocols.md#connection-protocol-auth-mode).

`application-protocol`  
Das Anwendungsprotokoll, mit dem Geräte kommunizieren AWS IoT Core. Weitere Informationen finden Sie unter [Auswahl eines Anwendungsprotokolls](protocols.md#protocol-selection).

`--authorizer-config`  
Ein Objekt, das die Autorisierungskonfiguration in einer Domänenkonfiguration angibt.

`defaultAuthorizerName`  
Der Name des Autorisierers für eine Domänenkonfiguration.

Weitere Informationen finden Sie unter [CreateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateDomainConfiguration.html)und in [UpdateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateDomainConfiguration.html)der *AWS IoT API-Referenz.* Weitere Informationen zur Domänenkonfiguration finden Sie unter [Domänenkonfigurationen](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html).

# Mithilfe der benutzerdefinierten Authentifizierung AWS IoT Core wird eine Verbindung hergestellt
<a name="custom-auth"></a>

 Geräte können AWS IoT Core mithilfe der benutzerdefinierten Authentifizierung mit jedem Protokoll, das Geräte-Messaging AWS IoT Core unterstützt, eine Verbindung herstellen. Weitere Informationen zu unterstützten Kommunikationsprotokollen finden Sie unter [Gerätekommunikationsprotokolle](protocols.md).  Die Verbindungsdaten, die Sie an die Lambda-Funktion Ihres Genehmigers übergeben, hängen vom verwendeten Protokoll ab. Weitere Informationen zum Erstellen der Lambda-Funktion Ihres Genehmigers finden Sie unter [Definieren Ihrer Lambda-Funktion](custom-auth-lambda.md). In den folgenden Abschnitten wird erläutert, wie Sie eine Verbindung zur Authentifizierung mit jedem unterstützten Protokoll herstellen.

## HTTPS
<a name="custom-auth-http"></a>

Geräte, an die Daten AWS IoT Core mithilfe der [HTTP Publish API](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_Publish.html) gesendet werden, können Anmeldeinformationen entweder über Anforderungsheader oder Abfrageparameter in ihren HTTP-POST-Anfragen übergeben. Geräte können mithilfe des Header- oder Abfrageparameters `x-amz-customauthorizer-name` einen aufzurufenden Genehmiger angeben. Wenn Sie die Tokensignatur in Ihrem Genehmiger aktiviert haben, müssen Sie den `token-key-name` und die `x-amz-customauthorizer-signature` entweder in den Anforderungsheadern oder Abfrageparametern übergeben. Beachten Sie, dass der `token-signature` Wert URL-codiert sein muss, wenn er vom Browser JavaScript aus verwendet wird.

**Anmerkung**  
Der Kundengenehmiger für das HTTPS-Protokoll unterstützt nur Veröffentlichungsvorgänge. Weitere Informationen über das HTTP-Protokoll finden Sie unter [Gerätekommunikationsprotokolle](protocols.md).

Die folgenden Beispielanforderungen zeigen, wie Sie diese Parameter sowohl in Anforderungsheadern als auch in Abfrageparametern übergeben. 

```
//Passing credentials via headers
POST /topics/topic?qos=qos HTTP/1.1
Host: your-endpoint 
x-amz-customauthorizer-signature: token-signature
token-key-name: token-value 
x-amz-customauthorizer-name: authorizer-name

//Passing credentials via query parameters
POST /topics/topic?qos=qos&x-amz-customauthorizer-signature=token-signature&token-key-name=token-value HTTP/1.1
```

## MQTT
<a name="custom-auth-mqtt"></a>

 Geräte, die über eine MQTT-Verbindung eine Verbindung herstellen, können Anmeldeinformationen über die `password` Felder `username` und AWS IoT Core von MQTT-Nachrichten weiterleiten. Der Wert `username` kann optional auch eine Abfragezeichenfolge enthalten, die zusätzliche Werte (einschließlich eines Tokens, einer Signatur und eines Genehmigernamens) an Ihren Genehmiger übergibt. Sie können diese Abfragezeichenfolge verwenden, wenn Sie anstelle der Werte `username` und `password` ein tokenbasiertes Authentifizierungsschema verwenden möchten.  

**Anmerkung**  
 Die Daten im Passwortfeld sind Base64-codiert von. AWS IoT Core Ihre Lambda-Funktion muss sie dekodieren. 

 Das folgende Beispiel enthält eine `username`-Zeichenfolge mit zusätzlichen Parametern, die ein Token und eine Signatur angeben.  

```
username?x-amz-customauthorizer-name=authorizer-name&x-amz-customauthorizer-signature=token-signature&token-key-name=token-value
```

Um einen Authorizer aufzurufen, müssen Geräte, die über MQTT und benutzerdefinierte Authentifizierung eine Verbindung herstellen, eine Verbindung über Port 443 herstellen. AWS IoT Core Sie müssen außerdem die TLS-Erweiterung Application Layer Protocol Negotiation (ALPN) mit dem Wert `mqtt` und die Erweiterung Server Name Indication (SNI) mit dem Hostnamen ihres Datenendpunkts übergeben. AWS IoT Core Der Wert `x-amz-customauthorizer-signature` sollte URL-kodiert sein, um Fehler zu vermeiden. Wir empfehlen außerdem dringend, dass die Werte `x-amz-customauthorizer-name` und `token-key-name` URL-kodiert sind. Weitere Informationen zu diesen Werten finden Sie unter [Gerätekommunikationsprotokolle](protocols.md). Die V2 [AWS IoT Geräte SDKs - SDKs, Mobil- und AWS IoT Geräteclient](iot-sdks.md) kann diese beiden Erweiterungen konfigurieren. 

## MQTT über WebSockets
<a name="custom-auth-websockets"></a>

 Geräte, die AWS IoT Core über MQTT-Over eine Verbindung herstellen, WebSockets können Anmeldeinformationen auf eine der beiden folgenden Arten weitergeben. 
+ Über Anforderungsheader oder Abfrageparameter in der HTTP-UPGRADE-Anfrage, um die WebSockets Verbindung herzustellen.
+ Über die Felder `username` und `password` in der MQTT-CONNECT-Nachricht.

 Wenn Sie Anmeldeinformationen über die MQTT-Connect-Nachricht weitergeben, sind die TLS-Erweiterungen ALPN und SNI erforderlich. Weitere Informationen zu diesen Erweiterungen finden Sie unter [MQTT](#custom-auth-mqtt). Das folgende Beispiel zeigt, wie Sie Anmeldeinformationen über die HTTP-Upgrade-Anforderung übergeben. 

```
GET /mqtt HTTP/1.1
Host: your-endpoint 
Upgrade: WebSocket 
Connection: Upgrade 
x-amz-customauthorizer-signature: token-signature
token-key-name: token-value 
sec-WebSocket-Key: any random base64 value 
sec-websocket-protocol: mqtt 
sec-WebSocket-Version: websocket version
```

## Signieren des Tokens
<a name="custom-auth-token-signature"></a>

Sie müssen das Token mit dem privaten Schlüssel des Paars aus öffentlichem und privatem Schlüssel signieren, das Sie im `create-authorizer`-Aufruf verwendet haben. Die folgenden Beispiele zeigen, wie die Tokensignatur mithilfe eines UNIX-ähnlichen Befehls und erstellt wird. JavaScript Sie verwenden den SHA-256-Hash-Algorithmus, um die Signatur zu kodieren.

------
#### [ Command line ]

```
echo -n TOKEN_VALUE | openssl dgst -sha256 -sign PEM encoded RSA private key | openssl base64
```

------
#### [ JavaScript ]

```
const crypto = require('crypto')

const key = "PEM encoded RSA private key"

const k = crypto.createPrivateKey(key)
let sign = crypto.createSign('SHA256')
sign.write(t)
sign.end()
const s = sign.sign(k, 'base64')
```

------

# Fehlerbehebung für Ihre Genehmiger
<a name="custom-auth-troubleshooting"></a>

 In diesem Thema werden häufig auftretende Probleme, die zu Konflikten bei benutzerdefinierten Authentifizierungsworkflows führen können, sowie Schritte zu deren Behebung beschrieben. **Um Probleme am effektivsten zu beheben, aktivieren Sie CloudWatch Protokolle für AWS IoT Core und setzen Sie die Protokollebene auf DEBUG.** Sie können CloudWatch Protokolle in der AWS IoT Core Konsole aktivieren ([https://console.aws.amazon.com/iot/](https://console.aws.amazon.com/iot/)). Weitere Informationen zum Aktivieren und Konfigurieren von Protokollen für AWS IoT Core finden Sie unter [Konfigurieren Sie die AWS IoT Protokollierung](configure-logging.md). 

**Anmerkung**  
Wenn Sie die Protokollebene für längere Zeit auf **DEBUG** belassen, CloudWatch können große Mengen an Protokolldaten gespeichert werden. Dies kann Ihre CloudWatch Gebühren erhöhen. Erwägen Sie, die ressourcenbasierte Protokollierung zu verwenden, um die Ausführlichkeit nur für Geräte in einer bestimmten Objektgruppe zu erhöhen. Weitere Informationen zur ressourcenbasierten Protokollierung finden Sie unter [Konfigurieren Sie die AWS IoT Protokollierung](configure-logging.md). Wenn Sie mit der Fehlerbehebung fertig sind, reduzieren Sie außerdem die Protokollebene auf eine weniger ausführliche Ebene.

Bevor Sie mit der Problembehandlung beginnen, überprüfen Sie [Grundlegendes zum Workflow für die benutzerdefinierte Authentifizierung](custom-authorizer.md) für eine allgemeine Übersicht über den benutzerdefinierten Authentifizierungsprozess. Dadurch können Sie leichter die mögliche Ursache eines Problems nachvollziehen und danach suchen.

In diesem Thema werden zwei Bereiche behandelt, die Sie untersuchen sollten.
+ Probleme im Zusammenhang mit der Lambda-Funktion Ihres Genehmigers.
+ Probleme im Zusammenhang mit Ihrem Gerät.

## Nach Problemen mit der Lambda-Funktion Ihres Genehmigers suchen
<a name="custom-auth-troubleshooting-lambda"></a>

Gehen Sie wie folgt vor, um sicherzustellen, dass die Verbindungsversuche Ihrer Geräte Ihre Lambda-Funktion aufrufen.

1. Überprüfen Sie, welche Lambda-Funktion Ihrem Genehmiger zugeordnet ist.

   Sie können dies tun, indem Sie die [DescribeAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeAuthorizer.html)API aufrufen oder im Bereich **Secure** der AWS IoT Core Konsole auf den gewünschten Autorisierer klicken.

1. Überprüfen Sie die Aufrufmetriken der Lambda-Funktion. Führen Sie dazu die folgenden Schritte aus.

   1. Öffnen Sie die AWS Lambda Konsole ([https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)) und wählen Sie die Funktion aus, die Ihrem Autorisierer zugeordnet ist.

   1. Wählen Sie die Registerkarte **Überwachen** und überprüfen Sie die Metriken des für Ihr Problem relevanten Zeitraums.

1. Wenn Sie keine Aufrufe sehen, überprüfen Sie, ob der Benutzer berechtigt AWS IoT Core ist, Ihre Lambda-Funktion aufzurufen. Wenn Sie Aufrufe sehen, fahren Sie mit dem nächsten Schritt fort. Führen Sie die folgenden Schritte aus, um sicherzustellen, dass Ihre Lambda-Funktion über die erforderlichen Berechtigungen verfügt.

   1. Wählen Sie in der Konsole den Tab „**Berechtigungen**“ für Ihre Funktion aus. AWS Lambda 

   1. Suchen Sie den Abschnitt **Ressourcenbasierte Richtlinie** am Seitenende. Wenn Ihre Lambda-Funktion über die erforderlichen Berechtigungen verfügt, sieht die Richtlinie wie im folgenden Beispiel aus.  
****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Id": "default",
        "Statement": [
          {
            "Sid": "Id123",
            "Effect": "Allow",
            "Principal": {
              "Service": "iot.amazonaws.com"
            },
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:us-east-1:111111111111:function:FunctionName",
            "Condition": {
              "ArnLike": {
                "AWS:SourceArn": "arn:aws:iot:us-east-1:111111111111:authorizer/AuthorizerName"
              },
              "StringEquals": {
                "AWS:SourceAccount": "111111111111"
              }
            }
          }
        ]
      }
      ```

   1. Diese Richtlinie erteilt dem AWS IoT Core Schulleiter die `InvokeFunction` Erlaubnis für Ihre Funktion. Wenn Sie sie nicht sehen, müssen Sie sie mithilfe der [AddPermission](https://docs.aws.amazon.com/lambda/latest/dg/API_AddPermission.html)API hinzufügen. Im folgenden Beispiel wird gezeigt, wie Sie sie über AWS CLI hinzufügen können.

      ```
      aws lambda add-permission --function-name FunctionName --principal iot.amazonaws.com --source-arn AuthorizerARn --statement-id Id-123 --action "lambda:InvokeFunction"
      ```

1. Wenn Sie Aufrufe sehen, stellen Sie sicher, dass keine Fehler vorliegen. Ein Fehler könnte darauf hinweisen, dass die Lambda-Funktion das Verbindungsereignis, das an sie AWS IoT Core gesendet wird, nicht richtig verarbeitet.

   Hinweise zur Behandlung des Ereignisses in Ihrer Lambda-Funktion finden Sie unter [Definieren Ihrer Lambda-Funktion](custom-auth-lambda.md). Sie können die Testfunktion in der AWS Lambda Konsole ([https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)) verwenden, um Testwerte in der Funktion fest zu codieren, um sicherzustellen, dass die Funktion Ereignisse korrekt verarbeitet.

1. Wenn Sie Aufrufe ohne Fehler sehen, Ihre Geräte jedoch keine Verbindung herstellen (oder Nachrichten veröffentlichen, abonnieren und empfangen) können, liegt das Problem möglicherweise daran, dass die Richtlinie, die Ihre Lambda-Funktion zurückgibt, keine Berechtigungen für die Aktionen gewährt, die Ihre Geräte ausführen möchten. Führen Sie die folgenden Schritte aus, um festzustellen, ob ein Fehler bei der Richtlinie vorliegt, die die Funktion zurückgibt.

   1. Verwenden Sie eine Amazon CloudWatch Logs Insights-Abfrage, um Protokolle über einen kurzen Zeitraum auf Fehler zu überprüfen. Die folgende Beispielabfrage sortiert Ereignisse nach Zeitstempel und sucht nach Fehlern.

      ```
      display clientId, eventType, status, @timestamp | sort @timestamp desc | filter status = "Failure"    
      ```

   1. Aktualisieren Sie Ihre Lambda-Funktion, um die Daten zu protokollieren, zu denen sie zurückkehrt, AWS IoT Core und das Ereignis, das die Funktion auslöst. Sie können diese Protokolle verwenden, um die Richtlinie zu überprüfen, die die Funktion erstellt.

1. Wenn Sie Aufrufe ohne Fehler sehen, Ihre Geräte jedoch keine Verbindung herstellen (oder Nachrichten veröffentlichen, abonnieren und empfangen) können, könnte eine weitere Ursache sein, dass Ihre Lambda-Funktion das Timeout-Limit überschritten hat. Das Timeout-Limit der Lambda-Funktion für den benutzerdefinierten Genehmiger beträgt 5 Sekunden. Sie können die Funktionsdauer in CloudWatch Protokollen oder Metriken überprüfen. 

## Untersuchen von Geräteproblemen
<a name="custom-auth-troubleshooting-investigate"></a>

Wenn Sie keine Probleme mit dem Aufrufen Ihrer Lambda-Funktion oder mit der Richtlinie, die die Funktion zurückgibt, feststellen, suchen Sie nach Problemen bei den Verbindungsversuchen Ihrer Geräte. Fehlerhaft formatierte Verbindungsanfragen können dazu führen, dass Ihr Autorisierer AWS IoT Core nicht ausgelöst wird. Verbindungsprobleme können sowohl auf TLS- als auch auf Anwendungsebene auftreten.

**Mögliche Probleme mit der TLS-Ebene:**
+ Kunden müssen bei allen benutzerdefinierten Authentifizierungsanfragen entweder einen Hostnamen-Header (HTTP, MQTT over WebSockets) oder die Server Name Indication TLS-Erweiterung (HTTP, MQTT over WebSockets, MQTT) übergeben. In beiden Fällen muss der übergebene Wert mit einem der Datenendpunkte Ihres Kontos übereinstimmen. AWS IoT Core Dies sind die Endpunkte, die zurückgegeben werden, wenn Sie die folgenden CLI-Befehle ausführen.
  + `aws iot describe-endpoint --endpoint-type iot:Data-ATS`
  + `aws iot describe-endpoint --endpoint-type iot:Data`(für ältere VeriSign Endpunkte)
+ Geräte, die eine benutzerdefinierte Authentifizierung in MQTT-Verbindungen verwenden, müssen auch die TLS-Erweiterung „Application Layer Protocol Negotiation“ (ALPN) mit dem Wert `mqtt` übergeben.
+ Die benutzerdefinierte Authentifizierung ist derzeit nur auf Port 443 verfügbar.

**Mögliche Probleme auf Anwendungsebene:**
+ Wenn das Signieren aktiviert ist (das Feld `signingDisabled` in Ihrem Genehmiger lautet „false“), suchen Sie nach den folgenden Signaturproblemen.
  + Stellen Sie sicher, dass Sie die Tokensignatur entweder im `x-amz-customauthorizer-signature`-Header oder in einem Abfragezeichenfolgenparameter übergeben.
  + Stellen Sie sicher, dass der Service keinen anderen Wert als das Token signiert.
  + Stellen Sie sicher, dass Sie das Token im Header- oder Abfrageparameter übergeben, den Sie im Feld `token-key-name` in Ihrem Genehmiger angegeben haben.
+ Stellen Sie sicher, dass der Genehmigername, den Sie im `x-amz-customauthorizer-name`-Header- oder Abfragezeichenfolgenparameter übergeben, gültig ist oder dass Sie einen Standardgenehmiger für Ihr Konto angegeben haben.

# 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"
        }
    ]
}
```

# Datenschutz in AWS IoT Core
<a name="data-protection"></a>

Das [Modell der AWS gemeinsamen Verantwortung](https://aws.amazon.com/compliance/shared-responsibility-model/) und geteilter Verantwortung gilt für den Datenschutz in AWS IoT Core. Wie in diesem Modell beschrieben, AWS ist verantwortlich für den Schutz der globalen Infrastruktur, auf der alle Systeme laufen AWS Cloud. Sie sind dafür verantwortlich, die Kontrolle über Ihre in dieser Infrastruktur gehosteten Inhalte zu behalten. Sie sind auch für die Sicherheitskonfiguration und die Verwaltungsaufgaben für die von Ihnen verwendeten AWS-Services verantwortlich. Weitere Informationen zum Datenschutz finden Sie unter [Häufig gestellte Fragen zum Datenschutz](https://aws.amazon.com/compliance/data-privacy-faq/). Informationen zum Datenschutz in Europa finden Sie im Blog-Beitrag [AWS -Modell der geteilten Verantwortung und in der DSGVO](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) im *AWS -Sicherheitsblog*.

Aus Datenschutzgründen empfehlen wir, dass Sie AWS-Konto Anmeldeinformationen schützen und einzelne Benutzer mit AWS IAM Identity Center oder AWS Identity and Access Management (IAM) einrichten. So erhält jeder Benutzer nur die Berechtigungen, die zum Durchführen seiner Aufgaben erforderlich sind. Außerdem empfehlen wir, die Daten mit folgenden Methoden schützen:
+ Verwenden Sie für jedes Konto die Multi-Faktor-Authentifizierung (MFA).
+ Wird verwendet SSL/TLS , um mit AWS Ressourcen zu kommunizieren. Wir benötigen TLS 1.2 und empfehlen TLS 1.3.
+ Richten Sie die API und die Protokollierung von Benutzeraktivitäten mit ein AWS CloudTrail. Informationen zur Verwendung von CloudTrail Pfaden zur Erfassung von AWS Aktivitäten finden Sie unter [Arbeiten mit CloudTrail Pfaden](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) im *AWS CloudTrail Benutzerhandbuch*.
+ Verwenden Sie AWS Verschlüsselungslösungen zusammen mit allen darin enthaltenen Standardsicherheitskontrollen AWS-Services.
+ Verwenden Sie erweiterte verwaltete Sicherheitsservices wie Amazon Macie, die dabei helfen, in Amazon S3 gespeicherte persönliche Daten zu erkennen und zu schützen.
+ Wenn Sie für den Zugriff AWS über eine Befehlszeilenschnittstelle oder eine API FIPS 140-3-validierte kryptografische Module benötigen, verwenden Sie einen FIPS-Endpunkt. Weitere Informationen über verfügbare FIPS-Endpunkte finden Sie unter [Federal Information Processing Standard (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

Wir empfehlen dringend, in Freitextfeldern, z. B. im Feld **Name**, keine vertraulichen oder sensiblen Informationen wie die E-Mail-Adressen Ihrer Kunden einzugeben. Dies gilt auch, wenn Sie mit der Konsole, der AWS IoT API oder auf andere AWS-Services Weise arbeiten oder diese verwenden. AWS CLI AWS SDKs Alle Daten, die Sie in Tags oder Freitextfelder eingeben, die für Namen verwendet werden, können für Abrechnungs- oder Diagnoseprotokolle verwendet werden. Wenn Sie eine URL für einen externen Server bereitstellen, empfehlen wir dringend, keine Anmeldeinformationen zur Validierung Ihrer Anforderung an den betreffenden Server in die URL einzuschließen.

Weitere Informationen zum Datenschutz enthält der Blog-Beitrag [AWS Shared Responsibility Model and GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) im *AWS -Sicherheitsblog*.

AWS IoT Geräte sammeln Daten, manipulieren diese Daten und senden diese Daten dann an einen anderen Webdienst. Sie können einige Daten für einen kurzen Zeitraum auf Ihrem Gerät speichern. Sie sind dafür verantwortlich, den Datenschutz für diese Daten im Ruhezustand zu gewährleisten. Wenn Ihr Gerät Daten an sendet AWS IoT, geschieht dies über eine TLS-Verbindung, wie später in diesem Abschnitt beschrieben wird. AWS IoT Geräte können Daten an jeden AWS Dienst senden. Weitere Informationen zur Datensicherheit der einzelnen Dienste finden Sie in der Dokumentation zu diesem Dienst. AWS IoT kann so konfiguriert werden, dass CloudWatch Protokolle in Logs geschrieben und AWS IoT API-Aufrufe protokolliert werden AWS CloudTrail. Weitere Informationen zur Datensicherheit für diese Dienste finden Sie unter [Authentifizierung und Zugriffskontrolle für Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/auth-and-access-control-cw.html) und [Verschlüsseln von CloudTrail Protokolldateien mit AWS KMS verwalteten Schlüsseln](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/encrypting-cloudtrail-log-files-with-aws-kms.html).

## Datenverschlüsselung in AWS IoT
<a name="data-protection-encrypt"></a>

Standardmäßig sind alle AWS IoT Daten während der Übertragung und Speicherung verschlüsselt. [Übertragene Daten werden mit TLS verschlüsselt](transport-security.md), und Daten im Ruhezustand werden mit AWS eigenen Schlüsseln verschlüsselt. AWS IoT unterstützt vom Kunden verwaltete AWS KMS keys (KMS-Schlüssel) über den AWS Key Management Service (AWS KMS). Device Advisor und AWS IoT Wireless verwenden jedoch nur an AWS-eigener Schlüssel , um Kundendaten zu verschlüsseln.

 

# Transportsicherheit in AWS IoT Core
<a name="transport-security"></a>

TLS (Transport Layer Security) ist ein kryptografisches Protokoll, das für die sichere Kommunikation über ein Computernetzwerk ausgelegt ist. Beim AWS IoT Core Device Gateway müssen Kunden die gesamte Kommunikation während der Übertragung verschlüsseln, indem sie TLS für Verbindungen zwischen Geräten und dem Gateway verwenden. TLS wird verwendet, um die Vertraulichkeit der Anwendungsprotokolle (MQTT, HTTP und WebSocket) zu gewährleisten, die von unterstützt werden. AWS IoT Core TLS unterstützt verschiedene Programmiersprachen und Betriebssysteme. Die AWS darin enthaltenen Daten werden durch den jeweiligen AWS Dienst verschlüsselt. Weitere Informationen zur Datenverschlüsselung bei anderen AWS Diensten finden Sie in der Sicherheitsdokumentation für diesen Dienst.

**Topics**
+ [TLS-Protokolle](#tls-ssl-policy)
+ [Sicherheitsrichtlinien](#tls-policy-table)
+ [Wichtige Hinweise zur Verkehrssicherheit in AWS IoT Core](#tls-ssl-core)
+ [Transportsicherheit für drahtlose LoRa WAN-Geräte](#tls-lorawan)

## TLS-Protokolle
<a name="tls-ssl-policy"></a>

AWS IoT Core unterstützt die folgenden Versionen des TLS-Protokolls:
+ TLS 1.3 
+ TLS 1.2

Mit AWS IoT Core können Sie die TLS-Einstellungen (für [TLS 1.2 und TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.2) [1.3](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.3)) in Domänenkonfigurationen konfigurieren. Weitere Informationen finden Sie unter [Konfiguration von TLS-Einstellungen in Domänenkonfigurationen](iot-endpoints-tls-config.md).

## Sicherheitsrichtlinien
<a name="tls-policy-table"></a>

Eine Sicherheitsrichtlinie ist eine Kombination aus TLS-Protokollen und ihren Verschlüsselungen, die bestimmen, welche Protokolle und Verschlüsselungen bei TLS-Verhandlungen zwischen einem Client und einem Server unterstützt werden. Sie können Ihre Geräte so konfigurieren, dass sie je nach Bedarf vordefinierte Sicherheitsrichtlinien verwenden. Beachten Sie, dass benutzerdefinierte Sicherheitsrichtlinien AWS IoT Core nicht unterstützt werden.

Sie können eine der vordefinierten Sicherheitsrichtlinien für Ihre Geräte auswählen, wenn Sie eine Verbindung herstellen AWS IoT Core. Die Namen der neuesten vordefinierten Sicherheitsrichtlinien AWS IoT Core enthalten Versionsinformationen, die auf dem Jahr und Monat basieren, in dem sie veröffentlicht wurden. Die vordefinierte Standardsicherheitsrichtlinie ist beispielsweise `IoTSecurityPolicy_TLS13_1_2_2022_10`. Um eine Sicherheitsrichtlinie anzugeben, können Sie die AWS IoT Konsole oder die verwenden AWS CLI. Weitere Informationen finden Sie unter [Konfiguration von TLS-Einstellungen in Domänenkonfigurationen](iot-endpoints-tls-config.md).

In der folgenden Tabelle werden die aktuellen vordefinierten Sicherheitsrichtlinien beschrieben, die von AWS IoT Core unterstützt werden. Die `IotSecurityPolicy_` wurde aus Richtliniennamen in der Überschriftenzeile entfernt, sodass sie passen.


| **Sicherheitsrichtlinie** | TLS13\$11\$13\$12022\$110 | TLS13\$11\$12\$12022\$110 | TLS12\$11\$12\$12022\$110 | TLS12\$11\$10\$12016\$101\$1 | TLS12\$11\$10\$12015\$101\$1 | 
| --- | --- | --- | --- | --- | --- | 
| TCP-Port |  443/8443/8883  |  443/8443/8883  |  443/8443/8883  | 443 | 8443/8883 | 443 | 8443/8883 | 
| TLS-Protokolle | 
| TLS 1.2 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| TLS 1.3 | ✓ | ✓ |  |  |  |  |  | 
| TLS-Verschlüsselungsverfahren | 
| TLS AES 128 GCM SHA256 | ✓ | ✓ |  |  |  |  |  | 
| TLS\$1AES\$1256\$1GCM\$1 SHA384 | ✓ | ✓ |  |  |  |  |  | 
| TLS\$1 \$1 CHACHA20 POLY1305 SHA256 | ✓ | ✓ |  |  |  |  |  | 
| ECDHE-RSA- -GCM- AES128 SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- AES128 - SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- AES128 -SHA |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- AES256 -GCM- SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- AES256 - SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- AES256 -SHA |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES128-GCM- SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES128-SHA256 |  | ✓ | ✓ | ✓ |  | ✓ | ✓ | 
| AES128-SCHA |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES256-GCM- SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES256-SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES256-SCHA |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| DHE-RSA-SHA AES256 |  |  |  |  |  | ✓ | ✓ | 
| ECDHE-ECDSA- AES128 -GCM- SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECDSA- - AES128 SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECDSA- -SHA AES128 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECDSA- -GCM- AES256 SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECDSA- - AES256 SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECDSA- -SHA AES256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 

**Anmerkung**  
`TLS12_1_0_2016_01`ist nur in den folgenden Sprachen verfügbar AWS-Regionen: ap-east-1, ap-northeast-2, ap-south-1, ap-southeast-2, ca-central-1, cn-north-1, cn-northwest-1, eu-north-1, eu-west-2, eu-west-3, me-south-1, sa-east-1, us-east-2, -1, -2, us-west-1. us-gov-west us-gov-west  
`TLS12_1_0_2015_01`ist nur in den folgenden Ländern verfügbar AWS-Regionen: ap-northeast-1, ap-southeast-1, eu-central-1, eu-west-1, us-east-1, us-west-2.

## Wichtige Hinweise zur Verkehrssicherheit in AWS IoT Core
<a name="tls-ssl-core"></a>

Bei Geräten, die AWS IoT Core über [MQTT](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html) eine Verbindung herstellen, verschlüsselt TLS die Verbindung zwischen den Geräten und dem Broker und AWS IoT Core verwendet die TLS-Client-Authentifizierung, um Geräte zu identifizieren. Weitere Informationen finden Sie unter [Client-Authentifizierung](https://docs.aws.amazon.com//iot/latest/developerguide/client-authentication.html). Bei Geräten, die AWS IoT Core über [HTTP](https://docs.aws.amazon.com//iot/latest/developerguide/http.html) eine Verbindung herstellen, verschlüsselt TLS die Verbindung zwischen den Geräten und dem Broker, und die Authentifizierung wird an AWS Signature Version 4 delegiert. Weitere Informationen finden Sie unter Signieren von Anforderungen mit Signature Version 4 in der *Allgemeinen Referenz zu AWS *.

Wenn Sie Geräte mit verbinden AWS IoT Core, ist das Senden der [SNI-Erweiterung (Server Name Indication)](https://tools.ietf.org/html/rfc3546#section-3.1) nicht erforderlich, wird aber dringend empfohlen. Um Funktionen wie die [Registrierung mehrerer Konten](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html#multiple-account-cert), [benutzerdefinierte Domänen](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable-custom.html), [VPC-Endpunkte](https://docs.aws.amazon.com//iot/latest/developerguide/IoTCore-VPC.html) und [konfigurierte TLS-Richtlinien](https://docs.aws.amazon.com//iot/latest/developerguide/iot-endpoints-tls-config.html) zu verwenden, müssen Sie die SNI-Erweiterung verwenden und die vollständige Endpunktadresse in das Feld eingeben. `host_name` Im Feld `host_name` muss der Endpunkt angegeben sein, den Sie aufrufen. Dieser Endpunkt muss einer der folgenden sein:
+ den von `aws iot [describe-endpoint](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-endpoint.html) --endpoint-type iot:Data-ATS` zurückgegebenen `endpointAddress`
+ den von `aws iot [describe-domain-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-domain-configuration.html) –-domain-configuration-name "domain_configuration_name"` zurückgegebenen `domainName`

Verbindungsversuche von Geräten mit dem falschen oder `host_name` ungültigen Wert schlagen fehl. AWS IoT Core protokolliert Fehler CloudWatch für den Authentifizierungstyp [Benutzerdefinierte Authentifizierung](https://docs.aws.amazon.com//iot/latest/developerguide/custom-authentication.html).

AWS IoT Core unterstützt die [SessionTicket TLS-Erweiterung](https://www.ietf.org/rfc/rfc5077.txt) nicht.

## Transportsicherheit für drahtlose LoRa WAN-Geräte
<a name="tls-lorawan"></a>

LoRaWAN-Geräte folgen den in [LoRaWAN™ SECURITY: A White Paper Prepared for the LoRa Alliance™ von Gemalto, Actility und](https://lora-alliance.org/sites/default/files/2019-05/lorawan_security_whitepaper.pdf) Semtech beschriebenen Sicherheitspraktiken. 

Weitere Informationen zur Transportsicherheit mit LoRa WAN-Geräten finden Sie unter [LoRaWAN-Daten und](https://docs.aws.amazon.com/iot-wireless/latest/developerguide/iot-lorawan-security.html) Transportsicherheit.

# Datenverschlüsselung in AWS IoT
<a name="data-encryption"></a>

Datenschutz bezieht sich auf den Schutz von Daten während der Übertragung (beim Hin- und Hersenden AWS IoT Core) und im Ruhezustand (während sie auf Geräten oder von anderen AWS Diensten gespeichert werden). Alle an AWS IoT Core gesendeten Daten werden über eine TLS-Verbindung unter Verwendung von MQTT, HTTPS und WebSocket Protokollen gesendet, sodass sie während der Übertragung standardmäßig sicher sind. AWS IoT Core sammelt Daten von Geräten und sendet sie dann zur weiteren Verarbeitung an andere AWS Dienste. Weitere Informationen zur Datenverschlüsselung für andere AWS -Services finden Sie in der Sicherheitsdokumentation des Services. Weitere Informationen finden Sie unter [Datenverschlüsselung im Ruhezustand](encryption-at-rest.md).

FreeRTOS bietet eine PKCS\$111-Bibliothek, die Schlüsselspeicher abstrahiert, auf kryptografische Objekte zugreift und Sitzungen verwaltet. Es liegt in Ihrer Verantwortung, diese Bibliothek zu verwenden, um Daten im Ruhezustand auf Ihren Geräten zu verschlüsseln. Weitere Informationen finden Sie unter [ FreeRTOS\$111-Bibliothek (Public Key Cryptography Standard)](https://docs.aws.amazon.com/freertos/latest/userguide/security-pkcs.html).

# Datenverschlüsselung im Ruhezustand in AWS IoT Core
<a name="encryption-at-rest"></a>

Standardmäßig werden alle AWS IoT Core Daten im Ruhezustand mit AWS eigenen Schlüsseln verschlüsselt. AWS IoT Core unterstützt auch symmetrische, vom Kunden verwaltete Schlüssel von AWS Key Management Service (AWS KMS). Mit vom Kunden verwalteten Schlüsseln können Sie die AWS KMS Schlüssel in Ihrem AWS Konto erstellen, besitzen und verwalten. AWS IoT Core verwendet Ihre KMS-Schlüssel, um Ihre Daten im Ruhezustand zu verschlüsseln. Sie haben die volle Kontrolle über diese KMS-Schlüssel, einschließlich der Erstellung und Verwaltung ihrer wichtigsten Richtlinien. Sie können auch IAM-Richtlinien für die Rollen konfigurieren, die Zugriff darauf haben, AWS KMS um die Berechtigungen für diese Schlüssel zu kontrollieren.

## AWS eigene Schlüssel
<a name="aws-owned-keys"></a>

AWS Eigene Schlüssel sind eine Sammlung von KMS-Schlüsseln, die ein AWS Dienst besitzt und verwaltet, sodass sie in mehreren AWS Konten verwendet werden können. AWS Dienste können AWS eigene Schlüssel verwenden, um Ihre Daten zu schützen. Standardmäßig werden Daten im Ruhezustand mit AWS eigenen Schlüsseln verschlüsselt. AWS IoT Core Diese Schlüssel werden vom Dienst verwaltet. Sie können AWS eigene Schlüssel nicht anzeigen, verwalten oder verwenden. Sie müssen jedoch keine Maßnahmen ergreifen, um diese Schlüssel zu schützen.

Weitere Informationen zu AWS eigenen Schlüsseln finden Sie unter [AWS Eigene Schlüssel](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-key) im *AWS Key Management Service Entwicklerhandbuch*.

## Kundenseitig verwaltete Schlüssel
<a name="customer-managed-keys"></a>

Von Kunden verwaltete Schlüssel sind KMS-Schlüssel in Ihrem AWS Konto, die Sie erstellen, besitzen und verwalten. Sie haben die volle Kontrolle über diese AWS KMS Schlüssel, einschließlich der Erstellung und Verwaltung ihrer wichtigsten Richtlinien. Sie können auch IAM-Richtlinien für die Rollen konfigurieren, die Zugriff darauf haben, AWS KMS um die Berechtigungen für diese Schlüssel zu kontrollieren. Sie können so konfigurieren AWS IoT Core , dass Ihre Daten mithilfe von kundenverwalteten KMS-Schlüsseln verschlüsselt werden.

Weitere Informationen über kundenverwaltete Schlüssel finden Sie unter [Kundenverwaltete ](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)Schlüssel im *AWS Key Management Service Developer Guide*.

Gehen Sie wie folgt vor, um sich für vom Kunden verwaltete Schlüssel anzumelden: AWS IoT Core

**Topics**
+ [Schritt 1: Erstellen eines kundenverwalteten Schlüssels](#encryption-at-rest-cmk-create)
+ [Schritt 2: Erstellen Sie eine IAM-Rolle, um AWS IoT Core Berechtigungen zur Verwendung des KMS-Schlüssels zu erteilen](#create-an-iam-role)
+ [Schritt 3: Melden Sie sich für vom Kunden verwaltete Schlüssel an AWS IoT Core](#opt-in-customer-managed-keys)
+ [Schritt 4: Für den Betrieb der AWS IoT Core Steuerungsebene sind zusätzliche Berechtigungen erforderlich](#cmk-control-plane-permissions)
+ [Schritt 5: Schlüssel verwalten](#understanding-key-health)
+ [Schritt 6: Überwachung des Zustands wichtiger Schlüssel](#health-status-monitoring)

### Schritt 1: Erstellen eines kundenverwalteten Schlüssels
<a name="encryption-at-rest-cmk-create"></a>

Sie können einen symmetrischen, vom Kunden verwalteten Schlüssel mithilfe der AWS KMS Konsole oder der AWS KMS CLI-Befehle erstellen. Das `keySpec` muss sein `SYMMETRIC_DEFAULT` und das `keyUsage` muss sein. `ENCRYPT_DECRYPT`

**Anmerkung**  
AWS IoT Core unterstützt nur AWS KMS Schlüssel mit `SYMMETRIC_DEFAULT` Schlüsselspezifikation und `ENCRYPT_DECRYPT` Schlüsselverwendung für vom Kunden verwaltete Schlüssel.

Im Folgenden finden Sie einen AWS CLI Beispielbefehl zum Erstellen eines KMS-Schlüssels, der zusammen mit AWS IoT Core vom Kunden verwalteten Schlüsseln verwendet werden kann.

```
aws kms create-key --key-spec SYMMETRIC_DEFAULT --key-usage ENCRYPT_DECRYPT --region us-west-2
```

Im Folgenden finden Sie ein Beispiel für die Ausgabe des Befehls.

```
{
    "KeyMetadata": {
        "AWSAccountId": "111122223333",
        "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
        "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
        "CreationDate": "2024-09-19T11:45:23.982000-07:00",
        "Enabled": true,
        "Description": "",
        "KeyUsage": "ENCRYPT_DECRYPT",
        "KeyState": "Enabled",
        "Origin": "AWS_KMS",
        "KeyManager": "CUSTOMER",
        "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT",
        "KeySpec": "SYMMETRIC_DEFAULT",
        "EncryptionAlgorithms": [
            "SYMMETRIC_DEFAULT"
        ],
        "MultiRegion": false
    }
}
```

Weitere Informationen finden Sie unter [Creating a symmetric customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) im *AWS Key Management Service Developer Guide*.

#### Schlüsselrichtlinie
<a name="key-policy"></a>

Bei der Erstellung eines vom Kunden verwalteten Schlüssels können Sie eine Schlüsselrichtlinie angeben. Schlüsselrichtlinien steuern den Zugriff auf den vom Kunden verwalteten Schlüssel. Jeder vom Kunden verwaltete Schlüssel muss über genau eine Schlüsselrichtlinie verfügen, die aussagt, wer den Schlüssel wie verwenden kann. Weitere Informationen finden Sie unter [Wichtige Richtlinien](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) im *AWS Key Management Service Entwicklerhandbuch*.

AWS IoT Core verwendet eine IAM-Rolle in Ihrem Konto, um auf Ihren vom Kunden verwalteten Schlüssel zuzugreifen. Wenn Sie eine benutzerdefinierte Schlüsselrichtlinie verwenden, stellen Sie sicher, dass die für diesen Schlüssel erstellte IAM-Rolle über die folgenden Berechtigungen verfügt:
+ `kms:DescribeKey`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`

### Schritt 2: Erstellen Sie eine IAM-Rolle, um AWS IoT Core Berechtigungen zur Verwendung des KMS-Schlüssels zu erteilen
<a name="create-an-iam-role"></a>

 AWS IoT Core Um den von Ihnen erstellten KMS-Schlüssel zur Verschlüsselung Ihrer Daten im Ruhezustand verwenden zu können, müssen Sie auch eine IAM-Rolle in Ihrem Konto erstellen, die davon ausgehen AWS IoT Core kann, auf den KMS-Schlüssel zuzugreifen.

Die Rolle muss über die folgende Vertrauensrichtlinie verfügen, damit sie diese AWS IoT Core Rolle übernehmen kann.

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

Stellen Sie sicher, dass die mit der IAM-Rolle verknüpften IAM-Richtlinien über die folgenden Berechtigungen für den KMS-Schlüssel verfügen:
+ `kms:DescribeKey`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`

Im Folgenden finden Sie ein Beispiel für eine IAM-Richtlinie mit den erforderlichen Berechtigungen für vom Kunden verwaltete Schlüssel.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowIoTToAccessKMSResource",
            "Effect": "Allow",
            "Action": [
                "kms:DescribeKey",
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:ReEncryptTo",
                "kms:ReEncryptFrom",
                "kms:GenerateDataKeyWithoutPlaintext"
            ],
            "Resource": [
                "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
            ],
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:aws-crypto-ec:vendor": "iot.amazonaws.com"
                }
            }
        }
    ]
}
```

*Weitere Informationen finden Sie im Benutzerhandbuch 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).AWS Identity and Access Management *

### Schritt 3: Melden Sie sich für vom Kunden verwaltete Schlüssel an AWS IoT Core
<a name="opt-in-customer-managed-keys"></a>

Nachdem Sie alle vorherigen Schritte abgeschlossen haben, führen Sie den `update-encryption-configuration` CLI-Befehl aus, um sich mit vom Kunden verwalteten Schlüsseln anzumelden AWS IoT Core. Wenn Sie sich für vom Kunden verwaltete Schlüssel entscheiden, werden alle AWS IoT Core Ressourcen in Ihrem AWS Konto mit dem angegebenen AWS KMS Schlüssel verschlüsselt.

1. Führen Sie den `update-encryption-configuration` CLI-Befehl aus AWS CLI, um sich für die AWS IoT Core Verwendung von vom Kunden verwalteten Schlüsseln zu entscheiden.

   ```
   aws iot update-encryption-configuration --encryption-type "CUSTOMER_MANAGED_KMS_KEY" \
   --kms-access-role-arn "arn:aws:iam::111122223333:role/myrole" \
   --kms-key-arn "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" --region us-west-2
   ```

1. Führen Sie den `describe-encryption-configuration` CLI-Befehl aus, um zu überprüfen AWS CLI, ob vom Kunden verwaltete Schlüssel AWS IoT Core verwendet werden:

   ```
   aws iot describe-encryption-configuration --region us-west-2
   ```

   Wenn Sie vom Kunden verwaltete Schlüssel aktiviert haben AWS IoT Core, kann die Ausgabe wie folgt aussehen:

   ```
   {
       "encryptionType": "CUSTOMER_MANAGED_KMS_KEY",
       "kmsKeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
       "kmsAccessRoleArn": "arn:aws:iam::111122223333:role/myrole",
       "configurationDetails": {
           "configurationStatus": "HEALTHY"
       },
       "lastModifiedDate": "2024-09-26T22:01:02.365000-07:00"
   }
   ```

   Das `lastModifiedDate` Feld gibt das Datum an, an dem die Verschlüsselungskonfiguration zuletzt aktualisiert wurde.

   Wenn Sie vom Kunden verwaltete Schlüssel nicht aktiviert haben, kann die Ausgabe wie folgt aussehen:

   ```
   {
       "encryptionType": "AWS_OWNED_KMS_KEY",
       "lastModifiedDate": "2024-09-26T22:01:02.365000-07:00"
   }
   ```

### Schritt 4: Für den Betrieb der AWS IoT Core Steuerungsebene sind zusätzliche Berechtigungen erforderlich
<a name="cmk-control-plane-permissions"></a>

Nachdem Sie sich für vom Kunden verwaltete Schlüssel entschieden haben, werden alle AWS IoT Core Ressourcen, die zu Ihrem AWS Konto gehören, mit dem bereitgestellten KMS-Schlüssel verschlüsselt. Für alle Operationen auf der Steuerungsebene benötigt der Anrufer nun zusätzlich zu den für den jeweiligen Vorgang auf der AWS IoT Core Ressource erforderlichen Berechtigungen auch Berechtigungen für den KMS-Schlüssel. `kms:Decrypt` Wenn der Aufrufer nicht über die `kms:Decrypt` entsprechende Berechtigung verfügt und einen API-Aufruf tätigt, für den Daten ver- oder entschlüsselt werden müssen (z. B.`GetPolicy`), erhält er eine. `UnauthorizedException`

Wenn Sie beispielsweise anrufen`GetPolicy`, benötigen Sie `iot:GetPolicy` sowohl beides als auch `kms:Decrypt` Berechtigungen für Ihren vom Kunden verwalteten KMS-Schlüssel, damit der API-Aufruf erfolgreich ist.

**Anmerkung**  
Wenn Sie IAM-Benutzer oder -Rollen aktualisieren, um AWS KMS Berechtigungen für den für Ihre Verschlüsselungskonfiguration verwendeten Schlüssel zu gewähren, stellen Sie sicher, dass die KMS-Schlüsselrichtlinie auch den jeweiligen IAM-Benutzern oder -Rollen die erforderlichen Berechtigungen gewährt.

#### AWS KMS Berechtigungen für `UpdateEncryptionConfiguration`
<a name="kms-permissions-update-encryption-configuration"></a>

Für den `UpdateEncryptionConfiguration` API-Aufruf sind die folgenden AWS KMS Berechtigungen für den KMS-Schlüssel erforderlich, damit Sie sich für vom Kunden verwaltete Schlüssel entscheiden oder die Schlüsselkonfiguration ändern können:
+ `kms:DescribeKey`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`

#### AWS KMS Berechtigungen für alle anderen Steuerungsebenen APIs
<a name="kms-permissions-control-plane-apis"></a>

Für die meisten APIs Steuerungsebenen sind `kms:Decrypt` Berechtigungen erforderlich, wenn vom Kunden verwaltete Schlüssel aktiviert sind. Für einige APIs sind diese zusätzlichen Berechtigungen jedoch nicht erforderlich:

APIs für die keine AWS KMS Berechtigungen erforderlich sind  
Die `List*` und fallen `Delete*` APIs nicht in diesen Eimer. Kunden können jederzeit eine beliebige API `List*` oder eine API auf `Delete*` Steuerungsebene aufrufen, und diese API-Aufrufe würden auch dann erfolgreich sein, wenn der Aufrufer nicht über `kms:Decrypt` die entsprechende Genehmigung verfügt. Diese API-Aufrufe sind auch dann erfolgreich, wenn Ihr vom Kunden verwalteter Schlüssel fehlerhaft ist `List*` und `Delete*` APIs keine Entschlüsselung erfolgt.  
+ **List\$1 APIs** — Alle Auflistungsvorgänge (z. B.,,`ListThings`) `ListPolicies` `ListCertificates`
+ **Löschen\$1 APIs** — Alle Löschvorgänge (zum Beispiel,,,`DeleteThing`) `DeletePolicy` `DeleteCertificate`

### Schritt 5: Schlüssel verwalten
<a name="understanding-key-health"></a>

AWS IoT Core überprüft regelmäßig die vom Kunden verwaltete Schlüsselkonfiguration, um sicherzustellen, dass die Verschlüsselungs- und Entschlüsselungsvorgänge nicht beeinträchtigt werden. Diese Integritätsprüfungen werden einmal pro Minute durchgeführt und überprüfen AWS IoT Core, ob auf den Schlüssel und die zugehörige IAM-Rolle zugegriffen und diese für Verschlüsselungs- und AWS KMS Entschlüsselungsvorgänge verwendet werden kann.

HEALTHY  
AWS IoT Core kann über die angegebene IAM-Rolle erfolgreich auf den AWS KMS Schlüssel zugreifen und Operationen ausführen. encryption/decryption Alle Komponenten funktionieren einwandfrei.

UNHEALTHY  
AWS IoT Core kann nicht auf den AWS KMS Schlüssel zugreifen oder ihn verwenden. Dadurch werden neue Verschlüsselungsvorgänge verhindert und die Funktionalität des Dienstes kann beeinträchtigt werden. Das `errorCode` Feld gibt an, ob das Problem mit dem Schlüssel oder der IAM-Rolle zusammenhängt.

#### Kundenaktionen, die sich auf den Zustand wichtiger Schlüssel auswirken können
<a name="customer-actions-affecting-health"></a>

Verschiedene Kundenaktionen können dazu führen, dass sich der Status des Schlüsselzustands von `HEALTHY` zu ändert`UNHEALTHY`:

Wichtige Aktionen  
+ **Löschen eines AWS KMS Schlüssels** — Wenn Sie das Löschen eines Schlüssels planen, befindet er sich in einem `Pending deletion` Status und kann nicht verwendet werden
+ ** AWS KMS Schlüssel deaktivieren — Wenn Sie einen** KMS-Schlüssel deaktivieren, kann er nicht mehr für Verschlüsselungs-/Entschlüsselungsvorgänge verwendet werden
+ **Schlüssel für das Löschen planen — Der Schlüssel wird unbrauchbar, wenn der Löschvorgang** abgeschlossen ist
+ **Änderung der Schlüsselrichtlinie** — Entfernen der erforderlichen Zugriffsberechtigungen AWS IoT Core 
+ **Ändern der Berechtigungen zur Schlüsselnutzung** — Einschränkung der erforderlichen Aktionen AWS KMS 

Rollenbezogene IAM-Aktionen  
+ **Löschen der IAM-Rolle** — es AWS IoT Core kann nicht angenommen werden, dass die Rolle auf den Schlüssel zugreift
+ **Rollenberechtigungen ändern** — Erforderliche AWS KMS Berechtigungen aus der Rollenrichtlinie entfernen
+ **Änderung der Vertrauensrichtlinie** — Verhindern, dass der AWS IoT Core Dienst die Rolle übernimmt
+ **Hinzufügen einschränkender Bedingungen** — Bedingungen, die die Nutzung der Rolle AWS IoT Core verhindern

Aktionen auf Kontoebene  
+ **Kontoübergreifende Änderungen am Schlüsselzugriff** — Ändern der Berechtigungen für Schlüssel in verschiedenen Konten
+ **Richtlinien zur Servicesteuerung (SCPs) — Richtlinien** auf Organisationsebene, die den Zugriff einschränken AWS KMS 
+ **IAM-Richtlinien auf Kontoebene — Richtlinien**, die den Schlüsselzugriff außer Kraft setzen oder mit diesem in Konflikt geraten

**Wichtig**  
Alle Änderungen an AWS KMS Schlüsseln, IAM-Rollen oder Richtlinien, die von verwendet werden, AWS IoT Core sollten zuerst in Entwicklungsumgebungen getestet werden. Überwachen Sie den Zustand der Schlüssel genau, nachdem Sie Änderungen vorgenommen haben, um sicherzustellen, dass die AWS IoT Core Funktionalität nicht beeinträchtigt wird.

#### Die Verschlüsselungskonfiguration wird aktualisiert
<a name="key-transition"></a>

Aktualisieren Sie Ihre Verschlüsselungskonfiguration AWS IoT Core , um von einem vom Kunden verwalteten Schlüssel zu einem anderen oder zwischen AWS eigenen Schlüsseln und kundenverwalteten Schlüsseln zu wechseln.

So ändern Sie die Konfiguration auf einen anderen vom Kunden verwalteten Schlüssel:

1. Erstellen Sie einen neuen, vom Kunden verwalteten Schlüssel, indem Sie die Schritte unter befolgen[Schritt 1: Erstellen eines kundenverwalteten Schlüssels](#encryption-at-rest-cmk-create).

1. Aktualisieren Sie Ihre IAM-Rollenrichtlinie so, dass sie während des Aktualisierungszeitraums Berechtigungen sowohl für die alten als auch für die neuen Schlüssel enthält.

1. Aktualisieren Sie Ihre Verschlüsselungskonfiguration, um den neuen Schlüssel zu verwenden:

   ```
   aws iot update-encryption-configuration --encryption-type "CUSTOMER_MANAGED_KMS_KEY" \
   --kms-access-role-arn "arn:aws:iam::111122223333:role/myrole" \
   --kms-key-arn "arn:aws:kms:us-west-2:111122223333:key/new-key-id"
   ```

So ändern Sie die Konfiguration von vom Kunden verwalteten Schlüsseln zurück zu AWS eigenen Schlüsseln:

```
aws iot update-encryption-configuration --encryption-type "AWS_OWNED_KMS_KEY"
```

**Anmerkung**  
Stellen Sie bei der Aktualisierung der Verschlüsselungskonfiguration für neue, vom Kunden verwaltete Schlüssel sicher, dass sowohl der alte als auch der neue Schlüssel weiterhin zugänglich sind, damit der Vorgang erfolgreich ist.

##### Häufige Ausfallszenarien und Auswirkungen
<a name="failure-scenarios"></a>

In der folgenden Tabelle werden häufige Fehlerszenarien beschrieben, wenn Schlüssel gelöscht oder deaktiviert werden:


| Szenario | Sofortige Wirkung | Langfristige Folgen | 
| --- | --- | --- | 
|  Schlüssel deaktiviert  |  Alle neuen encryption/decryption Operationen schlagen sofort fehl  |  Betriebsunterbrechung, bis der Schlüssel wieder aktiviert oder ersetzt wird  | 
|  Der Schlüssel soll gelöscht werden  |  Der Schlüsselstatus wird in „Ausstehend gelöscht“ geändert und alle encryption/decryption Vorgänge schlagen fehl  |  Automatischer Dienstfehler, wenn der Löschvorgang abgeschlossen ist  | 
|  Der Schlüssel wurde dauerhaft gelöscht  |  Sofortiger und dauerhafter Ausfall aller Operationen  |  Dauerhafter Datenverlust und Unfähigkeit, verschlüsselte Daten wiederherzustellen  | 
|  Wichtige Richtlinie wurde falsch geändert  |  AWS IoT Core verliert die Zugriffsberechtigungen für den Schlüssel  |  Der Dienst schlägt fehl, bis die Richtlinie korrigiert ist  | 
|  Die IAM-Rolle wurde gelöscht  |  AWS IoT Core kann die Rolle für den Zugriffsschlüssel nicht übernehmen  |  Vollständiger Ausfall des Verschlüsselungsdienstes  | 
|  Die IAM-Rolle wurde falsch geändert  |  AWS IoT Core kann keine Rolle übernehmen oder die Rolle für den Zugriff auf den Schlüssel verwenden  |   Der Dienst schlägt fehl, bis die IAM-Rolle behoben ist  | 

##### Prävention und bewährte Verfahren
<a name="prevention-best-practices"></a>

Um das versehentliche Löschen oder Deaktivieren von Schlüsseln zu verhindern und das Risiko von Serviceausfällen zu minimieren, gehen Sie wie folgt vor:

Implementieren Sie wichtige Lebenszyklusrichtlinien  
Legen Sie klare Verfahren für die Schaffung, Rotation und Außerbetriebnahme von Schlüsseln fest. Dokumentieren Sie, welche Schlüssel von welchen AWS IoT Core Ressourcen verwendet werden, und führen Sie ein Inventar der aktiven Schlüssel.

Verwenden Sie IAM-Richtlinien, um das Löschen von Schlüsseln einzuschränken  
Erstellen Sie IAM-Richtlinien, die verhindern, dass unbefugte Benutzer wichtige Verschlüsselungsschlüssel löschen oder deaktivieren. Verwenden Sie Bedingungen, um eine zusätzliche Genehmigung für das Löschen von Schlüsseln zu verlangen.

 CloudTrail Protokollierung aktivieren  
Überwachen Sie alle AWS KMS wichtigen Vorgänge, CloudTrail um unbefugte oder versehentliche Schlüsselverwaltungsaktivitäten zu erkennen. Richten Sie Warnmeldungen für das Löschen oder Deaktivieren von Schlüsseln oder für Richtlinienänderungen ein.

Testen Sie die Verfahren zum Austausch von Schlüsseln  
Testen Sie Ihre wichtigsten Austauschverfahren regelmäßig in Umgebungen außerhalb der Produktionsumgebung, um sicherzustellen, dass Sie nach Ausfällen im Zusammenhang mit Schlüsseln schnell wieder einsatzbereit sind.

Pflegen Sie wichtige Backups  
Sie können zwar kein AWS KMS Schlüsselmaterial exportieren, führen jedoch detaillierte Aufzeichnungen über Schlüssel ARNs, Richtlinien und zugehörige AWS IoT Core Konfigurationen, um bei Bedarf einen schnellen Austausch von Schlüsseln zu ermöglichen.

Überwachen Sie den Zustand der Schlüssel  
Überwachen Sie die `CMK.Health` Metrik kontinuierlich und richten Sie automatische Benachrichtigungen für wichtige Änderungen des Gesundheitsstatus ein. Implementieren Sie automatisierte Antworten, um wichtige Probleme schnell zu lösen.

**Wichtig**  
Testen Sie wichtige Aktualisierungsverfahren immer in Entwicklungsumgebungen, bevor Sie sie in der Produktion implementieren. Halten Sie einen dokumentierten Rollback-Plan bereit und stellen Sie sicher, dass wichtige Ersatzverfahren in Notfällen schnell ausgeführt werden können.

### Schritt 6: Überwachung des Zustands wichtiger Schlüssel
<a name="health-status-monitoring"></a>

Im Rahmen der regelmäßigen AWS IoT Core Prüfläufe werden CloudWatch Messwerte und Protokolle ausgegeben, um den Status Ihrer vom Kunden verwalteten Schlüsselkonfiguration transparent zu machen

AWS IoT Core sendet die `CMK.Health` Metrik CloudWatch mindestens einmal pro Minute aus. Die Metrik liefert Informationen über den Zustand der vom Kunden verwalteten Schlüssel, die AWS IoT Core zum Verschlüsseln und Entschlüsseln Ihrer Daten verwendet werden.

Die `CMK.Health` Metrik kann die folgenden Werte haben:
+ Der Wert AWS IoT Core lautet`1`: kann die Verschlüsselungsschlüssel erfolgreich zum Verschlüsseln und Entschlüsseln Ihrer Daten verwenden.
+ Der Wert AWS IoT Core ist`0`: kann die Verschlüsselungsschlüssel nicht zum Verschlüsseln und Entschlüsseln Ihrer Daten verwenden.

AWS IoT Core gibt auch AWS IoT V2-Protokolle aus, wenn sich der Integritätsstatus der Verschlüsselungsschlüssel ändert. Diese Protokolle enthalten zusätzliche Informationen zur Aktualisierung des Gesundheitsstatus. Um diese Protokolle anzeigen zu können, müssen Sie AWS IoT V2-Protokolle aktivieren. Die `HEALTHY` Protokolle werden auf `INFO` Ebene ausgegeben, und die `UNHEALTHY` Protokolle werden auf `ERROR` Ebene 2 ausgegeben. Weitere Informationen zu den Protokollebenen finden Sie unter [Protokollebenen](https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#log-level).

Bei den folgenden Beispielen handelt es CloudWatch sich um Protokolleinträge, die von ausgegeben wurden AWS IoT Core , um auf die Aktualisierung des Integritätsstatus der vom Kunden verwalteten Schlüssel hinzuweisen.

Um wichtige Änderungen des Gesundheitsstatus effektiv zu überwachen und darauf zu reagieren:

1. **Richten Sie CloudWatch Alarme** für die `CMK.Health` Metrik ein:

   ```
   aws cloudwatch put-metric-alarm --region us-west-2 \
     --alarm-name "IoTCore-CMK-Health-Alert" \
     --alarm-description "Alert when IoT Core CMK health is unhealthy" \
     --metric-name "CMK.Health" \
     --namespace "AWS/IoT" \
     --statistic "Minimum" \
     --period 300 \
     --evaluation-periods 1 \
     --threshold 1 \
     --comparison-operator "LessThanThreshold" \
     --alarm-actions "arn:aws:sns:us-west-2:111122223333:iot-alerts"
   ```

1. **Aktivieren Sie die AWS IoT V2-Protokollierung**, um detaillierte Ereignisse mit Änderungen des Gesundheitsstatus mit Fehlercodes und Meldungen zu erfassen.

1. **Überprüfen Sie den Konfigurationsstatus** zur Fehlerbehebung:

   ```
   aws iot describe-encryption-configuration --region us-west-2
   ```

1. **Untersuchen Sie den Status UNGESUND**, indem Sie das `errorCode` Feld untersuchen:
   + `KMS_KEY_VALIDATION_ERROR`— Problem mit dem AWS KMS Schlüssel (deaktiviert, gelöscht oder Richtlinienprobleme)
   + `ROLE_VALIDATION_ERROR`— Problem mit der IAM-Rolle (gelöscht, Richtlinienprobleme oder Vertrauensprobleme)

#### Von UNGESUND zu GESUND
<a name="unhealthy-to-healthy"></a>

Wenn der Status der Verschlüsselungsschlüssel von `UNHEALTHY` bis aktualisiert wird`HEALTHY`, AWS IoT Core wird eine AWS IoT V2-Protokollmeldung im folgenden Format ausgegeben.

```
{
    "timestamp": "2017-08-10 15:37:23.476",
    "logLevel": "INFO",
    "traceId": "8421693b-f4f0-4e4a-9235-0cff8bab897d",
    "accountId": "111122223333",
    "status": "SUCCESS",
    "cmkStatus": "HEALTHY",
    "kmsKeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "kmsAccessRoleArn": "arn:aws:iam::111122223333:role/myrole",
    "eventType": "CmkHealthCheck"
}
```

#### Von GESUND zu UNGESUND
<a name="healthy-to-unhealthy"></a>

Wenn der Status der Verschlüsselungsschlüssel von `HEALTHY` bis aktualisiert wird`UNHEALTHY`, AWS IoT Core wird eine AWS IoT V2-Protokollmeldung im folgenden Format ausgegeben.

```
{
    "timestamp": "2017-08-10 15:37:23.476",
    "logLevel": "ERROR",
    "traceId": "8421693b-f4f0-4e4a-9235-0cff8bab897d",
    "accountId": "111122223333",
    "status": "FAILURE",
    "cmkStatus": "UNHEALTHY",
    "errorCode": "KMS_KEY_VALIDATION_ERROR / ROLE_VALIDATION_ERROR",
    "errorMessage": "Error message on why there was a failure",
    "kmsKeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "kmsAccessRoleArn": "arn:aws:iam::111122223333:role/myrole",
    "eventType": "CmkHealthCheck"
}
```

**Warnung**  
Wenn der Zustand des Schlüssels erreicht ist`UNHEALTHY`, schlagen die AWS IoT Core Operationen sofort fehl. Überprüfen Sie in diesem Fall Ihre Schlüsselkonfigurationen, IAM-Rollenberechtigungen und Richtlinien. Überwachen Sie die `CMK.Health` Metrik auf Statusänderungen. Wenn der Betrieb nach der Überprüfung Ihrer Konfigurationen weiterhin fehlschlägt, wenden Sie sich an Ihren Account Manager oder das [AWS Support Center](https://console.aws.amazon.com/support/home#/), um weitere Unterstützung zu erhalten.

#### AWS CloudTrail Ereignisse
<a name="aws-cloudtrail-events"></a>

Sie können auch die Verwendung AWS IoT Core des KMS-Schlüssels für Verschlüsselungs- und Entschlüsselungsvorgänge überwachen. AWS IoT Core führt`DescribeKey`, `Decrypt``ReEncrypt`, und `GenerateDataKeyWithoutPlaintext` -Operationen mit Ihrem KMS-Schlüssel durch, um Daten zu verschlüsseln und zu entschlüsseln, die zu Ihrem AWS Konto gehören und im Ruhezustand gespeichert sind.

Es gibt CloudTrail Ereignisse für`DescribeKey`, `Decrypt``ReEncrypt`, und. `GenerateDataKeyWithoutPlaintext` Diese Ereignisse überwachen AWS KMS Vorgänge, die von aufgerufen werden AWS IoT Core , um auf Daten zuzugreifen, die mit Ihrem vom Kunden verwalteten Schlüssel verschlüsselt wurden.

##### `Decrypt`Beispiel für
<a name="decrypt"></a>

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
        "accountId": "111122223333",
        "accessKeyId": "*********************",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
                "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
                "accountId": "111122223333",
                "userName": "*****"
            },
            "attributes": {
                "creationDate": "2024-09-16T20:23:39Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "iot.amazonaws.com"
    },
    "eventTime": "2024-09-16T20:32:48Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "iot.amazonaws.com",
    "userAgent": "iot.amazonaws.com",
    "requestParameters": {
        "encryptionContext": {
            "kms-arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "aws-crypto-ec:vendor": "iot.amazonaws.com",
            "branch-key-id": "111122223333",
            "type": "branch:ACTIVE"
        },
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT",
        "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    },
    "responseElements": null,
    "requestID": "1afb6d98-8388-455d-8b48-e62c9e0cf7f4",
    "eventID": "b59a5f16-0d98-46d8-a590-0e040a48b39b",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

# Identitäts- und Zugriffsmanagement für AWS IoT
<a name="security-iam"></a>

AWS Identity and Access Management (IAM) hilft einem Administrator AWS-Service , den Zugriff auf AWS Ressourcen sicher zu kontrollieren. IAM-Administratoren kontrollieren, wer *authentifiziert* (angemeldet) und *autorisiert* werden kann (über Berechtigungen verfügt), um Ressourcen zu verwenden. AWS IoT IAM ist ein Programm AWS-Service , das Sie ohne zusätzliche Kosten nutzen können.

**Topics**
+ [Zielgruppe](#security_iam_audience)
+ [Authentifizierung mit IAM-Identitäten](#security_iam_authentication)
+ [Verwalten des Zugriffs mit Richtlinien](#security_iam_access-manage)
+ [Wie AWS IoT funktioniert mit IAM](security_iam_service-with-iam.md)
+ [AWS IoT Beispiele für identitätsbasierte Richtlinien](security_iam_id-based-policy-examples.md)
+ [AWS verwaltete Richtlinien für AWS IoT](security-iam-awsmanpol.md)
+ [Fehlerbehebung bei AWS IoT Identität und Zugriff](security_iam_troubleshoot.md)

## Zielgruppe
<a name="security_iam_audience"></a>

Wie Sie AWS Identity and Access Management (IAM) verwenden, hängt von Ihrer Rolle ab:
+ **Servicebenutzer** – Fordern Sie von Ihrem Administrator Berechtigungen an, wenn Sie nicht auf Features zugreifen können (siehe [Fehlerbehebung bei AWS IoT Identität und Zugriff](security_iam_troubleshoot.md)).
+ **Serviceadministrator** – Bestimmen Sie den Benutzerzugriff und stellen Sie Berechtigungsanfragen (siehe [Wie AWS IoT funktioniert mit IAM](security_iam_service-with-iam.md)).
+ **IAM-Administrator** – Schreiben Sie Richtlinien zur Zugriffsverwaltung (siehe [AWS IoT Beispiele für identitätsbasierte Richtlinien](security_iam_id-based-policy-examples.md)).

## Authentifizierung mit IAM-Identitäten
<a name="security_iam_authentication"></a>

In AWS IoT Identitäten können Gerätezertifikate (X.509), Amazon Cognito Cognito-Identitäten oder IAM-Benutzer oder -Gruppen enthalten sein. In diesem Thema werden nur IAM-Identitäten behandelt. Weitere Informationen zu den anderen Identitäten, die unterstützt werden, finden Sie unter. AWS IoT [Client-Authentifizierung](client-authentication.md)

Authentifizierung ist die Art und Weise, wie Sie sich AWS mit Ihren Identitätsdaten anmelden. Sie müssen sich als IAM-Benutzer authentifizieren oder eine IAM-Rolle annehmen. Root-Benutzer des AWS-Kontos

Sie können sich als föderierte Identität anmelden, indem Sie Anmeldeinformationen aus einer Identitätsquelle wie AWS IAM Identity Center (IAM Identity Center), Single Sign-On-Authentifizierung oder Anmeldeinformationen verwenden. Google/Facebook Weitere Informationen zum Anmelden finden Sie unter [So melden Sie sich bei Ihrem AWS-Konto an](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) im *Benutzerhandbuch für AWS-Anmeldung *.

 AWS Bietet für den programmatischen Zugriff ein SDK und eine CLI zum kryptografischen Signieren von Anfragen. Weitere Informationen finden Sie unter [AWS Signature Version 4 for API requests](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) im *IAM-Benutzerhandbuch*.

### AWS-Konto Root-Benutzer
<a name="security_iam_authentication-rootuser"></a>

 Wenn Sie einen erstellen AWS-Konto, beginnen Sie mit einer Anmeldeidentität, dem sogenannten AWS-Konto *Root-Benutzer*, der vollständigen Zugriff auf alle AWS-Services Ressourcen hat. Wir raten ausdrücklich davon ab, den Root-Benutzer für Alltagsaufgaben zu verwenden. Eine Liste der Aufgaben, für die Sie sich als Root-Benutzer anmelden müssen, finden Sie unter [Tasks that require root user credentials](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) im *IAM-Benutzerhandbuch*. 

### IAM-Benutzer und -Gruppen
<a name="security_iam_authentication-iamuser"></a>

Ein *[IAM-Benutzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)* ist eine Identität mit bestimmten Berechtigungen für eine einzelne Person oder Anwendung. Wir empfehlen die Verwendung temporärer Anmeldeinformationen anstelle von IAM-Benutzern mit langfristigen Anmeldeinformationen. Weitere Informationen finden Sie im *IAM-Benutzerhandbuch* unter [Erfordern, dass menschliche Benutzer für den Zugriff AWS mithilfe temporärer Anmeldeinformationen einen Verbund mit einem Identitätsanbieter](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) verwenden müssen.

Eine [https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) spezifiziert eine Sammlung von IAM-Benutzern und erleichtert die Verwaltung von Berechtigungen für große Gruppen von Benutzern. Weitere Informationen finden Sie unter [Anwendungsfälle für IAM-Benutzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) im *IAM-Benutzerhandbuch*.

### IAM-Rollen
<a name="security_iam_authentication-iamrole"></a>

Eine *[IAM-Rolle](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)* ist eine Identität mit spezifischen Berechtigungen, die temporäre Anmeldeinformationen bereitstellt. Sie können eine Rolle übernehmen, indem Sie [von einer Benutzer- zu einer IAM-Rolle (Konsole) wechseln](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) oder indem Sie eine AWS Oder-API-Operation AWS CLI aufrufen. Weitere Informationen finden Sie unter [Methoden, um eine Rolle zu übernehmen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) im *IAM-Benutzerhandbuch*.

IAM-Rollen sind nützlich für den Verbundbenutzer-Zugriff, temporäre IAM-Benutzerberechtigungen, kontoübergreifenden Zugriff, serviceübergreifenden Zugriff und Anwendungen, die auf Amazon EC2 laufen. Weitere Informationen finden Sie unter [Kontoübergreifender Ressourcenzugriff in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) im *IAM-Benutzerhandbuch*.

## Verwalten des Zugriffs mit Richtlinien
<a name="security_iam_access-manage"></a>

Sie kontrollieren den Zugriff, AWS indem Sie Richtlinien erstellen und diese an AWS Identitäten oder Ressourcen anhängen. Eine Richtlinie definiert Berechtigungen, wenn sie mit einer Identität oder Ressource verknüpft sind. AWS bewertet diese Richtlinien, wenn ein Principal eine Anfrage stellt. Die meisten Richtlinien werden AWS als JSON-Dokumente gespeichert. Weitere Informationen zu JSON-Richtliniendokumenten finden Sie unter [Übersicht über JSON-Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) im *IAM-Benutzerhandbuch*.

Mit Hilfe von Richtlinien legen Administratoren fest, wer Zugriff auf was hat, indem sie definieren, welches **Prinzipal** welche **Aktionen** auf welchen **Ressourcen**und unter welchen **Bedingungen**durchführen darf.

Standardmäßig haben Benutzer, Gruppen und Rollen keine Berechtigungen. Ein IAM-Administrator erstellt IAM-Richtlinien und fügt sie zu Rollen hinzu, die die Benutzer dann übernehmen können. IAM-Richtlinien definieren Berechtigungen unabhängig von der Methode, die zur Ausführung der Operation verwendet wird.

### Identitätsbasierte Richtlinien
<a name="security_iam_access-manage-id-based-policies"></a>

Identitätsbasierte Richtlinien sind JSON-Berechtigungsrichtliniendokumente, die Sie einer Identität (Benutzer, Gruppe oder Rolle) anfügen können. Diese Richtlinien steuern, welche Aktionen Identitäten für welche Ressourcen und unter welchen Bedingungen ausführen können. Informationen zum Erstellen identitätsbasierter Richtlinien finden Sie unter [Definieren benutzerdefinierter IAM-Berechtigungen mit vom Kunden verwalteten Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) im *IAM-Benutzerhandbuch*.

Identitätsbasierte Richtlinien können *Inline-Richtlinien* (direkt in eine einzelne Identität eingebettet) oder *verwaltete Richtlinien* (eigenständige Richtlinien, die mit mehreren Identitäten verbunden sind) sein. Informationen dazu, wie Sie zwischen verwalteten und Inline-Richtlinien wählen, finden Sie unter [Choose between managed policies and inline policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html) im *IAM-Benutzerhandbuch*.

### Ressourcenbasierte Richtlinien
<a name="security_iam_access-manage-resource-based-policies"></a>

Ressourcenbasierte Richtlinien sind JSON-Richtliniendokumente, die Sie an eine Ressource anfügen. Beispiele hierfür sind *Vertrauensrichtlinien für IAM-Rollen* und Amazon S3*-Bucket-Richtlinien*. In Services, die ressourcenbasierte Richtlinien unterstützen, können Service-Administratoren sie verwenden, um den Zugriff auf eine bestimmte Ressource zu steuern. Sie müssen in einer ressourcenbasierten Richtlinie [einen Prinzipal angeben](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html).

Ressourcenbasierte Richtlinien sind Richtlinien innerhalb dieses Diensts. Sie können AWS verwaltete Richtlinien von IAM nicht in einer ressourcenbasierten Richtlinie verwenden.

### Zugriffskontrolllisten () ACLs
<a name="security_iam_access-manage-acl"></a>

Zugriffskontrolllisten (ACLs) steuern, welche Principals (Kontomitglieder, Benutzer oder Rollen) über Zugriffsberechtigungen für eine Ressource verfügen. ACLs ähneln ressourcenbasierten Richtlinien, verwenden jedoch nicht das JSON-Richtliniendokumentformat.

Amazon S3 und Amazon VPC sind Beispiele für Dienste, die Unterstützung ACLs bieten. AWS WAF Weitere Informationen finden Sie unter [Übersicht über ACLs die Zugriffskontrollliste (ACL)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html) im *Amazon Simple Storage Service Developer Guide*.

### Weitere Richtlinientypen
<a name="security_iam_access-manage-other-policies"></a>

AWS unterstützt zusätzliche Richtlinientypen, mit denen die maximalen Berechtigungen festgelegt werden können, die durch gängigere Richtlinientypen gewährt werden:
+ **Berechtigungsgrenzen** – Eine Berechtigungsgrenze legt die maximalen Berechtigungen fest, die eine identitätsbasierte Richtlinie einer IAM-Entität erteilen kann. Weitere Informationen finden Sie unter [Berechtigungsgrenzen für IAM-Entitäten](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) im *-IAM-Benutzerhandbuch*.
+ **Richtlinien zur Dienstkontrolle (SCPs)** — Geben Sie die maximalen Berechtigungen für eine Organisation oder Organisationseinheit in an AWS Organizations. Weitere Informationen finden Sie unter [Service-Kontrollrichtlinien](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) im *AWS Organizations -Benutzerhandbuch*.
+ **Richtlinien zur Ressourcenkontrolle (RCPs)** — Legen Sie die maximal verfügbaren Berechtigungen für Ressourcen in Ihren Konten fest. Weitere Informationen finden Sie im *AWS Organizations Benutzerhandbuch* unter [Richtlinien zur Ressourcenkontrolle (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html).
+ **Sitzungsrichtlinien** – Sitzungsrichtlinien sind erweiterte Richtlinien, die als Parameter übergeben werden, wenn Sie eine temporäre Sitzung für eine Rolle oder einen Verbundbenutzer erstellen. Weitere Informationen finden Sie unter [Sitzungsrichtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) im *IAM-Benutzerhandbuch*.

### Mehrere Richtlinientypen
<a name="security_iam_access-manage-multiple-policies"></a>

Wenn für eine Anfrage mehrere Arten von Richtlinien gelten, sind die sich daraus ergebenden Berechtigungen schwieriger zu verstehen. Informationen darüber, wie AWS bestimmt wird, ob eine Anfrage zulässig ist, wenn mehrere Richtlinientypen betroffen sind, finden Sie unter [Bewertungslogik für Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) im *IAM-Benutzerhandbuch*.

# Wie AWS IoT funktioniert mit IAM
<a name="security_iam_service-with-iam"></a>

Bevor Sie IAM verwenden, um den Zugriff auf zu verwalten AWS IoT, sollten Sie wissen, mit welchen IAM-Funktionen Sie verwenden können. AWS IoT*Einen allgemeinen Überblick darüber, wie AWS IoT und andere AWS Dienste mit IAM funktionieren, finden Sie im IAM-Benutzerhandbuch unter [AWS Services That Work with IAM](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_aws-services-that-work-with-iam.html).*

**Topics**
+ [AWS IoT identitätsbasierte Richtlinien](#security_iam_service-with-iam-id-based-policies)
+ [AWS IoT ressourcenbasierte Richtlinien](#security_iam_service-with-iam-resource-based-policies)
+ [Autorisierung auf der Grundlage von Tags AWS IoT](#security_iam_service-with-iam-tags)
+ [AWS IoT IAM-Rollen](#security_iam_service-with-iam-roles)

## AWS IoT identitätsbasierte Richtlinien
<a name="security_iam_service-with-iam-id-based-policies"></a>

Mit identitätsbasierten IAM-Richtlinien können Sie angeben, welche Aktionen und Ressourcen erteilt oder abgelehnt werden. Darüber hinaus können Sie die Bedingungen festlegen, unter denen Aktionen zugelassen oder abgelehnt werden. AWS IoT unterstützt bestimmte Aktionen, Ressourcen und Bedingungsschlüssel. Informationen zu sämtlichen Elementen, die Sie in einer JSON-Richtlinie verwenden, finden Sie in der [IAM-Referenz für JSON-Richtlinienelemente](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_elements.html) im *IAM-Benutzerhandbuch*.

### Aktionen
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

Administratoren können mithilfe von AWS JSON-Richtlinien angeben, wer auf was Zugriff hat. Das heißt, welcher **Prinzipal** **Aktionen** für welche **Ressourcen** und unter welchen **Bedingungen** ausführen kann.

Das Element `Action` einer JSON-Richtlinie beschreibt die Aktionen, mit denen Sie den Zugriff in einer Richtlinie zulassen oder verweigern können. Nehmen Sie Aktionen in eine Richtlinie auf, um Berechtigungen zur Ausführung des zugehörigen Vorgangs zu erteilen.

In der folgenden Tabelle sind die IAM-IoT-Aktionen, die zugehörige AWS IoT API und die Ressource aufgeführt, die durch die Aktion manipuliert wird.


****  

| Richtlinienaktionen | AWS IoT API | Ressourcen | 
| --- | --- | --- | 
| IoT: AcceptCertificateTransfer | AcceptCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  Das im ARN AWS-Konto angegebene Konto muss das Konto sein, auf das das Zertifikat übertragen wird.   | 
| IoT: AddThingToThingGroup | AddThingToThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: AssociateTargetsWithJob | AssociateTargetsWithJob | Keine  | 
| IoT: AttachPolicy | AttachPolicy |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` oder `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: AttachPrincipalPolicy | AttachPrincipalPolicy |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: AttachSecurityProfile | AttachSecurityProfile |  `arn:aws:iot:region:account-id:securityprofile/security-profile-name` `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT: AttachThingPrincipal | AttachThingPrincipal |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: CancelCertificateTransfer | CancelCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  Das im ARN AWS-Konto angegebene Konto muss das Konto sein, auf das das Zertifikat übertragen wird.   | 
| IoT: CancelJob | CancelJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: CancelJobExecution | CancelJobExecution |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ClearDefaultAuthorizer | ClearDefaultAuthorizer | Keine | 
| IoT: CreateAuthorizer | CreateAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name`  | 
| IoT: CreateCertificateFromCsr | CreateCertificateFromCsr | \$1 | 
| IoT: CreateDimension | CreateDimension | `arn:aws:iot:region:account-id:dimension/dimension-name` | 
| IoT: CreateJob | CreateJob |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name` `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT: CreateJobTemplate | CreateJobTemplate |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT: CreateKeysAndCertificate | CreateKeysAndCertificate | \$1 | 
| IoT: CreatePolicy | CreatePolicy | `arn:aws:iot:region:account-id:policy/policy-name` | 
| IoT: CreatePolicyVersion | CreatePolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  Dies muss eine AWS IoT Richtlinie sein, keine IAM-Richtlinie.   | 
| IoT: CreateRoleAlias | CreateRoleAlias |  (Parameter: roleAlias) `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: CreateSecurityProfile | CreateSecurityProfile |  `arn:aws:iot:region:account-id:securityprofile/security-profile-name` `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT: CreateThing | CreateThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: CreateThingGroup | CreateThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` für die Gruppe, die erstellt wird, und für die übergeordnete Gruppe, sofern verwendet  | 
| IoT: CreateThingType | CreateThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: CreateTopicRule | CreateTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: DeleteAuthorizer | DeleteAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-name`  | 
| IoT: löschen CACertificate | Löschen CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| iot: DeleteCertificate | DeleteCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DeleteDimension | DeleteDimension |  `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT: DeleteJob | DeleteJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: DeleteJobTemplate | DeleteJobTemplate |  `arn:aws:iot:region:account-id:job/job-template-id`  | 
| IoT: DeleteJobExecution | DeleteJobExecution |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: DeletePolicy | DeletePolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: DeletePolicyVersion | DeletePolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: DeleteRegistrationCode | DeleteRegistrationCode | \$1 | 
| IoT: DeleteRoleAlias | DeleteRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: DeleteSecurityProfile | DeleteSecurityProfile |  `arn:aws:iot:region:account-id:securityprofile/security-profile-name` `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT: DeleteThing | DeleteThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: DeleteThingGroup | DeleteThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DeleteThingType | DeleteThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: DeleteTopicRule | DeleteTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: V2 löschen LoggingLevel | Lösche V2 LoggingLevel |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DeprecateThingType | DeprecateThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: DescribeAuthorizer | DescribeAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name` (Parameter: authorizerName) Keine  | 
| IoT: Beschreiben CACertificate | Beschreiben CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT: DescribeCertificate | DescribeCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DescribeDefaultAuthorizer | DescribeDefaultAuthorizer | Keine  | 
| IoT: DescribeEndpoint | DescribeEndpoint | \$1 | 
| IoT: DescribeEventConfigurations | DescribeEventConfigurations | Keine  | 
| IoT: DescribeIndex | DescribeIndex |  `arn:aws:iot:region:account-id:index/index-name`  | 
| IoT: DescribeJob | DescribeJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: DescribeJobExecution | DescribeJobExecution | Keine | 
| IoT: DescribeJobTemplate | DescribeJobTemplate |  `arn:aws:iot:region:account-id:job/job-template-id`  | 
| IoT: DescribeRoleAlias | DescribeRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: DescribeThing | DescribeThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: DescribeThingGroup | DescribeThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DescribeThingRegistrationTask | DescribeThingRegistrationTask | Keine | 
| IoT: DescribeThingType | DescribeThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: DetachPolicy | DetachPolicy |  `arn:aws:iot:region:account-id:cert/cert-id` oder `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DetachPrincipalPolicy | DetachPrincipalPolicy |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DetachSecurityProfile | DetachSecurityProfile |  `arn:aws:iot:region:account-id:securityprofile/security-profile-name` `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT: DetachThingPrincipal | DetachThingPrincipal |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DisableTopicRule | DisableTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: EnableTopicRule | EnableTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: GetEffectivePolicies | GetEffectivePolicies |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: GetIndexingConfiguration | GetIndexingConfiguration | Keine | 
| IoT: GetJobDocument | GetJobDocument |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: GetLoggingOptions | GetLoggingOptions | \$1 | 
| IoT: GetPolicy | GetPolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: GetPolicyVersion | GetPolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: GetRegistrationCode | GetRegistrationCode | \$1 | 
| IoT: GetTopicRule | GetTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: ListAttachedPolicies | ListAttachedPolicies |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` oder `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: ListAuthorizers | ListAuthorizers | Keine | 
| IoT: Liste CACertificates | Liste CACertificates | \$1 | 
| IoT: ListCertificates | ListCertificates | \$1 | 
| IoT: ListCertificatesBy Kanada | ListCertificatesByCA | \$1 | 
| IoT: ListIndices | ListIndices | Keine | 
| IoT: ListJobExecutionsForJob | ListJobExecutionsForJob | Keine | 
| IoT: ListJobExecutionsForThing | ListJobExecutionsForThing | Keine | 
| IoT: ListJobs | ListJobs |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` wenn der thingGroupName Parameter verwendet wird  | 
| iot: ListJobTemplates | ListJobs | Keine | 
| IoT: ListOutgoingCertificates | ListOutgoingCertificates | \$1 | 
| IoT: ListPolicies | ListPolicies | \$1 | 
| IoT: ListPolicyPrincipals | ListPolicyPrincipals | \$1 | 
| IoT: ListPolicyVersions | ListPolicyVersions |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: ListPrincipalPolicies | ListPrincipalPolicies |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: ListPrincipalThings | ListPrincipalThings |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: ListRoleAliases | ListRoleAliases | Keine | 
| IoT: ListTargetsForPolicy | ListTargetsForPolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: ListThingGroups | ListThingGroups | Keine | 
| IoT: ListThingGroupsForThing | ListThingGroupsForThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ListThingPrincipals | ListThingPrincipals |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ListThingRegistrationTaskReports | ListThingRegistrationTaskReports | Keine | 
| IoT: ListThingRegistrationTasks | ListThingRegistrationTasks | Keine | 
| IoT: ListThingTypes | ListThingTypes | \$1 | 
| IoT: ListThings | ListThings | \$1 | 
| IoT: ListThingsInThingGroup | ListThingsInThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: ListTopicRules | ListTopicRules | \$1 | 
| IoT: Liste V2 LoggingLevels | Liste V2 LoggingLevels | Keine | 
| IoT: registrieren CACertificate | Registrieren CACertificate | \$1 | 
| IoT: RegisterCertificate | RegisterCertificate | \$1 | 
| IoT: RegisterThing | RegisterThing | Keine | 
| IoT: RejectCertificateTransfer | RejectCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: RemoveThingFromThingGroup | RemoveThingFromThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ReplaceTopicRule | ReplaceTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: SearchIndex | SearchIndex |  `arn:aws:iot:region:account-id:index/index-id`  | 
| IoT: SetDefaultAuthorizer | SetDefaultAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name`  | 
| IoT: SetDefaultPolicyVersion | SetDefaultPolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: SetLoggingOptions | SetLoggingOptions |  `arn:aws:iot:region:account-id:role/role-name`  | 
| IoT: SETv2 LoggingLevel | Set V2 LoggingLevel |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: SETV2 LoggingOptions | Set V2 LoggingOptions |  `arn:aws:iot:region:account-id:role/role-name`  | 
| IoT: StartThingRegistrationTask | StartThingRegistrationTask | Keine | 
| IoT: StopThingRegistrationTask | StopThingRegistrationTask | Keine | 
| IoT: TestAuthorization | TestAuthorization |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: TestInvokeAuthorizer | TestInvokeAuthorizer | Keine | 
| IoT: TransferCertificate | TransferCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: UpdateAuthorizer | UpdateAuthorizer |  `arn:aws:iot:region:account-id:authorizerfunction/authorizer-function-name`  | 
| IoT: aktualisieren CACertificate | Aktualisieren CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT: UpdateCertificate | UpdateCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: UpdateDimension | UpdateDimension |  `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT: UpdateEventConfigurations | UpdateEventConfigurations | Keine | 
| IoT: UpdateIndexingConfiguration | UpdateIndexingConfiguration | Keine | 
| IoT: UpdateRoleAlias | UpdateRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: UpdateSecurityProfile | UpdateSecurityProfile |  `arn:aws:iot:region:account-id:securityprofile/security-profile-name` `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT: UpdateThing | UpdateThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: UpdateThingGroup | UpdateThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: UpdateThingGroupsForThing | UpdateThingGroupsForThing |  `arn:aws:iot:region:account-id:thing/thing-name` `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 

Bei Richtlinienaktionen wird vor der Aktion das folgende Präfix AWS IoT verwendet:`iot:`. Um beispielsweise jemandem die Erlaubnis zu erteilen, alle IoT-Dinge aufzulisten, die in seiner AWS-Konto `ListThings` API registriert sind, nehmen Sie die `iot:ListThings` Aktion in seine Richtlinie auf. Richtlinienerklärungen müssen `Action` entweder ein `NotAction` Oder-Element enthalten. AWS IoT definiert eigene Aktionen, die Aufgaben beschreiben, die Sie mit diesem Dienst ausführen können.

Um mehrere Aktionen in einer einzigen Anweisung anzugeben, trennen Sie sie wie folgt durch Kommata:

```
"Action": [
      "ec2:action1",
      "ec2:action2"
```

Sie können auch Platzhalter verwenden, um mehrere Aktionen anzugeben. Beispielsweise können Sie alle Aktionen festlegen, die mit dem Wort `Describe` beginnen, einschließlich der folgenden Aktion:

```
"Action": "iot:Describe*"
```

Eine Liste der AWS IoT [Aktionen finden Sie AWS IoT im *IAM-Benutzerhandbuch* unter Definierte Aktionen von](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions).

#### Device-Advisor-Aktionen
<a name="security_iam_service-actions-device-advisor"></a>

Die folgende Tabelle listet die Device-Advisor-Aktionen im IAM-IoT, die zugehörige AWS IoT -Device-Advisor-API und die Ressource auf, die die Aktion bearbeitet.


****  

| Richtlinienaktionen | AWS IoT API | Ressourcen | 
| --- | --- | --- | 
| Berater für IoT-Geräte: CreateSuiteDefinition | CreateSuiteDefinition |  Keine  | 
| iotdeviceadvisor: DeleteSuiteDefinition | DeleteSuiteDefinition |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| iotdeviceadvisor: GetSuiteDefinition | GetSuiteDefinition |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| iotdeviceadvisor: GetSuiteRun | GetSuiteRun |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-run-id`  | 
| iotdeviceadvisor: GetSuiteRunReport | GetSuiteRunReport |  `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 
| iotdeviceadvisor: ListSuiteDefinitions | ListSuiteDefinitions | Keine | 
| iotdeviceadvisor: ListSuiteRuns | ListSuiteRuns |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| iotdeviceadvisor: ListTagsForResource | ListTagsForResource |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id` `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 
| iotdeviceadvisor: StartSuiteRun | StartSuiteRun |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| iotdeviceadvisor: TagResource | TagResource |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id` `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 
| iotdeviceadvisor: UntagResource | UntagResource |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id` `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 
| iotdeviceadvisor: UpdateSuiteDefinition | UpdateSuiteDefinition |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| iotdeviceadvisor: StopSuiteRun | StopSuiteRun |  `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 

Richtlinienaktionen in AWS IoT Device Advisor verwenden vor der Aktion das folgende Präfix:. `iotdeviceadvisor:` Um beispielsweise jemandem die Erlaubnis zu erteilen, alle in seiner AWS-Konto ListSuiteDefinitions API registrierten Suite-Definitionen aufzulisten, nehmen Sie die `iotdeviceadvisor:ListSuiteDefinitions` Aktion in seine Richtlinie auf.

### Ressourcen
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

Administratoren können mithilfe von AWS JSON-Richtlinien angeben, wer Zugriff auf was hat. Das heißt, welcher **Prinzipal** **Aktionen** für welche **Ressourcen** und unter welchen **Bedingungen** ausführen kann.

Das JSON-Richtlinienelement `Resource` gibt die Objekte an, auf welche die Aktion angewendet wird. Als Best Practice geben Sie eine Ressource mit dem zugehörigen [Amazon-Ressourcennamen (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) an. Verwenden Sie für Aktionen, die keine Berechtigungen auf Ressourcenebene unterstützen, einen Platzhalter (\$1), um anzugeben, dass die Anweisung für alle Ressourcen gilt.

```
"Resource": "*"
```


**AWS IoT Ressourcen**  

| Richtlinienaktionen | AWS IoT API | Ressourcen | 
| --- | --- | --- | 
| IoT: AcceptCertificateTransfer | AcceptCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  Das im ARN AWS-Konto angegebene Konto muss das Konto sein, auf das das Zertifikat übertragen wird.   | 
| IoT: AddThingToThingGroup | AddThingToThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: AssociateTargetsWithJob | AssociateTargetsWithJob | Keine  | 
| IoT: AttachPolicy | AttachPolicy | `arn:aws:iot:region:account-id:thinggroup/thing-group-name` oder `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: AttachPrincipalPolicy | AttachPrincipalPolicy |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: AttachThingPrincipal | AttachThingPrincipal |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: CancelCertificateTransfer | CancelCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  Das im ARN AWS-Konto angegebene Konto muss das Konto sein, auf das das Zertifikat übertragen wird.   | 
| IoT: CancelJob | CancelJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: CancelJobExecution | CancelJobExecution |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ClearDefaultAuthorizer | ClearDefaultAuthorizer | Keine | 
| IoT: CreateAuthorizer | CreateAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name`  | 
| IoT: CreateCertificateFromCsr | CreateCertificateFromCsr | \$1 | 
| IoT: CreateJob | CreateJob |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name` `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT: CreateJobTemplate | CreateJobTemplate |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT: CreateKeysAndCertificate | CreateKeysAndCertificate | \$1 | 
| IoT: CreatePolicy | CreatePolicy | `arn:aws:iot:region:account-id:policy/policy-name` | 
| CreatePolicyVersion | IoT: CreatePolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  Dies muss eine AWS IoT Richtlinie sein, keine IAM-Richtlinie.   | 
| IoT: CreateRoleAlias | CreateRoleAlias |  (Parameter: roleAlias) `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: CreateThing | CreateThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: CreateThingGroup | CreateThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` für die Gruppe, die erstellt wird, und für die übergeordnete Gruppe, sofern verwendet  | 
| IoT: CreateThingType | CreateThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: CreateTopicRule | CreateTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: DeleteAuthorizer | DeleteAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-name`  | 
| IoT: löschen CACertificate | Löschen CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| iot: DeleteCertificate | DeleteCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DeleteJob | DeleteJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: DeleteJobExecution | DeleteJobExecution |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: DeleteJobTemplate | DeleteJobTemplate |  `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT: DeletePolicy | DeletePolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: DeletePolicyVersion | DeletePolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: DeleteRegistrationCode | DeleteRegistrationCode | \$1 | 
| IoT: DeleteRoleAlias | DeleteRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: DeleteThing | DeleteThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: DeleteThingGroup | DeleteThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DeleteThingType | DeleteThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: DeleteTopicRule | DeleteTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: V2 löschen LoggingLevel | Lösche V2 LoggingLevel |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DeprecateThingType | DeprecateThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: DescribeAuthorizer | DescribeAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name` (Parameter: authorizerName) Keine  | 
| IoT: Beschreiben CACertificate | Beschreiben CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT: DescribeCertificate | DescribeCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DescribeDefaultAuthorizer | DescribeDefaultAuthorizer | Keine  | 
| IoT: DescribeEndpoint | DescribeEndpoint | \$1 | 
| IoT: DescribeEventConfigurations | DescribeEventConfigurations | Keine  | 
| IoT: DescribeIndex | DescribeIndex |  `arn:aws:iot:region:account-id:index/index-name`  | 
| IoT: DescribeJob | DescribeJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: DescribeJobExecution | DescribeJobExecution | Keine | 
| IoT: DescribeJobTemplate | DescribeJobTemplate |  `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT: DescribeRoleAlias | DescribeRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: DescribeThing | DescribeThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: DescribeThingGroup | DescribeThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DescribeThingRegistrationTask | DescribeThingRegistrationTask | Keine | 
| IoT: DescribeThingType | DescribeThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: DetachPolicy | DetachPolicy |  `arn:aws:iot:region:account-id:cert/cert-id` oder `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DetachPrincipalPolicy | DetachPrincipalPolicy |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DetachThingPrincipal | DetachThingPrincipal |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DisableTopicRule | DisableTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: EnableTopicRule | EnableTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: GetEffectivePolicies | GetEffectivePolicies |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: GetIndexingConfiguration | GetIndexingConfiguration | Keine | 
| IoT: GetJobDocument | GetJobDocument |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: GetLoggingOptions | GetLoggingOptions | \$1 | 
| IoT: GetPolicy | GetPolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: GetPolicyVersion | GetPolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: GetRegistrationCode | GetRegistrationCode | \$1 | 
| IoT: GetTopicRule | GetTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: ListAttachedPolicies | ListAttachedPolicies |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` oder `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: ListAuthorizers | ListAuthorizers | Keine | 
| IoT: Liste CACertificates | Liste CACertificates | \$1 | 
| IoT: ListCertificates | ListCertificates | \$1 | 
| IoT: ListCertificatesBy Kanada | ListCertificatesByCA | \$1 | 
| IoT: ListIndices | ListIndices | Keine | 
| IoT: ListJobExecutionsForJob | ListJobExecutionsForJob | Keine | 
| IoT: ListJobExecutionsForThing | ListJobExecutionsForThing | Keine | 
| IoT: ListJobs | ListJobs |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` wenn der thingGroupName Parameter verwendet wird  | 
| iot: ListJobTemplates | ListJobTemplates | Keine | 
| IoT: ListOutgoingCertificates | ListOutgoingCertificates | \$1 | 
| IoT: ListPolicies | ListPolicies | \$1 | 
| IoT: ListPolicyPrincipals | ListPolicyPrincipals |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: ListPolicyVersions | ListPolicyVersions |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: ListPrincipalPolicies | ListPrincipalPolicies |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: ListPrincipalThings | ListPrincipalThings |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: ListRoleAliases | ListRoleAliases | Keine | 
| IoT: ListTargetsForPolicy | ListTargetsForPolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: ListThingGroups | ListThingGroups | Keine | 
| IoT: ListThingGroupsForThing | ListThingGroupsForThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ListThingPrincipals | ListThingPrincipals |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ListThingRegistrationTaskReports | ListThingRegistrationTaskReports | Keine | 
| IoT: ListThingRegistrationTasks | ListThingRegistrationTasks | Keine | 
| IoT: ListThingTypes | ListThingTypes | \$1 | 
| IoT: ListThings | ListThings | \$1 | 
| IoT: ListThingsInThingGroup | ListThingsInThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: ListTopicRules | ListTopicRules | \$1 | 
| IoT: Liste V2 LoggingLevels | Liste V2 LoggingLevels | Keine | 
| IoT: registrieren CACertificate | Registrieren CACertificate | \$1 | 
| IoT: RegisterCertificate | RegisterCertificate | \$1 | 
| IoT: RegisterThing | RegisterThing | Keine | 
| IoT: RejectCertificateTransfer | RejectCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: RemoveThingFromThingGroup | RemoveThingFromThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ReplaceTopicRule | ReplaceTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: SearchIndex | SearchIndex |  `arn:aws:iot:region:account-id:index/index-id`  | 
| IoT: SetDefaultAuthorizer | SetDefaultAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name`  | 
| IoT: SetDefaultPolicyVersion | SetDefaultPolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: SetLoggingOptions | SetLoggingOptions | \$1 | 
| IoT: SETv2 LoggingLevel | Set V2 LoggingLevel | \$1 | 
| IoT: SETV2 LoggingOptions | Set V2 LoggingOptions | \$1 | 
| IoT: StartThingRegistrationTask | StartThingRegistrationTask | Keine | 
| IoT: StopThingRegistrationTask | StopThingRegistrationTask | Keine | 
| IoT: TestAuthorization | TestAuthorization |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: TestInvokeAuthorizer | TestInvokeAuthorizer | Keine | 
| IoT: TransferCertificate | TransferCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: UpdateAuthorizer | UpdateAuthorizer |  `arn:aws:iot:region:account-id:authorizerfunction/authorizer-function-name`  | 
| IoT: aktualisieren CACertificate | Aktualisieren CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT: UpdateCertificate | UpdateCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: UpdateEventConfigurations | UpdateEventConfigurations | Keine | 
| IoT: UpdateIndexingConfiguration | UpdateIndexingConfiguration | Keine | 
| IoT: UpdateRoleAlias | UpdateRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: UpdateThing | UpdateThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: UpdateThingGroup | UpdateThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: UpdateThingGroupsForThing | UpdateThingGroupsForThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 

Weitere Informationen zum Format von ARNs finden Sie unter [Amazon Resource Names (ARNs) und AWS Service Namespaces](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).

Einige AWS IoT Aktionen, wie z. B. die zum Erstellen von Ressourcen, können nicht für eine bestimmte Ressource ausgeführt werden. In diesen Fällen müssen Sie den Platzhalter (\$1) verwenden.

```
"Resource": "*"
```

Eine Liste der AWS IoT Ressourcentypen und ihrer ARNs Eigenschaften finden Sie AWS IoT im *IAM-Benutzerhandbuch* unter [Defined by (Ressourcen definiert von](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-resources-for-iam-policies)). Informationen zu den Aktionen, mit denen Sie den ARN einzelner Ressourcen angeben können, finden Sie unter [Von AWS IoT definierte Aktionen](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions).

#### Device-Advisor-Ressourcen
<a name="security_iam_service-device-advisor-resources"></a>

Verwenden Sie die folgenden Ressourcen-ARN-Formate für Suite-Definitionen und Suite-Läufe, um Einschränkungen auf Ressourcenebene für AWS IoT Device Advisor IAM-Richtlinien zu definieren.

ARN–Format der Suite-Definitionsressource  
`arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`

ARN–Format der Suite-Ausführungsressource  
`arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`

### Bedingungsschlüssel
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

Administratoren können mithilfe von AWS JSON-Richtlinien angeben, wer Zugriff auf was hat. Das heißt, welcher **Prinzipal** **Aktionen** für welche **Ressourcen** und unter welchen **Bedingungen** ausführen kann.

Das Element `Condition` gibt an, wann Anweisungen auf der Grundlage definierter Kriterien ausgeführt werden. Sie können bedingte Ausdrücke erstellen, die [Bedingungsoperatoren](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) verwenden, z. B. ist gleich oder kleiner als, damit die Bedingung in der Richtlinie mit Werten in der Anforderung übereinstimmt. Eine Übersicht aller AWS globalen Bedingungsschlüssel finden Sie unter [Kontextschlüssel für AWS globale Bedingungen](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) im *IAM-Benutzerhandbuch*.

AWS IoT definiert seinen eigenen Satz von Bedingungsschlüsseln und unterstützt auch die Verwendung einiger globaler Bedingungsschlüssel. Eine Übersicht aller AWS globalen Bedingungsschlüssel finden Sie unter [AWS Globale Bedingungskontextschlüssel](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_condition-keys.html) im *IAM-Benutzerhandbuch*. 


**AWS IoT Bedingungsschlüssel**  

| AWS IoT Zustandsschlüssel | Beschreibung | Typ | 
| --- | --- | --- | 
| aws:RequestTag/\$1\$1tag-key\$1 | Ein Tag-Schlüssel, der in der Anforderung vorhanden ist, die der Benutzer an AWS IoT stellt. | Zeichenfolge | 
| aws:ResourceTag/\$1\$1tag-key\$1 | Die Schlüsselkomponente eines Tags, das an eine AWS IoT Ressource angehängt ist. | Zeichenfolge | 
| aws:TagKeys | Liste aller Tag-Schlüsselnamen, die der Ressource in der Anforderung zugeordnet sind | Zeichenfolge | 

Eine Liste der AWS IoT Bedingungsschlüssel finden Sie unter [Bedingungsschlüssel für AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-policy-keys) im *IAM-Benutzerhandbuch*. Informationen zu den Aktionen und Ressourcen, mit denen Sie einen Bedingungsschlüssel verwenden können, finden Sie unter [Definierte Aktionen von AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions).

### Beispiele
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



Beispiele für AWS IoT identitätsbasierte Richtlinien finden Sie unter. [AWS IoT Beispiele für identitätsbasierte Richtlinien](security_iam_id-based-policy-examples.md)

## AWS IoT ressourcenbasierte Richtlinien
<a name="security_iam_service-with-iam-resource-based-policies"></a>

Ressourcenbasierte Richtlinien sind JSON-Richtliniendokumente, die angeben, welche Aktionen ein bestimmter Prinzipal auf der AWS IoT Ressource ausführen kann und unter welchen Bedingungen.

AWS IoT unterstützt keine ressourcenbasierten IAM-Richtlinien. Es unterstützt AWS IoT jedoch ressourcenbasierte Richtlinien. Weitere Informationen finden Sie unter [AWS IoT Core Richtlinien](iot-policies.md).

## Autorisierung auf der Grundlage von Tags AWS IoT
<a name="security_iam_service-with-iam-tags"></a>

Sie können Tags an AWS IoT Ressourcen anhängen oder Tags in einer Anfrage an übergeben AWS IoT. Um den Zugriff auf der Grundlage von Tags zu steuern, geben Sie im Bedingungselement einer[ Richtlinie Tag-Informationen ](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_elements_condition.html)an, indem Sie die Schlüssel `iot:ResourceTag/key-name`, `aws:RequestTag/key-name`, oder Bedingung `aws:TagKeys` verwenden. Weitere Informationen finden Sie unter [Verwenden von Tags mit IAM-Richtlinien](tagging-iot-iam.md). Weitere Informationen zum Markieren von AWS IoT Ressourcen finden Sie unter[Verschlagworten Sie Ihre Ressourcen AWS IoT](tagging-iot.md).

Ein Beispiel für eine identitätsbasierte Richtlinie zur Einschränkung des Zugriffs auf eine Ressource auf der Grundlage der Markierungen dieser Ressource finden Sie unter [AWS IoT Ressourcen auf der Grundlage von Tags anzeigen](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-view-thing-tags).

## AWS IoT IAM-Rollen
<a name="security_iam_service-with-iam-roles"></a>

Eine [IAM-Rolle](https://docs.aws.amazon.com/service-authorization/latest/reference/id_roles.html) ist eine Entität innerhalb von Ihnen AWS-Konto , die über bestimmte Berechtigungen verfügt.

### Verwenden temporärer Anmeldeinformationen mit AWS IoT
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

Sie können temporäre Anmeldeinformationen verwenden, um sich über einen Verbund anzumelden, eine IAM-Rolle anzunehmen oder eine kontenübergreifende Rolle anzunehmen. Sie erhalten temporäre Sicherheitsanmeldedaten, indem Sie AWS STS API-Operationen wie [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)oder aufrufen [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html). 

AWS IoT unterstützt die Verwendung temporärer Anmeldeinformationen. 

### Service-verknüpfte Rollen
<a name="security_iam_service-with-iam-roles-service-linked"></a>

Mit [dienstbezogenen Rollen](https://docs.aws.amazon.com/service-authorization/latest/reference/id_roles_terms-and-concepts.html#iam-term-service-linked-role) können AWS Dienste auf Ressourcen in anderen Diensten zugreifen, um eine Aktion in Ihrem Namen auszuführen. Serviceverknüpfte Rollen werden in Ihrem IAM-Konto angezeigt und gehören zum Service. Ein IAM-Administrator kann die Berechtigungen für serviceverknüpfte Rollen anzeigen, aber nicht bearbeiten.

AWS IoT unterstützt keine dienstbezogenen Rollen.

### Servicerollen
<a name="security_iam_service-with-iam-roles-service"></a>

Dieses Feature ermöglicht einem Service das Annehmen einer [Servicerolle](https://docs.aws.amazon.com/service-authorization/latest/reference/id_roles_terms-and-concepts.html#iam-term-service-role) in Ihrem Namen. Diese Rolle gewährt dem Service Zugriff auf Ressourcen in anderen Diensten, um eine Aktion in Ihrem Namen auszuführen. Servicerollen werden in Ihrem IAM-Konto angezeigt und gehören zum Konto. Dies bedeutet, dass ein IAM-Administrator die Berechtigungen für diese Rolle ändern kann. Dies kann jedoch die Funktionalität des Dienstes beeinträchtigen.

# AWS IoT Beispiele für identitätsbasierte Richtlinien
<a name="security_iam_id-based-policy-examples"></a>

IAM-Benutzer besitzen keine Berechtigungen zum Erstellen oder Ändern von AWS IoT -Ressourcen. Sie können auch keine Aufgaben mit der AWS-Managementkonsole AWS CLI, oder AWS API ausführen. Ein IAM-Administrator muss IAM-Richtlinien erstellen, die Benutzern und Rollen die Berechtigung zum Ausführen bestimmter API-Operationen für die angegebenen Ressourcen gewähren, die diese benötigen. Der Administrator muss diese Richtlinien anschließend den -Benutzern oder -Gruppen anfügen, die diese Berechtigungen benötigen.

Informationen dazu, wie Sie unter Verwendung dieser beispielhaften JSON-Richtliniendokumente eine identitätsbasierte IAM-Richtlinie erstellen, finden Sie unter [Erstellen von Richtlinien auf der JSON-Registerkarte](https://docs.aws.amazon.com/service-authorization/latest/reference/access_policies_create.html#access_policies_create-json-editor) im *IAM-Benutzerhandbuch*.

**Topics**
+ [Best Practices für Richtlinien](#security_iam_service-with-iam-policy-best-practices)
+ [Verwenden der Konsole AWS IoT](#security_iam_id-based-policy-examples-console)
+ [Gewähren der Berechtigung zur Anzeige der eigenen Berechtigungen für Benutzer](#security_iam_id-based-policy-examples-view-own-permissions)
+ [AWS IoT Ressourcen auf der Grundlage von Tags anzeigen](#security_iam_id-based-policy-examples-view-thing-tags)
+ [AWS IoT Device Advisor-Ressourcen anhand von Stichwörtern anzeigen](#security_iam-device-advisor-tags)

## Best Practices für Richtlinien
<a name="security_iam_service-with-iam-policy-best-practices"></a>

Identitätsbasierte Richtlinien legen fest, ob jemand AWS IoT Ressourcen in Ihrem Konto erstellen, darauf zugreifen oder sie löschen kann. Dies kann zusätzliche Kosten für Ihr verursachen AWS-Konto. Beachten Sie beim Erstellen oder Bearbeiten identitätsbasierter Richtlinien die folgenden Richtlinien und Empfehlungen:
+ **Erste Schritte mit AWS verwalteten Richtlinien und Umstellung auf Berechtigungen mit den geringsten Rechten** — Verwenden Sie die *AWS verwalteten Richtlinien*, die Berechtigungen für viele gängige Anwendungsfälle gewähren, um damit zu beginnen, Ihren Benutzern und Workloads Berechtigungen zu gewähren. Sie sind in Ihrem verfügbar. AWS-Konto Wir empfehlen Ihnen, die Berechtigungen weiter zu reduzieren, indem Sie vom AWS Kunden verwaltete Richtlinien definieren, die speziell auf Ihre Anwendungsfälle zugeschnitten sind. Weitere Informationen finden Sie unter [Von AWS verwaltete Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) oder [Von AWS verwaltete Richtlinien für Auftragsfunktionen](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) im *IAM-Benutzerhandbuch*.
+ **Anwendung von Berechtigungen mit den geringsten Rechten** – Wenn Sie mit IAM-Richtlinien Berechtigungen festlegen, gewähren Sie nur die Berechtigungen, die für die Durchführung einer Aufgabe erforderlich sind. Sie tun dies, indem Sie die Aktionen definieren, die für bestimmte Ressourcen unter bestimmten Bedingungen durchgeführt werden können, auch bekannt als *die geringsten Berechtigungen*. Weitere Informationen zur Verwendung von IAM zum Anwenden von Berechtigungen finden Sie unter [ Richtlinien und Berechtigungen in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) im *IAM-Benutzerhandbuch*.
+ **Verwenden von Bedingungen in IAM-Richtlinien zur weiteren Einschränkung des Zugriffs** – Sie können Ihren Richtlinien eine Bedingung hinzufügen, um den Zugriff auf Aktionen und Ressourcen zu beschränken. Sie können beispielsweise eine Richtlinienbedingung schreiben, um festzulegen, dass alle Anforderungen mithilfe von SSL gesendet werden müssen. Sie können auch Bedingungen verwenden, um Zugriff auf Serviceaktionen zu gewähren, wenn diese für einen bestimmten Zweck verwendet werden AWS-Service, z. CloudFormation B. Weitere Informationen finden Sie unter [IAM-JSON-Richtlinienelemente: Bedingung](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) im *IAM-Benutzerhandbuch*.
+ **Verwenden von IAM Access Analyzer zur Validierung Ihrer IAM-Richtlinien, um sichere und funktionale Berechtigungen zu gewährleisten** – IAM Access Analyzer validiert neue und vorhandene Richtlinien, damit die Richtlinien der IAM-Richtliniensprache (JSON) und den bewährten IAM-Methoden entsprechen. IAM Access Analyzer stellt mehr als 100 Richtlinienprüfungen und umsetzbare Empfehlungen zur Verfügung, damit Sie sichere und funktionale Richtlinien erstellen können. Weitere Informationen finden Sie unter [Richtlinienvalidierung mit IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) im *IAM-Benutzerhandbuch*.
+ **Multi-Faktor-Authentifizierung (MFA) erforderlich** — Wenn Sie ein Szenario haben, das IAM-Benutzer oder einen Root-Benutzer in Ihrem System erfordert AWS-Konto, aktivieren Sie MFA für zusätzliche Sicherheit. Um MFA beim Aufrufen von API-Vorgängen anzufordern, fügen Sie Ihren Richtlinien MFA-Bedingungen hinzu. Weitere Informationen finden Sie unter [Sicherer API-Zugriff mit MFA](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) im *IAM-Benutzerhandbuch*.

Weitere Informationen zu bewährten Methoden in IAM finden Sie unter [Best Practices für die Sicherheit in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) im *IAM-Benutzerhandbuch*.

## Verwenden der Konsole AWS IoT
<a name="security_iam_id-based-policy-examples-console"></a>

Um auf die AWS IoT Konsole zugreifen zu können, benötigen Sie ein Mindestmaß an Berechtigungen. Diese Berechtigungen müssen es Ihnen ermöglichen, Details zu den AWS IoT Ressourcen in Ihrem aufzulisten und anzuzeigen AWS-Konto. Wenn Sie eine identitätsbasierte Richtlinie erstellen, die strenger ist als die mindestens erforderlichen Berechtigungen, funktioniert die Konsole nicht wie vorgesehen für Entitäten (Benutzer oder Rollen) mit dieser Richtlinie.

Um sicherzustellen, dass diese Entitäten die AWS IoT Konsole weiterhin verwenden können, fügen Sie den Entitäten außerdem die folgende AWS verwaltete Richtlinie hinzu:`AWSIoTFullAccess`. Weitere Informationen finden Sie unter [Hinzufügen von Berechtigungen zu einem Benutzer](https://docs.aws.amazon.com/service-authorization/latest/reference/id_users_change-permissions.html#users_change_permissions-add-console) im *IAM-Benutzerhandbuch*.

Sie müssen Benutzern, die nur die API AWS CLI oder die AWS API aufrufen, keine Mindestberechtigungen für die Konsole gewähren. Stattdessen sollten Sie nur Zugriff auf die Aktionen zulassen, die den API-Operation entsprechen, die Sie ausführen möchten.

## Gewähren der Berechtigung zur Anzeige der eigenen Berechtigungen für Benutzer
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

In diesem Beispiel wird gezeigt, wie Sie eine Richtlinie erstellen, die IAM-Benutzern die Berechtigung zum Anzeigen der eingebundenen Richtlinien und verwalteten Richtlinien gewährt, die ihrer Benutzeridentität angefügt sind. Diese Richtlinie umfasst Berechtigungen zum Ausführen dieser Aktion auf der Konsole oder programmgesteuert mithilfe der API AWS CLI oder AWS .

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

## AWS IoT Ressourcen auf der Grundlage von Tags anzeigen
<a name="security_iam_id-based-policy-examples-view-thing-tags"></a>

Sie können in Ihrer identitätsbasierten Richtlinie Bedingungen für die Steuerung des Zugriffs auf AWS IoT -Ressourcen auf der Basis von Tags verwenden. Dieses Beispiel zeigt, wie Sie eine Richtlinie erstellen können, die das Anzeigen eines Things ermöglicht. Die Berechtigung wird jedoch nur erteilt, wenn das Things-Tag `Owner` den Wert des Benutzernamens dieses Benutzers hat. Diese Richtlinie gewährt auch die Berechtigungen, die für die Ausführung dieser Aktion auf der Konsole erforderlich sind.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ListBillingGroupsInConsole",
            "Effect": "Allow",
            "Action": "iot:ListBillingGroups",
            "Resource": "*"
        },
        {
            "Sid": "ViewBillingGroupsIfOwner",
            "Effect": "Allow",
           "Action": "iot:DescribeBillingGroup",
            "Resource": "arn:aws:iot:*:*:billinggroup/*",
            "Condition": {
                "StringEquals": {"aws:ResourceTag/Owner": "${aws:username}"}
        }
        }
    ]
}
```

Sie können diese Richtlinie den IAM-Benutzern in Ihrem Konto anfügen. Wenn ein benannter Benutzer `richard-roe` versucht, eine AWS IoT Abrechnungsgruppe aufzurufen, muss die Abrechnungsgruppe mit `Owner=richard-roe` oder gekennzeichnet werden`owner=richard-roe`. Andernfalls wird der Zugriff abgelehnt. Der Tag-Schlüssel `Owner` der Bedingung stimmt sowohl mit `Owner` als auch mit `owner` überein, da die Namen von Bedingungsschlüsseln nicht zwischen Groß- und Kleinschreibung unterscheiden. Weitere Informationen finden Sie unter [IAM-JSON-Richtlinienelemente: Bedingung](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_elements_condition.html) im *IAM-Benutzerhandbuch*.

## AWS IoT Device Advisor-Ressourcen anhand von Stichwörtern anzeigen
<a name="security_iam-device-advisor-tags"></a>

Sie können in Ihrer identitätsbasierten Richtlinie Bedingungen für die Steuerung des Zugriffs auf AWS IoT -Device-Advisor-Ressourcen auf der Basis von Tags verwenden. Im folgenden Beispiel wird gezeigt, wie Sie eine Richtlinie erstellen können, mit der eine bestimmte Suite-Definition angezeigt werden kann. Die Berechtigung wird jedoch nur erteilt, wenn `SuiteType` im Suite-Definitions-Tag auf den Wert von `MQTT` gesetzt ist. Diese Richtlinie gewährt auch die Berechtigungen, die für die Ausführung dieser Aktion auf der Konsole erforderlich sind.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewSuiteDefinition",
            "Effect": "Allow",
            "Action": "iotdeviceadvisor:GetSuiteDefinition",
            "Resource": "arn:aws:iotdeviceadvisor:*:*:suitedefinition/*",
            "Condition": {
                "StringEquals": {"aws:ResourceTag/SuiteType": "MQTT"}
        }
        }
    ]
}
```

# AWS verwaltete Richtlinien für AWS IoT
<a name="security-iam-awsmanpol"></a>







Um Benutzern, Gruppen und Rollen Berechtigungen hinzuzufügen, ist es einfacher, AWS verwaltete Richtlinien zu verwenden, als Richtlinien selbst zu schreiben. Es erfordert Zeit und Fachwissen, um [von Kunden verwaltete IAM-Richtlinien zu erstellen](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html), die Ihrem Team nur die benötigten Berechtigungen bieten. Um schnell loszulegen, können Sie unsere AWS verwalteten Richtlinien verwenden. Diese Richtlinien decken allgemeine Anwendungsfälle ab und sind in Ihrem AWS-Konto verfügbar. Weitere Informationen zu AWS verwalteten Richtlinien finden Sie im *IAM-Benutzerhandbuch* unter [AWS Verwaltete Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies).

AWS Dienste verwalten und aktualisieren AWS verwaltete Richtlinien. Sie können die Berechtigungen in AWS verwalteten Richtlinien nicht ändern. Services fügen einer von AWS verwalteten Richtlinien gelegentlich zusätzliche Berechtigungen hinzu, um neue Features zu unterstützen. Diese Art von Update betrifft alle Identitäten (Benutzer, Gruppen und Rollen), an welche die Richtlinie angehängt ist. Services aktualisieren eine von AWS verwaltete Richtlinie am ehesten, ein neues Feature gestartet wird oder neue Vorgänge verfügbar werden. Dienste entfernen keine Berechtigungen aus einer AWS verwalteten Richtlinie, sodass durch Richtlinienaktualisierungen Ihre bestehenden Berechtigungen nicht beeinträchtigt werden.

 AWS Unterstützt außerdem verwaltete Richtlinien für Jobfunktionen, die sich über mehrere Dienste erstrecken. Die **ReadOnlyAccess** AWS verwaltete Richtlinie bietet beispielsweise schreibgeschützten Zugriff auf alle AWS Dienste und Ressourcen. Wenn ein Service ein neues Feature startet, fügt AWS schreibgeschützte Berechtigungen für neue Vorgänge und Ressourcen hinzu. Eine Liste und Beschreibungen der Richtlinien für Auftragsfunktionen finden Sie in [Verwaltete AWS -Richtlinien für Auftragsfunktionen](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) im *IAM-Leitfaden*.

**Anmerkung**  
AWS IoT funktioniert sowohl mit IAM-Richtlinien als auch mit AWS IoT IAM-Richtlinien. In diesem Thema werden nur IAM-Richtlinien behandelt, die eine Richtlinienaktion für API-Operationen auf der Steuer- und Datenebene definieren. Siehe auch [AWS IoT Core Richtlinien](iot-policies.md).









## AWS verwaltete Richtlinie: Zugriff AWSIo TConfig
<a name="security-iam-awsmanpol-AWSIoTConfigAccess"></a>





Sie können die `AWSIoTConfigAccess`-Richtlinie an Ihre IAM-Identitäten anfügen.



Diese Richtlinie erteilt die zugehörigen Identitätsberechtigungen, die Zugriff auf alle AWS IoT -Konfigurationsoperationen gewähren. Diese Richtlinie kann sich auf Datenverarbeitung und Speicher auswirken. Informationen zu dieser Richtlinie finden Sie AWS-Managementkonsole unter [AWSIoTConfigAccess](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTConfigAccess$jsonEditor?section=permissions).



**Details zu Berechtigungen**

Diese Richtlinie umfasst die folgenden Berechtigungen.




+ `iot`— Rufen Sie AWS IoT Daten ab und führen Sie IoT-Konfigurationsaktionen durch.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:AcceptCertificateTransfer",
                "iot:AddThingToThingGroup",
                "iot:AssociateTargetsWithJob",
                "iot:AttachPolicy",
                "iot:AttachPrincipalPolicy",
                "iot:AttachThingPrincipal",
                "iot:CancelCertificateTransfer",
                "iot:CancelJob",
                "iot:CancelJobExecution",
                "iot:ClearDefaultAuthorizer",
                "iot:CreateAuthorizer",
                "iot:CreateCertificateFromCsr",
                "iot:CreateJob",
                "iot:CreateKeysAndCertificate",
                "iot:CreateOTAUpdate",
                "iot:CreatePolicy",
                "iot:CreatePolicyVersion",
                "iot:CreateRoleAlias",
                "iot:CreateStream",
                "iot:CreateThing",
                "iot:CreateThingGroup",
                "iot:CreateThingType",
                "iot:CreateTopicRule",
                "iot:DeleteAuthorizer",
                "iot:DeleteCACertificate",
                "iot:DeleteCertificate",
                "iot:DeleteJob",
                "iot:DeleteJobExecution",
                "iot:DeleteOTAUpdate",
                "iot:DeletePolicy",
                "iot:DeletePolicyVersion",
                "iot:DeleteRegistrationCode",
                "iot:DeleteRoleAlias",
                "iot:DeleteStream",
                "iot:DeleteThing",
                "iot:DeleteThingGroup",
                "iot:DeleteThingType",
                "iot:DeleteTopicRule",
                "iot:DeleteV2LoggingLevel",
                "iot:DeprecateThingType",
                "iot:DescribeAuthorizer",
                "iot:DescribeCACertificate",
                "iot:DescribeCertificate",
                "iot:DescribeDefaultAuthorizer",
                "iot:DescribeEndpoint",
                "iot:DescribeEventConfigurations",
                "iot:DescribeIndex",
                "iot:DescribeJob",
                "iot:DescribeJobExecution",
                "iot:DescribeRoleAlias",
                "iot:DescribeStream",
                "iot:DescribeThing",
                "iot:DescribeThingGroup",
                "iot:DescribeThingRegistrationTask",
                "iot:DescribeThingType",
                "iot:DetachPolicy",
                "iot:DetachPrincipalPolicy",
                "iot:DetachThingPrincipal",
                "iot:DisableTopicRule",
                "iot:EnableTopicRule",
                "iot:GetEffectivePolicies",
                "iot:GetIndexingConfiguration",
                "iot:GetJobDocument",
                "iot:GetLoggingOptions",
                "iot:GetOTAUpdate",
                "iot:GetPolicy",
                "iot:GetPolicyVersion",
                "iot:GetRegistrationCode",
                "iot:GetTopicRule",
                "iot:GetV2LoggingOptions",
                "iot:ListAttachedPolicies",
                "iot:ListAuthorizers",
                "iot:ListCACertificates",
                "iot:ListCertificates",
                "iot:ListCertificatesByCA",
                "iot:ListIndices",
                "iot:ListJobExecutionsForJob",
                "iot:ListJobExecutionsForThing",
                "iot:ListJobs",
                "iot:ListOTAUpdates",
                "iot:ListOutgoingCertificates",
                "iot:ListPolicies",
                "iot:ListPolicyPrincipals",
                "iot:ListPolicyVersions",
                "iot:ListPrincipalPolicies",
                "iot:ListPrincipalThings",
                "iot:ListRoleAliases",
                "iot:ListStreams",
                "iot:ListTargetsForPolicy",
                "iot:ListThingGroups",
                "iot:ListThingGroupsForThing",
                "iot:ListThingPrincipals",
                "iot:ListThingRegistrationTaskReports",
                "iot:ListThingRegistrationTasks",
                "iot:ListThings",
                "iot:ListThingsInThingGroup",
                "iot:ListThingTypes",
                "iot:ListTopicRules",
                "iot:ListV2LoggingLevels",
                "iot:RegisterCACertificate",
                "iot:RegisterCertificate",
                "iot:RegisterThing",
                "iot:RejectCertificateTransfer",
                "iot:RemoveThingFromThingGroup",
                "iot:ReplaceTopicRule",
                "iot:SearchIndex",
                "iot:SetDefaultAuthorizer",
                "iot:SetDefaultPolicyVersion",
                "iot:SetLoggingOptions",
                "iot:SetV2LoggingLevel",
                "iot:SetV2LoggingOptions",
                "iot:StartThingRegistrationTask",
                "iot:StopThingRegistrationTask",
                "iot:TestAuthorization",
                "iot:TestInvokeAuthorizer",
                "iot:TransferCertificate",
                "iot:UpdateAuthorizer",
                "iot:UpdateCACertificate",
                "iot:UpdateCertificate",
                "iot:UpdateEventConfigurations",
                "iot:UpdateIndexingConfiguration",
                "iot:UpdateRoleAlias",
                "iot:UpdateStream",
                "iot:UpdateThing",
                "iot:UpdateThingGroup",
                "iot:UpdateThingGroupsForThing",
                "iot:UpdateAccountAuditConfiguration",
                "iot:DescribeAccountAuditConfiguration",
                "iot:DeleteAccountAuditConfiguration",
                "iot:StartOnDemandAuditTask",
                "iot:CancelAuditTask",
                "iot:DescribeAuditTask",
                "iot:ListAuditTasks",
                "iot:CreateScheduledAudit",
                "iot:UpdateScheduledAudit",
                "iot:DeleteScheduledAudit",
                "iot:DescribeScheduledAudit",
                "iot:ListScheduledAudits",
                "iot:ListAuditFindings",
                "iot:CreateSecurityProfile",
                "iot:DescribeSecurityProfile",
                "iot:UpdateSecurityProfile",
                "iot:DeleteSecurityProfile",
                "iot:AttachSecurityProfile",
                "iot:DetachSecurityProfile",
                "iot:ListSecurityProfiles",
                "iot:ListSecurityProfilesForTarget",
                "iot:ListTargetsForSecurityProfile",
                "iot:ListActiveViolations",
                "iot:ListViolationEvents",
                "iot:ValidateSecurityProfileBehaviors"
            ],
            "Resource": "*"
        }
    ]
}
```

## AWS verwaltete Richtlinie: AWSIo TConfig ReadOnlyAccess
<a name="security-iam-awsmanpol-AWSIoTConfigReadOnlyAccess"></a>





Sie können die `AWSIoTConfigReadOnlyAccess`-Richtlinie an Ihre IAM-Identitäten anfügen.



Diese Richtlinie erteilt die zugehörigen Identitätsberechtigungen, die schreibgeschützten Zugriff auf alle AWS IoT -Konfigurationsoperationen gewähren. Informationen zu dieser Richtlinie finden Sie AWS-Managementkonsole unter [AWSIoTConfigReadOnlyAccess](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTConfigReadOnlyAccess$jsonEditor?section=permissions).



**Details zu Berechtigungen**

Diese Richtlinie umfasst die folgenden Berechtigungen.




+ `iot`: Führen Sie schreibgeschützte Operationen von IoT-Konfigurationsaktionen durch.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:DescribeAuthorizer",
                "iot:DescribeCACertificate",
                "iot:DescribeCertificate",
                "iot:DescribeDefaultAuthorizer",
                "iot:DescribeEndpoint",
                "iot:DescribeEventConfigurations",
                "iot:DescribeIndex",
                "iot:DescribeJob",
                "iot:DescribeJobExecution",
                "iot:DescribeRoleAlias",
                "iot:DescribeStream",
                "iot:DescribeThing",
                "iot:DescribeThingGroup",
                "iot:DescribeThingRegistrationTask",
                "iot:DescribeThingType",
                "iot:GetEffectivePolicies",
                "iot:GetIndexingConfiguration",
                "iot:GetJobDocument",
                "iot:GetLoggingOptions",
                "iot:GetOTAUpdate",
                "iot:GetPolicy",
                "iot:GetPolicyVersion",
                "iot:GetRegistrationCode",
                "iot:GetTopicRule",
                "iot:GetV2LoggingOptions",
                "iot:ListAttachedPolicies",
                "iot:ListAuthorizers",
                "iot:ListCACertificates",
                "iot:ListCertificates",
                "iot:ListCertificatesByCA",
                "iot:ListIndices",
                "iot:ListJobExecutionsForJob",
                "iot:ListJobExecutionsForThing",
                "iot:ListJobs",
                "iot:ListOTAUpdates",
                "iot:ListOutgoingCertificates",
                "iot:ListPolicies",
                "iot:ListPolicyPrincipals",
                "iot:ListPolicyVersions",
                "iot:ListPrincipalPolicies",
                "iot:ListPrincipalThings",
                "iot:ListRoleAliases",
                "iot:ListStreams",
                "iot:ListTargetsForPolicy",
                "iot:ListThingGroups",
                "iot:ListThingGroupsForThing",
                "iot:ListThingPrincipals",
                "iot:ListThingRegistrationTaskReports",
                "iot:ListThingRegistrationTasks",
                "iot:ListThings",
                "iot:ListThingsInThingGroup",
                "iot:ListThingTypes",
                "iot:ListTopicRules",
                "iot:ListV2LoggingLevels",
                "iot:SearchIndex",
                "iot:TestAuthorization",
                "iot:TestInvokeAuthorizer",
                "iot:DescribeAccountAuditConfiguration",
                "iot:DescribeAuditTask",
                "iot:ListAuditTasks",
                "iot:DescribeScheduledAudit",
                "iot:ListScheduledAudits",
                "iot:ListAuditFindings",
                "iot:DescribeSecurityProfile",
                "iot:ListSecurityProfiles",
                "iot:ListSecurityProfilesForTarget",
                "iot:ListTargetsForSecurityProfile",
                "iot:ListActiveViolations",
                "iot:ListViolationEvents",
                "iot:ValidateSecurityProfileBehaviors"
            ],
            "Resource": "*"
        }
    ]
}
```

## AWS verwaltete Richtlinie: AWSIo TData Zugriff
<a name="security-iam-awsmanpol-AWSIoTDataAccess"></a>





Sie können die `AWSIoTDataAccess`-Richtlinie an Ihre IAM-Identitäten anfügen.



Diese Richtlinie gewährt den zugehörigen Identitätsberechtigungen, die den Zugriff auf alle AWS IoT Datenoperationen ermöglichen. Bei den Datenoperationen werden Daten über das MQTT- oder HTTP-Protokoll gesendet. Informationen zum Anzeigen dieser Richtlinie in der AWS-Managementkonsole finden Sie unter [https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTDataAccess?section=permissions](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTDataAccess?section=permissions).



**Details zu Berechtigungen**

Diese Richtlinie umfasst die folgenden Berechtigungen.




+ `iot`— Rufen Sie AWS IoT Daten ab und gewähren Sie vollen Zugriff auf AWS IoT Messaging-Aktionen.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect",
                "iot:Publish",
                "iot:Subscribe",
                "iot:Receive",
                "iot:GetThingShadow",
                "iot:UpdateThingShadow",
                "iot:DeleteThingShadow",
                "iot:ListNamedShadowsForThing"
            ],
            "Resource": "*"
        }
    ]
}
```

## AWS verwaltete Richtlinie: AWSIo TFull Zugriff
<a name="security-iam-awsmanpol-AWSIoTFullAccess"></a>





Sie können die `AWSIoTFullAccess`-Richtlinie an Ihre IAM-Identitäten anfügen.



Diese Richtlinie erteilt die zugehörigen Identitätsberechtigungen, die Zugriff auf alle AWS IoT -Konfigurations- und Messaging-Operationen gewähren. Informationen zu dieser Richtlinie finden Sie AWS-Managementkonsole unter [https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTFullAccess?section=permissions](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTFullAccess?section=permissions).



**Details zu Berechtigungen**

Diese Richtlinie umfasst die folgenden Berechtigungen.




+ `iot`— Rufen Sie AWS IoT Daten ab und gewähren Sie vollen Zugriff auf AWS IoT Konfiguration und Nachrichtenaktionen.
+ `iotjobsdata`— Rufen Sie AWS IoT Jobs-Daten ab und ermöglichen Sie den vollen Zugriff auf die API-Operationen auf der AWS IoT Jobs-Datenebene.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:*",
                "iotjobsdata:*"
            ],
            "Resource": "*"
        }
    ]
}
```

## AWS verwaltete Richtlinie: AWSIo TLogging
<a name="security-iam-awsmanpol-AWSIoTLogging"></a>





Sie können die `AWSIoTLogging`-Richtlinie an Ihre IAM-Identitäten anfügen.



Diese Richtlinie gewährt die zugehörigen Identitätsberechtigungen, die den Zugriff auf die Erstellung von Amazon CloudWatch Logs-Gruppen und das Streamen von Protokollen an die Gruppen ermöglichen. Diese Richtlinie ist mit Ihrer CloudWatch Logging-Rolle verknüpft. Informationen zu dieser Richtlinie finden Sie AWS-Managementkonsole unter [https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTLogging?section=permissions](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTLogging?section=permissions).



**Details zu Berechtigungen**

Diese Richtlinie umfasst die folgenden Berechtigungen.




+ `logs`— CloudWatch Protokolle abrufen. Ermöglicht auch die Erstellung von CloudWatch Protokollgruppen und das Streamen von Protokollen an die Gruppen.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:PutMetricFilter",
                "logs:PutRetentionPolicy",
                "logs:GetLogEvents",
                "logs:DeleteLogStream"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

## AWS verwaltete Richtlinie: AWSIo TOTAUpdate
<a name="security-iam-awsmanpol-AWSIoTOTAUpdate"></a>





Sie können die `AWSIoTOTAUpdate`-Richtlinie an Ihre IAM-Identitäten anfügen.



Diese Richtlinie gewährt die zugehörigen Identitätsberechtigungen, die den Zugriff auf das Erstellen von AWS IoT Jobs und AWS IoT Codesignatur-Jobs und das Beschreiben von AWS Codesigner-Jobs ermöglichen. [Informationen zu dieser Richtlinie finden Sie AWS-Managementkonsole unter`AWSIoTOTAUpdate`.](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTOTAUpdate?section=permissions)



**Details zu Berechtigungen**

Diese Richtlinie umfasst die folgenden Berechtigungen.




+ `iot`— AWS IoT Jobs und Codesignatur-Jobs erstellen.
+ `signer`— Führen Sie die Erstellung von AWS Codesigner-Jobs durch.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "iot:CreateJob",
            "signer:DescribeSigningJob"
        ],
        "Resource": "*"
    }
}
```

## AWS verwaltete Richtlinie: Aktionen AWSIo TRule
<a name="security-iam-awsmanpol-AWSIoTRuleActions"></a>





Sie können die `AWSIoTRuleActions`-Richtlinie an Ihre IAM-Identitäten anfügen.



Diese Richtlinie gewährt den zugehörigen Identitätsberechtigungen, die den Zugriff auf alle AWS-Service in AWS IoT der Regel unterstützten Aktionen ermöglichen. Informationen zu dieser Richtlinie in der AWS-Managementkonsole finden Sie unter [https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTRuleActions?section=permissions](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTRuleActions?section=permissions).



**Details zu Berechtigungen**

Diese Richtlinie umfasst die folgenden Berechtigungen.




+ `iot`: Führen Sie Aktionen zum Veröffentlichen von Regelaktionsmeldungen durch.
+ `dynamodb`: Fügen Sie eine Nachricht in eine DynamoDB-Tabelle ein oder teilen Sie eine Nachricht in mehrere Spalten einer DynamoDB-Tabelle auf.
+ `s3`: Speichern Sie ein Objekt zu einem Amazon-S3-Bucket.
+ `kinesis`: Senden Sie eine Nachricht an ein Amazon-Kinesis-Streamingobjekt.
+ `firehose`- Fügt einen Datensatz in ein Firehose-Stream-Objekt ein.
+ `cloudwatch`- Ändern Sie den CloudWatch Alarmstatus oder senden Sie Nachrichtendaten an die CloudWatch Metrik.
+ `sns`: Führen Sie die Operation durch, um eine Benachrichtigung mit Amazon SNS zu veröffentlichen. Dieser Vorgang ist auf SNS-Themen beschränkt AWS IoT .
+ `sqs`: Fügen Sie eine Nachricht ein, die der SQS-Warteschlange hinzugefügt werden soll.
+ `es`- Senden Sie eine Nachricht an den OpenSearch Servicedienst.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "dynamodb:PutItem",
            "kinesis:PutRecord",
            "iot:Publish",
            "s3:PutObject",
            "sns:Publish",
            "sqs:SendMessage*",
            "cloudwatch:SetAlarmState",
            "cloudwatch:PutMetricData",
            "es:ESHttpPut",
            "firehose:PutRecord"
        ],
        "Resource": "*"
    }
}
```

## AWS verwaltete Richtlinie: AWSIo TThings Registrierung
<a name="security-iam-awsmanpol-AWSIoTThingsRegistration"></a>





Sie können die `AWSIoTThingsRegistration`-Richtlinie an Ihre IAM-Identitäten anfügen.



Diese Richtlinie gewährt die zugehörigen Identitätsberechtigungen, die die Massenregistrierung von Objekten mithilfe der `StartThingRegistrationTask`-API ermöglichen. Diese Richtlinie kann sich auf Datenverarbeitung und Speicher auswirken. Informationen zu dieser Richtlinie finden Sie AWS-Managementkonsole unter [https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTThingsRegistration?section=permissions](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTThingsRegistration?section=permissions).



**Details zu Berechtigungen**

Diese Richtlinie umfasst die folgenden Berechtigungen.




+ `iot`: Führen Sie bei der Massenregistrierung Aktionen zum Erstellen von Objekten und zum Anhängen von Richtlinien und Zertifikaten durch.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:AddThingToThingGroup",
                "iot:AttachPolicy",
                "iot:AttachPrincipalPolicy",
                "iot:AttachThingPrincipal",
                "iot:CreateCertificateFromCsr",
                "iot:CreatePolicy",
                "iot:CreateThing",
                "iot:DescribeCertificate",
                "iot:DescribeThing",
                "iot:DescribeThingGroup",
                "iot:DescribeThingType",
                "iot:DetachPolicy",
                "iot:DetachThingPrincipal",
                "iot:GetPolicy",
                "iot:ListAttachedPolicies",
                "iot:ListPolicyPrincipals",
                "iot:ListPrincipalPolicies",
                "iot:ListPrincipalThings",
                "iot:ListTargetsForPolicy",
                "iot:ListThingGroupsForThing",
                "iot:ListThingPrincipals",
                "iot:RegisterCertificate",
                "iot:RegisterThing",
                "iot:RemoveThingFromThingGroup",
                "iot:UpdateCertificate",
                "iot:UpdateThing",
                "iot:UpdateThingGroupsForThing",
                "iot:AddThingToBillingGroup",
                "iot:DescribeBillingGroup",
                "iot:RemoveThingFromBillingGroup"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```





## AWS IoT Aktualisierungen der AWS verwalteten Richtlinien
<a name="security-iam-awsmanpol-updates"></a>



Hier finden Sie Informationen zu Aktualisierungen AWS verwalteter Richtlinien, die AWS IoT seit Beginn der Nachverfolgung dieser Änderungen durch diesen Dienst vorgenommen wurden. Abonnieren Sie den RSS-Feed auf der Seite AWS IoT Dokumentenverlauf, um automatische Benachrichtigungen über Änderungen an dieser Seite zu erhalten.




| Änderungen | Beschreibung | Date | 
| --- | --- | --- | 
|  [AWSIoTFullZugriff](#security-iam-awsmanpol-AWSIoTFullAccess) — Aktualisierung einer bestehenden Richtlinie  |  AWS IoT Es wurden neue Berechtigungen hinzugefügt, um Benutzern den Zugriff auf API-Operationen auf AWS IoT Jobs-Datenebene mithilfe des HTTP-Protokolls zu ermöglichen. Ein neues IAM-Richtlinienpräfix,`iotjobsdata:`, bietet Ihnen eine detailliertere Zugriffskontrolle für den Zugriff auf Endpunkte der AWS IoT Jobs-Datenebene. Für API-Operationen auf der Steuerebene verwenden Sie weiterhin das Präfix `iot:`. Weitere Informationen finden Sie unter [AWS IoT Core Richtlinien für das HTTPS-Protokoll](iot-data-plane-jobs.md#iot-jobs-data-http).  | 11. Mai 2022 | 
|  AWS IoT hat begonnen, Änderungen zu verfolgen  |  AWS IoT hat begonnen, Änderungen für die AWS verwalteten Richtlinien zu verfolgen.  | 11. Mai 2022 | 

# Fehlerbehebung bei AWS IoT Identität und Zugriff
<a name="security_iam_troubleshoot"></a>

Verwenden Sie die folgenden Informationen, um häufig auftretende Probleme zu diagnostizieren und zu beheben, die bei der Arbeit mit AWS IoT und IAM auftreten können.

**Topics**
+ [Ich bin nicht berechtigt, eine Aktion durchzuführen in AWS IoT](#security_iam_troubleshoot-no-permissions)
+ [Ich bin nicht berechtigt, iam auszuführen: PassRole](#security_iam_troubleshoot-passrole)
+ [Ich möchte Personen außerhalb von mir den Zugriff AWS-Konto auf meine AWS IoT Ressourcen ermöglichen](#security_iam_troubleshoot-cross-account-access)

## Ich bin nicht berechtigt, eine Aktion durchzuführen in AWS IoT
<a name="security_iam_troubleshoot-no-permissions"></a>

Wenn Sie eine Fehlermeldung erhalten, dass Sie nicht zur Durchführung einer Aktion berechtigt sind, müssen Ihre Richtlinien aktualisiert werden, damit Sie die Aktion durchführen können.

Der folgende Beispielfehler tritt auf, wenn der/die IAM-Benutzer:in `mateojackson` versucht, über die Konsole Details zu einer Objektressource anzuzeigen, jedoch nicht über `iot:DescribeThing`-Berechtigungen verfügt.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: iot:DescribeThing on resource: MyIoTThing
```

In diesem Fall muss die Richtlinie für den/die Benutzer:in `mateojackson` aktualisiert werden, damit er/sie mit der `iot:DescribeThing`-Aktion auf die Objektressource zugreifen kann. 

Wenn Sie Hilfe benötigen, wenden Sie sich an Ihren AWS Administrator. Ihr Administrator hat Ihnen Ihre Anmeldeinformationen zur Verfügung gestellt.

Verwenden von AWS IoT Device Advisor  
Wenn Sie AWS IoT Device Advisor verwenden, tritt der folgende Beispielfehler auf, wenn der Benutzer `mateojackson` versucht, die Konsole zu verwenden, um Details zu einer Suite-Definition anzuzeigen, aber nicht über die `iotdeviceadvisor:GetSuiteDefinition` entsprechenden Berechtigungen verfügt.  

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: iotdeviceadvisor:GetSuiteDefinition on resource: MySuiteDefinition
```
In diesem Fall muss die Richtlinie für den Benutzer `mateojackson` aktualisiert werden, damit er mit der `iotdeviceadvisor:GetSuiteDefinition`-Aktion auf die *`MySuiteDefinition`*-Ressource zugreifen kann.

## Ich bin nicht berechtigt, iam auszuführen: PassRole
<a name="security_iam_troubleshoot-passrole"></a>

Wenn Sie die Fehlermeldung erhalten, dass Sie nicht zum Durchführen der `iam:PassRole`-Aktion autorisiert sind, müssen Ihre Richtlinien aktualisiert werden, um eine Rolle an AWS IoTübergeben zu können.

Einige AWS-Services ermöglichen es Ihnen, eine bestehende Rolle an diesen Dienst zu übergeben, anstatt eine neue Servicerolle oder eine dienstverknüpfte Rolle zu erstellen. Hierzu benötigen Sie Berechtigungen für die Übergabe der Rolle an den Dienst.

Der folgende Beispielfehler tritt auf, wenn ein IAM-Benutzer mit dem Namen `marymajor` versucht, die Konsole zu verwenden, um eine Aktion in AWS IoT auszuführen. Die Aktion erfordert jedoch, dass der Service über Berechtigungen verfügt, die durch eine Servicerolle gewährt werden. Mary besitzt keine Berechtigungen für die Übergabe der Rolle an den Dienst.

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

In diesem Fall müssen die Richtlinien von Mary aktualisiert werden, um die Aktion `iam:PassRole` ausführen zu können.

Wenn Sie Hilfe benötigen, wenden Sie sich an Ihren AWS Administrator. Ihr Administrator hat Ihnen Ihre Anmeldeinformationen zur Verfügung gestellt.

## Ich möchte Personen außerhalb von mir den Zugriff AWS-Konto auf meine AWS IoT Ressourcen ermöglichen
<a name="security_iam_troubleshoot-cross-account-access"></a>

Sie können eine Rolle erstellen, mit der Benutzer in anderen Konten oder Personen außerhalb Ihrer Organisation auf Ihre Ressourcen zugreifen können. Sie können festlegen, wem die Übernahme der Rolle anvertraut wird. Für Dienste, die ressourcenbasierte Richtlinien oder Zugriffskontrolllisten (ACLs) unterstützen, können Sie diese Richtlinien verwenden, um Personen Zugriff auf Ihre Ressourcen zu gewähren.

Weitere Informationen dazu finden Sie hier:
+ Informationen darüber, ob diese Funktionen AWS IoT unterstützt werden, finden Sie unter. [Wie AWS IoT funktioniert mit IAM](security_iam_service-with-iam.md)
+ *Informationen dazu, wie Sie Zugriff auf Ihre Ressourcen gewähren können, AWS-Konten die Ihnen gehören, finden Sie im IAM-Benutzerhandbuch unter [Gewähren des Zugriffs auf einen IAM-Benutzer in einem anderen AWS-Konto , den Sie besitzen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html).*
+ Informationen dazu, wie Sie Dritten Zugriff auf Ihre Ressourcen gewähren können AWS-Konten, finden Sie [AWS-Konten im *IAM-Benutzerhandbuch* unter Gewähren des Zugriffs für Dritte](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html).
+ Informationen dazu, wie Sie über einen Identitätsverbund Zugriff gewähren, finden Sie unter [Gewähren von Zugriff für extern authentifizierte Benutzer (Identitätsverbund)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html) im *IAM-Benutzerhandbuch*.
+ Informationen zum Unterschied zwischen der Verwendung von Rollen und ressourcenbasierten Richtlinien für den kontoübergreifenden Zugriff finden Sie unter [Kontoübergreifender Ressourcenzugriff in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) im *IAM-Benutzerhandbuch*.

# Protokollieren und Überwachen
<a name="security-logging"></a>

Die Überwachung ist ein wichtiger Bestandteil der Aufrechterhaltung der Zuverlässigkeit, Verfügbarkeit und Leistung Ihrer AWS IoT AWS Lösungen. Sie sollten Überwachungsdaten aus allen Teilen Ihrer AWS Lösung sammeln, damit Sie einen etwaigen Ausfall an mehreren Stellen leichter debuggen können. Informationen zu Protokollierungs- und Überwachungsverfahren finden Sie unter [Überwachung AWS IoT](monitoring_overview.md)

## Überwachungstools
<a name="monitoring_automated_manual"></a>

AWS stellt Tools bereit, die Sie zur Überwachung verwenden können AWS IoT. Sie können einige dieser Tools für die Überwachung konfigurieren. Einige der Tools erfordern manuelle Eingriffe. Wir empfehlen, dass Sie die Überwachungsaufgaben möglichst automatisieren.

### Automatisierte Überwachungstools
<a name="monitoring_automated_tools"></a>

Sie können die folgenden automatisierten Überwachungstools verwenden, um zu beobachten AWS IoT und zu melden, wenn etwas nicht stimmt:
+ **Amazon CloudWatch Alarms** — Überwachen Sie eine einzelne Metrik über einen von Ihnen angegebenen Zeitraum und führen Sie eine oder mehrere Aktionen aus, die auf dem Wert der Metrik im Verhältnis zu einem bestimmten Schwellenwert über mehrere Zeiträume basieren. Die Aktion ist eine Benachrichtigung, die an ein Amazon Simple Notification Service (Amazon SNS) -Thema oder eine Amazon EC2 Auto Scaling Scaling-Richtlinie gesendet wird. CloudWatch Alarme lösen keine Aktionen aus, nur weil sie sich in einem bestimmten Status befinden. Der Status muss sich geändert haben und für eine festgelegte Anzahl an Zeiträumen aufrechterhalten worden sein. Weitere Informationen finden Sie unter [Überwachen Sie AWS IoT Alarme und Messwerte mit Amazon CloudWatch](monitoring-cloudwatch.md).
+ **Amazon CloudWatch Logs** — Überwachen, speichern und greifen Sie auf Ihre Protokolldateien aus AWS CloudTrail oder anderen Quellen zu. Mit Amazon CloudWatch Logs können Sie auch wichtige Schritte, die AWS IoT Device Advisor-Testfälle ausführen, generierte Ereignisse und MQTT-Nachrichten sehen, die von Ihren Geräten oder AWS IoT Core während der Testausführung gesendet wurden. Mit diesen Protokollen können Sie Geräte debuggen und Korrekturmaßnahmen auf Ihren Geräten ergreifen. Weitere Informationen finden Sie unter [Überwachung AWS IoT mithilfe von Protokollen CloudWatch](cloud-watch-logs.md) Weitere Informationen zur Verwendung von Amazon CloudWatch finden Sie unter [Überwachung von Protokolldateien](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html) im * CloudWatch Amazon-Benutzerhandbuch*.
+ **Amazon CloudWatch Events** — Ordnen Sie Ereignisse zu und leiten Sie sie an eine oder mehrere Zielfunktionen oder Streams weiter, um Änderungen vorzunehmen, Statusinformationen zu erfassen und Korrekturmaßnahmen zu ergreifen. Weitere Informationen finden Sie unter [Was ist Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchEvents.html) im * CloudWatch Amazon-Benutzerhandbuch*.
+ **AWS CloudTrail Protokollüberwachung** — Teilen Sie Protokolldateien zwischen Konten, überwachen CloudTrail Sie Protokolldateien in Echtzeit, indem Sie sie an CloudWatch Logs senden, schreiben Sie Protokollverarbeitungsanwendungen in Java und überprüfen Sie, ob sich Ihre Protokolldateien nach der Lieferung von nicht geändert haben CloudTrail. Weitere Informationen finden Sie unter [AWS IoT API-Aufrufe protokollieren mit AWS CloudTrail](iot-using-cloudtrail.md) und auch [Arbeiten mit CloudTrail Protokolldateien](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-working-with-log-files.html) im *AWS CloudTrail Benutzerhandbuch*. 

### Manuelle Überwachungstools
<a name="monitoring_manual_tools"></a>

Ein weiterer wichtiger Teil der Überwachung ist AWS IoT die manuelle Überwachung der Elemente, die von den CloudWatch Alarmen nicht abgedeckt werden. Die Dashboards AWS IoT CloudWatch, und andere AWS Servicekonsolen-Dashboards bieten einen at-a-glance Überblick über den Zustand Ihrer AWS Umgebung. Wir empfehlen, dass Sie auch die Protokolldateien unter AWS IoTüberprüfen.
+ AWS IoT Das Dashboard zeigt:
  + CA-Zertifikate
  + Zertifikate
  + Richtlinien
  + Regeln
  + Objekte
+ CloudWatch Die Startseite zeigt:
  + Aktuelle Alarme und Status.
  + Diagramme mit Alarmen und Ressourcen.
  + Servicestatus.

  Sie können verwenden CloudWatch , um Folgendes zu tun: 
  + Erstellen von [benutzerdefinierten Dashboards](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CloudWatch_Dashboards.html) zur Überwachung des gewünschten Services.
  + Aufzeichnen von Metrikdaten, um Probleme zu beheben und Trends zu erkennen.
  + Suchen und durchsuchen Sie alle Ihre AWS Ressourcenmetriken.
  + Erstellen und Bearbeiten von Alarmen, um über Probleme benachrichtigt zu werden.

# Überprüfung der Einhaltung der Vorschriften für AWS IoT Core
<a name="compliance"></a>

Informationen darüber, ob AWS-Service ein [AWS-Services in den Geltungsbereich bestimmter Compliance-Programme fällt, finden Sie unter Umfang nach Compliance-Programm AWS-Services unter](https://aws.amazon.com/compliance/services-in-scope/) . Wählen Sie dort das Compliance-Programm aus, an dem Sie interessiert sind. Allgemeine Informationen finden Sie unter [AWS Compliance-Programme AWS](https://aws.amazon.com/compliance/programs/) .

Sie können Prüfberichte von Drittanbietern unter herunterladen AWS Artifact. Weitere Informationen finden Sie unter [Berichte herunterladen unter ](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html).

Ihre Verantwortung für die Einhaltung der Vorschriften bei der Nutzung AWS-Services hängt von der Vertraulichkeit Ihrer Daten, den Compliance-Zielen Ihres Unternehmens und den geltenden Gesetzen und Vorschriften ab. Weitere Informationen zu Ihrer Verantwortung für die Einhaltung der Vorschriften bei der Nutzung AWS-Services finden Sie in der [AWS Sicherheitsdokumentation](https://docs.aws.amazon.com/security/).

# Resilienz im AWS IoT-Kern
<a name="disaster-recovery-resiliency"></a>

Die AWS globale Infrastruktur basiert auf AWS-Region s und Availability Zones. AWS-Region s bieten mehrere physisch getrennte und isolierte Availability Zones, die über Netzwerke mit niedriger Latenz, hohem Durchsatz und hoher Redundanz miteinander verbunden sind. Mithilfe von Availability Zones können Sie Anwendungen und Datenbanken erstellen und ausführen, die automatisch Failover zwischen Availability Zones ausführen, ohne dass es zu Unterbrechungen kommt. Availability Zones sind besser hoch verfügbar, fehlertoleranter und skalierbarer als herkömmliche Infrastrukturen mit einem oder mehreren Rechenzentren. 

Weitere Informationen zu AWS-Region s und Availability Zones finden Sie unter [AWS Globale](https://aws.amazon.com/about-aws/global-infrastructure/) Infrastruktur.

AWS IoT Core speichert Informationen zu Ihren Geräten in der Geräteregistrierung. Der Service speichert auch CA-Zertifikate, Gerätezertifikate und Geräteschattendaten. Diese Daten werden bei Hardware- oder Netzwerkausfällen automatisch in Availability Zones, nicht jedoch in Regionen repliziert.

AWS IoT Core veröffentlicht MQTT-Ereignisse, wenn die Geräteregistrierung aktualisiert wird. Sie können diese Nachrichten verwenden, um Ihre Registrierungsdaten zu sichern und sie irgendwo zu speichern (z. B. in einer DynamoDB-Tabelle). Sie sind dafür verantwortlich, Zertifikate zu speichern, AWS IoT Core die Sie für Sie oder die Sie selbst erstellen. Device Shadow speichert Statusdaten zu Ihren Geräten und kann erneut gesendet werden, wenn ein Gerät wieder online ist. AWS IoT Device Advisor speichert Informationen über Ihre Testsuite-Konfiguration. Diese Daten werden bei Hardware- oder Netzwerkausfällen automatisch repliziert.

AWS IoT Core Ressourcen sind regionsspezifisch und werden nur dann repliziert, AWS-Regionen wenn Sie dies ausdrücklich tun.

Weitere Informationen zu bewährten Methoden für die Sicherheit finden Sie unter [Bewährte Sicherheitsmethoden in AWS IoT Core](security-best-practices.md).

# Verwendung AWS IoT Core mit VPC-Endpunkten mit Schnittstelle
<a name="IoTCore-VPC"></a>

Mit AWS IoT Core können Sie [IoT-Steuerebenen-Endpunkte und [IoT-Datenendpunkte](https://docs.aws.amazon.com//iot/latest/developerguide/iot-connect-devices.html)](https://docs.aws.amazon.com//iot/latest/developerguide/connect-to-iot.html#iot-service-endpoint-intro) in Ihrer Virtual Private Cloud (VPC) mithilfe von [Schnittstellen-VPC-Endpunkten](https://docs.aws.amazon.com//vpc/latest/userguide/vpce-interface.html#create-interface-endpoint) erstellen. Schnittstellen-VPC-Endpoints basieren auf einer AWS Technologie AWS PrivateLink, mit der Sie mithilfe AWS von privaten IP-Adressen auf Dienste zugreifen können, auf denen sie ausgeführt werden. Weitere Informationen finden Sie unter [Amazon Virtual Private Cloud](https://docs.aws.amazon.com//AmazonVPC/latest/UserGuide/VPC_Introduction.html). 

Informationen zum Verbinden von Geräten vor Ort in Remote-Netzwerken, z. B. einem Unternehmensnetzwerk, mit Ihrer Amazon VPC, finden Sie in den Optionen, die in der [Network-to-Amazon VPC-Konnektivitätsmatrix](https://docs.aws.amazon.com//whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) aufgeführt sind. 

**Topics**
+ [VPC-Endpunkte für AWS IoT Core die Steuerungsebene erstellen](#Create-VPC-endpoints-CP)
+ [VPC-Endpunkte für AWS IoT Core die Datenebene erstellen](#Create-VPC-endpoints)
+ [VPC-Endpunkte für AWS IoT Core den Anmeldeinformationsanbieter erstellen](#Create-VPC-endpoints-credential-provider)
+ [Erstellen eines Amazon-VPC-Schnittstellenendpunkts](#Create-VPC-endpoints-core-create-vpc)
+ [Konfigurieren Sie eine private gehostete Zone](#connect-iot-core-create-phz-lns)
+ [Steuerung des Zugriffs auf AWS IoT Core über VPC-Endpunkte](#Control-VPC-access)
+ [Einschränkungen](#VPC-limitations)
+ [Skalierung von VPC-Endpunkten mit AWS IoT Core](#Scaling-VPC-endpoints)
+ [Verwenden von benutzerdefinierten Domains mit VPC-Endpunkten](#VPC-custom-domains)
+ [Verfügbarkeit von VPC-Endpunkten für AWS IoT Core](#VPC-availability)
+ [Verwenden von AWS IoT Device Management sicherem Tunneling mit VPC-Endpunkten mit Schnittstellen](IoTCore-ST-VPC.md)

## VPC-Endpunkte für AWS IoT Core die Steuerungsebene erstellen
<a name="Create-VPC-endpoints-CP"></a>

Sie können einen VPC-Endpunkt für die AWS IoT Core Control Plane API erstellen, um Ihre Geräte mit AWS IoT Diensten und anderen AWS Diensten zu verbinden. Um mit VPC-Endpunkten zu beginnen, [erstellen Sie einen VPC-Schnittstellen-Endpunkt](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#create-interface-endpoint) und wählen Sie ihn AWS IoT Core als Dienst aus. AWS Wenn Sie die CLI verwenden, rufen Sie zuerst an, [describe-vpc-endpoint-services](https://docs.aws.amazon.com//cli/latest/reference/ec2/describe-vpc-endpoint-services.html)um sicherzustellen, dass Sie eine Availability Zone auswählen, die in Ihrer Region vorhanden AWS IoT Core ist AWS-Region. In us-east-1 sähe dieser Befehl zum Beispiel wie folgt aus:

```
aws ec2 describe-vpc-endpoint-services --service-name com.amazonaws.us-east-1.iot.api
```

Sehen Sie sich die detaillierten Anweisungen unten an, um [einen Amazon VPC-Schnittstellenendpunkt für die AWS IoT Core Kontrollebene zu erstellen](#Create-VPC-endpoints-core-create-vpc).

## VPC-Endpunkte für AWS IoT Core die Datenebene erstellen
<a name="Create-VPC-endpoints"></a>

Sie können einen VPC-Endpunkt für die AWS IoT Core Datenebene-API erstellen, um Ihre Geräte mit AWS IoT Diensten und anderen AWS Diensten zu verbinden. Um mit VPC-Endpunkten zu beginnen, [erstellen Sie einen VPC-Schnittstellen-Endpunkt](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#create-interface-endpoint) und wählen Sie ihn AWS IoT Core als Dienst aus. AWS Wenn Sie die CLI verwenden, rufen Sie zuerst an, [describe-vpc-endpoint-services](https://docs.aws.amazon.com//cli/latest/reference/ec2/describe-vpc-endpoint-services.html)um sicherzustellen, dass Sie eine Availability Zone auswählen, die in Ihrer Region vorhanden AWS IoT Core ist AWS-Region. In us-east-1 sähe dieser Befehl zum Beispiel wie folgt aus:

```
aws ec2 describe-vpc-endpoint-services --service-name com.amazonaws.us-east-1.iot.data
```

**Anmerkung**  
Die VPC-Funktion zum automatischen Erstellen eines DNS-Eintrags ist deaktiviert. Erstellen Sie manuell einen privaten DNS-Eintrag, um eine Verbindung zu diesen Endpunkten herzustellen. Weitere Informationen über DNA-Einträge von privaten VPC finden Sie unter [Private DNS für Schnittstellenendpunkte](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#vpce-private-dns). Weitere Informationen zu AWS IoT Core VPC-Einschränkungen finden Sie unter[Einschränkungen](#VPC-limitations).

So verbinden Sie MQTT-Clients mit den VPC-Endpunktschnittstellen:
+ Sie müssen manuell DNS-Einträge in einer privat gehosteten Zone erstellen, die an Ihre VPC angehängt ist. Informationen zu den ersten Schritten finden Sie unter [Erstellen einer privat gehosteten Zone](https://docs.aws.amazon.com//Route53/latest/DeveloperGuide/hosted-zone-private-creating.html). 
+ Erstellen Sie in Ihrer privaten gehosteten Zone einen Alias-Datensatz für jede IP-Adresse der elastischen Netzwerkschnittstelle für den VPC-Endpunkt. Wenn Sie mehrere Netzwerkschnittstellen IPs für mehrere VPC-Endpunkte haben, erstellen Sie gewichtete DNS-Einträge mit gleicher Gewichtung für alle gewichteten Datensätze. Diese IP-Adressen sind im [DescribeNetworkInterfaces](https://docs.aws.amazon.com//AWSEC2/latest/APIReference/API_DescribeNetworkInterfaces.html)API-Aufruf verfügbar, wenn sie nach der VPC-Endpunkt-ID im Beschreibungsfeld gefiltert werden.

Sehen Sie sich die detaillierten Anweisungen unten an, um [einen Amazon VPC-Schnittstellenendpunkt zu erstellen](#Create-VPC-endpoints-core-create-vpc) und eine [private gehostete Zone für die AWS IoT Core Datenebene zu konfigurieren](#connect-iot-core-create-phz-lns).

## VPC-Endpunkte für AWS IoT Core den Anmeldeinformationsanbieter erstellen
<a name="Create-VPC-endpoints-credential-provider"></a>

Sie können einen VPC-Endpunkt für den AWS IoT Core [Anmeldeinformationsanbieter](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.html) erstellen, um Geräte mithilfe der auf Client-Zertifikaten basierenden Authentifizierung zu verbinden und temporäre AWS Anmeldeinformationen im [AWS Signature](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_aws-signing.html) Version 4-Format abzurufen. Um mit VPC-Endpunkten für AWS IoT Core Credential Provider zu beginnen, führen Sie den [create-vpc-endpoint](https://docs.aws.amazon.com//cli/latest/reference/ec2/create-vpc-endpoint.html)CLI-Befehl aus, um [einen VPC-Schnittstellen-Endpunkt zu erstellen](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#create-interface-endpoint), und wählen Sie AWS IoT Core Credential Provider als Dienst aus. AWS Um sicherzustellen, dass Sie eine Availability Zone auswählen, in der sich Ihre Availability Zone AWS IoT Core befindet AWS-Region, führen Sie zunächst den Befehl aus. [describe-vpc-endpoint-services](https://docs.aws.amazon.com//cli/latest/reference/ec2/describe-vpc-endpoint-services.html) In us-east-1 sähe dieser Befehl zum Beispiel wie folgt aus:

```
aws ec2 describe-vpc-endpoint-services --service-name com.amazonaws.us-east-1.iot.credentials
```

**Anmerkung**  
Die VPC-Funktion zum automatischen Erstellen eines DNS-Eintrags ist deaktiviert. Erstellen Sie manuell einen privaten DNS-Eintrag, um eine Verbindung zu diesen Endpunkten herzustellen. Weitere Informationen über DNA-Einträge von privaten VPC finden Sie unter [Private DNS für Schnittstellenendpunkte](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#vpce-private-dns). Weitere Informationen zu AWS IoT Core VPC-Einschränkungen finden Sie unter[Einschränkungen](#VPC-limitations).

So verbinden Sie HTTP-Clients mit den VPC-Endpunktschnittstellen:
+ Sie müssen manuell DNS-Einträge in einer privat gehosteten Zone erstellen, die an Ihre VPC angehängt ist. Informationen zu den ersten Schritten finden Sie unter [Eine private gehostete Zone erstellen](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html). 
+ Erstellen Sie in Ihrer privaten gehosteten Zone einen Alias-Datensatz für jede IP-Adresse der elastischen Netzwerkschnittstelle für den VPC-Endpunkt. Wenn Sie mehrere Netzwerkschnittstellen IPs für mehrere VPC-Endpunkte haben, erstellen Sie gewichtete DNS-Einträge mit gleicher Gewichtung für alle gewichteten Datensätze. Diese IP-Adressen sind im [DescribeNetworkInterfaces](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeNetworkInterfaces.html)API-Aufruf verfügbar, wenn sie nach der VPC-Endpunkt-ID im Beschreibungsfeld gefiltert werden.

Sehen Sie sich die detaillierten Anweisungen unten an, um [einen Amazon VPC-Schnittstellenendpunkt zu erstellen](#Create-VPC-endpoints-core-create-vpc) und eine [private gehostete Zone für den AWS IoT Core Anmeldeinformationsanbieter zu konfigurieren](#connect-iot-core-create-phz-lns).

## Erstellen eines Amazon-VPC-Schnittstellenendpunkts
<a name="Create-VPC-endpoints-core-create-vpc"></a>

Sie können einen VPC-Schnittstellen-Endpunkt erstellen, um eine Verbindung zu AWS Diensten herzustellen, von AWS PrivateLink denen unterstützt wird. Gehen Sie wie folgt vor, um einen VPC-Schnittstellen-Endpunkt zu erstellen, der eine Verbindung zur AWS IoT Core Datenebene oder zum AWS IoT Core Anmeldeinformationsanbieter herstellt. Weitere Informationen finden Sie unter [Zugreifen auf einen AWS Dienst über einen Schnittstellen-VPC-Endpunkt](https://docs.aws.amazon.com//vpc/latest/privatelink/create-interface-endpoint.html). 

**Anmerkung**  
Die Prozesse zum Erstellen eines Amazon VPC-Schnittstellenendpunkts für AWS IoT Core Datenebene und AWS IoT Core Anmeldeinformationsanbieter sind ähnlich, aber Sie müssen endpunktspezifische Änderungen vornehmen, damit die Verbindung funktioniert.

 ****So erstellen Sie einen Schnittstellen-VPC-Endpunkt mit der [VPC](https://console.aws.amazon.com/vpc/home#/endpoints)-Endpunkte**-Konsole** 

1. **Navigieren Sie zur [VPC](https://console.aws.amazon.com/vpc/home#/endpoints)-**Endpunkte**-Konsole, wählen Sie im linken Menü unter **Virtual Private Cloud** die Option **Endpunkte** und dann Endpunkt erstellen** aus. 

1. Geben Sie auf der Seite **Endpunkt erstellen** die folgenden Informationen an:
   + Wählen Sie **AWS-Service s** als **Servicekategorie** aus. 
   + Suchen Sie nach dem **Servicenamen**, indem Sie das Schlüsselwort `iot` eingeben. Wählen Sie in der Liste der angezeigten `iot`-Services den Endpunkt aus. 

     Wenn Sie einen VPC-Endpunkt für die AWS IoT Core Kontrollebene erstellen, wählen Sie den API-Endpunkt der AWS IoT Core Kontrollebene für Ihren AWS-Region. Der Endpunkt wird das Format `com.amazonaws.region.iot.api` haben. 

     Wenn Sie einen VPC-Endpunkt für die AWS IoT Core Datenebene erstellen, wählen Sie den AWS IoT Core Datenebenen-API-Endpunkt für Ihre Region aus. Der Endpunkt wird das Format `com.amazonaws.region.iot.data` haben. 

     Wenn Sie einen VPC-Endpunkt für den AWS IoT Core Credential Provider erstellen, wählen Sie den AWS IoT Core Credential Provider-Endpunkt für Ihre Region aus. Der Endpunkt wird das Format `com.amazonaws.region.iot.credentials` haben. 

     Wenn Sie einen VPC-Endpunkt für FIPS-Regionen (Federal Information Processing Standard) erstellen, wählen Sie den FIPS-API-Endpunkt für Ihre. AWS-Region Der Endpunkt wird das Format `com.amazonaws.region.iot-fips.api` haben. Dies gilt nur für die Steuerungsebene.
**Anmerkung**  
Der Dienstname für die AWS IoT Core Datenebene in der Region China wird das folgende Format haben`cn.com.amazonaws.region.iot.data`. Der Dienstname für die AWS IoT Core Steuerebene in der Region China wird das folgende Format haben`com.amazonaws.region.iot.api`. 
   + Wählen Sie für **VPC** und **Subnetze** die VPC aus, in der Sie den Endpunkt erstellen möchten, und die Availability Zones (AZs), in denen Sie das Endpunktnetzwerk erstellen möchten.
   + Stellen Sie sicher, dass **unter DNS-Name aktivieren** die Option **Für diesen Endpunkt aktivieren nicht für** AWS IoT Core Datenebene und AWS IoT Core Anmeldeinformationsanbieter ausgewählt ist. Weder die AWS IoT Core Datenebene noch der AWS IoT Core Anmeldeinformationsanbieter unterstützen bisher private DNS-Namen.

     Für die AWS IoT Core Steuerungsebene ist standardmäßig die Option **DNS-Name aktivieren** ausgewählt. Dadurch wird sichergestellt, dass alle Anfragen an die öffentlichen Endpunkte der AWS IoT Core Kontrollebene stattdessen über die VPC-Endpunkte weitergeleitet werden. Wenn dies aktiviert ist, müssen Sie keine private gehostete Zone konfigurieren.
   + Wählen Sie für **Sicherheitsgruppe** die Sicherheitsgruppen aus, die Sie den Endpunktnetzwerkschnittstellen zuordnen möchten.
   + Optional können Sie Tags hinzufügen oder entfernen. Tags sind Name-Wert-Paare, die Sie verwenden, um sie Ihrem Endpunkt zuzuordnen. 

1. Wählen Sie **VPC-Endpunkt erstellen**, um den Schnittstellenendpunkt zu erstellen. 

Nachdem Sie den AWS PrivateLink Endpunkt erstellt haben, sehen Sie auf der Registerkarte „**Details**“ Ihres Endpunkts eine Liste mit DNS-Namen. Sie können einen dieser DNS-Namen verwenden, die Sie in diesem Abschnitt erstellt haben, um [Ihre private gehostete Zone zu konfigurieren](#connect-iot-core-create-phz-lns). Wenn Sie die AWS IoT Core Steuerungsebene verwenden, müssen Sie keine private gehostete Zone konfigurieren.

## Konfigurieren Sie eine private gehostete Zone
<a name="connect-iot-core-create-phz-lns"></a>

**Anmerkung**  
Wenn Sie die AWS IoT Core Steuerungsebene verwenden und die Option **DNS-Namen aktivieren** ausgewählt haben, müssen Sie keine private gehostete Zone konfigurieren. Wenn Sie es deaktivieren, müssen Sie dieses Verfahren befolgen, um eine private gehostete Zone zu konfigurieren.

Sie können einen dieser DNS-Namen verwenden, die Sie im vorigen Abschnitt erstellt haben, um Ihre private gehostete Zone zu konfigurieren.

 **Für AWS IoT Core Datenebene** 

Der DNS-Name muss der Name Ihrer Domainkonfiguration oder Ihr `IoT:Data-ATS`-Endpunkt sein. Ein mögliches Beispiel für einen DNS-Namen ist: ` xxx-ats.data.iot.region.amazonaws.com`. 

 **Für den AWS IoT Core Anbieter von Anmeldeinformationen** 

Der DNS-Name muss Ihr `iot:CredentialProvider`-Endpunkt sein. Ein möglicher DNS-Name ist: ` xxxx.credentials.iot.region.amazonaws.com`. 

 **Für die AWS IoT Core Kontrollebene** 

Der DNS-Name muss Ihr Endpunkt auf der AWS IoT Core Kontrollebene sein. Ein Beispiel für einen DNS-Namen für die AWS IoT Core Kontrollebene ist` xxxx.api.iot.region.amazonaws.com`. 

**Anmerkung**  
Die Verfahren zur Konfiguration der privaten gehosteten Zone für die AWS IoT Core Datenebene und den AWS IoT Core Anmeldeinformationsanbieter sind ähnlich, aber Sie müssen endpunktspezifische Änderungen vornehmen, damit die Verbindung funktioniert.

### Erstellen einer privaten gehosteten Zone
<a name="connect-iot-core-create-phz-lns-private-hosted-zone"></a>

 **So erstellen Sie eine privat gehostete Zone mit der Route-53-Konsole** 

1. Navigieren Sie zur Konsole [Route 53](https://console.aws.amazon.com/route53/v2/hostedzones#/) **Gehostete Zonen** und wählen Sie **Gehostete Zone erstellen**. 

1. Geben Sie auf der Seite **Gehostete Zone erstellen** die folgenden Informationen an.
   + Geben Sie **Domainname** die Endpunktadresse für Ihren `iot:Data-ATS` oder `iot:CredentialProvider`-Endpunkt ein. Der folgende AWS -CLI-Befehl zeigt, wie der Endpunkt über ein öffentliches Netzwerk abgerufen wird: `aws iot describe-endpoint --endpoint-type iot:Data-ATS` oder `aws iot describe-endpoint --endpoint-type iot:CredentialProvider`. 
**Anmerkung**  
Wenn Sie benutzerdefinierte Domains verwenden, finden Sie weitere Informationen unter [Verwenden von benutzerdefinierten Domains mit VPC-Endpunkten](https://docs.aws.amazon.com/iot/latest/developerguide/IoTCore-VPC.html#VPC-custom-domains). Benutzerdefinierte Domänen werden für den AWS IoT Core Anmeldeinformationsanbieter nicht unterstützt.
   + Wählen Sie in der Liste **Typ** die Option **Privat gehostete Zone**. 
   + Optional können Sie Tags hinzufügen oder entfernen, um sie Ihrer gehosteten Zone zuzuordnen.

1. Wählen Sie **Gehostete Zone erstellen**, um Ihre private gehostete Zone zu erstellen. 

Weitere Informationen finden Sie unter [Erstellen einer privat gehosteten Zone](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html). 

### Erstellen eines Datensatzes
<a name="connect-iot-core-create-phz-lns-create-record"></a>

Nachdem Sie eine private gehostete Zone eingerichtet haben, können Sie einen Eintrag erstellen, der dem DNS mitteilt, wie der Datenverkehr zu dieser Domain weitergeleitet werden soll. 

 **So erstellen Sie einen Datensatz** 

1. Klicken Sie in der angezeigten Liste der gehosteten Zonen auf die privat gehostete Zone aus, die Sie zuvor erstellt haben, und wählen Sie **Datensatz erstellen**. 

1. Erstellen Sie den Datensatz mithilfe des Assistenten. Wenn Ihnen in der Konsole die Methode **Schnelle Erstellung** angezeigt wird, wählen Sie **Zum Assistenten wechseln** aus. 

1. Wählen Sie **Einfaches Routing** für **Routing-Richtlinie** und klicken Sie auf **Weiter**. 

1. Wählen Sie unter **Datensätze konfigurieren** die Option **Einfachen Datensatz definieren**. 

1. Gehen Sie auf der Seite **Einfachen Datensatz definieren** wie folgt vor:
   + Geben Sie als **Datensatzname** `iot:Data-ATS`-Endpunkt oder `iot:CredentialProvider`-Endpunkt ein. Dieser muss mit dem Namen der privaten gehosteten Zone übereinstimmen.
   + Wenn Sie für den **Datensatztyp** nur IPv4 Unterstützung wünschen, behalten Sie den Wert als bei`A - Routes traffic to an IPv4 address and some AWS resources`. Wenn Sie nur IPv6 Unterstützung wünschen, behalten Sie den Wert als bei`AAAA - Routes traffic to an IPv6 address and some AWS resources`. Wenn Sie Dual-Stack-Unterstützung (sowohl als auch IPv4 IPv6) wünschen, erstellen Sie zwei Datensätze (`A`und zwar `AAAA` in der Hosting-Zone) mit demselben **Datensatznamen** und demselben **Wert/Weiterleitungsdatenverkehr**. 
   + Wählen Sie unter **Wert/Weiterleiten von Datenverkehr an** die Option **Alias zu VPC-Endpunkt**. Wählen Sie wie unter [Erstellen eines Amazon-VPC-Schnittstellenendpunkts](#Create-VPC-endpoints-core-create-vpc) beschrieben Ihre **Region** und dann den Endpunkt aus, den Sie zuvor erstellt haben, aus der angezeigten Liste der Endpunkte aus.

1. Wählen Sie **Einfachen Datensatz definieren**, um Ihren Datensatz zu erstellen.

## Steuerung des Zugriffs auf AWS IoT Core über VPC-Endpunkte
<a name="Control-VPC-access"></a>

Sie können den Gerätezugriff so einschränken, dass er nur über AWS IoT Core den VPC-Endpunkt erlaubt ist, indem Sie [VPC-Bedingungskontextschlüssel](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html) verwenden. AWS IoT Core unterstützt die folgenden VPC-bezogenen Kontextschlüssel:
+  [SourceVpc](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcevpc) 
+  [SourceVpce](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcevpce) 
+  [VPCSourceIp](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-vpcsourceip) 

**Anmerkung**  
AWS IoT Core unterstützt keine [Endpunktrichtlinien für VPC-Endpunkte](https://docs.aws.amazon.com//vpc/latest/privatelink/vpc-endpoints-access.html#vpc-endpoint-policies). 

Die folgende Richtlinie gewährt beispielsweise die Erlaubnis, eine Verbindung AWS IoT Core mit einer Client-ID herzustellen, die dem Ding-Namen entspricht, und die Veröffentlichung zu einem beliebigen Thema mit dem Ding-Namen, vorausgesetzt, dass das Gerät eine Verbindung zu einem VPC-Endpunkt mit einer bestimmten VPC-Endpunkt-ID herstellt. Diese Richtlinie verweigert Verbindungsversuche zu Ihrem öffentlichen IoT-Datenendpunkt.

****  

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

## Einschränkungen
<a name="VPC-limitations"></a>

[VPC-Endpunkte werden derzeit für [AWS IoT Core Steuerungsebenen-Endpunkte,AWS IoT Core Datenendpunkte](https://docs.aws.amazon.com//iot/latest/developerguide/connect-to-iot.html#iot-service-endpoint-intro)[und AWS IoT Core Credential Provider-Endpunkte](https://docs.aws.amazon.com//iot/latest/developerguide/iot-connect-devices.html#iot-connect-device-endpoints) unterstützt.](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.htm) VPC-Endpunkte werden nur für [FIPS-Endpunkte (Federal Information Processing Standard) unterstützt, wenn die Steuerungsebene](https://docs.aws.amazon.com//iot/latest/developerguide/iot-connect-fips.html) verwendet wird. AWS IoT Core 

### Einschränkungen von VPC-Endpunkten auf der IoT-Steuerungsebene
<a name="VPC-limitations-iot-control"></a>

In diesem Abschnitt werden die Einschränkungen von VPC-Endpunkten auf IoT-Steuerungsebene behandelt.
+ VPC-Endpunkte stellen nur ATS-Zertifikate bereit.
+ Benutzerdefinierte Domänen werden für Endpunkte auf der Kontrollebene nicht unterstützt.
+ Informationen zu FIPS-Sicherheitsrichtlinien finden Sie unter [FIPS-Sicherheitsrichtlinien](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/describe-ssl-policies.html#fips-security-policies). 

### Einschränkungen von VPC-Endpunkten für IoT-Daten
<a name="VPC-limitations-iot-data"></a>

In diesem Abschnitt werden die Einschränkungen von VPC-Endpunkten für IoT-Daten behandelt.
+ Die Keep-Alive-Zeiträume von MQTT sind auf 230 Sekunden begrenzt. Längere Keep-Alive-Zeiträume werden automatisch auf 230 Sekunden reduziert.
+ Jeder VPC-Endpunkt unterstützt insgesamt 100.000 gleichzeitig verbundene Geräte. Wenn Sie mehr Verbindungen benötigen, siehe. [Skalierung von VPC-Endpunkten mit AWS IoT Core](#Scaling-VPC-endpoints)
+ VPC-Endpunkte stellen nur [ATS-Zertifikate](https://docs.aws.amazon.com//iot/latest/developerguide/server-authentication.html) bereit, mit Ausnahme von benutzerdefinierten Domains.
+  [VPC-Endpunktrichtlinien](https://docs.aws.amazon.com//vpc/latest/privatelink/vpc-endpoints-access.html) werden nicht unterstützt.
+ Für VPC-Endpoints, die für die AWS IoT Core Datenebene erstellt wurden, unterstützt AWS IoT Core nicht die Verwendung zonaler oder regionaler öffentlicher DNS-Einträge.

### Einschränkungen der Endpunkte von Anmeldeinformationsanbietern
<a name="VPC-limitations-credential-provider"></a>

In diesem Abschnitt werden die Einschränkungen von VPC-Endpunkten für Anmeldeinformationsanbieter behandelt.
+ VPC-Endpunkte stellen nur [ATS-Zertifikate](https://docs.aws.amazon.com//iot/latest/developerguide/server-authentication.html) bereit.
+  [VPC-Endpunktrichtlinien](https://docs.aws.amazon.com//vpc/latest/privatelink/vpc-endpoints-access.html) werden nicht unterstützt.
+ Benutzerdefinierte Domains werden für die Endpunkte von Anmeldeinformationsanbietern nicht unterstützt.
+ Für VPC-Endpoints, die für den AWS IoT Core Anmeldeinformationsanbieter erstellt wurden, unterstützt die Verwendung zonaler oder regionaler öffentlicher DNS-Einträge AWS IoT Core nicht.

## Skalierung von VPC-Endpunkten mit AWS IoT Core
<a name="Scaling-VPC-endpoints"></a>

AWS IoT Core Schnittstellen-VPC-Endpunkte sind auf 100.000 verbundene Geräte über einen einzigen Schnittstellenendpunkt begrenzt. Wenn Ihr Anwendungsfall mehr gleichzeitige Verbindungen zum Broker erfordert, empfehlen wir, mehrere VPC-Endpunkte zu verwenden und Ihre Geräte manuell über Ihre Schnittstellenendpunkte zu routen. Achten Sie beim Erstellen von privaten DNS-Datensätzen für die Weiterleitung von Datenverkehr zu Ihren VPC-Endpunkten darauf, so viele gewichtete Datensätze zu erstellen, wie Sie VPC-Endpunkte haben, um den Verkehr auf Ihre verschiedenen Endpunkte zu verteilen. 

## Verwenden von benutzerdefinierten Domains mit VPC-Endpunkten
<a name="VPC-custom-domains"></a>

Wenn Sie benutzerdefinierte Domains mit VPC-Endpunkten verwenden möchten, müssen Sie Ihre benutzerdefinierten Domainnameneinträge in einer privaten gehosteten Zone und Routing-Datensätze in Route53 erstellen. Weitere Informationen finden Sie unter [Erstellen einer privat gehosteten Zone](https://docs.aws.amazon.com//Route53/latest/DeveloperGuide/hosted-zone-private-creating.html). 

**Anmerkung**  
Benutzerdefinierte Domänen werden nur für AWS IoT Core Datenendpunkte unterstützt.

## Verfügbarkeit von VPC-Endpunkten für AWS IoT Core
<a name="VPC-availability"></a>

AWS IoT Core Schnittstellen-VPC-Endpunkte sind in allen [AWS IoT Core unterstützten](https://aws.amazon.com//about-aws/global-infrastructure/regional-product-services/) Regionen verfügbar. AWS IoT Core VPC-Schnittstellen-Endpunkte für den AWS IoT Core Anmeldeinformationsanbieter werden in der Region China und nicht unterstützt. AWS GovCloud (US) Regions

# Verwenden von AWS IoT Device Management sicherem Tunneling mit VPC-Endpunkten mit Schnittstellen
<a name="IoTCore-ST-VPC"></a>

AWS IoT Device Management Secure Tunneling unterstützt Schnittstellen-VPC-Endpunkte. Sie können VPC-Endpunkte verwenden, um den Verkehr zwischen Ihrer VPC und AWS IoT Secure Tunneling innerhalb des AWS Netzwerks aufrechtzuerhalten, ohne dass ein Internet-Gateway, ein NAT-Gerät, eine VPN-Verbindung oder eine Verbindung erforderlich ist. AWS Direct Connect 

Interface-VPC-Endpunkte basieren auf einer Technologie [AWS PrivateLink](https://docs.aws.amazon.com//vpc/latest/privatelink/what-is-privatelink.html), mit der Sie privat auf Dienste zugreifen können, indem Sie private IP-Adressen verwenden. Weitere Informationen finden Sie im AWS PrivateLink Handbuch unter [Zugreifen auf einen AWS Dienst über einen Schnittstellen-VPC-Endpunkt](https://docs.aws.amazon.com//vpc/latest/privatelink/create-interface-endpoint.html). 

**Topics**
+ [Voraussetzungen](#Create-ST-VPC-endpoints-prereq)
+ [Empfangen von Tunnelbenachrichtigungen über VPC-Endpunkte](#ST-VPC-Receive-notifications)
+ [VPC-Endpunkte für sicheres Tunneling erstellen](#Create-ST-VPC-endpoints-Create)
+ [Konfiguration von VPC-Endpunktrichtlinien auf dem Proxyserver](#Create-ST-VPC-endpoints-Configure)
+ [Nächste Schritte](#Create-ST-VPC-endpoints-Next)

## Voraussetzungen
<a name="Create-ST-VPC-endpoints-prereq"></a>

Bevor Sie VPC-Endpoints für erstellen, stellen Sie sicher AWS IoT Secure Tunneling, dass Sie über Folgendes verfügen:
+ Ein AWS Konto mit den erforderlichen Berechtigungen zum Erstellen von VPC-Endpoints.
+ Eine VPC in Ihrem AWS Konto.
+ Verständnis von Konzepten für AWS IoT Device Management sicheres Tunneling.
+ Vertrautheit mit VPC-Endpunktrichtlinien und AWS Identity and Access Management (IAM)

## Empfangen von Tunnelbenachrichtigungen über VPC-Endpunkte
<a name="ST-VPC-Receive-notifications"></a>

Um Tunnelbenachrichtigungen über einen VPC-Endpunkt zu erhalten, können Ihre Geräte über einen VPC-Endpunkt eine Verbindung zur AWS IoT Core Datenebene herstellen und das reservierte MQTT-Thema für sicheres Tunneling abonnieren.

Anweisungen zum Erstellen und Konfigurieren eines VPC-Endpunkts in der AWS IoT Core Datenebene finden Sie unter [VPC-Endpunkte AWS IoT Core mit der Schnittstelle verwenden](https://docs.aws.amazon.com/iot/latest/developerguide/IoTCore-VPC.html) im AWS IoT Entwicklerhandbuch.

## VPC-Endpunkte für sicheres Tunneling erstellen
<a name="Create-ST-VPC-endpoints-Create"></a>

Sie können VPC-Endpunkte sowohl für die Secure Tunneling-Kontrollebene als auch für den Proxyserver erstellen.

**So erstellen Sie einen VPC-Endpunkt für sicheres Tunneling**

1. Folgen Sie den Schritten unter [Erstellen eines Schnittstellenendpunkts](https://docs.aws.amazon.com//vpc/latest/privatelink/create-interface-endpoint.html) im Amazon VPC Developer Guide

1. Wählen Sie für **den Servicenamen** je nach Endpunkttyp eine der folgenden Optionen aus:

**Steuerebene**
   + Standard: `com.amazonaws.<region>.iot.tunneling.api` 
   + FIPS (in FIPS-Regionen verfügbar): `com.amazonaws.<region>.iot-fips.tunneling.api` 

**Proxy-Server**
   + Standard: `com.amazonaws.<region>.iot.tunneling.data` 
   + FIPS (in FIPS-Regionen verfügbar): `com.amazonaws.<region>.iot-fips.tunneling.data` 

   Ersetze es durch *<region>* dein. AWS-Region Beispiel, `us-east-1`. 

1. Führen Sie die verbleibenden Schritte im Prozess zur Erstellung von VPC-Endpunkten gemäß Ihren Netzwerkanforderungen aus.

## Konfiguration von VPC-Endpunktrichtlinien auf dem Proxyserver
<a name="Create-ST-VPC-endpoints-Configure"></a>

Zusätzlich zur tokenbasierten Autorisierung für den Clientzugriff, die zur Autorisierung von Verbindungen zu Tunneln verwendet wird, können Sie VPC-Endpunktrichtlinien verwenden, um weiter einzuschränken, wie Geräte einen VPC-Endpunkt verwenden können, um eine Verbindung zum Secure Tunneling Proxy Server herzustellen. VPC-Endpunktrichtlinien folgen einer IAM-ähnlichen Syntax und werden auf dem VPC-Endpunkt selbst konfiguriert.

Beachten Sie, dass die einzige unterstützte IAM-Aktion für Proxyserver-VPC-Endpunktrichtlinien ist. `iot:ConnectToTunnel` 

Im Folgenden finden Sie Beispiele für verschiedene VPC-Endpunktrichtlinien.

### Beispiele für VPC-Endpunktrichtlinien für Proxyserver
<a name="w2aac17c35c31c15b9"></a>

Die folgenden Beispiele zeigen die Konfigurationen der VPC-Endpunktrichtlinien für Proxyserver für allgemeine Anwendungsfälle.

**Example - Standardrichtlinie**  
Diese Richtlinie ermöglicht es Geräten in Ihrer VPC, über jedes AWS Konto eine Verbindung zu jedem Tunnel herzustellen, der sich in demselben Tunnel befindet, in AWS-Region dem der Endpunkt erstellt wurde.  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*"
        }
    ]
}
```

**Example - Beschränken Sie den Zugriff auf bestimmte Konten AWS**  
Diese Richtlinie ermöglicht es dem VPC-Endpunkt, sich nur mit Tunneln in bestimmten AWS Konten zu verbinden.  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:tunnel/*",
                "arn:aws:iot:us-east-1:444455556666:tunnel/*"
            ]
        }
    ]
}
```

**Example - Beschränken Sie Verbindungen nach Tunnelendpunkt**  
Sie können den VPC-Endpunktzugriff so einschränken, dass nur Geräte eine Verbindung zum Quell- oder Zielende eines Tunnels herstellen können.  
Nur Quelle:  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iot:ClientMode": "source"
                }
            }
        }
    ]
}
```

Nur Ziel:

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iot:ClientMode": "destination"
                }
            }
        }
    ]
}
```

**Example - Beschränken Sie den Zugriff auf der Grundlage von Ressourcen-Tags**  
Diese Richtlinie ermöglicht es dem VPC-Endpunkt, sich nur mit Tunneln zu verbinden, die mit einem bestimmten Schlüssel-Wert-Paar gekennzeichnet sind.  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Environment": "Production"
                }
            }
        }
    ]
}
```

**Example - Kombinierte Versicherungsbedingungen**  
Diese Politik zeigt die Kombination mehrerer politischer Elemente. Sie ermöglicht Verbindungen zu jedem Tunnel in einem bestimmten AWS Konto, aber nur, wenn der Tunnel mit `AllowConnectionsThroughPrivateLink` set to gekennzeichnet ist `true` und der Client keine Verbindung zum Zielende des Tunnels herstellt.  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:tunnel/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/AllowConnectionsThroughPrivateLink": "true"
                }
            }
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:tunnel/*"
            ],
            "Condition": {
                "StringEquals": {
                    "iot:ClientMode": "destination"
                }
            }
        }
    ]
}
```

## Nächste Schritte
<a name="Create-ST-VPC-endpoints-Next"></a>

Nachdem Sie Ihre VPC-Endpoints für erstellt und konfiguriert haben AWS IoT Secure Tunneling, sollten Sie Folgendes beachten:
+ Testen Sie Ihre VPC-Endpunktkonfiguration, indem Sie Geräte über den Endpunkt verbinden.
+ Überwachen Sie die VPC-Endpunktnutzung anhand von Amazon CloudWatch Metriken.
+ Überprüfen und aktualisieren Sie Ihre VPC-Endpunktrichtlinien nach Bedarf für Ihre Sicherheitsanforderungen.

Weitere Informationen zu AWS IoT Device Management Secure Tunneling finden Sie unter. [AWS IoT Secure Tunneling](https://docs.aws.amazon.com//iot/latest/developerguide/secure-tunneling.html) 

# Sicherheit der Infrastruktur in AWS IoT
<a name="infrastructure-security"></a>

Als Sammlung verwalteter Services AWS IoT ist sie durch die AWS globalen Netzwerksicherheitsverfahren geschützt, die im Whitepaper [Amazon Web Services: Sicherheitsprozesse im Überblick](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf) beschrieben sind.

Sie verwenden AWS veröffentlichte API-Aufrufe, um AWS IoT über das Netzwerk darauf zuzugreifen. Clients müssen Transport Layer Security (TLS) 1.2 oder höher unterstützen. Clients müssen außerdem Cipher-Suites mit Perfect Forward Secrecy (PFS) wie Ephemeral Diffie-Hellman (DHE) oder Elliptic Curve Ephemeral Diffie-Hellman (ECDHE) unterstützen. Die meisten modernen Systeme, z. B. Java 7 und höher, unterstützen diese Modi. Weitere Informationen finden Sie unter [Transportsicherheit in AWS IoT Core](transport-security.md).

Anforderungen müssen mit einer Zugriffsschlüssel-ID und einem geheimen Zugriffsschlüssel signiert sein, der mit einem IAM-Prinzipal verknüpft ist. Alternativ können Sie mit [AWS -Security-Token-Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) temporäre Sicherheitsanmeldeinformationen erstellen, um die Anforderungen zu signieren.

# Sicherheitsüberwachung von Produktionsflotten oder Geräten mit Core AWS IoT
<a name="security-monitoring"></a>

IoT-Flotten können aus einer großen Anzahl von Geräten mit unterschiedlichsten Funktionen bestehen, sind langlebig und geografisch verteilt. Aufgrund dieser Merkmale ist die Flotteneinrichtung komplex und fehleranfällig. Und da Geräte bezüglich Rechenleistung, Arbeitsspeicher und Speicherkapazitäten eingeschränkt sind, können Verschlüsselung und andere Formen der Sicherheit auf den Geräten selbst nur limitiert eingesetzt werden. Außerdem verwenden Geräte häufig Software mit bekannten Schwachstellen. Diese Faktoren machen IoT-Flotten zu einem attraktiven Ziel für Hacker und erschweren die kontinuierliche Sicherung Ihrer Geräteflotte.

AWS IoT Device Defender begegnet diesen Herausforderungen durch die Bereitstellung von Tools zur Identifizierung von Sicherheitsproblemen und Abweichungen von bewährten Verfahren. Sie können AWS IoT Device Defender verwenden, um verbundene Geräte zu analysieren, zu prüfen und zu überwachen, um ungewöhnliches Verhalten zu erkennen und Sicherheitsrisiken zu minimieren. AWS IoT Device Defender kann Geräteflotten überprüfen, um sicherzustellen, dass sie sich an bewährte Sicherheitsmethoden halten, und um abnormales Verhalten auf Geräten zu erkennen. Auf diese Weise können Sie einheitliche Sicherheitsrichtlinien für Ihre gesamte AWS IoT Geräteflotte durchsetzen und schnell reagieren, wenn Geräte kompromittiert werden. Weitere Informationen finden Sie unter [AWS IoT Device Defender](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/what-is-device-defender.html).

AWS IoT Device Advisor veröffentlicht Updates und Patches für Ihre Flotte nach Bedarf. AWS IoT Device Advisor aktualisiert Testfälle automatisch. Bei den von Ihnen ausgewählten Testfällen handelt es sich immer um die aktuelle Version. Weitere Informationen finden Sie unter [Device Advisor](device-advisor.md).

# Bewährte Sicherheitsmethoden in AWS IoT Core
<a name="security-best-practices"></a>

Dieser Abschnitt enthält Informationen zu bewährten Sicherheitsmethoden für AWS IoT Core. Informationen zu den Sicherheitsregeln für IoT-Lösungen finden Sie unter [Zehn goldene Regeln in Bezug auf die Sicherheit für IoT-Lösungen](https://aws.amazon.com/blogs/iot/ten-security-golden-rules-for-industrial-iot-solutions/).

## Schutz von MQTT-Verbindungen in AWS IoT
<a name="secure-mqtt"></a>

[AWS IoT Core](https://aws.amazon.com/iot-core/)ist ein verwalteter Cloud-Dienst, der es verbundenen Geräten ermöglicht, einfach und sicher mit Cloud-Anwendungen und anderen Geräten zu interagieren. AWS IoT Core unterstützt HTTP, und [MQTT [WebSocket](https://en.wikipedia.org/wiki/WebSocket)](https://en.wikipedia.org/wiki/MQTT), ein einfaches Kommunikationsprotokoll, das speziell für die Tolerierung intermittierender Verbindungen entwickelt wurde. Wenn Sie eine Verbindung AWS IoT über MQTT herstellen, muss jede Ihrer Verbindungen mit einer Kennung verknüpft sein, die als Client-ID bezeichnet wird. Der MQTT-Client identifiziert MQTT-Verbindungen IDs eindeutig. Wenn eine neue Verbindung mit einer Client-ID hergestellt wird, die bereits für eine andere Verbindung beansprucht wurde, löscht der AWS IoT Message Broker die alte Verbindung, um die neue Verbindung zuzulassen. Der Client IDs muss in jedem Fall AWS-Konto einzigartig sein AWS-Region. Das bedeutet, dass Sie nicht die globale Einzigartigkeit des Kunden IDs außerhalb Ihrer Region AWS-Konto oder regionsübergreifend innerhalb Ihrer AWS-Konto Region erzwingen müssen.

Die Auswirkungen und der Schweregrad von getrennten MQTT-Verbindungen auf Ihre Geräteflotte hängt von vielen Faktoren ab. Dazu zählen:
+ Ihr Anwendungsfall (z. B. die Daten, an die Ihre Geräte senden AWS IoT, wie viele Daten und die Häufigkeit, mit der die Daten gesendet werden).
+ Ihre MQTT-Client-Konfiguration (z. B. Einstellungen zum automatischen Wiederverbinden, zugehörige Backoff-Timings und die Verwendung von [persistenten MQTT-Sitzungen](mqtt.md#mqtt-persistent-sessions)).
+ Einschränkungen für Geräteressourcen.
+ Die Grundursache der Verbindungstrennungen, ihre Aggressivität und ihre Persistenz.

Um Client-ID-Konflikte und ihre möglichen negativen Auswirkungen zu vermeiden, stellen Sie sicher, dass jedes Gerät oder jede mobile Anwendung über eine AWS IoT oder IAM-Richtlinie verfügt, die einschränkt, welcher Client für MQTT-Verbindungen zum Message Broker verwendet werden IDs kann. AWS IoT Sie können beispielsweise eine IAM-Richtlinie verwenden, um zu verhindern, dass ein Gerät unbeabsichtigt die Verbindung eines anderen Geräts schließt, indem es eine bereits verwendete Client-ID nutzt. Weitere Informationen finden Sie unter [Autorisierung](iot-authorization.md).

Alle Geräte in Ihrer Flotte müssen über Anmeldeinformationen mit Rechten verfügen, die nur beabsichtigte Aktionen autorisieren. Dazu gehören (aber nicht beschränkt auf) AWS IoT MQTT-Aktionen wie das Veröffentlichen von Nachrichten oder das Abonnieren von Themen mit einem bestimmten Umfang und Kontext. Die spezifischen Berechtigungsrichtlinien können für Ihre Anwendungsfälle variieren. Ermitteln Sie die Berechtigungsrichtlinien, die Ihren Geschäfts- und Sicherheitsanforderungen am besten entsprechen.

Verwenden Sie [AWS IoT Core Richtlinienvariablen](iot-policy-variables.md) und [IAM-Richtlinienvariablen](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html), um die Erstellung und Verwaltung von Berechtigungsrichtlinien zu vereinfachen. Richtlinienvariablen können in einer Richtlinie platziert werden. Sie werden zu dem Zeitpunkt, zu dem die Richtlinie ausgewertet wird, durch Werte aus der Anforderung des Geräts ersetzt. Mithilfe von Richtlinienvariablen können Sie eine einzelne Richtlinie für die Erteilung von Berechtigungen für mehrere Geräte erstellen. Sie können die relevanten Richtlinienvariablen für Ihren Anwendungsfall anhand Ihrer AWS IoT Kontokonfiguration, Ihres Authentifizierungsmechanismus und Ihres Netzwerkprotokolls, das für die Verbindung zum AWS IoT Message Broker verwendet wird, identifizieren. Um jedoch die besten Berechtigungsrichtlinien zu schreiben, müssen Sie die Besonderheiten Ihres Anwendungsfalls und Ihr [Bedrohungsmodell](https://en.wikipedia.org/wiki/Threat_model) berücksichtigen.

Wenn Sie Ihre Geräte beispielsweise in der AWS IoT Registrierung registriert haben, können Sie [Ding-Richtlinienvariablen in AWS IoT Richtlinien](thing-policy-variables.md) verwenden, um Berechtigungen auf der Grundlage von Dingeigenschaften wie Dingnamen, Dingtypen und Dingattributwerten zu gewähren oder zu verweigern. Der Name des Dings wird aus der Client-ID in der MQTT-Verbindungsnachricht abgerufen, die gesendet wird, wenn ein Ding eine Verbindung AWS IoT herstellt. Die Ding-Richtlinienvariablen werden ersetzt, wenn ein Ding AWS IoT über MQTT mithilfe der gegenseitigen TLS-Authentifizierung oder MQTT über WebSocket das Protokoll mithilfe authentifizierter [Amazon](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identities.html) Cognito Cognito-Identitäten eine Verbindung herstellt. Sie können die [AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html)API verwenden, um Zertifikate und authentifizierte Amazon Cognito Cognito-Identitäten an eine Sache anzuhängen. `iot:Connection.Thing.ThingName`ist eine nützliche Richtlinienvariable, um Client-ID-Beschränkungen durchzusetzen. Die folgende AWS IoT Beispielrichtlinie erfordert, dass der Name einer registrierten Sache als Client-ID für MQTT-Verbindungen zum AWS IoT Message Broker verwendet wird:

****  

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

Wenn Sie laufende Client-ID-Konflikte identifizieren möchten, können Sie [CloudWatch Logs for AWS IoT](cloud-watch-logs.md) aktivieren und verwenden. Für jede MQTT-Verbindung, die der AWS IoT Message Broker aufgrund von Client-ID-Konflikten unterbricht, wird ein Protokolleintrag generiert, der dem folgenden ähnelt:

```
{
    "timestamp": "2019-04-28 22:05:30.105",
    "logLevel": "ERROR",
    "traceId": "02a04a93-0b3a-b608-a27c-1ae8ebdb032a",
    "accountId": "123456789012",
    "status": "Failure",
    "eventType": "Disconnect",
    "protocol": "MQTT",
    "clientId": "clientId01",
    "principalId": "1670fcf6de55adc1930169142405c4a2493d9eb5487127cd0091ca0193a3d3f6",
    "sourceIp": "203.0.113.1",
    "sourcePort": 21335,
    "reason": "DUPLICATE_CLIENT_ID",
    "details": "A new connection was established with the same client ID"
}
```

Sie können einen [CloudWatch Protokollfilter](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html) verwenden, `{$.reason= "DUPLICATE_CLIENT_ID" }` um beispielsweise nach Instanzen von Client-ID-Konflikten zu suchen oder um [CloudWatch Metrikfilter](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringPolicyExamples.html) und entsprechende CloudWatch Alarme für die kontinuierliche Überwachung und Berichterstattung einzurichten.

Sie können [AWS IoT Device Defender](https://aws.amazon.com/iot-device-defender/) verwenden, um zu freizügige Richtlinien AWS IoT und IAM-Richtlinien zu identifizieren. AWS IoT Device Defender bietet auch eine Auditprüfung, die Sie benachrichtigt, wenn mehrere Geräte in Ihrer Flotte über dieselbe Client-ID eine Verbindung zum AWS IoT Message Broker herstellen.

Sie können AWS IoT Device Advisor verwenden, um zu überprüfen, ob Ihre Geräte eine zuverlässige Verbindung zu den bewährten Sicherheitsmethoden herstellen AWS IoT Core und diese befolgen.

### Weitere Informationen finden Sie auch unter
<a name="mqtt-security-see-also"></a>
+ [AWS IoT Core](https://aws.amazon.com/iot-core/)
+ [AWS IoT-Sicherheitsfunktionen](authentication.md)
+ [AWS IoT Core Richtlinienvariablen](iot-policy-variables.md)
+ [IAM-Richtlinienvariablen](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_variables.html)
+ [Amazon Cognito-Identität](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identities.html)
+ [AWS IoT Device Defender](https://aws.amazon.com/iot-device-defender/)
+ [CloudWatch Loggt sich für AWS IoT](cloud-watch-logs.md)

## Synchronisieren der internen Uhr eines Geräts
<a name="device-clock"></a>

Es ist wichtig, dass Sie eine genaue Uhrzeit auf Ihrem Gerät haben. X.509-Zertifikate haben ein Ablaufdatum und eine Ablaufzeit. Die Uhr auf Ihrem Gerät wird verwendet, um sicherzustellen, dass ein Serverzertifikat noch gültig ist. Wenn Sie kommerzielle IoT-Geräte erstellen, denken Sie daran, dass Ihre Produkte vor dem Verkauf über einen längeren Zeitraum gelagert werden können. Echtzeituhren können während dieser Zeit abweichen und die Batterien können entladen werden, sodass die werkseitige Zeiteinstellung nicht ausreicht.

Für die meisten Systeme bedeutet dies, dass die Software des Geräts einen NTP-Client (Network Time Protocol) enthalten muss. Das Gerät sollte warten, bis es mit einem NTP-Server synchronisiert wird, bevor es versucht, eine Verbindung zu AWS IoT Core herzustellen. Wenn dies nicht möglich ist, sollte das System dem Benutzer die Möglichkeit geben, die Zeit des Gerätes so einzustellen, dass nachfolgende Verbindungen erfolgreich sind.

Nachdem das Gerät mit einem NTP-Server synchronisiert wurde, kann es eine Verbindung mit AWS IoT Core herstellen. Wie viel Taktversatz zulässig ist, hängt davon ab, was Sie mit der Verbindung tun möchten. 

## Überprüfen des Serverzertifikats
<a name="validate-server-cert"></a>

Das erste, was ein Gerät tut, um mit ihm zu interagieren, AWS IoT ist, eine sichere Verbindung herzustellen. Wenn Sie Ihr Gerät mit verbinden, stellen Sie sicher AWS IoT, dass Sie mit einem anderen Server sprechen AWS IoT und nicht mit einem anderen Server, der sich als solcher ausgibt. AWS IoT Jeder der AWS IoT Server ist mit einem Zertifikat ausgestattet, das für die Domain ausgestellt wurde. `iot.amazonaws.com` Dieses Zertifikat wurde AWS IoT von einer vertrauenswürdigen Zertifizierungsstelle ausgestellt, die unsere Identität und unser Eigentum an der Domain verifizierte.

Wenn ein Gerät eine Verbindung herstellt, wird dem Gerät als Erstes ein Serverzertifikat gesendet. AWS IoT Core Geräte können überprüfen, ob sie eine Verbindung zu `iot.amazonaws.com` erwartet haben und ob der Server am Ende dieser Verbindung ein Zertifikat einer vertrauenswürdigen Autorität für diese Domäne hat.

TLS-Zertifikate liegen im X.509-Format vor und enthalten eine Vielzahl von Informationen wie Name, Standort, Domänenname und Gültigkeitsdauer für die Organisation. Der Gültigkeitszeitraum wird als ein Paar von Zeitwerten angegeben, die `notBefore` und `notAfter` genannt werden. Dienste wie AWS IoT Core verwenden begrenzte Gültigkeitszeiträume (z. B. ein Jahr) für ihre Serverzertifikate und beginnen mit der Bereitstellung neuer Zertifikate, bevor die alten ablaufen.

## Verwenden einer einzigen Identität pro Gerät
<a name="cert-per-device"></a>

Verwenden Sie eine einzige Identität pro Client. Geräte verwenden in der Regel X.509-Client-Zertifikate. Web- und Mobilanwendungen verwenden Amazon Cognito Identity. Auf diese Weise können Sie detaillierte Berechtigungen auf Ihre Geräte anwenden.

Sie könnten beispielsweise eine Anwendung haben, die aus einem Mobiltelefon besteht, das Statusaktualisierungen von zwei verschiedenen Smart-Home-Objekten empfängt einer Glühbirne und einem Thermostat. Die Glühbirne sendet den Status ihres Batteriestands und ein Thermostat sendet Meldungen über die Temperatur.

AWS IoT authentifiziert Geräte einzeln und behandelt jede Verbindung einzeln. Sie können differenzierte Zugriffskontrollen mithilfe von Autorisierungsrichtlinien anwenden. Sie können eine Richtlinie für den Thermostat definieren, die es ihm ermöglicht, in einem Themenbereich zu veröffentlichen. Sie können eine separate Richtlinie für die Glühbirne definieren, die es ihr ermöglicht, in einem anderen Themenbereich zu veröffentlichen. Schließlich können Sie eine Richtlinie für die mobile App definieren, die es ihr nur erlaubt, sich mit den Themen für den Thermostat und die Glühbirne zu verbinden und diese zu abonnieren, um Nachrichten von diesen Geräten zu empfangen.

Wenden Sie das Prinzip der geringsten Privilegien an und beschränken Sie die Berechtigungen pro Gerät so weit wie möglich. Für alle Geräte oder Benutzer sollte eine AWS IoT Richtlinie gelten AWS IoT , die es ihnen nur erlaubt, eine Verbindung mit einer bekannten Client-ID herzustellen und bestimmte Themen zu veröffentlichen und zu abonnieren.

## Verwenden Sie eine Sekunde AWS-Region als Backup
<a name="use-second-region"></a>

Erwägen Sie, innerhalb einer Sekunde eine Kopie Ihrer Daten AWS-Region als Backup zu speichern. Beachten Sie, dass die AWS Lösung mit dem Namen [Disaster Recovery for](https://aws.amazon.com/solutions/implementations/disaster-recovery-for-aws-iot/) nicht mehr verfügbar AWS IoT ist. Auf die zugehörige [GitHubBibliothek](https://github.com/awslabs/disaster-recovery-for-aws-iot) kann zwar weiterhin zugegriffen werden, sie AWS wurde jedoch im Juli 2023 als veraltet eingestuft und bietet keine Wartung oder Unterstützung mehr für sie. [Besuchen Sie Kontakt, um Ihre eigenen Lösungen zu implementieren oder zusätzliche Supportoptionen zu erkunden. AWS](https://aws.amazon.com/contact-us/) Wenn mit Ihrem Konto ein AWS Technical Account Manager verknüpft ist, wenden Sie sich an diesen, um Hilfe zu erhalten.

## Just-in-Time-Bereitstellung nutzen
<a name="use-jitp"></a>

Die manuelle Erstellung und Bereitstellung jedes Geräts kann zeitaufwändig sein. AWS IoT bietet die Möglichkeit, eine Vorlage zu definieren, mit der Geräte bereitgestellt werden, wenn sie zum AWS IoT ersten Mal eine Verbindung herstellen. Weitere Informationen finden Sie unter [Just-in-time Bereitstellung](jit-provisioning.md).

## Berechtigungen zum Ausführen von AWS IoT Device Advisor-Tests
<a name="device-advisor-perms"></a>

Die folgende Richtlinienvorlage zeigt die Mindestberechtigungen und die IAM-Entität, die für die Ausführung von AWS IoT Device Advisor-Testfällen erforderlich sind. Sie müssen Amazon Resource Name (ARN) durch die Geräterolle ersetzen*your-device-role-arn*, die Sie unter den [Voraussetzungen](https://docs.aws.amazon.com/iot/latest/developerguide/device-advisor-workflow.html#device-advisor-workflow-prereqs) erstellt haben.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iot:us-east-1:123456789012:thinggroup/your-thing-group",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "iotdeviceadvisor.amazonaws.com"
            }
        }
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "execute-api:Invoke*",
                "iam:ListRoles",
                "iot:Connect",
                "iot:CreateJob",
                "iot:DeleteJob",
                "iot:DescribeCertificate",
                "iot:DescribeEndpoint",
                "iotjobsdata:DescribeJobExecution",
                "iot:DescribeJob",
                "iot:DescribeThing",
                "iotjobsdata:GetPendingJobExecutions",
                "iot:GetPolicy",
                "iot:ListAttachedPolicies",
                "iot:ListCertificates",
                "iot:ListPrincipalPolicies",
                "iot:ListThingPrincipals",
                "iot:ListThings",
                "iot:Publish",
                "iotjobsdata:StartNextPendingJobExecution",
                "iotjobsdata:UpdateJobExecution",
                "iot:UpdateThingShadow",
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams",
                "logs:PutLogEvents",
                "logs:PutRetentionPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": "iotdeviceadvisor:*",
            "Resource": "*"
        }
    ]
}
```

## Confused-Deputy-Prävention im dienstübergreifenden Szenario für Device Advisor
<a name="cross-service-confused-deputy-prevention-DA"></a>

Das Problem des verwirrten Stellvertreters ist ein Sicherheitsproblem, bei dem eine Entität, die keine Berechtigung zur Durchführung einer Aktion hat, eine privilegiertere Entität zur Durchführung der Aktion zwingen kann. In AWS kann ein dienstübergreifendes Identitätswechsels zu dem Problem mit dem verwirrten Stellvertreter führen. Ein dienstübergreifender Identitätswechsel kann auftreten, wenn ein Dienst (der *Anruf-Dienst*) einen anderen Dienst anruft (den *aufgerufenen Dienst*). Der Anruf-Dienst 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, AWS bietet Tools, mit denen Sie Ihre Daten für alle Dienste mit Dienstprinzipalen schützen können, denen Zugriff auf Ressourcen in Ihrem Konto gewährt wurde. 

Wir empfehlen die Verwendung der globalen Bedingungskontext-Schlü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 [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) in ressourcenbasierten Richtlinien, um die Berechtigungen, die Device Advisor einem anderen Service erteilt, auf eine bestimmte Ressource zu beschränken. 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 Wert `aws:SourceArn` muss der ARN Ihrer Suite-Definitionsressource sein. Die Suite-Definitionsressource bezieht sich auf die Testsuite, die Sie mit Device Advisor erstellt haben.

Der effektivste Weg, um sich vor dem Confused-Deputy-Problem zu schützen, ist die Verwendung des globalen Bedingungskontext-Schlüssels `aws:SourceArn` mit dem vollständigen ARN der Ressource. Wenn Sie den vollständigen ARN der Ressource nicht kennen oder wenn Sie mehrere Ressourcen angeben, verwenden Sie den globalen Bedingungskontext-Schlüssel `aws:SourceArn` mit Platzhaltern (`*`) für die unbekannten Teile des ARN. Beispiel: `arn:aws:iotdeviceadvisor:*:account-id:suitedefinition/*` 

Das folgende Beispiel zeigt, wie Sie die globalen Bedingungskontext-Schlüssel `aws:SourceArn` und `aws:SourceAccount` in Device Advisor verwenden können, um das Confused-Deputy-Problem zu vermeiden.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "ConfusedDeputyPreventionExamplePolicy",
        "Effect": "Allow",
        "Principal": {
            "Service": "iotdeviceadvisor.amazonaws.com"
        },
        "Action": "sts:AssumeRole",
        "Condition": {
            "ArnLike": {
                "aws:SourceArn": "arn:aws:iotdeviceadvisor:us-east-1:123456789012:suitedefinition/ygp6rxa3tzvn"
        },
            "StringEquals": {
                "aws:SourceAccount": "123456789012"
        }
        }
    }
}
```

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

Nehmen Sie an dem folgenden Kurs teil, um mehr über wichtige Sicherheitskonzepte zu erfahren: AWS IoT [AWS IoT Security Primer](https://www.aws.training/Details/Curriculum?id=42304).