Serviceübergreifende Prävention von verwirrtem Stellvertreter in Amazon AppStream 2.0 - Amazon AppStream 2.0

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 Prävention von verwirrtem Stellvertreter in Amazon AppStream 2.0

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 der serviceübergreifende Identitätswechsel dazu führen, dass Kontoressourcen aufgrund des Problems des verwirrten Stellvertreters angreifbar werden. Ein serviceübergreifender Identitätswechsel tritt auf, wenn ein Service (der Aufruf-Service) einen anderen Service aufruft (den aufgerufenen Service). Der aufrufende Service kann den aufgerufenen Service so manipulieren, dass er seine Berechtigungen verwendet, um Aktionen auf die Ressourcen eines Kunden auszuführen, für die der aufrufende Service keine Berechtigung hat. 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.

Wir empfehlen die Verwendung der globalen Bedingungskontext-Schlüssel aws:SourceArn und aws:SourceAccount in ressourcenbasierten Richtlinien, um die Berechtigungen beim Zugriff auf eine bestimmte Ressource zu beschränken. In den folgenden Richtlinien werden die Empfehlungen und Anforderungen für die Verwendung dieser Schlüssel zum Schutz Ihrer Ressourcen detailliert beschrieben:

  • Verwenden Sie aws:SourceArn, wenn Sie nur eine Ressource mit dem serviceübergreifenden Zugriff verknüpfen möchten.

  • Wenn Sie zulassen möchten, dass Ressourcen im angegebenen Konto mit der serviceübergreifenden Verwendung verknüpft werden, verwenden Sie aws:SourceAccount.

  • Wenn der aws:SourceArn-Schlüssel keine Konto-ID enthält, müssen Sie beide globalen Bedingungskontext-Schlüssel (aws:SourceArn und aws:SourceAccount) verwenden, um Berechtigungen einzuschränken.

  • Wenn Sie beide globalen Bedingungskontextschlüssel verwenden und der aws:SourceArn-Wert eine Konto-ID enthält, muss der aws:SourceAccount-Schlüssel dieselbe Konto-ID verwenden, wenn sie in derselben Richtlinienanweisung verwendet werden.

Der effektivste Weg, um sich vor dem Problem des verwirrten Stellvertreters zu schützen, ist die Verwendung des exakten Amazon-Ressourcennamens (ARN) der Ressource, die Sie zulassen möchten. Wenn Sie den vollständigen ARN der Ressource nicht kennen, verwenden Sie den globalen Bedingungskontextschlüssel aws:SourceArn mit Platzhaltern (z. B. *) für die unbekannten Teile des ARN. Sie können auch einen Platzhalter im ARN verwenden, wenn Sie mehrere Ressourcen angeben möchten. Sie können den ARN beispielsweise als arn:aws:servicename::region-name::your AWS-Konto ID:* formatieren.

Beispiel: Serviceübergreifende Prävention von verwirrtem Stellvertreter mit der AppStream-2.0-Servicerolle

AppStream 2.0 nimmt eine Servicerolle unter Verwendung einer Vielzahl von Ressourcen-ARNs an, was zu einer komplizierten bedingten Anweisung führt. Wir empfehlen die Verwendung eines Platzhalter-Ressourcentyps, um unerwartete AppStream-2.0-Ressourcenausfälle zu verhindern.

Beispiel aws:SourceAccount Bedingt:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "appstream.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "your AWS-Konto ID" } } } ] }
Beispiel aws:SourceArn Bedingt:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "appstream.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:{aws partition}:appstream:{your region name}:{your AWS-Konto ID}:*" } } } ] }

Beispiel: Serviceübergreifende Prävention von verwirrtem Stellvertreter mit der AppStream-2.0-Flottencomputerrolle

Beispiel aws:SourceAccount Bedingt:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "appstream.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "your AWS-Konto ID" } } } ] }
Beispiel aws:SourceArn Bedingt:
Anmerkung

Wenn Sie eine IAM-Rolle für mehrere Flotten verwenden möchten, empfehlen wir, den globalen aws:SourceArn-Kontextbedingungsschlüssel mit Platzhaltern (*) zu verwenden, um sie mehreren AppStream-2.0-Flottenressourcen zuzuordnen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "appstream.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:{aws partition}:appstream:{your region name}:{your AWS-Konto ID}:fleet/{your fleet name}" } } } ] }

Beispiel: Serviceübergreifende Prävention von verwirrtem Stellvertreter mit Amazon-S3-Bucket-Richtlinie für das AppStream-2.0-Elastic-Flotten-Sitzungsskript

