Bewährte Sicherheitsmethoden für Amazon Cognito Cognito-Identitätspools - Amazon Cognito

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.

Bewährte Sicherheitsmethoden für Amazon Cognito Cognito-Identitätspools

Amazon Cognito Cognito-Identitätspools stellen temporäre AWS Anmeldeinformationen für Ihre Anwendung bereit. AWS-Konten enthalten häufig sowohl die Ressourcen, die Ihre Anwendungsbenutzer benötigen, als auch private Back-End-Ressourcen. Die IAM Rollen und Richtlinien, aus denen sich die AWS Anmeldeinformationen zusammensetzen, können Zugriff auf jede dieser Ressourcen gewähren.

Die wichtigste bewährte Methode bei der Konfiguration von Identitätspools besteht darin, sicherzustellen, dass Ihre Anwendung ihre Aufgabe ohne übermäßige oder unbeabsichtigte Rechte erledigen kann. Um Sicherheitsfehler zu vermeiden, sollten Sie sich diese Empfehlungen vor dem Start jeder Anwendung, die Sie für die Produktion freigeben möchten, durchlesen.

IAMBewährte Methoden für die Konfiguration

Wenn ein Gast oder ein authentifizierter Benutzer eine Sitzung in Ihrer Anwendung initiiert, für die Identitätspool-Anmeldeinformationen erforderlich sind, ruft Ihre Anwendung temporäre AWS Anmeldeinformationen für eine Rolle ab. IAM Die Anmeldeinformationen können für eine Standardrolle, eine Rolle, die durch Regeln in Ihrer Identitätspool-Konfiguration ausgewählt wurde, oder für eine benutzerdefinierte Rolle, die von Ihrer App ausgewählt wurde, sein. Mit den jeder Rolle zugewiesenen Berechtigungen erhält Ihr Benutzer Zugriff auf Ihre AWS Ressourcen.

Weitere Informationen zu allgemeinen IAM bewährten Methoden finden Sie unter IAMBewährte Methoden im AWS Identity and Access Management Benutzerhandbuch.

Verwenden Sie Vertrauensrichtlinienbedingungen in IAM Rollen

IAMerfordert, dass Rollen für Identitätspools mindestens eine Bedingung für eine Vertrauensrichtlinie haben. Mit dieser Bedingung kann beispielsweise der Geltungsbereich der Rolle auf nur authentifizierte Benutzer festgelegt werden. AWS STS erfordert außerdem, dass kontoübergreifende Standardauthentifizierungsanforderungen zwei spezifische Bedingungen erfüllen: cognito-identity.amazonaws.com:aud und. cognito-identity.amazonaws.com:amr Es hat sich bewährt, diese beiden Bedingungen auf alle IAM Rollen anzuwenden, die dem Identitätspools-Dienstprinzipal cognito-identity.amazonaws.com vertrauen.

  • cognito-identity.amazonaws.com:aud: Der Aud-Anspruch im Identitätspool-Token muss mit einer vertrauenswürdigen Identitätspool-ID übereinstimmen.

  • cognito-identity.amazonaws.com:amr: Der AMR-Anspruch im Identitätspool-Token muss entweder authentifiziert oder nicht authentifiziert sein. Mit dieser Bedingung können Sie den Zugriff auf eine Rolle nur nicht authentifizierten Gästen oder nur authentifizierten Benutzern vorbehalten. Sie können den Wert dieser Bedingung weiter verfeinern, um die Rolle beispielsweise auf Benutzer eines bestimmten Anbieters zu beschränken. graph.facebook.com

Das folgende Beispiel für eine Vertrauensrichtlinie für Rollen gewährt Zugriff auf eine Rolle unter den folgenden Bedingungen:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "authenticated" } } } ] }
Elemente, die sich auf Identitätspools beziehen
  • "Federated": "cognito-identity.amazonaws.com": Benutzer müssen aus einem Identitätspool stammen.

  • "cognito-identity.amazonaws.com:aud": "us-east-1:a1b2c3d4-5678-90ab-cdef-example11111": Benutzer müssen aus einem bestimmten Identitätspool stammenus-east-1:a1b2c3d4-5678-90ab-cdef-example11111.

  • "cognito-identity.amazonaws.com:amr": "authenticated": Benutzer müssen authentifiziert sein. Gastbenutzer können die Rolle nicht übernehmen.

Wenden Sie Berechtigungen mit den geringsten Rechten an

Wenn Sie Berechtigungen mit IAM Richtlinien für authentifizierten Zugriff oder Gastzugriff festlegen, gewähren Sie nur die spezifischen Berechtigungen, die für die Ausführung bestimmter Aufgaben erforderlich sind, oder die Berechtigungen mit den geringsten Rechten. Die folgende IAM Beispielrichtlinie gewährt, wenn sie auf eine Rolle angewendet wird, schreibgeschützten Zugriff auf eine einzelne Image-Datei in einem Amazon S3 S3-Bucket.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": ["arn:aws:s3:::mybucket/assets/my_picture.jpg"] } ] }

