Verwaltung der Kundenidentität - AWS Präskriptive Leitlinien

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.

Verwaltung der Kundenidentität

Customer Identity and Access Management (CIAM) ist eine Technologie, mit der Unternehmen Kundenidentitäten verwalten können. Sie bietet Sicherheit und eine verbesserte Benutzererfahrung bei der Registrierung, Anmeldung und beim Zugriff auf Verbraucheranwendungen, Webportale oder digitale Dienste, die von einem Unternehmen angeboten werden. CIAM hilft Ihnen dabei, Ihre Kunden zu identifizieren, personalisierte Erlebnisse zu schaffen und den richtigen Zugriff zu ermitteln, den sie für kundenorientierte Anwendungen und Dienste benötigen. Eine CIAM-Lösung kann einem Unternehmen auch dabei helfen, Compliance-Anforderungen in Bezug auf branchenübliche regulatorische Standards und Rahmenbedingungen zu erfüllen. Weitere Informationen finden Sie unter Was ist CIAM? auf der AWS-Website.

Amazon Cognito ist ein Identitätsservice für Web- und Mobilanwendungen, der CIAM-Funktionen für Unternehmen jeder Größenordnung bereitstellt. Amazon Cognito umfasst ein Benutzerverzeichnis, einen Authentifizierungsserver und einen Autorisierungsservice für OAuth 2.0-Zugriffstoken und kann auch temporäre AWS-Anmeldeinformationen bereitstellen. Sie können Amazon Cognito verwenden, um Benutzer über das integrierte Benutzerverzeichnis, über einen föderierten Identitätsanbieter wie Ihr Unternehmensverzeichnis oder über soziale Identitätsanbieter wie Google und Facebook zu authentifizieren und zu autorisieren.

Die zwei Hauptkomponenten von Amazon Cognito sind Benutzerpools und Identitäten-Pools. Benutzerpools sind Benutzerverzeichnisse, die Anmelde- und Anmeldeoptionen für Ihre Web- und Mobilanwendungsbenutzer bereitstellen. Identitätspools stellen temporäre AWS-Anmeldeinformationen bereit, um Ihren Benutzern Zugriff auf andere AWS-Services zu gewähren.

Wann sollten Sie Amazon Cognito verwenden

Amazon Cognito ist eine gute Wahl, wenn Sie eine sichere und kostengünstige Benutzerverwaltungslösung für Ihre Web- und Mobilanwendungen benötigen. Hier sind einige Szenarien, in denen Sie sich für die Verwendung von Amazon Cognito entscheiden könnten:

  • Authentifizierung. Wenn Sie Prototypen für eine Anwendung entwickeln oder die Benutzeranmeldefunktion schnell implementieren möchten, können Sie die Benutzerpools und die gehostete Benutzeroberfläche von Amazon Cognito verwenden, um die Entwicklung zu beschleunigen. Sie können sich auf Ihre wichtigsten Anwendungsfunktionen konzentrieren, während Amazon Cognito sich um Benutzerregistrierung, Anmeldung und Sicherheit kümmert.

    Amazon Cognito unterstützt verschiedene Authentifizierungsmethoden, darunter Benutzernamen und Passwörter, Anbieter sozialer Identitäten und Anbieter von Unternehmensidentitäten über SAML und OpenID Connect (OIDC).

  • Benutzerverwaltung. Amazon Cognito unterstützt die Benutzerverwaltung, einschließlich Benutzerregistrierung, Überprüfung und Kontowiederherstellung. Benutzer können sich mit ihrem bevorzugten Identitätsanbieter registrieren und anmelden, und Sie können den Registrierungsprozess an die Anforderungen Ihrer Anwendung anpassen.

  • Sicherer Zugriff auf AWS-Ressourcen. Amazon Cognito lässt sich in IAM integrieren, um eine differenzierte Zugriffskontrolle für AWS-Ressourcen zu ermöglichen. Sie können IAM-Rollen und -Richtlinien definieren, um den Zugriff auf AWS-Services auf der Grundlage von Benutzeridentität und Gruppenmitgliedschaft zu steuern.

  • Föderierte Identität. Amazon Cognito unterstützt Federated Identity, sodass sich Benutzer mit ihren vorhandenen Identitäten für soziale Netzwerke oder Unternehmen anmelden können. Dadurch müssen Benutzer keine neuen Anmeldeinformationen für Ihre Anwendung erstellen, wodurch die Benutzererfahrung verbessert und der Anmeldevorgang reibungsloser gestaltet wird.

  • Mobil- und Webanwendungen. Amazon Cognito eignet sich sowohl für mobile als auch für Webanwendungen. Es bietet SDKs verschiedene Plattformen und macht es einfach, Authentifizierung und Zugriffskontrolle in Ihren Anwendungscode zu integrieren. Es unterstützt den Offline-Zugriff und die Synchronisation für mobile Anwendungen, sodass Benutzer auch dann auf ihre Daten zugreifen können, wenn sie offline sind.

  • Skalierbarkeit. Amazon Cognito ist ein hochverfügbarer und vollständig verwalteter Service, der auf Millionen von Benutzern skaliert werden kann. Er verarbeitet mehr als 100 Milliarden Authentifizierungen pro Monat.

  • Sicherheit. Amazon Cognito verfügt über mehrere integrierte Sicherheitsfunktionen wie Verschlüsselung sensibler Daten, Multi-Faktor-Authentifizierung (MFA) und Schutz vor gängigen Webangriffen wie Cross-Site Scripting (XSS) und Cross-Site Request Forgery (CSRF). Amazon Cognito bietet außerdem erweiterte Sicherheitsfunktionen wie die adaptive Authentifizierung, die Überprüfung, ob kompromittierte Anmeldeinformationen verwendet wurden, und die Anpassung von Zugriffstoken.

  • Integration mit bestehenden AWS-Services. Amazon Cognito lässt sich nahtlos in AWS-Services integrieren. Dies kann die Entwicklung vereinfachen und die Benutzerverwaltung für Funktionen optimieren, die auf AWS-Ressourcen angewiesen sind.

