Conceder permissões a um usuário para passar uma função para um serviço da AWS - AWS Identity and Access Management

Conceder permissões a um usuário para passar uma função para um serviço da AWS

Para configurar muitos produtos da AWS é necessário passar uma função do IAM para o serviço. Isso permite que o serviço assuma a função posteriormente e realize ações em seu nome. Para a maioria dos serviços, você só precisa passar a função para o serviço uma vez durante a configuração, não toda vez que o serviço assumir a função. Por exemplo, suponha que você tenha uma aplicação em execução em uma instância do Amazon EC2. Esse aplicativo requer credenciais temporárias para autenticação, além de permissões para autorizar o aplicativo a executar ações na AWS. Ao configurar a aplicação, você deve passar uma função para o Amazon EC2 usar com a instância que fornece essas credenciais. Defina as permissões para as aplicações em execução na instância anexando uma política do IAM à função. O aplicativo assume a função sempre que necessário para executar as ações que são permitidas pela função.

Para transmitir uma função (e suas permissões) para um serviço da AWS, um usuário deve ter permissões para transmitir a função para o serviço. Isso ajuda os administradores a garantir que apenas usuários aprovados possam configurar um serviço com uma função que concede permissões. Para permitir que um usuário passe uma função para um produto da AWS, você deve conceder a permissão PassRole ao usuário, à função ou ao grupo do IAM do usuário.

Observações
  • Não é possível utilizar a permissão PassRole para passar uma função entre contas.

  • Você não pode limitar as permissões para transmitir uma função baseada em etiquetas anexadas à função usando a chave de condição ResourceTag/key-name. Para mais informações, consulte Controlar o acesso aos recursos do AWS.

Ao criar uma função vinculada ao serviço, você também precisa ter permissão para atribuir essa função ao 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 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á um erro. Se você escolher a função padrão, a permissão iam:PassRole talvez não seja necessária. 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 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.

Um usuário pode transmitir um ARN da função como um parâmetro em qualquer operação da API que usa a função para atribuir permissões ao serviço. Em seguida, o serviço verifica se esse usuário tem a permissão iam:PassRole. Para limitar o usuário a passar apenas as funções aprovadas, filtre a permissão iam:PassRole com o elemento Resources da instrução de política do IAM.

Você pode usar o elemento Condition em uma política JSON para testar o valor das chaves incluídas no contexto de solicitação de todas as solicitações da AWS. Para saber mais sobre como usar chaves de condição em uma política, consulte Elementos de política JSON do IAM: Condition. A chave de condição iam:PassedToService pode ser usada para especificar o principal de serviço do serviço para o qual uma função pode ser passada. Para saber mais sobre como usar a chave de iam:PassedToService condição em uma política, consulte iam:PassedToService.

Exemplo 1

Suponha que você deseja conceder a um usuário a capacidade de transmitir qualquer função de um conjunto de funções aprovadas para o serviço Amazon EC2 ao executar uma instância. Três elementos são necessários:

  • Uma política de permissões do IAM anexada à função que determina o que a função pode fazer. Defina as permissões para apenas as ações que a função deve realizar e os recursos que a função precisa para essas ações. Você pode usar a política de permissões do IAM gerenciada pela AWS ou criada para o cliente.

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "A list of the permissions the role is allowed to use" ], "Resource": [ "A list of the resources the role is allowed to access" ] } }
  • Uma política de confiança para a função que permite que o serviço assuma a função. Por exemplo, você pode anexar a seguinte política de confiança à função com a ação UpdateAssumeRolePolicy. Essa política de confiança permite que o Amazon EC2 use a função e as permissões anexadas à função.

    { "Version": "2012-10-17", "Statement": { "Sid": "TrustPolicyStatementThatAllowsEC2ServiceToAssumeTheAttachedRole", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } }
  • Uma política de permissões do IAM anexada ao usuário do IAM que permite que o usuário transmita apenas as funções aprovadas. Geralmente iam:GetRole é adicionada a iam:PassRole para que o usuário possa obter os detalhes da função a ser transmitida. Neste exemplo, o usuário pode transmitir apenas funções que existam na conta especificada com nomes começando com EC2-roles-for-XYZ-:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "arn:aws:iam::account-id:role/EC2-roles-for-XYZ-*" }] }

Agora o usuário pode iniciar uma instância do Amazon EC2 com uma função atribuída. Os aplicativos em execução na instância podem acessar credenciais temporárias para a função por meio de metadados do perfil da instância. As políticas de permissões anexadas à função determinam o que a instância pode fazer.

Exemplo 2

O Amazon Relational Database Service (Amazon RDS) é compatível com um recurso chamado Monitoramento aprimorado. Este recurso permite que o Amazon RDS monitore uma instância de banco de dados usando um agente. Ele também permite que o Amazon RDS registre métricas de log no Amazon CloudWatch Logs. Para habilitar esse recurso, você deve criar uma função de serviço para conceder ao Amazon RDS permissões para monitorar e gravar métricas em seus logs.

Para criar uma função para o monitoramento aprimorado do Amazon RDS

  1. Faça login no AWS Management Console e abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. Selecione Funções e, em seguida, Criar função.

  3. Escolha o tipo de perfil AWS Service (Serviço da AWS) e, em Common use casesServiços da AWS (Casos de uso comuns), escolha o serviço RDS. Escolha RDS – Enhanced Monitoring (RDS: monitoramento aprimorado) e, em seguida Next (Avançar).

  4. Escolha a política de permissões AmazonRDSEnhancedMonitoringRole.

  5. Escolha Next (Próximo).

  6. Em Role name (Nome da função), insira um nome de função que ajude a identificar a finalidade da função. Os nomes de função devem ser exclusivos em sua conta da AWS. Eles não são diferenciados por letras maiúsculas e minúsculas. Por exemplo, não é possível criar funções chamadas PRODROLE e prodrole. Como várias entidades podem fazer referência à função, não é possível editar o nome da função depois que ela é criada.

  7. (Opcional) Em Description (Descrição), insira uma descrição para o nova função.

  8. (Opcional) Adicione metadados ao usuário anexando tags como pares de chave-valor. Para obter mais informações sobre como usar etiquetas no IAM, consulte Recursos de etiquetas do IAM.

  9. Revise a função e escolha Create role.

A função obtém, automaticamente, uma política de confiança que concede as permissões de serviço monitoring.rds.amazonaws.com para assumir a função. Depois disso, o Amazon RDS pode executar todas as ações que a política AmazonRDSEnhancedMonitoringRole permite.

O usuário a quem você deseja conceder acesso o Monitoramento avançado precisa de uma política com uma instrução que permita que o usuário passe a função, como o que se segue. Use o número da sua conta e substitua o nome do perfil pelo nome fornecido na etapa 6.

{ "Sid": "PolicyStatementToAllowUserToPassOneSpecificRole", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::account-id:role/RDS-Monitoring-Role" }

Você pode combinar esta instrução com instruções em outra política ou colocá-la em sua própria política. Em vez de especificar que o usuário pode passar qualquer função que comece com RDS-, é possível substituir o nome da função no ARN do recurso por um curinga, por exemplo:

"Resource": "arn:aws:iam::account-id:role/RDS-*"