

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Cross-service prevenção delegada confusa
<a name="cross-service-confused-deputy-prevention"></a>

O *problema “confused deputy”* é um problema de segurança em que uma entidade que não tem permissão para executar uma ação pode coagir uma entidade mais privilegiada a executá-la. Em AWS, a falsificação de identidade entre serviços pode resultar no problema confuso do deputado. Cross-service a representação pode ocorrer quando um serviço (o serviço de *chamada*) chama outro serviço (o *serviço chamado*). O serviço de chamada pode ser manipulado de modo a usar suas permissões para atuar nos recursos de outro cliente de uma forma na qual ele não deveria ter permissão para acessar. Para evitar isso, a AWS fornece ferramentas que ajudam você a proteger seus dados para todos os serviços com entidades principais de serviço que receberam acesso aos recursos em sua conta. 

Para limitar as permissões que AWS IoT concedem outro serviço ao recurso, recomendamos usar as chaves de contexto de condição [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)e as chaves de contexto nas políticas de recursos. Se você utilizar ambas as chaves de contexto de condição global, o valor `aws:SourceAccount` e a conta `aws:SourceArn` no valor deverão utilizar o mesmo ID de conta quando utilizados na mesma instrução de política.

A maneira mais eficaz de se proteger contra o problema substituto confuso é usar a chave de contexto de condição global `aws:SourceArn` com o nome do recurso da Amazon (ARN) completo do recurso. Para AWS IoT, você `aws:SourceArn` deve estar em conformidade com o formato: `arn:{{aws}}:iot:{{region}}:{{account-id}}:{{resource-type/resource-id}}` para permissões específicas de recursos ou`arn:{{aws}}:iot:{{region}}:{{account-id}}:{{*}}`. O resource-id pode ser o nome ou ID do recurso permitido ou uma declaração curinga dos IDs de recursos permitidos. Certifique-se de que {{region}} corresponda à sua AWS IoT região e que {{account-id}} corresponda ao ID da sua conta de cliente. 

O exemplo a seguir mostra como evitar o confuso problema adjunto usando as chaves de contexto de condição `aws:SourceAccount` global `aws:SourceArn` e as chaves de contexto na política de confiança da AWS IoT função. Para obter mais exemplos, consulte [Exemplos detalhados de prevenção contra representante 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**  
Se você receber erros de negação de acesso, talvez a integração do serviço com o AWS Security Token Service (STS) não aceite as chaves de contexto `aws:SourceArn` e `aws:SourceAccount`.

## Exemplos detalhados de prevenção contra representante confuso
<a name="cross-service-confused-deputy-prevention-examples"></a>

**Esta seção fornece exemplos detalhados de como evitar o confuso problema adjunto usando as chaves de contexto de condição `aws:SourceAccount` global `aws:SourceArn` e as chaves de contexto na política de confiança da AWS IoT função.**
+ [Provisionamento de frotas](#cross-service-confused-deputy-prevention-fleet-provision)
+ [JITP](#cross-service-confused-deputy-prevention-JITP)
+ [Provedor de credencial](#cross-service-confused-deputy-prevention-credential-provider)

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

Você pode configurar o [provisionamento da frota](https://docs.aws.amazon.com/iot/latest/developerguide/iot-provision.html) usando um recurso de modelo de provisionamento. Quando um modelo de provisionamento faz referência a uma função de provisionamento, a política de confiança dessa função pode incluir as chaves de condição `aws:SourceArn` e `aws:SourceAccount`. Essas chaves limitam os recursos para os quais a configuração pode invocar a solicitação `sts:AssumeRole`.

A função com a política de confiança a seguir só pode ser assumida pela entidade principal de IoT (`iot.amazonaws.com`) para o modelo de provisionamento especificado no `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>

No [provisionamento just-in-time (JITP)](https://docs.aws.amazon.com//iot/latest/developerguide/jit-provisioning.html), você pode usar o modelo de provisionamento como um recurso separado da CA ou definir o corpo do modelo e a função como parte da configuração do certificado da CA. O valor da política de confiança `aws:SourceArn` na AWS IoT função depende de como você define o modelo de provisionamento.

#### Definir o modelo de provisionamento como um recurso separado
<a name="cross-service-confused-deputy-prevention-JITP-template"></a>

Se você definir seu modelo de provisionamento como um recurso separado, o valor de `aws:SourceArn` poderá ser `"arn:aws:iot:{{region}}:{{account-id}}:provisioningtemplate/{{example_template}}"`. Você pode usar o mesmo exemplo de política em [Provisionamento de frotas](#cross-service-confused-deputy-prevention-fleet-provision).

#### Definir o modelo de provisionamento em um certificado de CA
<a name="cross-service-confused-deputy-prevention-JITP-CA"></a>

Se você definir seu modelo de provisionamento em um recurso de certificado de CA, o valor de `aws:SourceArn` poderá ser `"arn:aws:iot:{{region}}:{{account-id}}:cacert/{{cert_id}}"` ou `"arn:aws:iot:{{region}}:{{account-id}}:cacert/{{*}}"`. Você pode usar um caractere curinga quando o identificador do recurso, como a ID de um certificado de CA, é desconhecido no momento da criação.

A função com a política de confiança a seguir só pode ser assumida pela entidade principal de IoT (`iot.amazonaws.com`) para o certificado de CA especificado no `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}}"
        }
         }
      }
   ]
}
```

Ao criar um certificado de CA, você pode referenciar uma função de provisionamento na configuração do registro. A política de confiança da função de provisionamento pode usar `aws:SourceArn` para restringir para quais recursos a função pode ser assumida. No entanto, durante a chamada inicial de [RegisterCACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html) para registrar o certificado CA, você não teria o ARN do certificado CA para especificar na condição `aws:SourceArn`.

Para contornar isso, ou seja, especificar a política de confiança da função de aprovisionamento para o certificado de CA específico registrado AWS IoT Core, você pode fazer o seguinte:
+ Primeiro, chame [RegisterCACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html) sem fornecer o parâmetro `RegistrationConfig`.
+ Depois que o certificado CA for registrado AWS IoT Core, chame [UpdateCacertificate nele.](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCACertificate.html)

  Na chamada UpdateCACertificate, forneça um `RegistrationConfig` uma que inclua a política de confiança da função de provisionamento com `aws:SourceArn` definido como o ARN do certificado CA recém-registrado.

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

Para [provedor de AWS IoT Core credenciais](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.html), use o mesmo Conta da AWS que você usa para criar o alias de função em `aws:SourceAccount` e especifique uma instrução que corresponda ao ARN do recurso do tipo de recurso rolealias em. `aws:SourceArn` Ao criar uma função do IAM para uso com o provedor de AWS IoT Core credenciais, você deve incluir na `aws:SourceArn` condição os ARNs de qualquer alias de função que possa precisar assumir a função, autorizando assim a solicitação entre serviços. `sts:AssumeRole`

A função com a seguinte política de confiança só pode ser assumida pela entidade principal do provedor de credenciais do AWS IoT Core (`credentials.iot.amazonaws.com`) para o roleAlias especificado no `SourceArn`. Se uma entidade principal tentar recuperar as credenciais de um alias de função diferente do especificado na condição `aws:SourceArn`, a solicitação será negada, mesmo que esse outro alias de função faça referência ao mesmo perfil do 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}}"
        }
      }
    }
  ]
}
```