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.
Serviceübergreifende Confused-Deputy-Prävention
Wichtig
Hinweis zum Ende des Supports: Bestandskunden können Amazon QLDB bis zum Ende des Supports am 31.07.2025 nutzen. Weitere Informationen finden Sie unter Migrieren eines Amazon QLDB Ledgers zu Amazon Aurora SQL Postgre
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, dienstübergreifender Identitätswechsel kann zu einem 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 das Problem des verwirrten Stellvertreters zu vermeiden, AWS stellt Tools bereit, mit denen Sie Ihre Daten für alle Dienste schützen können, wobei Dienstprinzipale Zugriff auf Ressourcen in Ihrem Konto erhalten haben.
Wir empfehlen, die Kontextschlüssel aws:SourceArn
und die aws:SourceAccount
globalen Bedingungsschlüssel in Ressourcenrichtlinien zu verwenden, um die Berechtigungen einzuschränken, die Amazon einem anderen Service für die Ressource QLDB erteilt. Wenn Sie beide Kontextschlüssel für globale Bedingungen verwenden, müssen der aws:SourceAccount
Wert und das Konto im aws:SourceArn
Wert dieselbe Konto-ID verwenden, wenn sie in derselben Richtlinienerklärung verwendet werden.
In der folgenden Tabelle sind mögliche Werte aws:SourceArn
für die StreamsJournalToKinesis
QLDBAPIOperationen ExportJournalToS3
und aufgeführt. Diese Operationen fallen unter dieses Sicherheitsproblem, da sie AWS Security Token Service (AWS STS), um eine von Ihnen angegebene IAM Rolle anzunehmen.
APIBetrieb | Aufgerufener Service | war: SourceArn |
---|---|---|
ExportJournalToS3 |
AWS STS (AssumeRole ) |
Ermöglicht QLDB die Übernahme der Rolle für alle QLDB Ressourcen im Konto:
Derzeit wird dieser Platzhalter QLDB nur ARN für Journalexporte unterstützt. |
StreamsJournalToKinesis |
AWS STS (AssumeRole ) |
Ermöglicht QLDB die Übernahme der Rolle für einen bestimmten QLDB Stream:
Hinweis: Sie können eine Stream-ID nur angeben, ARN nachdem die Stream-Ressource erstellt wurde. Auf diese Weise können Sie zulassenARN, dass die Rolle nur für einen einzelnen QLDB Stream verwendet wird. Ermöglicht QLDB die Übernahme der Rolle für beliebige QLDB Streams eines Ledgers:
Ermöglicht QLDB die Übernahme der Rolle für alle QLDB Streams im Konto:
Ermöglicht QLDB die Übernahme der Rolle für alle QLDB Ressourcen im Konto:
|
Der effektivste Schutz vor dem Problem mit dem verwirrten Stellvertreter besteht darin, den Kontextschlüssel für aws:SourceArn
globale Bedingungen mit ARN der gesamten Ressource zu verwenden. Wenn Sie die gesamte ARN Ressource nicht kennen oder wenn Sie mehrere Ressourcen angeben, verwenden Sie den aws:SourceArn
globalen Kontextbedingungsschlüssel mit Platzhalterzeichen (*
) für die unbekannten Teile von ARN — zum Beispiel. arn:aws:qldb:us-east-1:
123456789012
:*
Das folgende Beispiel für eine Vertrauensrichtlinie für eine IAM Rolle zeigt, wie Sie die Kontextschlüssel aws:SourceArn
und die aws:SourceAccount
globalen Bedingungsschlüssel verwenden können, um das Problem des verwirrten Stellvertreters zu verhindern. Mit dieser Vertrauensrichtlinie QLDB kann die Rolle für jeden QLDB Stream im Konto myExampleLedger
nur 123456789012
für das Hauptbuch übernommen werden.
Um diese Richtlinie zu verwenden, ersetzen Sie us-east-1
,
123456789012
, und myExampleLedger
im Beispiel mit Ihren eigenen Informationen.
{ "Version": "2012-10-17", "Statement": { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "qldb.amazonaws.com" }, "Action": [ "sts:AssumeRole" ], "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:qldb:
us-east-1
:123456789012
:stream/myExampleLedger
/*" }, "StringEquals": { "aws:SourceAccount": "123456789012
" } } } }