

# Solucionar problemas de perfis do IAM
<a name="troubleshoot_roles"></a>

Use estas informações para ajudar você a diagnosticar e corrigir problemas comuns que você pode encontrar ao trabalhar com funções do IAM.

**Topics**
+ [Não consigo assumir uma função](#troubleshoot_roles_cant-assume-role)
+ [Uma nova função apareceu na minha conta da AWS](#troubleshoot_roles_new-role-appeared)
+ [Não consigo editar ou excluir um perfil na minha Conta da AWS](#troubleshoot_roles_cant-edit-delete-role)
+ [Não estou autorizado a executar: iam:PassRole](#troubleshoot_roles_not-auth-passrole)
+ [Por que não é possível assumir uma função com uma sessão de 12 horas? (AWS CLI, API da AWS)](#troubleshoot_roles_cant-set-session)
+ [Recebo um erro quando tento alternar funções no console do IAM](#troubleshoot_roles_cant-switch-role-console)
+ [Minha função tem uma política que permite que eu execute uma ação, mas recebo a mensagem "access denied (acesso negado)"](#troubleshoot_roles_session-policy)
+ [O serviço não criou a versão da política padrão da função](#troubleshoot_serviceroles_edited-policy)
+ [Não há caso de uso para uma função de serviço no console](#troubleshoot_serviceroles_console-use-case)

## Não consigo assumir uma função
<a name="troubleshoot_roles_cant-assume-role"></a>

Verifique o seguinte:
+ Para permitir que os usuários assumam novamente o perfil atual em uma sessão de perfil, especifique o ARN do perfil ou o ARN da Conta da AWS como entidade principal na política de confiança do perfil. Os Serviços da AWS que fornecem recursos computacionais, como o Amazon EC2, Amazon ECS, Amazon EKS e Lambda, fornecem credenciais temporárias e atualizam automaticamente essas credenciais. Isso garante que você tenha sempre um conjunto de credenciais válido. Nesses serviços, não é necessário assumir novamente a função atual para obter credenciais temporárias. Porém, se pretender passar [tags de sessão](id_session-tags.md) ou uma [política de sessão](access_policies.md#policies_session), você precisará assumir novamente a função atual. Para saber como modificar uma política de confiança de função para adicionar o ARN da função de entidade principal ou o ARN da Conta da AWS, consulte [Atualizar a política de confiança de um perfil](id_roles_update-role-trust-policy.md).
+ Ao assumir uma função usando o Console de gerenciamento da AWS, use o nome exato da sua função. Os nomes das funções diferenciam letras maiúsculas de minúsculas quando uma função é assumida.
+ Ao assumir uma função usando a API do AWS STS ou a AWS CLI, use o nome exato da sua função no ARN. Os nomes das funções diferenciam letras maiúsculas de minúsculas quando uma função é assumida. 
+ Ao assumir um perfil usando um provedor de identidade federado baseado em SAML e com a criptografia SAML habilitada, certifique-se de ter carregado uma chave de descriptografia privada válida para o provedor de identidade SAML. Para obter mais informações, consulte [Gerenciar chaves de criptografia SAML](id_roles_providers_create_saml.md#id_federation_manage-saml-encryption).
+ Verifique se a política do IAM concede a você permissão para chamar `sts:AssumeRole` para a função que você deseja assumir. O elemento `Action` da política do IAM deve permitir chamar a ação `AssumeRole`. Além disso, o elemento `Resource` da política do IAM deve especificar a função que você deseja assumir. Por exemplo, o elemento `Resource` pode especificar uma função pelo Amazon Resource Name (ARN – Nome de recurso da Amazon) ou usando um curinga (\*). Por exemplo, pelo menos uma política aplicável a você deve conceder permissões semelhantes às seguintes:

  ```
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::{{account_id_number}}:role/{{role-name-you-want-to-assume}}"
  ```
+ Verifique se a identidade do IAM está etiquetada com alguma etiqueta exigida pela política do IAM. Por exemplo, nas permissões de política a seguir, o elemento `Condition` exige que você, como o principal que solicita assumir a função, tenha uma tag específica. Você deve estar marcado com `department = HR` ou `department = CS`. Do contrário, você não poderá pressupor a função. Para saber mais sobre como etiquetar usuários e funções do IAM, consulte [Tags para recursos do AWS Identity and Access Management](id_tags.md).

  ```
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "*",
      "Condition": {"StringEquals": {"aws:PrincipalTag/department": [
              "HR",
              "CS"
          ]}}
  ```
+ Verifique se você atende a todas as condições especificadas na política de confiança da função. Uma `Condition` pode especificar uma data de expiração, um ID externo ou que uma solicitação venha apenas de endereços IP específicos. Considere o seguinte exemplo: se a data atual for qualquer período após a data especificada, a política nunca será correspondida e não concederá a você a permissão para assumir a função.

  ```
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::{{account_id_number}}:role/{{role-name-you-want-to-assume}}"
      "Condition": {
          "DateLessThan" : {
              "aws:CurrentTime" : "{{2016-05-01T12:00:00Z}}"
          }
      }
  ```
+ Verifique se a Conta da AWS da qual você está chamando `AssumeRole` seja uma entidade confiável para o perfil que está assumindo. Entidades confiáveis são definidas como `Principal` em uma política de confiança da função. O exemplo a seguir é uma política de confiança anexada à função que você deseja assumir. Nesse exemplo, o ID da conta com o usuário do IAM com o qual você fez login deve ser 123456789012. Se o número da conta não estiver listado no elemento `Principal` da política de confiança da função, você não poderá assumir a função. Não importa quais permissões sejam concedidas a você nas políticas de acesso. Observe que a política de exemplo limita as permissões às ações que ocorrem entre 1° de julho de 2017 e 31 de dezembro de 2017 (UTC), inclusive. Se você fizer login antes ou depois dessas datas, a política não corresponderá e você não poderá assumir a função. 

  ```
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::{{123456789012}}:root" },
      "Action": "sts:AssumeRole",
      "Condition": {
        "DateGreaterThan": {"aws:CurrentTime": "2017-07-01T00:00:00Z"},
        "DateLessThan": {"aws:CurrentTime": "2017-12-31T23:59:59Z"}
      }
  ```
+ **Identidade da origem**: os administradores podem configurar funções para exigir que identidades passem uma string personalizada que identifique a pessoa ou a aplicação que está executando ações na AWS, chamada *Identidade de origem*. Verifique se a função que está sendo assumida requer que uma identidade de origem esteja definida. Para obter mais informações sobre identidade de origem, consulte [Monitorar e controlar ações realizadas com funções assumidas](id_credentials_temp_control-access_monitor.md).

## Uma nova função apareceu na minha conta da AWS
<a name="troubleshoot_roles_new-role-appeared"></a>

Alguns serviços da AWS requerem que você use um tipo exclusivo de função de serviço que seja diretamente vinculada ao serviço. Essa [função vinculada ao serviço](id_roles.md#iam-term-service-linked-role) é predefinida pelo serviço e inclui todas as permissões que o serviço requer. Isso facilita a configuração de um serviço, pois você não precisa adicionar manualmente as permissões necessárias. Para obter informações gerais sobre funções vinculadas ao serviço, consulte [Criar um perfil vinculado ao serviço](id_roles_create-service-linked-role.md).

Você já pode estar usando um serviço quando ele começa a oferecer suporte a funções vinculadas ao serviço. Se esse for o caso, você pode receber um e-mail informando sobre uma nova função na sua conta. Essa função inclui todas as permissões de que o serviço precisa para executar ações em seu nome. Você não precisa realizar nenhuma ação para oferecer suporte a essa função. No entanto, você não deve excluir a função de sua conta. Isso pode remover permissões de que o serviço precisa para acessar recursos da AWS. Você pode visualizar as funções vinculadas ao serviço na sua conta acessando a página **Roles** (Funções) do console do IAM. As funções vinculadas ao serviço aparecem com **(Função vinculada ao serviço)** na coluna **Entidades confiáveis** da tabela.

Para obter informações sobre quais serviços oferecem suporte a funções vinculadas a serviços, consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md) e procure os serviços que têm **Sim **na coluna **Função vinculada ao serviço**. Para obter informações sobre como usar a função vinculada a um serviço, escolha o link **Sim**.

## Não consigo editar ou excluir um perfil na minha Conta da AWS
<a name="troubleshoot_roles_cant-edit-delete-role"></a>

Você não pode excluir ou editar as permissões de uma [função vinculada ao serviço](id_roles.md#iam-term-service-linked-role) no IAM. Essas funções incluem confianças e permissões predefinidas exigidas pelo serviço para executar ações em seu nome. Você pode usar o console, a AWS CLI ou a API do IAM para editar somente a descrição de uma função vinculada ao serviço. Você pode visualizar as funções vinculadas ao serviço na sua conta acessando a página **Roles** (Funções) do IAM no console. As funções vinculadas ao serviço aparecem com **(Função vinculada ao serviço)** na coluna **Entidades confiáveis** da tabela. Um banner na página **Resumo** da função também indica que a função é uma função vinculada ao serviço. Você pode gerenciar e excluir essas funções apenas por meio do serviço vinculado, caso o serviço ofereça suporte para a ação. Tenha cuidado ao modificar ou excluir uma função vinculada ao serviço, pois isso pode remover permissões de que o serviço precisa para acessar recursos da AWS. 

Para obter informações sobre quais serviços oferecem suporte a funções vinculadas a serviços, consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md) e procure os serviços que têm **Sim **na coluna **Função vinculada ao serviço**. 

## Não estou autorizado a executar: iam:PassRole
<a name="troubleshoot_roles_not-auth-passrole"></a>

Quando cria uma função vinculada ao serviço, você precisa ter permissão para passar essa função para o serviço. Alguns serviços criam automaticamente uma função vinculada ao serviço na sua conta quando você executa uma ação nesse serviço. Por exemplo, o Amazon EC2 Auto Scaling cria a função vinculada ao serviço `AWSServiceRoleForAutoScaling` para você quando você cria um grupo do Auto Scaling pela primeira vez. Se você tentar criar um grupo de Auto Scaling sem a permissão `PassRole`, receberá o seguinte erro:

`ClientError: An error occurred (AccessDenied) when calling the PutLifecycleHook operation: User: arn:aws:sts::111122223333:assumed-role/Testrole/Diego is not authorized to perform: iam:PassRole on resource: arn:aws:iam::111122223333:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling`

Para corrigir este erro, peça ao administrador para adicionar a permissão `iam:PassRole` para você.

Para saber quais serviços dão suporte a funções vinculadas ao serviço, consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md). Para saber se um serviço cria automaticamente uma função vinculada ao serviço para você, escolha o link **Sim** para visualizar a documentação da função vinculada ao serviço.

## Por que não é possível assumir uma função com uma sessão de 12 horas? (AWS CLI, API da AWS)
<a name="troubleshoot_roles_cant-set-session"></a>

Quando usa as operações de API AWS STS ou as operações da CLI `AssumeRole*` do `assume-role*` para assumir uma função, você pode especificar um valor para o parâmetro `DurationSeconds`. É possível especificar um valor de 900 segundos (15 minutos) até a configuração da **Duração máxima da sessão** para a função. Se você especificar um valor maior do que o configurado, a operação falhará. Essa configuração pode ter um valor máximo de 12 horas. Por exemplo, se você especificar uma duração de 12 horas para a sessão, mas o administrador definir a duração máxima da sessão como 6 horas, a operação falhará. Para saber como visualizar o valor máximo para sua função, consulte [Atualizar a duração máxima da sessão de um perfil](id_roles_update-role-settings.md#id_roles_update-session-duration). 

Se você usar o [*encadeamento de funções*](id_roles.md#iam-term-role-chaining) (usar uma função para assumir uma segunda função), sua sessão será limitada a um máximo de uma hora. Se você usar o parâmetro `DurationSeconds` para fornecer um valor maior do que uma hora, a operação falhará. 

## Recebo um erro quando tento alternar funções no console do IAM
<a name="troubleshoot_roles_cant-switch-role-console"></a>

As informações inseridas na página **Trocar de função** devem corresponder às informações da função. Caso contrário, a operação falha e você recebe o seguinte erro:

`Invalid information in one or more fields. Check your information or contact your administrator.`

Se você receber esse erro, confirme se as seguintes informações estão corretas:
+ **ID ou alias da conta**: o ID da Conta da AWS é um número de 12 dígitos. Sua conta pode ter um alias, que é um identificador fácil, como o nome da empresa, que pode ser usado em vez do ID da Conta da AWS. É possível usar o ID ou o alias da conta nesse campo.
+ **Nome da função**: os nomes das funções diferenciam letras maiúsculas de minúsculas. O ID da conta e o nome da função devem corresponder ao que está configurado para a função.

Se continuar a receber uma mensagem de erro, entre em contato com o administrador para verificar as informações anteriores. A política de confiança de função ou a política de usuário do IAM pode limitar o acesso. O administrador pode verificar as permissões para essas políticas.

## Minha função tem uma política que permite que eu execute uma ação, mas recebo a mensagem "access denied (acesso negado)"
<a name="troubleshoot_roles_session-policy"></a>

Sua sessão de função pode estar limitada por políticas de sessão. Quando [solicita credenciais de segurança temporárias](id_credentials_temp_request.md) de forma programática usando o AWS STS, você pode opcionalmente passar [políticas de sessão](access_policies.md#policies_session) em linha ou gerenciadas. As políticas de sessão são políticas avançadas que você passa como um parâmetro ao criar uma sessão de credenciais temporárias de forma programática para uma função. É possível passar um único documento de política JSON de sessão em linha usando o parâmetro `Policy`. É possível usar o parâmetro `PolicyArns` para especificar até 10 políticas de sessão gerenciadas. As permissões da sessão resultante são a interseção das políticas baseadas em identidade da função e das políticas de sessão. Como alternativa, se o administrador ou um programa personalizado fornecer credenciais temporárias a você, ele poderá incluir uma política de sessão para limitar seu acesso.

## O serviço não criou a versão da política padrão da função
<a name="troubleshoot_serviceroles_edited-policy"></a>

Uma função de serviço é uma função que um serviço assume para realizar ações em seu nome na sua conta. Ao configurar alguns ambientes de serviço da AWS, você deve definir uma função a ser assumida pelo serviço. Em alguns casos, o serviço cria a função de serviço e sua política no IAM para você. Embora você possa modificar ou excluir a função de serviço e sua política no IAM, a AWS não recomenda fazer isso. A função e a política devem ser utilizadas apenas por esse serviço. Se você editar a política e configurar outro ambiente, quando o serviço tentar usar a mesma função e política, a operação poderá falhar.

Por exemplo, quando você usa o AWS CodeBuild pela primeira vez, o serviço cria uma função chamada `codebuild-RWBCore-service-role`. Essa função de serviço usa a política chamada `codebuild-RWBCore-managed-policy`. Se você editar a política, ela criará outra versão e salvará essa versão como padrão. Se você executar uma operação subsequente no AWS CodeBuild, o serviço poderá tentar atualizar a política. Se isso acontecer, você receberá o seguinte erro:

`codebuild.amazon.com did not create the default version (V2) of the codebuild-RWBCore-managed-policy policy that is attached to the codebuild-RWBCore-service-role role. To continue, detach the policy from any other identities and then delete the policy and the role.`

Se você receber esse erro, faça alterações no IAM antes de continuar com a operação do serviço. Primeiro, defina a versão de política padrão como V1 e tente executar a operação novamente. Se V1 tiver sido excluída anteriormente ou se escolher V1 não funcionar, limpe e exclua a política e a função existentes.

Para obter mais informações sobre como editar políticas gerenciadas, consulte [Edição de políticas gerenciadas pelo cliente (console)](access_policies_manage-edit-console.md#edit-customer-managed-policy-console). Para obter mais informações sobre as versões de política, consulte [Versionamento de políticas do IAM](access_policies_managed-versioning.md). 

**Como excluir uma função de serviço e sua política**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM, em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, selecione **Políticas**.

1. Na lista de políticas, escolha o nome da política que deseja excluir.

1. Escolha a guia **Entidades anexadas** para visualizar quais usuários, grupos ou perfis do IAM usam essa política. Se qualquer uma dessas identidades usar a política, conclua as seguintes tarefas:

   1. Crie uma política gerenciada com as permissões necessárias. Para garantir que as identidades tenham as mesmas permissões antes e depois de suas ações, copie o documento de política JSON da política existente. Depois, crie a nova política gerenciada e cole o documento JSON como descrito em [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

   1. Para cada identidade afetada, anexe a nova política e desanexe a antiga. Para obter mais informações, consulte [Adicionar e remover permissões de identidade do IAM](access_policies_manage-attach-detach.md).

1. No painel de navegação, escolha **Perfis**.

1. Na lista de funções, escolha o nome da função que deseja excluir.

1. Selecione a guia **Relações de confiança** para visualizar quais entidades podem assumir a função. Se qualquer entidade diferente do serviço estiver listada, conclua as seguintes tarefas:

   1. [Crie uma função](id_roles_create_for-user.md#roles-creatingrole-user-console) que confie nessas entidades.

   1. A política criada na etapa anterior. Se você pulou essa etapa, crie a política gerenciada agora.

   1. Notifique as pessoas que estavam assumindo a função de que elas não podem mais fazer isso. Forneça informações sobre como assumir a nova função e ter as mesmas permissões.

1. [Exclua a política](access_policies_manage-delete-console.md#delete-customer-managed-policy-console).

1. [Exclua o perfil](id_roles_manage_delete.md#roles-managingrole-deleting-console).

## Não há caso de uso para uma função de serviço no console
<a name="troubleshoot_serviceroles_console-use-case"></a>

Alguns serviços exigem que você crie manualmente uma função de serviço para conceder permissões de serviço para executar ações em seu nome. Se o serviço não estiver listado no console do IAM, você deverá listar manualmente o serviço como a entidade confiável. Se a documentação do serviço ou recurso que você estiver usando não incluir instruções para listar o serviço como o principal confiável, forneça feedback para a página.

Para criar uma função de serviço manualmente, você precisa saber o [principal do serviço](reference_policies_elements_principal.md#principal-services) para o serviço que assumirá a função. Um principal do serviço é um identificador que é usado para conceder permissões a um serviço. O escopo principal do serviço é definido pelo serviço. 

Você pode encontrar o principal de serviço para alguns serviços, verificando o seguinte:

1. Abra o [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md).

1. Verifique se o serviço mostra **Sim** na coluna **Service-linked roles (Funções vinculadas ao serviço)**.

1. Escolha o link **Sim** para visualizar a documentação do perfil vinculado a serviço desse serviço.

1. Localize a seção Service-Linked Role Permissions (Permissões da função vinculada ao serviço) desse serviço para visualizar o [principal do serviço](reference_policies_elements_principal.md#principal-services).

Criar uma função de serviço manualmente usando [AWS CLI comandos](id_roles_create_for-service.md#roles-creatingrole-service-cli) ou operações de[AWS API](id_roles_create_for-service.md#roles-creatingrole-service-api). Para criar manualmente uma função de serviço usando o console do IAM, conclua as seguintes tarefas:

1. Crie uma função do IAM usando o ID da conta. Não associe uma política nem conceda nenhuma permissão. Para obter detalhes, consulte [Criar um perfil para conceder permissões a um usuário do IAM](id_roles_create_for-user.md).

1. Abra a função e edite o relacionamento de confiança. Em vez de confiar na conta, a função deve confiar no serviço. Por exemplo, atualize o seguinte elemento `Principal`:

   ```
   "Principal": { "AWS": "arn:aws:iam::{{123456789012}}:root" }
   ```

   Altere a entidade para o valor do seu serviço, como IAM.

   ```
   "Principal": { "Service": "{{iam}}.amazonaws.com" }
   ```

1. Adicione as permissões que o serviço exige associando políticas de permissões à função.

1. Retorne ao serviço que exige as permissões e use o método documentado para notificar o serviço sobre a nova função de serviço.