Permissões necessárias para acessar recursos do IAM - AWS Identity and Access Management

Permissões necessárias para acessar recursos do IAM

Recursos são objetos dentro de um serviço. Os recursos do IAM incluem grupos, usuários, funções e políticas. Se você fizer login com credenciais de usuário raiz da Conta da AWS, não terá restrições para administrar credenciais ou recursos do IAM. No entanto, os usuários do IAM devem receber explicitamente permissões para administrar credenciais ou recursos do IAM. Você pode fazer isso anexando uma política baseada em identidade ao usuário.

nota

Em toda a documentação da AWS, quando nos referirmos a uma política do IAM sem mencionar uma das categorias específicas, estaremos nos referindo a uma política baseada em identidade e gerenciada pelo cliente. Para obter detalhes sobre as categorias de políticas, consulte Políticas e permissões no IAM.

Permissões para administração de identidades do IAM

As permissões necessárias para administrar grupos, usuários, funções e credenciais do IAM geralmente correspondem às ações da API para a tarefa. Por exemplo, para criar usuários do IAM, você deve ter a permissão iam:CreateUser que possui o comando de API correspondente: CreateUser. Para permitir que um usuário do IAM crie outros usuários do IAM, você pode anexar uma política do IAM, conforme mostrado a seguir, ao usuário em questão:

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "iam:CreateUser", "Resource": "*" } }

Em uma política, o valor do elemento Resource depende da ação e quais recursos ela pode afetar. No exemplo anterior, a política permite que um usuário crie qualquer usuário (* é um curinga que corresponde a todas as strings). Por outro lado, uma política que permite que os usuários alterem apenas as próprias chaves de acesso (ações de API CreateAccessKey e UpdateAccessKey) geralmente tem um elemento de Resource. Neste caso, o ARN inclui uma variável (${aws:username}) que é substituída pelo nome do usuário atual, como no exemplo a seguir:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListUsersForConsole", "Effect": "Allow", "Action": "iam:ListUsers", "Resource": "arn:aws:iam::*:*" }, { "Sid": "ViewAndUpdateAccessKeys", "Effect": "Allow", "Action": [ "iam:UpdateAccessKey", "iam:CreateAccessKey", "iam:ListAccessKeys" ], "Resource": "arn:aws:iam::*:user/${aws:username}" } ] }

No exemplo anterior, ${aws:username} é uma variável que define o nome do usuário atual. Para obter mais informações sobre variáveis de política, consulte Elementos de política do IAM: variáveis e etiquetas.

Usando um caractere curinga (*) no nome da ação, muitas vezes, facilita a concessão de permissões para todas as ações relacionadas a uma tarefa específica. Por exemplo, para permitir que os usuários realizem qualquer ação do IAM, você pode usar iam:* para a ação. Para permitir que os usuários realizem qualquer ação relacionada apenas a chaves de acesso, você pode usar iam:*AccessKey* no elemento Action de uma declaração de política. Isso dá ao usuário permissão para executar as ações CreateAccessKey, DeleteAccessKey, GetAccessKeyLastUsed, ListAccessKeys e UpdateAccessKey. (Se, no futuro, for adicionada uma ação ao IAM que tenha “AccessKey” no nome, o uso de iam:*AccessKey* para o elemento Action também fornecerá ao usuário permissão para essa nova ação.) O exemplo a seguir mostra uma política que permite que os usuários executem todas as ações relativas às suas próprias chaves de acesso (substitua account-id pelo ID de sua conta da AWS):

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "iam:*AccessKey*", "Resource": "arn:aws:iam::account-id:user/${aws:username}" } }

Algumas tarefas, como a exclusão de um grupo, envolvem várias ações: você deve primeiro remover os usuários do grupo e, em seguida, desanexar ou excluir as políticas do grupo de depois realmente excluir o grupo. Se você deseja que um usuário exclua um grupo, deve oferecer a ele permissões para executar todas as ações relacionadas.

Permissões para trabalhar no AWS Management Console

Os exemplos anteriores mostram políticas que permitem a um usuário executar as ações com a AWS CLI ou os SDKs da AWS.

Conforme os usuários trabalham com o console, o console emite solicitações ao IAM para listar grupos, usuários, funções e políticas e obter as políticas associadas a um grupo, usuário ou função. O console também emite solicitações para obter informações da conta da AWS e informações sobre a entidade principal. A entidade principal é o usuário que faz as solicitações no console.

Em geral, para realizar uma ação, você deve ter somente a ação correspondente incluída em uma política. Para criar um usuário, você precisa de permissão para chamar a ação CreateUser. Muitas vezes, quando você usa o console para executar uma ação, precisa ter permissões para exibir, listar, obter ou visualizar os recursos no console. Isso é necessário para que você possa navegar através do console para realizar a ação especificada. Por exemplo, se o usuário Jorge quiser usar o console para alterar suas próprias chaves de acesso, ele acessará o console do IAM e escolherá Users (Usuários). Essa ação faz com que o console faça uma solicitação ListUsers. Se o Jorge não tiver permissão para a ação iam:ListUsers, o console terá o acesso negado ao tentar listar os usuários. Como resultado, Jorge não poderá acessar seu próprio nome e chaves de acesso, mesmo que ele tenha permissões para as ações CreateAccessKey e UpdateAccessKey.