Beispiel aws:SourceAccount Bedingt:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "appstream.amazonaws.com" ] }, "Action": "s3:GetObject", "Resource": "your session script S3 path", "Condition": { "StringEquals": { "aws:SourceAccount": "your AWS-Konto ID" } } } ] }
Beispiel aws:SourceArn Bedingt:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "appstream.amazonaws.com" ] }, "Action": "s3:GetObject", "Resource": "your session script S3 path", "Condition": { "ArnLike": { "aws:SourceArn": "arn:{aws partition}:appstream:{your region name}:{your AWS-Konto ID}:fleet/{your fleet name}" } } } ] }

Beispiel: Serviceübergreifende Prävention von verwirrtem Stellvertreter mit Amazon-S3-Bucket-Richtlinie für AppStream 2.0

Wenn Sie Daten in einem Amazon-S3-Bucket speichern, ist der Bucket möglicherweise dem Problem des verwirrten Stellvertreters ausgesetzt. Dadurch können Daten wie Elastic-Flotten, Anwendungsblocks, Setup-Skripts, Anwendungssymbole und Sitzungsskripts anfällig für böswillige Akteure werden.

Um Probleme mit verwirrten Stellvertretern zu vermeiden, können Sie die aws:SourceAccount-Bedingung oder die aws:SourceArn-Bedingung in der Amazon-S3-Bucket-Richtlinie für ELASTIC-FLEET-EXAMPLE-BUCKET angeben.

Die folgenden Ressourcenrichtlinien zeigen, wie Sie das Problem des verwirrten Stellvertreters auf eine der folgenden Weisen vermeiden können:

  • Die aws:SourceAccount mit Ihrer AWS-Konto-ID

  • Der globale Bedingungskontextschlüssel aws:SourceArn

AppStream 2.0 unterstützt derzeit keine Prävention des verwirrten Stellvertreters für Anwendungssymbole. Der Service unterstützt nur VHD-Dateien und Setup-Skripts. Wenn Sie versuchen, zusätzliche Bedingungen für Anwendungssymbole hinzuzufügen, werden die Symbole den Endbenutzern nicht angezeigt.

Im folgenden Beispiel erlaubt die Bucket-Richtlinie nur AppStream-2.0-Elastic-Flottenressourcen im Konto des Besitzers Zugriff auf ELASTIC_FLEET_EXAMPLE_BUCKET.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "appstream.amazonaws.com" }, "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET/vhd-folder/*", "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET/scripts/*" ], "Condition": { "StringEquals": { "aws:SourceAccount": "your AWS-Konto ID" } } }, { "Sid": "AllowRetrievalPermissionsToS3AppIconsForAppStream", "Effect": "Allow", "Principal": { "Service": "appstream.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET/app-icons/*" } ] }

Sie können die aws:SourceArn-Bedingung auch verwenden, um den Ressourcenzugriff für bestimmte Ressourcen zu beschränken.

Anmerkung

Wenn Sie den vollständigen ARN der Ressource nicht kennen oder wenn Sie mehrere Ressourcen angeben, verwenden Sie den globalen Bedingungskontextschlüssel aws:SourceArn mit Platzhaltern (*) für die unbekannten Teile des ARN.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "appstream.amazonaws.com" }, "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET/vhd-folder/*", "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET/scripts/*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:{aws-partition}:appstream:{your region name}:{your AWS account ID}:app-block/*" } } }, { "Sid": "AllowRetrievalPermissionsToS3AppIconsForAppStream", "Effect": "Allow", "Principal": { "Service": "appstream.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET/app-icons/*" } ] }

Sie können die aws:SourceArn- und aws:SourceAccount-Bedingungen verwenden, um den Ressourcenzugriff für bestimmte Ressourcen und Konten zu beschränken.

Anmerkung

Wenn Sie den vollständigen ARN der Ressource nicht kennen oder wenn Sie mehrere Ressourcen angeben, verwenden Sie den globalen Bedingungskontextschlüssel aws:SourceArn mit Platzhaltern (*) für die unbekannten Teile des ARN.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "appstream.amazonaws.com" }, "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET/vhd-folder/*", "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET/scripts/*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:{aws partition}:appstream:{your region name}:{your AWS account ID}:app-block/*" }, "StringEquals": { "aws:SourceAccount": "your AWS account ID" } } }, { "Sid": "AllowRetrievalPermissionsToS3AppIconsForAppStream", "Effect": "Allow", "Principal": { "Service": "appstream.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET/app-icons/*" } ] }