Das folgende Diagramm veranschaulicht einige dieser Szenarien.

Verwendung von Amazon Cognito als Kundenidentitäts- und Zugriffsmanagement (CIAM)
  1. Die Anwendung authentifiziert sich bei Amazon Cognito Cognito-Benutzerpools und erhält Tokens.

  2. Die Anwendung verwendet Amazon Cognito Cognito-Identitätspools, um Token gegen AWS-Anmeldeinformationen auszutauschen.

  3. Die Anwendung greift mit Anmeldeinformationen auf AWS-Services zu.

Wir empfehlen Ihnen, Amazon Cognito immer dann zu verwenden, wenn Sie Benutzerauthentifizierungs-, Autorisierungs- und Benutzerverwaltungsfunktionen zu Ihren Web- oder Mobilanwendungen hinzufügen müssen, insbesondere wenn Sie mehrere Identitätsanbieter haben, sicheren Zugriff auf AWS-Ressourcen benötigen und Skalierbarkeitsanforderungen haben.

Designüberlegungen
  • Erstellen Sie einen Amazon Cognito Cognito-Benutzerpool oder Identitätspool auf der Grundlage Ihrer Anforderungen.

  • Aktualisieren Sie das Benutzerprofil nicht zu häufig (z. B. bei jeder Anmeldeanfrage). Wenn ein Update erforderlich ist, speichern Sie die aktualisierten Attribute in einer externen Datenbank wie Amazon DynamoDB.

  • Verwenden Sie Amazon Cognito Workforce Identity Management nicht.

  • Ihre Anwendung sollte JSON-Web-Tokens (JWTs) immer validieren, bevor sie ihnen vertraut, indem sie ihre Signatur und Gültigkeit überprüft. Diese Validierung sollte auf der Clientseite erfolgen, ohne API-Aufrufe an den Benutzerpool zu senden. Nachdem das Token verifiziert wurde, können Sie den Ansprüchen im Token vertrauen und sie verwenden, anstatt zusätzliche GetUser-API-Aufrufe zu tätigen. Weitere Informationen finden Sie unter Verifying a JSON Web Token in der Amazon Cognito Cognito-Dokumentation. Sie können auch zusätzliche JWT-Bibliotheken für die Token-Verifizierung verwenden.

  • Aktivieren Sie die erweiterten Sicherheitsfunktionen von Amazon Cognito nur, wenn Sie keinen CUSTOM_AUTH Flow, keine AWS-Lambda-Trigger für benutzerdefinierte Authentifizierungsherausforderungen oder die föderierte Anmeldung verwenden. Überlegungen und Einschränkungen im Zusammenhang mit erweiterten Sicherheitsfunktionen finden Sie in der Amazon Cognito Cognito-Dokumentation.

  • Ermöglichen Sie AWS WAF, Amazon Cognito Cognito-Benutzerpools zu schützen, indem Sie ratenbasierte Regeln verwenden und mehrere Anforderungsparameter kombinieren. Weitere Informationen finden Sie im AWS-Blogbeitrag Schützen Sie Ihren Amazon Cognito Cognito-Benutzerpool mit AWS WAF.

  • Wenn Sie eine zusätzliche Schutzebene wünschen, verwenden Sie einen CloudFront Amazon-Proxy für die zusätzliche Verarbeitung und Validierung eingehender Anfragen, wie im AWS-Blogbeitrag Schützen Sie öffentliche Clients für Amazon Cognito mithilfe eines CloudFront Amazon-Proxys beschrieben.

  • Alle API-Aufrufe nach der Benutzeranmeldung sollten über Backend-Services erfolgen. Verwenden Sie beispielsweise AWS WAF, um Aufrufe abzulehnenUpdateUserAttribute, rufen Sie dann aber stattdessen vom Anwendungs-Backend AdminUpdateUserAttribute aus auf, um das Benutzerattribut zu aktualisieren.

  • Wenn Sie einen Benutzerpool erstellen, wählen Sie aus, wie sich Benutzer anmelden, z. B. mit einem Benutzernamen, einer E-Mail-Adresse oder einer Telefonnummer. Diese Konfiguration kann nach der Erstellung des Benutzerpools nicht geändert werden. Ebenso können benutzerdefinierte Attribute nicht geändert oder entfernt werden, nachdem sie dem Benutzerpool hinzugefügt wurden.

  • Wir empfehlen Ihnen, die Multi-Faktor-Authentifizierung (MFA) in Ihrem Benutzerpool zu aktivieren.

  • Amazon Cognito bietet derzeit keine integrierten Sicherungs- oder Exportfunktionen. Um die Daten Ihrer Benutzer zu sichern oder zu exportieren, können Sie die Amazon Cognito Profiles Export Reference Architecture verwenden.

  • Verwenden Sie IAM-Rollen für den allgemeinen Zugriff auf AWS-Ressourcen. Für detaillierte Autorisierungsanforderungen verwenden Sie Amazon Verified Permissions. Dieser Berechtigungsverwaltungsservice ist nativ in Amazon Cognito integriert. Sie können auch die Anpassung von Zugriffstoken verwenden, um anwendungsspezifische Ansprüche zu erweitern und so die Zugriffsebene und die für den Benutzer verfügbaren Inhalte zu bestimmen. Wenn Ihre Anwendung Amazon API Gateway als Einstiegspunkt verwendet, verwenden Sie die Amazon Cognito Cognito-Funktion, um Amazon API Gateway mithilfe von Amazon Verified Permissions zu sichern. Dieser Service verwaltet und bewertet detaillierte Sicherheitsrichtlinien, die auf Benutzerattribute und Gruppen verweisen. Sie können sicherstellen, dass nur Benutzer in autorisierten Amazon Cognito Cognito-Gruppen Zugriff auf die Anwendungen haben. APIs Weitere Informationen finden Sie im Artikel Protect API Gateway with Amazon Verified Permissions auf der AWS-Community-Website.

  • Verwenden Sie AWS SDKs , um vom Backend aus auf Benutzerdaten zuzugreifen, indem Sie Benutzerattribute, Status und Gruppeninformationen aufrufen und abrufen. Sie können benutzerdefinierte App-Daten in den Benutzerattributen von Amazon Cognito speichern und sie geräteübergreifend synchronisieren.

