

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.

# Cross-service prevención confusa de los diputados
<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 de identidad entre servicios puede provocar el confuso problema de un diputado. Cross-service *la suplantación de identidad puede producirse cuando un servicio (el servicio de 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. 

Para limitar los permisos que AWS IoT otorga otro servicio al recurso, se recomienda utilizar las claves de contexto de condición [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)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 las claves contextuales globales en las políticas de recursos. Si se utilizan ambas claves contextuales de condición global, el valor `aws:SourceAccount` y la cuenta del valor `aws:SourceArn` deben utilizar el mismo ID de cuenta cuando se utilicen en la misma declaración de política.

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 nombre de recurso de Amazon (ARN) completo del recurso. Para AWS IoT ello, `aws:SourceArn` debe cumplir con el formato: `arn:{{aws}}:iot:{{region}}:{{account-id}}:{{resource-type/resource-id}}` para permisos específicos del recurso o`arn:{{aws}}:iot:{{region}}:{{account-id}}:{{*}}`. El resource-id puede ser el nombre o el ID del recurso permitido o una instrucción comodín de los ID del recurso permitido. Asegúrese de que {{region}} coincida con su AWS IoT región y {{account-id}} con su ID de cuenta de cliente. 

El siguiente ejemplo muestra cómo evitar el confuso problema de los diputados mediante el uso de las claves de contexto `aws:SourceArn` y condición `aws:SourceAccount` global de la política de confianza de AWS IoT roles. Para obtener más ejemplos, consulte [Ejemplos detallados de prevención del suplente confuso](#cross-service-confused-deputy-prevention-examples).

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":"iot.amazonaws.com"
         },
         "Action":"sts:AssumeRole",
         "Condition":{
            "StringEquals":{
               "aws:SourceAccount":"{{123456789012}}"
        },
            "ArnLike":{
               "aws:SourceArn":"arn:{{aws}}:iot:{{us-east-1}}:{{123456789012}}:{{*}}"
        }
         }
      }
   ]
}
```

**nota**  
Si recibe errores de denegación de acceso, puede deberse a que la integración del servicio con AWS Security Token Service (STS) no admita las claves de contexto `aws:SourceArn` y `aws:SourceAccount`.

## Ejemplos detallados de prevención del suplente confuso
<a name="cross-service-confused-deputy-prevention-examples"></a>

**En esta sección se proporcionan ejemplos detallados de cómo evitar el confuso problema de los diputados mediante el uso de las claves de contexto `aws:SourceArn` y condición `aws:SourceAccount` global de la política de confianza de AWS IoT roles.**
+ [Aprovisionamiento de flotas](#cross-service-confused-deputy-prevention-fleet-provision)
+ [JITP](#cross-service-confused-deputy-prevention-JITP)
+ [Proveedor de credenciales](#cross-service-confused-deputy-prevention-credential-provider)

### Aprovisionamiento de flotas
<a name="cross-service-confused-deputy-prevention-fleet-provision"></a>

Puede configurar el [aprovisionamiento de flotas](https://docs.aws.amazon.com/iot/latest/developerguide/iot-provision.html) con un recurso de plantilla de aprovisionamiento. Cuando una plantilla de aprovisionamiento hace referencia a un rol de aprovisionamiento, la política de confianza de ese rol puede incluir las claves de condición `aws:SourceArn` y `aws:SourceAccount`. Estas claves limitan los recursos para los que la configuración puede invocar la solicitud `sts:AssumeRole`.

El rol con la siguiente política de confianza solo lo puede asumir la entidad principal de IoT (`iot.amazonaws.com`) para la plantilla de aprovisionamiento especificada en el `SourceArn`.

****  

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

### JITP
<a name="cross-service-confused-deputy-prevention-JITP"></a>

En el [aprovisionamiento justo a tiempo (JITP)](https://docs.aws.amazon.com//iot/latest/developerguide/jit-provisioning.html), puede utilizar la plantilla de aprovisionamiento como un recurso independiente de la entidad autorizadora (CA) o definir el cuerpo de la plantilla y el rol como parte de la configuración del certificado de la CA. El valor de la política de confianza `aws:SourceArn` en el AWS IoT rol depende de cómo se defina la plantilla de aprovisionamiento.

#### Definición de la plantilla de aprovisionamiento como un recurso independiente
<a name="cross-service-confused-deputy-prevention-JITP-template"></a>

Si define la plantilla de aprovisionamiento como un recurso independiente, el valor de `aws:SourceArn` puede ser `"arn:aws:iot:{{region}}:{{account-id}}:provisioningtemplate/{{example_template}}"`. Puede usar el mismo ejemplo de política en [Aprovisionamiento de flotas](#cross-service-confused-deputy-prevention-fleet-provision).

#### Definición de la plantilla de aprovisionamiento en un certificado de CA
<a name="cross-service-confused-deputy-prevention-JITP-CA"></a>

Si define la plantilla de aprovisionamiento en un recurso de certificado de CA, el valor de `aws:SourceArn` puede ser `"arn:aws:iot:{{region}}:{{account-id}}:cacert/{{cert_id}}"` o `"arn:aws:iot:{{region}}:{{account-id}}:cacert/{{*}}"`. Puede usar un comodín si desconoce el identificador del recurso (como el ID de un certificado de CA) en el momento de la creación.

El rol con la siguiente política de confianza solo lo puede asumir la entidad principal de IoT (`iot.amazonaws.com`) para el certificado de CA especificado en el `SourceArn`.

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":"iot.amazonaws.com"
         },
         "Action":"sts:AssumeRole",
         "Condition":{
            "StringEquals":{
               "aws:SourceAccount":"{{123456789012}}"
        },
            "ArnLike":{
               "aws:SourceArn":"arn:{{aws}}:iot:{{us-east-1}}:{{123456789012}}:cacert/{{8ecde6884f3d87b1125ba31ac3fcb13d7016de7f57cc904fe1cb97c6ae98196e}}"
        }
         }
      }
   ]
}
```