Se você deseja fornecer aos usuários permissões para administrar usuários, grupos, funções, políticas e credenciais com o AWS Management Console, é necessário incluir permissões para as ações executadas pelo console. Para obter alguns exemplos de políticas que você pode usar para conceder essas permissões a um usuário, consulte Exemplos de política para administrar recursos do IAM.

Conceder permissões entre contas da AWS

Você pode conceder diretamente aos usuários do IAM em sua própria conta acesso aos seus recursos. Se os usuários de outra conta precisarem de acesso aos seus recursos, você poderá criar uma função do IAM, que é uma entidade que inclui permissões, mas que não está associada a um usuário específico. Os usuários de outras contas podem, então, usar a função e acessar os recursos de acordo com as permissões que você tiver atribuído à função. Para obter mais informações, consulte Fornecer acesso a um usuário do IAM em outra conta da AWS de sua propriedade.

nota

Alguns serviços oferecem suporte a políticas baseadas em recurso, conforme descrito em Políticas baseadas em identidade e em recurso (como o Amazon S3, Amazon SNS e Amazon SQS). Para esses serviços, uma alternativa ao uso de funções é anexar uma política ao recurso (bucket, tópico ou fila) que você deseja compartilhar. A política baseada em recurso pode especificar a conta da AWS com permissões para acessar o recurso.

Permissões para um serviço acessar outro

Muitos serviços da AWS acessam outros serviços da AWS. Por exemplo, vários produtos da AWS: incluindo o Amazon EMR, o Elastic Load Balancing e o Amazon EC2 Auto Scaling, gerenciam instâncias do Amazon EC2. Outros produtos da AWS usam buckets do Amazon S3, tópicos do Amazon SNS, filas do Amazon SQS e assim por diante.

O cenário para o gerenciamento de permissões nesses casos varia de acordo com o serviço. Veja a seguir alguns exemplos de como as permissões são tratadas para diferentes serviços:

  • No Amazon EC2 Auto Scaling, os usuários devem ter permissão para usar o Auto Scaling, mas não precisam receber permissão explicitamente para gerenciar instâncias do Amazon EC2.

  • No AWS Data Pipeline, uma função do IAM determina o que um pipeline pode fazer; os usuários precisam de permissão para assumir a função. (Para obter mais detalhes, consulte Conceder permissões a pipelines com o IAM no Guia do desenvolvedor do AWS Data Pipeline.)

Para obter detalhes sobre como configurar permissões corretamente para que um serviço da AWS seja capaz de realizar as tarefas pretendidas, consulte a documentação do serviço que você está chamando. Para saber como criar uma função para um serviço, consulte Criar uma função para delegar permissões a um serviço da AWS.

Configuração de um serviço com uma função do IAM para trabalhar em seu nome

Quando quiser configurar um produto da AWS para trabalhar em seu nome, normalmente você fornecerá o ARN para uma função do IAM que define o que o serviço tem permissão para fazer. A AWS verifica para garantir que você tenha permissões para passar uma função para um serviço. Para obter mais informações, consulte Conceder permissões a um usuário para passar uma função para um serviço da AWS.

Ações necessárias

As ações são as atividades que você pode realizar com um recurso, como visualizar, criar, editar e excluir esse recurso. As ações são definidas por cada serviço da AWS.

Para permitir que alguém realize uma ação, você deve incluir as ações necessárias em uma política que se aplique à identidade da chamada ou ao recurso afetado. Em geral, para fornecer a permissão necessária para realizar uma ação, você deve incluir essa ação em sua política. Por exemplo, para criar um usuário, você precisa adicionar a ação CreateUser à política.

Em alguns casos, uma ação pode exigir que você inclua ações adicionais relacionadas em sua política. Por exemplo, para fornecer permissão para que uma pessoa crie um diretório no AWS Directory Service usando a operação ds:CreateDirectory, você deve incluir as seguintes ações na política dela:

  • ds:CreateDirectory

  • ec2:DescribeSubnets

  • ec2:DescribeVpcs

  • ec2:CreateSecurityGroup

  • ec2:CreateNetworkInterface

  • ec2:DescribeNetworkInterfaces

  • ec2:AuthorizeSecurityGroupIngress

  • ec2:AuthorizeSecurityGroupEgress

Ao criar ou editar uma política usando o editor visual, você recebe avisos e solicitações para ajudá-lo a escolher todas as ações necessárias para a política.

Para obter mais informações sobre as permissões necessárias para criar um diretório no AWS Directory Service, consulte Exemplo 2: permitir que um usuário crie um diretório.