Prevenzione del problema "confused deputy" tra servizi di Amazon AppStream 2.0 - Amazon AppStream 2.0

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Prevenzione del problema "confused deputy" tra servizi di Amazon AppStream 2.0

Con "confused deputy" si intende un problema di sicurezza in cui un'entità che non dispone dell'autorizzazione per eseguire una certa operazione costringe un'entità con più privilegi a eseguire tale operazione. In AWS, la rappresentazione tra servizi può lasciare le risorse dell'account vulnerabili al problema "confused deputy". La rappresentazione tra servizi si verifica quando un servizio (il servizio chiamante) effettua una chiamata a un altro servizio (il servizio chiamato). Il servizio chiamante può manipolare il servizio chiamato in modo da utilizzarne le autorizzazioni per agire sulle risorse di un altro cliente, a cui normalmente non avrebbe accesso, tramite il servizio stesso. Per evitare ciò, AWS fornisce strumenti per poter proteggere i dati per tutti i servizi con principali di servizio a cui è stato concesso l'accesso alle risorse del tuo account.

Consigliamo di utilizzare le chiavi di contesto delle condizioni globali aws:SourceArn e aws:SourceAccount nelle policy delle risorse per limitare le autorizzazioni quando si accede a tali risorse. Le seguenti linee guida descrivono nel dettaglio i suggerimenti e i requisiti da rispettare quando utilizzi queste chiavi per proteggere le risorse:

  • Utilizza aws:SourceArn se desideri consentire l'associazione di una sola risorsa all'accesso tra servizi.

  • Utilizza aws:SourceAccount se desideri consentire l'associazione di qualsiasi risorsa nell'account specificato all'uso tra servizi.

  • Se il valore aws:SourceArn non contiene un ID account, devi utilizzare entrambe le chiavi di contesto delle condizioni globali (aws:SourceArn e aws:SourceAccount) per limitare le autorizzazioni.

  • Se utilizzi entrambe le chiavi di contesto delle condizioni globali e il valore aws:SourceArn contiene un ID account, la chiave aws:SourceAccount deve utilizzare lo stesso ID account quando utilizzata nella stessa istruzione di policy.

Il modo più efficace per proteggersi dal problema "confused deputy" è quello di usare il nome della risorsa Amazon (ARN) esatto della risorsa che vuoi autorizzare. Se non conosci l'ARN completo della risorsa, usa la chiave di contesto della condizione globale aws:SourceArn con caratteri jolly (ad esempio, *) per le parti sconosciute dell'ARN. Inoltre, puoi utilizzare un carattere jolly nell'ARN se desideri specificare più risorse. Ad esempio, puoi dare all'ARN un formato come arn:aws:servicename::region-name::your Account AWS ID:*.

Esempio: prevenzione del problema "confused deputy" tra ruoli di servizio di Amazon AppStream 2.0

AppStream 2.0 assume che ruolo di servizio utilizzi una varietà di ARN di risorse, il che porta a una complicata istruzione condizionale. Consigliamo di utilizzare un tipo di risorsa carattere jolly per prevenire eventuali errori imprevisti delle risorse AppStream 2.0.

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

Esempio: prevenzione del problema "confused deputy" tra ruoli delle macchine dei parchi istanze di AppStream 2.0

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

Se desideri utilizzare un ruolo IAM per più parchi istanze, consigliamo di utilizzare la chiave di contesto della condizione globale aws:SourceArn con caratteri jolly (*) per abbinare più risorse del parco istanze 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 Account AWS ID}:fleet/{your fleet name}" } } } ] }

Esempio: prevenzione del problema "confused deputy" tra servizi delle policy dei bucket Amazon S3 degli script di sessione per parchi istanze elastici AppStream 2.0

Esempio aws:SourceAccount Condizionale:
{ "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 Account AWS ID" } } } ] }
Esempio aws:SourceArn Condizionale:
{ "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 Account AWS ID}:fleet/{your fleet name}" } } } ] }

Esempio: prevenzione del problema "confused deputy" tra servizi delle policy dei bucket Amazon S3 delle applicazione di AppStream 2.0

Quando si archiviano i dati in un bucket S3, è possibile che il bucket sia esposto a problemi "confused deputy". Ciò può lasciare dati come i parchi istanze elastici, i blocchi app, gli script di configurazione, le icone delle applicazioni e gli script di sessione vulnerabili a operazioni da parte di utenti malintenzionati.

Per evitare problemi "confused deputy", puoi specificare la condizione aws:SourceAccount o aws:SourceArn nella policy del bucket di Amazon S3 per. ELASTIC-FLEET-EXAMPLE-BUCKET

Le policy delle risorse riportate di seguito mostrano come evitare problemi "confused deputy" con una delle seguenti soluzioni:

  • aws:SourceAccount con l'ID dell'account AWS

  • La chiave di contesto delle condizioni globali aws:SourceArn

Al momento, AppStream 2.0 non supporta la prevenzione del problema "confused deputy" per le icone delle applicazioni. Il servizio supporta solo file VHD e script di configurazione. Se tenti di aggiungere ulteriori condizioni per le icone delle applicazioni, queste non verranno visualizzate dagli utenti finali.

Nell'esempio seguente, la policy del bucket consente l'accesso a ELASTIC_FLEET_EXAMPLE_BUCKET solo alle risorse del parco istanze elastici di AppStream 2.0 presenti nell'account del proprietario.

{ "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 Account AWS ID" } } }, { "Sid": "AllowRetrievalPermissionsToS3AppIconsForAppStream", "Effect": "Allow", "Principal": { "Service": "appstream.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET/app-icons/*" } ] }

È inoltre possibile utilizzare la condizione aws:SourceArn per limitare l'accesso alle risorse per risorse specifiche.

Nota

Se conosci l'ARN completo di una risorsa o vuoi specificare più risorse, usa la chiave di contesto delle condizioni globali aws:SourceArn con caratteri jolly (*) per le parti sconosciute dell'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/*" } ] }

Puoi utilizzare le condizioni aws:SourceArn e aws:SourceAccount per limitare l'accesso alle risorse per risorse specifiche.

Nota

Se conosci l'ARN completo di una risorsa o se vuoi specificare più risorse, usa la chiave di contesto delle condizioni globali aws:SourceArn con caratteri jolly (*) per le parti sconosciute dell'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/*" } ] }