Al crear un certificado de CA, puede hacer referencia a un rol de aprovisionamiento en la configuración de registro. La política de confianza del rol de aprovisionamiento puede utilizar el `aws:SourceArn` para restringir los recursos de los que se puede asumir el rol. Sin embargo, durante la llamada inicial a [RegisterCACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html) para registrar el certificado de CA, no tendría que especificar el ARN del certificado de CA en la condición `aws:SourceArn`.

Para solucionar este problema, es decir, para especificar la política de confianza de la función de aprovisionamiento para el certificado de CA específico en el que esté registrado AWS IoT Core, puede hacer lo siguiente:
+ En primer lugar, llame a [RegisterCACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html) sin proporcionar el parámetro `RegistrationConfig`.
+ Una vez registrado el certificado de CA AWS IoT Core, llame a [UpdateCacertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCACertificate.html) en él.

  Al llamar a UpdateCACertificate, proporcione un `RegistrationConfig` que incluya la política de confianza del rol de aprovisionamiento con `aws:SourceArn` definido en el ARN del certificado de CA recién registrado.

### Proveedor de credenciales
<a name="cross-service-confused-deputy-prevention-credential-provider"></a>

Para el [proveedor de AWS IoT Core credenciales](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.html), utilice el mismo Cuenta de AWS que utiliza para crear el alias del rol y especifique una sentencia que coincida con el ARN del recurso del tipo de recurso rolealias en. `aws:SourceAccount` `aws:SourceArn` Al crear un rol de IAM para usarlo con el proveedor de AWS IoT Core credenciales, debe incluir en la `aws:SourceArn` condición los ARN de cualquier alias de rol que necesite asumir el rol, autorizando así la solicitud de servicios cruzados. `sts:AssumeRole`

El rol con la siguiente política de confianza solo lo puede asumir la entidad principal del proveedor de credenciales de AWS IoT Core (`credentials.iot.amazonaws.com`) para el roleAlias especificado en el `SourceArn`. Si una entidad principal intenta obtener las credenciales de un alias de rol distinto del especificado en la condición `aws:SourceArn`, se denegará la solicitud, incluso si ese otro alias de rol hace referencia al mismo rol de IAM.

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "credentials.iot.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "{{123456789012}}"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:{{aws}}:iot:{{us-east-1}}:{{123456789012}}:rolealias/{{example_rolealias}}"
        }
      }
    }
  ]
}
```