In den folgenden Abschnitten werden drei Muster für die Integration von Amazon Cognito mit anderen AWS-Services beschrieben: Application Load Balancers, Amazon API Gateway und Amazon OpenSearch Service.

Integration mit einem Application Load Balancer

Sie können einen Application Load Balancer mit Amazon Cognito konfigurieren, um Anwendungsbenutzer zu authentifizieren, wie in der folgenden Abbildung dargestellt.

Konfiguration eines Application Load Balancer mit Amazon Cognito für das Identifikationsmanagement

Durch die Konfiguration der HTTPS-Listener-Standardregel können Sie die Benutzeridentifikation auf den Application Load Balancer auslagern und einen automatischen Authentifizierungsprozess einrichten. Einzelheiten finden Sie im AWS Knowledge Center unter Wie richte ich einen Application Load Balancer ein, um Benutzer über einen Amazon Cognito Cognito-Benutzerpool zu authentifizieren. Wenn Ihre Anwendung auf Kubernetes gehostet wird, finden Sie weitere Informationen im AWS-Blogbeitrag How to use Application Load Balancer and Amazon Cognito to authenticate user for your Kubernetes Web Apps. 

Integration mit Amazon API Gateway

Amazon API Gateway ist ein vollständig verwalteter, cloudbasierter API-Gateway-Service, der es einfach macht, ihn in großem Umfang zu erstellen, zu veröffentlichen und APIs zu verwalten. Es ist ein Einstiegspunkt für den Benutzerverkehr zu den Back-End-Diensten. Sie können Amazon Cognito in API Gateway integrieren, um Authentifizierung und Zugriffskontrolle zu implementieren, entweder zum Schutz APIs vor Missbrauch oder für andere Sicherheits- oder Geschäftsanwendungsfälle. Sie können Authentifizierung und Zugriffskontrolle für Secure API Gateway implementieren, APIs indem Sie einen Amazon Cognito Cognito-Autorisierer, Amazon Verified Permissions oder einen Lambda-Autorisierer verwenden. In der folgenden Tabelle wird beschrieben, wie diese drei Ansätze die Autorisierung unterstützen.

