Solucionar problemas de perfis do IAM - AWS Identity and Access Management

Solucionar problemas de perfis do IAM

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

Não consigo assumir uma função

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 ou uma política de sessão, 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 .

  • Ao assumir uma função usando o AWS Management Console, 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.

  • 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.

    "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.

Uma nova função apareceu na minha conta da 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 Criar um perfil vinculado 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 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 ao serviço, consulte Serviços da AWS que funcionam 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 um perfil na minha Conta da 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 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 ao serviço, consulte Serviços da AWS que funcionam 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 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 Serviços da AWS que funcionam com o IAM. 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)

Quando usa as operações de API AssumeRole* ou as operações da CLI assume-role* do AWS STS 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.

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 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

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)"

Sua sessão de função pode estar limitada por políticas de sessão. Quando solicita credenciais de segurança temporárias de forma programática usando o AWS STS, você pode opcionalmente passar políticas de sessão 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. Você pode passar um único documento de política JSON de sessão em linha usando o parâmetro Policy. Você pode 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

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). Para obter mais informações sobre as versões de política, consulte Versionamento de políticas do IAM.

Como excluir uma função de serviço e sua política
  1. Faça login no AWS Management Console e abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação, escolha Políticas.

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

  4. 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.

    2. Para cada identidade afetada, anexe a nova política e desanexe a antiga. Para ter mais informações, consulte Adicionar e remover permissões de identidade do IAM.

  5. No painel de navegação, escolha Perfis.

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

  7. 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 que confie nessas entidades.

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

    3. 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.

  8. Exclua a política.

  9. Exclua a função.

Não há caso de uso para uma função de serviço no console

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 para o serviço que assumirá a função. Um escopo 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 Serviços da AWS que funcionam com o IAM.

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

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

  4. 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.

Criar uma função de serviço manualmente usando AWS CLI comandos ou operações deAWS 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 delegar permissões a um usuário do IAM.

  2. 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" }
  3. Adicione as permissões que o serviço exige associando políticas de permissões à função.

  4. 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.