Prévention du député confus entre services dans Amazon AppStream 2.0 - Amazon AppStream 2.0

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Prévention du député confus entre services dans Amazon AppStream 2.0

Le problème du député confus est un problème de sécurité dans lequel une entité qui n'a pas l'autorisation d'effectuer une action peut contraindre une entité dotée de davantage de privilèges à effectuer cette action. Dans AWS, l'emprunt d'identité entre services peut rendre les ressources du compte vulnérables au problème de député confus. L'emprunt d'identité entre services se produit lorsqu'un service (le service appelant) appelle un autre service (le service appelé). Le service appelant peut manipuler le service appelé pour utiliser ses autorisations afin d'agir sur les ressources d'un client d'une manière que le service appelant n'est pas autorisé à effectuer lui-même. Pour éviter cela, AWS fournit des outils qui vous aident à protéger vos données de tous les services avec des principaux de service qui ont accès aux ressources de votre compte.

Nous vous recommandons d'utiliser les clés de contexte de condition globale aws:SourceArn et aws:SourceAccount dans des politiques de ressources afin de limiter les autorisations lors de l'accès à ces ressources. Les directives suivantes détaillent les recommandations et les exigences relatives à l'utilisation de ces clés pour protéger vos ressources :

  • Utilisez aws:SourceArn si vous souhaitez qu'une seule ressource soit associée à l'accès entre services.

  • Utilisez aws:SourceAccount si vous souhaitez autoriser toute ressource du compte spécifié à être associée à l'utilisation entre services.

  • Si la clé aws:SourceArn ne contient pas d'ID de compte, vous devez utiliser les deux clés de contexte de condition globale (aws:SourceArn et aws:SourceAccount) pour limiter les autorisations.

  • Si vous utilisez les deux clés de contexte de condition globale et que la valeur aws:SourceArn contient un ID de compte, la clé aws:SourceAccount doit utiliser le même ID de compte lorsqu'elle est utilisée dans la même déclaration de politique.

Le moyen le plus efficace de se protéger contre le problème de député confus consiste à utiliser l'Amazon Resource Name (ARN) exact de la ressource que vous souhaitez autoriser. Si vous ne connaissez pas l'ARN complet de la ressource, utilisez la clé de contexte de condition globale aws:SourceArn avec des caractères génériques (tels que *) pour les parties inconnues de l'ARN. Vous pouvez aussi utiliser un caractère générique dans l'ARN si vous souhaitez spécifier plusieurs ressources. Par exemple, vous pouvez formater l'ARN comme suit : arn:aws:servicename::region-name::your Compte AWS ID:*.

Exemple : prévention du député confus entre services pour une fonction du service dans AppStream 2.0

AppStream 2.0 assume une fonction du service en utilisant divers ARN de ressource, ce qui entraîne une déclaration conditionnelle complexe. Nous vous recommandons d'utiliser un type de ressource générique pour éviter toute défaillance inattendue des ressources AppStream 2.0.

Exemple aws:SourceAccount conditionnel :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "appstream.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "your Compte AWS ID" } } } ] }
Exemple aws:SourceArn conditionnel :
{ "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 Compte AWS ID}:*" } } } ] }

Exemple : prévention du député confus entre services pour un rôle de machine d'une flotte AppStream 2.0

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

Si vous souhaitez utiliser un rôle IAM pour plusieurs flottes, nous vous recommandons d'utiliser la clé de contexte de condition globale aws:SourceArn avec des caractères génériques (*) pour faire correspondre plusieurs ressources de flotte AppStream 2.0.

{ "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 Compte AWS ID}:fleet/{your fleet name}" } } } ] }

Exemple : prévention du député confus entre services dans une politique de compartiment Amazon S3 pour un script de session de flottes Elastic AppStream 2.0

Exemple aws:SourceAccount conditionnel :
{ "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 Compte AWS ID" } } } ] }
Exemple aws:SourceArn conditionnel :
{ "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 Compte AWS ID}:fleet/{your fleet name}" } } } ] }

Exemple : prévention du député confus entre services dans une politique de compartiment Amazon S3 pour l'application AppStream 2.0

Lorsque vous stockez des données dans un compartiment Amazon S3, le compartiment peut être exposé à des problèmes de député confus. Cela peut rendre les données telles que les flottes Elastic, les blocs d'applications, les scripts de configuration, les icônes d'applications et les scripts de session vulnérables aux acteurs malveillants.

Pour éviter les problèmes de député confus, vous pouvez spécifier la condition aws:SourceAccount ou aws:SourceArn dans la politique de compartiment Amazon S3 pour ELASTIC-FLEET-EXAMPLE-BUCKET.

Les politiques de ressources ci-dessous montrent comment éviter le problème de député confus avec l'une des solutions suivantes :

  • La condition aws:SourceAccount avec votre ID de compte AWS

  • La clé de contexte de condition globale aws:SourceArn

AppStream 2.0 ne prend actuellement pas en charge la prévention du député confus pour les icônes d'applications. Le service ne prend en charge que les fichiers VHD et les scripts de configuration. Si vous essayez d'ajouter des conditions supplémentaires pour les icônes d'applications, celles-ci ne seront pas affichées aux utilisateurs finaux.

Dans l'exemple suivant, la politique de compartiment autorise uniquement les ressources de flotte Elastic AppStream 2.0 du compte du propriétaire à accéder à 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 Compte AWS ID" } } }, { "Sid": "AllowRetrievalPermissionsToS3AppIconsForAppStream", "Effect": "Allow", "Principal": { "Service": "appstream.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET/app-icons/*" } ] }

Vous pouvez également utiliser la condition aws:SourceArn pour limiter l'accès aux ressources pour des ressources spécifiques.

Note

Si vous ne connaissez pas l'ARN complet d'une ressource ou si vous voulez spécifier plusieurs ressources, utilisez la clé de contexte de condition globale aws:SourceArn avec des caractères génériques (*) pour les parties inconnues de l'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/*" } ] }

Vous pouvez utiliser les conditions aws:SourceArn et aws:SourceAccount pour limiter l'accès aux ressources pour des ressources et des comptes spécifiques.

Note

Si vous ne connaissez pas l'ARN complet d'une ressource ou si vous voulez spécifier plusieurs ressources, utilisez la clé de contexte de condition globale aws:SourceArn avec des caractères génériques (*) pour les parties inconnues de l'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/*" } ] }