Typ des Autorisierers Unterstützte Autorisierung

Amazon Cognito Cognito-Autorisierer

Zugriffstoken: Bereiche

ID-Token: Gültigkeit

Verifizierte Berechtigungen — Lambda Authorizer

Verified Permissions führt eine Token-Validierung (Signatur, Ablauf) für das konfigurierte Token durch.

Zugriffstoken: Jedes einfache Attribut, komplexe Attribute, Bereiche oder Gruppen.

ID-Token: Jedes einfache Attribut, komplexe Attribute, Bereiche oder Gruppen.

Richtlinien können auch Kontextdaten für die Zero-Trust-Autorisierung verwenden (z. B. IP-Adresse, Anforderungskontext oder Gerätefingerabdruck).

Benutzerdefinierter Lambda-Autorisierer

Sie können ein benutzerdefiniertes Token-Validierungs- und Autorisierungsschema implementieren.

Amazon Cognito Cognito-Autorisierer

Sie können Amazon Cognito mit API Gateway integrieren, um Authentifizierung und Zugriffskontrolle zu implementieren, wie in der folgenden Abbildung dargestellt. Der Amazon Cognito Authorizer validiert das von Amazon Cognito generierte JSON Web Token (JWT) und autorisiert Anfragen auf der Grundlage von benutzerdefinierten Bereichen im Zugriffstoken oder einem gültigen ID-Token. Weitere Informationen zur Implementierung finden Sie unter Wie richte ich einen Amazon Cognito Cognito-Benutzerpool als Autorisierer auf einer API-Gateway-REST-API ein? in der AWS Knowledge Base.

Verwenden eines Amazon Cognito Cognito-Autorisierers mit API Gateway für das Identifikationsmanagement

Verifizierte Berechtigungen — Lambda Authorizer

Sie können Amazon Verified Permissions verwenden, um Amazon Cognito oder Ihren eigenen Identitätsanbieter mit API Gateway für Authentifizierung und detaillierte Zugriffskontrolle zu integrieren. Verified Permissions unterstützt die ID- und Zugriffstoken-Validierung von Amazon Cognito oder einem beliebigen OpenID Connect (OIDC) -Anbieter und kann den Zugriff auf der Grundlage einfacher Token-Attribute, komplexer Token-Attribute (wie Arrays oder JSON-Strukturen), Bereichen und Gruppenmitgliedschaften autorisieren. Informationen zu den ersten Schritten zur Sicherung APIs von API-Gateway-REST mithilfe verifizierter Berechtigungen finden Sie im AWS-Sicherheits-Blogbeitrag Authorize API Gateway APIs using Amazon Verified Permissions with Amazon Cognito or Bring Your Own Identity Provider und das Video Amazon Verified Permissions — Quick Start Overview and Demo.

Verwendung eines Lambda-Autorisierers mit verifizierten Berechtigungen mit API Gateway für das Identifikationsmanagement

Lambda-Genehmiger

Sie können einen AWS Lambda Lambda-Autorisierer verwenden, um ein benutzerdefiniertes Autorisierungsschema zu implementieren. Ihr Schema kann Anforderungsparameter verwenden, um die Identität des Anrufers zu ermitteln, oder eine Bearer-Token-Authentifizierungsstrategie wie SAML verwenden. OAuth Diese Option bietet maximale Flexibilität, erfordert jedoch, dass Sie die Logik zur Sicherung Ihrer Daten codieren. APIs Weitere Informationen finden Sie unter Verwenden von API Gateway Gateway-Lambda-Autorisierern in der API Gateway Gateway-Dokumentation.

Integration mit Amazon OpenSearch Service

Sie können Amazon Cognito verwenden, um Amazon OpenSearch Service-Domains zu sichern. Zum Beispiel, wenn ein Benutzer möglicherweise Zugriff auf OpenSearch Dashboards über das Internet benötigt, wie in der folgenden Abbildung dargestellt. In diesem Szenario kann Amazon Cognito Zugriffsberechtigungen, einschließlich detaillierter Berechtigungen, bereitstellen, indem Amazon Cognito Cognito-Gruppen und -Benutzer internen Serviceberechtigungen zugeordnet werden. OpenSearch Weitere Informationen finden Sie unter Konfiguration der Amazon Cognito Cognito-Authentifizierung für OpenSearch Dashboards in der OpenSearch Servicedokumentation.

Verwenden eines Amazon Cognito zur Sicherung von Amazon OpenSearch Service-Domains