Prevención del problema del suplente confuso entre servicios de Amazon AppStream 2.0 - Amazon AppStream 2.0

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Prevención del problema del suplente confuso entre servicios de Amazon AppStream 2.0

El problema del suplente confuso es un problema de seguridad en el que una entidad que no tiene permiso para realizar una acción obliga a una entidad con más privilegios a realizar la acción. En AWS, la suplantación entre servicios puede resultar en el problema del suplente confuso. La suplantación entre servicios ocurre cuando un servicio (el servicio que lleva a cabo las llamadas) llama a otro servicio (el servicio al que se llama). El servicio que lleva a cabo las llamadas puede manipular el servicio llamado para que utilice sus permisos para actuar en los recursos de un cliente de maneras en las que el servicio que lleva a cabo las llamadas no tiene permiso hacerlo. Para evitarlo, AWS proporciona herramientas que lo ayudan a proteger sus datos para todos los servicios con entidades principales de servicio que tengan acceso a los recursos de su cuenta.

Se recomienda utilizar las claves de contexto de condición global aws:SourceArn y aws:SourceAccount en las políticas de recursos para limitar los permisos cuando se accede a estos recursos. En las siguientes directrices se detallan las recomendaciones y los requisitos a la hora de utilizar estas claves para proteger los recursos:

  • Utilice aws:SourceArn si desea que solo se asocie un recurso al acceso entre servicios.

  • Utilice aws:SourceAccount si quiere permitir que cualquier recurso en la cuenta especificada se asocie al uso entre servicios.

  • Si la clave aws:SourceArn no contiene un ID de cuenta, debe utilizar ambas claves de contexto de condición global (aws:SourceArn y aws:SourceAccount) para limitar los permisos.

  • Si se utilizan ambas claves de contexto de condición global y el valor aws:SourceArn contiene un ID de cuenta, la clave aws:SourceAccount debe utilizar el mismo ID de cuenta cuando se utilice en la misma declaración de política.

La forma más eficaz de protegerse contra el problema del suplente confuso es utilizar el nombre de recurso de Amazon (ARN) exacto del recurso que desea permitir. Si no conoce el ARN completo del recurso, utilice la clave de condición de contexto global aws:SourceArn con comodines (como *) para las partes desconocidas del ARN. También puede utilizar un comodín en el ARN si desea especificar varios recursos. Por ejemplo, puede formatear el ARN como arn:aws:servicename::region-name::your Cuenta de AWS ID:*.

Ejemplo: prevención del suplente confuso entre servicios del rol de servicio de AppStream 2.0

AppStream 2.0 asume un rol de servicio mediante una variedad de ARN de recursos, lo que lleva a una declaración condicional complicada. Se recomienda utilizar un tipo de recurso comodín para evitar errores inesperados en los recursos de AppStream 2.0.

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

Ejemplo: prevención del suplente confuso entre servicios del rol de máquina de flota de AppStream 2.0

ejemplo aws:SourceAccount condicional:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "appstream.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "your Cuenta de AWS ID" } } } ] }
ejemplo aws:SourceArn condicional:
nota

Si desea utilizar un rol de IAM para varias flotas, se recomienda utilizar la clave de condición de contexto global aws:SourceArn con caracteres comodín (*) para que coincida con varios recursos de flota de 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 Cuenta de AWS ID}:fleet/{your fleet name}" } } } ] }

Ejemplo: prevención del suplente confuso entre servicios de política de bucket de Amazon S3 de script de sesión de flotas elásticas de AppStream:2.0

ejemplo aws:SourceAccount condicional:
{ "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 Cuenta de AWS ID" } } } ] }
ejemplo aws:SourceArn condicional:
{ "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 Cuenta de AWS ID}:fleet/{your fleet name}" } } } ] }

Ejemplo: prevención del suplente confuso entre servicios de política de bucket de Amazon S3 de aplicación de AppStream 2.0

Al guardar datos en un bucket de Amazon S3, el bucket puede verse expuesto a problemas suplentes confusos. Esto puede hacer que datos como las flotas elásticas, los bloques de aplicaciones, los scripts de configuración, los iconos de las aplicaciones y los scripts de sesión sean vulnerables a agentes malintencionados.

Para evitar problemas de suplentes confusos, puede especificar la condición aws:SourceAccount o la condición aws:SourceArn en la política del bucket de Amazon S3 para ELASTIC-FLEET-EXAMPLE-BUCKET.

Las siguientes políticas de recursos muestran cómo evitar el problema de suplente confuso mediante una de las siguientes opciones:

  • La aws:SourceAccount con su ID de cuenta de AWS

  • La clave de contexto de condición global aws:SourceArn

Actualmente, AppStream 2.0 no admite la prevención del suplente confuso para los iconos de las aplicaciones. El servicio solo admite archivos VHD y scripts de configuración. Si intenta añadir condiciones adicionales para los iconos de las aplicaciones, no se mostrarán los iconos a los usuarios finales.

En el siguiente ejemplo, la política de bucket solo permite que los recursos de la flota elástica de AppStream 2.0 de la cuenta del propietario accedan a 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 Cuenta de AWS ID" } } }, { "Sid": "AllowRetrievalPermissionsToS3AppIconsForAppStream", "Effect": "Allow", "Principal": { "Service": "appstream.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET/app-icons/*" } ] }

También puede usar la condición aws:SourceArn para limitar el acceso a recursos específicos.

nota

Si no conoce el ARN completo de un recurso, o si desea especificar varios recursos, utilice la clave de condición de contexto global aws:SourceArn con comodines (*) para las partes desconocidas del 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/*" } ] }

Puede usar las condiciones aws:SourceArn y aws:SourceAccount para limitar el acceso a los recursos para recursos y cuentas específicos.

nota

Si no conoce el ARN completo de un recurso, o si desea especificar varios recursos, utilice la clave de condición de contexto global aws:SourceArn con comodines (*) para las partes desconocidas del 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/*" } ] }