AWS Identity and Access Management
Guia do usuário

Solução de problemas das funções do IAM

Use estas informações para ajudá-lo a diagnosticar e corrigir problemas comuns que você venha a encontrar ao trabalhar com funções do IAM.

Não consigo assumir uma função

  • Use o nome exato da sua função, porque os nomes de função diferenciam maiúsculas de minúsculas.

  • 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á marcada com alguma tag 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 marcar usuários e funções do IAM, consulte Marcar identidades do IAM.

    "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. No exemplo a seguir, se a data atual for qualquer período após a data especificada, a política não corresponderá 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 a função 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 confiável anexada à função que você deseja assumir. Neste 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"} }

Uma nova função apareceu na minha conta do AWS

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 é 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 Uso de funções vinculadas ao serviço.

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 o IAM, na página 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 Serviços da AWS compatíveis com o IAM 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 uma função na minha conta do AWS

Você não pode excluir ou editar as permissões de uma função vinculada ao serviço 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 o IAM, na página Funções 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 Serviços da AWS compatíveis com o IAM 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

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 de 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 a serviços, consulte Serviços da AWS compatíveis com o IAM. Para saber quais serviços criam automaticamente uma função vinculada quando você executa uma ação no serviço, escolha o link Sim e visualize a documentação das funções vinculadas a serviços para o serviço.

Por que não é possível assumir uma função com uma sessão de 12 horas? (AWS CLI, AWS, API)

Quando usa as operações de API AssumeRole* ou as operações de ILC assume-role* do AWS STS para assumir uma função, você pode especificar um valor para o parâmetro DurationSeconds. Você pode especificar um valor de 900 segundos (15 minutos) até o valor configurado em Maximum CLI/API session duration (Duração máxima da sessão da CLI/API) 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 Visualize a configuração de duração máxima da sessão para uma função.

Se você usar o encadeamento de funções (usar uma função para assumir uma segunda função), sua sessão será limitada a um máximo de uma hora. Se, em seguida, você usar o parâmetro DurationSeconds para fornecer um valor maior do que uma hora, a operação falhará.