

# Prevención de la sustitución confusa entre servicios
<a name="cross-service-confused-deputy-prevention"></a>

El problema de la sustitución confusa es un problema de seguridad en el que una entidad que no tiene permiso para realizar una acción puede obligar a una entidad con más privilegios a realizar la acción. En AWS, la suplantación entre servicios puede dar lugar al problema de la sustitución confusa. La suplantación entre servicios puede producirse 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 se puede manipular para utilizar sus permisos a fin de actuar en función de los recursos de otro cliente de una manera en la que no debe tener permiso para acceder. Para evitarlo, AWS proporciona herramientas que le ayudan a proteger sus datos para todos los servicios con entidades principales de servicio a las que se les ha dado acceso a los recursos de su cuenta.

Se recomienda utilizar las claves de contexto de condición global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) y [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) en las políticas de recursos para limitar los permisos que CloudFormation le concede a otro servicio a un recurso específico, como una extensión de CloudFormation. Utiliza `aws:SourceArn` si desea que solo se asocie un recurso al acceso entre servicios. Utiliza `aws:SourceAccount` si quiere permitir que cualquier recurso de esa cuenta se asocie al uso entre servicios.

Asegúrese de que el valor de `aws:SourceArn` sea un ARN del recurso que almacena CloudFormation.

La forma más eficaz de protegerse contra el problema de la sustitución confusa es utilizar la clave de contexto de condición global de `aws:SourceArn` con el ARN completo del recurso. Si no conoce el ARN completo del recurso o si especifica varios recursos, utiliza la clave de condición de contexto global `aws:SourceArn` con comodines (`*`) para las partes desconocidas del ARN. Por ejemplo, `arn:aws:cloudformation:*:123456789012:*`.

Si el valor de `aws:SourceArn` no contiene el ID de cuenta, debe utilizar ambas claves de contexto de condición global para limitar los permisos.

El siguiente ejemplo muestra cómo se pueden utilizar las claves contextuales de condición global `aws:SourceArn` y `aws:SourceAccount` en CloudFormation para evitar el problema del suplente confundido.

## Ejemplo de política de confianza que usa las claves de condición `aws:SourceArn` y `aws:SourceAccount`
<a name="cross-service-confused-deputy-prevention-example"></a>

Para los servicios de registro, CloudFormation hace llamadas a AWS Security Token Service (AWS STS) para asumir un rol de servicio en su cuenta. Este rol está configurado para `ExecutionRoleArn` en la operación [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html) y el conjunto `LogRoleArn` en la operación [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_LoggingConfig.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_LoggingConfig.html). Para obtener más información, consulte [Configure un rol de ejecución con permisos de IAM y una política de confianza para el acceso a las extensiones públicas](registry-public.md#registry-public-enable-execution-role).

Este ejemplo de política de confianza de rol utiliza declaraciones de condición para limitar la capacidad de `AssumeRole` en el rol de servicio a solo las acciones que afectan al grupo de extensión de CloudFormation en la cuenta especificada. Las condiciones `aws:SourceArn` y `aws:SourceAccount` se evalúan de forma independiente. Cualquier solicitud para usar el rol de servicio debe cumplir ambas condiciones.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "resources.cloudformation.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:cloudformation:us-east-1:123456789012:type/resource/Organization-Service-Resource"
        }
      }
    }
  ]
}
```

------

## Información adicional
<a name="cross-service-confused-deputy-prevention-additional-information"></a>

Para ver ejemplos de políticas que utilizan las claves de contexto de condición global `aws:SourceArn` y `aws:SourceAccount` para un rol de servicio utilizado por StackSets, consulte [Configuración de claves globales para mitigar problemas de adjuntos confusos](stacksets-prereqs-self-managed.md#confused-deputy-mitigation).

Para obtener más información, consulte [Actualización de una política de confianza de rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-trust-policy.html) en la *Guía del usuario de IAM*.