Bewährte Methoden zur Konfiguration des Identitätspo

Identitätspools bieten flexible Optionen für die Generierung von AWS Anmeldeinformationen. Verwenden Sie keine Abkürzungen beim Design, wenn Ihre Anwendung mit den sichersten Methoden arbeiten kann.

Machen Sie sich mit den Auswirkungen des Gastzugangs vertraut

Ein nicht authentifizierter Gastzugriff ermöglicht es Benutzern, Daten von Ihnen abzurufen, AWS-Konto bevor sie sich anmelden. Jeder, der Ihre Identitätspool-ID kennt, kann nicht authentifizierte Anmeldeinformationen anfordern. Bei Ihrer Identitätspool-ID handelt es sich nicht um vertrauliche Informationen. Wenn Sie den Gastzugriff aktivieren, sind die AWS Berechtigungen, die Sie für nicht authentifizierte Sitzungen gewähren, für alle verfügbar.

Es hat sich bewährt, den Gastzugriff deaktiviert zu lassen und die erforderlichen Ressourcen erst abzurufen, nachdem sich die Benutzer authentifiziert haben. Wenn Ihre Anwendung vor der Anmeldung Zugriff auf Ressourcen benötigt, treffen Sie die folgenden Vorsichtsmaßnahmen.

  • Machen Sie sich mit den automatischen Beschränkungen für Rollen ohne Authentifizierung vertraut.

  • Überwachen Sie die Berechtigungen Ihrer nicht authentifizierten IAM Rollen und passen Sie sie an die spezifischen Anforderungen Ihrer Anwendung an.

  • Gewähren Sie Zugriff auf bestimmte Ressourcen.

  • Sichern Sie sich die Vertrauensrichtlinie Ihrer nicht authentifizierten IAM Standardrolle.

  • Aktivieren Sie den Gastzugriff nur, wenn Sie sicher sind, dass Sie die Berechtigungen in Ihrer IAM Rolle jedem im Internet gewähren würden.

Verwenden Sie standardmäßig die erweiterte Authentifizierung

Bei der (klassischen) Standardauthentifizierung delegiert Amazon Cognito die Auswahl der IAM Rolle an Ihre App. Im Gegensatz dazu verwendet der erweiterte Ablauf die zentralisierte Logik in Ihrem Identitätspool, um die IAM Rolle zu bestimmen. Außerdem bietet er zusätzliche Sicherheit für nicht authentifizierte Identitäten mit einer Scopedown-Richtlinie, die eine Obergrenze für Berechtigungen festlegt. IAM Der erweiterte Ablauf ist die sicherste Option mit dem geringsten Aufwand für Entwickler. Weitere Informationen zu diesen Optionen finden Sie unterIdentitäten-Pools – Authentifzierungsablauf.

Der grundlegende Ablauf kann die clientseitige Logik offenlegen, die für die Rollenauswahl und die Zusammenstellung der AWS STS API Anforderung von Anmeldeinformationen verwendet wird. Der erweiterte Ablauf verbirgt sowohl die Logik als auch die Anfrage zur Rollenübernahme hinter der Automatisierung des Identitätspools.

Wenden Sie bei der Konfiguration der Standardauthentifizierung IAMbewährte Methoden auf Ihre IAM Rollen und deren Berechtigungen an.

Verwenden Sie Entwickler-Anbieter auf sichere Weise

Von Entwicklern authentifizierte Identitäten sind eine Funktion von Identitätspools für serverseitige Anwendungen. Der einzige Authentifizierungsnachweis, den Identitätspools für die Entwicklerauthentifizierung benötigen, sind die AWS Anmeldeinformationen eines Identitätspool-Entwicklers. Identitätspools erzwingen keine Einschränkungen der Gültigkeit der Entwickler-/Anbieter-Identifikatoren, die Sie in diesem Authentifizierungsablauf angeben.

Es hat sich bewährt, Entwickleranbieter nur unter den folgenden Bedingungen zu implementieren:

  • Um die Verantwortung für die Verwendung von vom Entwickler authentifizierten Anmeldeinformationen zu übernehmen, sollten Sie den Namen und die Kennungen Ihres Entwickler-Anbieters so gestalten, dass sie die Authentifizierungsquelle angeben. Beispiel: "Logins" : {"MyCorp provider" : "[provider application ID]"}.

  • Vermeiden Sie langlebige Benutzeranmeldedaten. Konfigurieren Sie Ihren serverseitigen Client so, dass er Identitäten mit serviceverknüpften Rollen wie EC2Instanzprofilen und Lambda-Ausführungsrollen anfordert.

  • Vermeiden Sie es, interne und externe Vertrauensquellen im selben Identitätspool zu vermischen. Fügen Sie Ihren Entwickleranbieter und Ihre Single Sign-On (SSO) -Anbieter in separaten Identitätspools hinzu.