Controle de acesso aos recursos da AWS usando políticas - AWS Identity and Access Management

Controle de acesso aos recursos da AWS usando políticas

Você pode usar uma política para controlar o acesso a recursos no IAM ou em toda a AWS.

Para usar uma política para controlar o acesso na AWS, você deve entender como a AWS concede acesso. A AWS é composta de coleções de recursos. Um usuário do IAM é um recurso. Um bucket do Amazon S3 é um recurso. Quando usa a API da AWS, a AWS CLI ou o AWS Management Console para executar uma ação (como a criação de um usuário), você envia uma solicitação para essa operação. Sua solicitação especifica uma ação, um recurso, uma entidade principal (usuário ou função), uma conta principal e qualquer informação necessária. Todas essas informações fornecem o contexto.

O AWS verifica se você (a entidade principal) está autenticado (cadastrado) e autorizado (tem permissão) para executar a ação especificada no recurso especificado. Durante a autorização, o AWS verifica todas as políticas aplicáveis ao contexto da sua solicitação. A maioria das políticas é armazenada no AWS, como documentos JSON e especifica as permissões para as entidades principais. Para obter mais informações sobre os tipos e os usos de políticas, consulte Políticas e permissões no IAM.

A AWS autorizará a solicitação somente se cada parte de sua solicitação tiver permissão concedida pelas políticas. Para visualizar um diagrama desse processo, consulte Como o IAM funciona. Para obter detalhes sobre como a AWS determina se uma solicitação deve obter permissão, consulte Lógica da avaliação de política.

Ao criar uma política do IAM, você pode controlar o acesso ao seguinte:

  • Entidades de segurança: controle o que a pessoa que faz a solicitação (a entidade de segurança) tem permissão para fazer.

  • Identidades do IAM: controle quais identidades (grupos de usuários, usuários e funções) do IAM podem ser acessadas e como.

  • Políticas do IAM: controle quem pode criar, editar e excluir políticas gerenciadas pelo cliente e quem pode anexar e desvincular todas as políticas gerenciadas.

  • Recursos da AWS: controle quem tem acesso aos recursos usando uma política baseada em identidade ou uma política baseada em recurso.

  • Contas da AWS: controle se uma solicitação tem permissão apenas para membros de uma conta específica.

Com as políticas, você pode especificar quem tem acesso aos recursos da AWS e quais ações essas pessoas podem realizar neles. Cada usuário do IAM começa sem permissões. Em outras palavras, por padrão, os usuários não podem fazer nada, nem mesmo visualizar suas próprias chaves de acesso. Para dar permissão a um usuário para fazer algo, você pode adicionar a permissão para esse usuário, ou seja, anexar uma política ao usuário. Ou você pode adicionar o usuário a um grupo de usuários que tenha a permissão pretendida.

Por exemplo, você pode conceder a um usuário permissão para listar suas próprias chaves de acesso. Você também pode expandir essa permissão e também permitir que cada usuário crie, atualize e exclua suas próprias chaves.

Quando você concede permissões a um grupo de usuários, todos os usuários nesse grupo de usuários obtêm essas permissões. Por exemplo, você pode dar ao grupo de usuários Administradores permissão para executar qualquer uma das ações do IAM em qualquer um dos recursos da Conta da AWS. Outro exemplo: você pode dar ao grupo de usuários Gerentes permissão para descrever as instâncias do Amazon EC2 da Conta da AWS.

Para obter informações sobre como delegar permissões básicas aos seus usuários, grupos de usuários e funções, consulte Permissões necessárias para acessar recursos do IAM. Para obter exemplos adicionais de políticas que ilustram permissões básicas, consulte Exemplos de política para administrar recursos do IAM.

Controlar o acesso de entidades principais do

Você pode usar as políticas para controlar o que a pessoa que está fazendo a solicitação (a entidade principal) pode fazer. Para fazer isso, você deve anexar uma política baseada em identidade à identidade da pessoa (usuário, grupo de usuários ou função). Você também pode usar um limite de permissões para definir as permissões máximas que uma entidade (usuário ou função) pode ter.

Por exemplo, suponha que você queira que o usuário Zhang Wei tenha acesso total ao CloudWatch, Amazon DynamoDB, Amazon EC2 e Amazon S3. Você pode criar duas políticas diferentes para que possa separá-las posteriormente se precisar de um conjunto de permissões para outro usuário. Ou você pode colocar as duas permissões em uma única política e, em seguida, anexar essa política ao usuário do IAM que se chama Zhang Wei. Você também pode anexar uma política a um grupo de usuários ao qual Zhang pertence, ou a uma função que Zhang pode assumir. Como resultado, quando Zhang visualiza o conteúdo de um bucket do S3, suas solicitações são permitidas. Se ele tentar criar um novo usuário do IAM, a solicitação será negada pois ele não tem permissão.

Você pode usar um limite de permissões para Zhang para ter certeza de que ele nunca terá acesso ao bucket DOC-EXAMPLE-BUCKET1 do S3. Para fazer isso, determine o número máximo de permissões que deseja que Zhang tenha. Nesse caso, você controla o que ele faz usando suas políticas de permissões. Aqui, você só se importa com que ele não tenha acesso ao bucket confidencial. Portanto, você usa a política a seguir para definir o limite de Zhang para permitir todas as ações da AWS para o Amazon S3 e alguns outros serviços, mas negar acesso ao bucket DOC-EXAMPLE-BUCKET1 do S3. Como o limite de permissões não permite nenhuma ação do IAM, ele impede que Zhang exclua seu limite (ou de alguém).

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PermissionsBoundarySomeServices", "Effect": "Allow", "Action": [ "cloudwatch:*", "dynamodb:*", "ec2:*", "s3:*" ], "Resource": "*" }, { "Sid": "PermissionsBoundaryNoConfidentialBucket", "Effect": "Deny", "Action": "s3:*", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET1", "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*" ] } ] }

Quando você atribui uma política como essa como um limite de permissões a um usuário, lembre-se de que ela não concede permissões. Ela define o número máximo de permissões que uma política baseada em identidade pode conceder a uma entidade do IAM. Para obter mais informações sobre esses limites de permissões, consulte Limites de permissões para entidades do IAM.

Para obter informações detalhadas sobre os procedimentos mencionados anteriormente, consulte estes recursos:

Controle de acesso a identidades

Você pode usar políticas do IAM para controlar o que os usuários podem fazer em uma identidade criando uma política que você anexa a todos os usuários por meio de um grupo de usuários. Para fazer isso, crie uma política que limita o que pode ser feito em uma identidade ou quem pode acessá-la.

Por exemplo, você pode criar um grupo de usuários chamado AllUsers e, em seguida, anexá-lo a todos os usuários. Ao criar o grupo de usuários, é possível conceder acesso a todos os usuários para que eles definam suas credenciais conforme descrito na seção anterior. Em seguida, você pode criar uma política que negue o acesso para alterar o grupo de usuários, a menos que o nome do usuário seja incluído na condição da política. Mas essa parte da política nega acesso a qualquer pessoa, com exceção dos usuários listados. Também é necessário incluir permissões para permitir todas as ações de gerenciamento do grupo de usuários para todos no grupo de usuários. Por fim, anexe essa política ao grupo de usuários para que ela se aplique a todos os usuários. Dessa forma, quando um usuário não especificado na política tentar fazer alterações no grupo de usuários, a solicitação será negada.

Para criar esta política com o editor visual
  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 à esquerda, escolha Políticas.

    Se essa for a primeira vez que escolhe Políticas, a página Bem-vindo às políticas gerenciadas será exibida. Escolha Get Started.

  3. Escolha Create policy (Criar política).

  4. Na seção Editor de políticas, escolha a opção Visual.

  5. Em Selecionar um serviço, escolha IAM.

  6. Em Ações permitidas, digite group na caixa de pesquisa. O editor visual mostra todas as ações do IAM que contêm a palavra group. Marque todas as caixas de seleção.

  7. Escolha Recursos para especificar os recursos para a sua política. Com base nas ações que escolheu, você deverá ver os tipos de recursos grupo e usuário.

    • grupo: escolha Adicionar ARN. Em Recurso em, selecione a opção Qualquer conta. Marque a caixa de seleção Qualquer nome de grupo com caminho e digite o nome do grupo de usuários AllUsers. Selecione Adicionar ARNs.

    • usuário: marque a caixa de seleção ao lado de Qualquer um nessa conta.

    Uma das ações que você escolheu, ListGroups, não oferece suporte ao uso de recursos específicos. Você não precisa escolher Todos os recursos para essa ação. Quando você salva a política ou visualiza a política no editor de JSON, pode ver que o IAM cria automaticamente um novo bloco de permissões concedendo permissão para essa ação em todos os recursos.

  8. Para adicionar outro bloco de permissões, escolha Adicionar mais permissões.

  9. Escolha Selecionar um serviço e depois escolha IAM.

  10. Escolha Ações permitidas e depois escolha Mudar para negar permissões. Ao fazer isso, o bloco inteiro é usado para negar permissões.

  11. Digite group na caixa de pesquisa. O editor visual mostra todas as ações do IAM que contêm a palavra group. Marque as caixas de seleção ao lado das seguintes ações:

    • CreateGroup

    • DeleteGroup

    • RemoveUserFromGroup

    • AttachGroupPolicy

    • DeleteGroupPolicy

    • DetachGroupPolicy

    • PutGroupPolicy

    • UpdateGroup

  12. Escolha Recursos para especificar os recursos para a sua política. Com base nas ações que escolheu, você deve ver o tipo de recurso grupo. Escolha Add ARNs. Em Recurso em, selecione a opção Qualquer conta. Em Qualquer nome de grupo com caminho digite o nome do grupo de usuários AllUsers. Selecione Adicionar ARNs.

  13. Escolha Condições da solicitação - opcional e depois escolha Adicionar outra condição. Preencha o formulário com os valores a seguir:

    • Chave de condição: escolha aws:username

    • Qualifier (Qualificador): escolha Default (Padrão)

    • Operator (Operador): escolha StringNotEquals

    • Valor: digite srodriguez e escolha Adicionar para adicionar outro valor. Digite mjackson e escolha Adicionar para adicionar outro valor. Digite adesai e escolha Adicionar condição.

    Essa condição garante que o acesso será negado às ações de gerenciamento do grupo de usuáros especificado quando o usuário que está fazendo a chamada não estiver incluído na lista. Como isso nega a permissão de forma explícita, ela substitui o bloco anterior que permitia que esses usuários chamassem as ações. Os usuários da lista não têm acesso negado e recebem permissão no primeiro bloco de permissões para que possam gerenciar totalmente o grupo de usuários.

  14. Quando terminar, escolha Avançar.

    nota

    Você pode alternar entre as opções de editor Visual e JSON a qualquer momento. Porém, se você fizer alterações ou escolher Avançar na opção de editor Visual, o IAM poderá reestruturar a política a fim de otimizá-la para o editor visual. Para obter mais informações, consulte Reestruturação da política.

  15. Na página Revisar e criar, em Nome da política, digite LimitAllUserGroupManagement. Em Descrição, digite Allows all users read-only access to a specific user group, and allows only specific users access to make changes to the user group. Revise Permissões definidas nessa política para ter certeza de que você concedeu as permissões que pretendia. Em seguida, escolha Criar política para salvar sua nova política.

  16. Anexe a política ao seu grupo de usuários. Para obter mais informações, consulte Adicionar e remover permissões de identidade do IAM.

Como alternativa, você pode criar a mesma política usando este exemplo de documento de política JSON. Para visualizar esta política JSON, consulte IAM: permite que os usuários do IAM gerenciem um grupo de forma programática e no console. Para obter instruções detalhadas para criar uma política usando um documento JSON, consulte Criar políticas usando o editor de JSON.

Controle de acesso a políticas

Você pode controlar como seus usuários aplicam as políticas gerenciadas da AWS. Para fazer isso, anexe esta política a todos os seus usuários. Idealmente, você pode fazer isso usando um grupo de usuários.

Por exemplo, você pode criar uma política que permita aos usuários anexar apenas as políticas gerenciadas da AWS IAMUserChangePassword e PowerUserAccess a um novo usuário, grupo de usuários ou função do IAM.

Para as políticas gerenciadas pelo cliente, você pode controlar quem pode criar, atualizar e excluir essas políticas. É possível controlar quem pode anexar e desvincular as políticas nas entidades de segurança (grupos de usuários, usuários e funções). Você também pode controlar quais políticas um usuário pode anexar e desanexar de quais entidades.

Por exemplo, você pode atribuir permissões a um administrador de conta para criar, atualizar e excluir políticas. Em seguida, você atribui permissões a um líder de equipe ou outro administrador limitado para anexar e desanexar essas políticas às entidades principais que o administrador limitado gerencia.

Para obter mais informações, consulte estes recursos:

Controle de permissões para a criação, atualização e exclusão de políticas gerenciadas pelo cliente

Você pode usar políticas do IAM para controlar quem tem permissão para criar, atualizar e excluir as políticas gerenciadas pelo cliente na sua Conta da AWS. A lista a seguir contém operações de API que fazem parte diretamente da criação, atualização e exclusão de políticas ou versões de política:

As operações da API na lista anterior correspondem a ações que você pode permitir ou negar ou seja, permissões que você pode conceder usando uma política do IAM.

Considere a seguinte política de exemplo. Ela permite que um usuário crie, atualize (isto é, crie uma nova versão da política), exclua e defina uma versão padrão para todas as políticas gerenciadas pelo cliente na Conta da AWS. O exemplo de política também permite que o usuário liste as políticas e obtenha políticas. Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte Criar políticas usando o editor de JSON.

exemplo Exemplo de política que permite criar, atualizar, excluir, listar, obter e definir a versão padrão para todas as políticas
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "iam:CreatePolicy", "iam:CreatePolicyVersion", "iam:DeletePolicy", "iam:DeletePolicyVersion", "iam:GetPolicy", "iam:GetPolicyVersion", "iam:ListPolicies", "iam:ListPolicyVersions", "iam:SetDefaultPolicyVersion" ], "Resource": "*" } }

Você pode criar políticas que limitam o uso dessas operações da API para afetar somente as políticas gerenciadas que você especificar. Por exemplo, talvez você queira permitir que um usuário defina a versão padrão e exclua versões de políticas, mas somente para políticas específicas gerenciadas pelo cliente. Isso é feito especificando-se o ARN da política no elemento Resource da política que concede essas permissões.

O exemplo a seguir mostra uma política que permite que um usuário exclua versões de política e defina a versão padrão. Mas essas ações são permitidas somente para as políticas gerenciadas pelo cliente que incluem o caminho /TEAM-A/. O ARN da política gerenciada pelo cliente é especificado no elemento Resource da política. (Neste exemplo, o ARN inclui um caminho e um caractere curinga e, portanto, corresponde a todas as políticas gerenciadas pelo cliente que incluem o caminho /TEAM-A/). Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte Criar políticas usando o editor de JSON.

Para obter mais informações sobre o uso de caminhos nos nomes de políticas gerenciadas pelo cliente, consulte Nomes amigáveis e caminhos.

exemplo Exemplo de política que permite excluir versões de política e definir a versão padrão somente para políticas específicas
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "iam:DeletePolicyVersion", "iam:SetDefaultPolicyVersion" ], "Resource": "arn:aws:iam::account-id:policy/TEAM-A/*" } }

Controle de permissões para anexar e desvincular políticas gerenciadas

Você também pode usar as políticas do IAM para permitir que os usuários trabalhem apenas com políticas gerenciadas específicas. Em suma, você pode controlar quais permissões um usuário pode conceder a outras entidades principais.

A lista a seguir mostra as operações da API que fazem parte diretamente da anexação e desanexação de políticas gerenciadas às entidades principais:

Você pode criar políticas que limitam o uso dessas operações da API para afetar somente as políticas gerenciadas e/ou as entidades principais que você especifica. Por exemplo, talvez você queira permitir que um usuário anexe políticas gerenciadas, mas somente as políticas gerenciadas que você especificar. Ou, talvez você queira permitir que um usuário anexe políticas gerenciadas, mas somente às entidades principais que você especificar.

O exemplo de política a seguir permite que um usuário anexe políticas gerenciadas somente aos grupos de usuários e às funções que incluam o caminho/TEAM-A/. Os ARNs do grupo de usuários e da função são especificados no elemento Resource da política. (Neste exemplo, os ARNs incluem um caminho e um caractere curinga e, portanto, correspondem a todos os grupos de usuários e funções que incluem o caminho /TEAM-A/). Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte Criar políticas usando o editor de JSON.

exemplo Exemplo de política que permite anexar políticas gerenciadas somente a grupos de usuários ou funções específicos
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "iam:AttachGroupPolicy", "iam:AttachRolePolicy" ], "Resource": [ "arn:aws:iam::account-id:group/TEAM-A/*", "arn:aws:iam::account-id:role/TEAM-A/*" ] } }

Você pode limitar ainda mais as ações no exemplo anterior para afetar somente políticas específicas. Ou seja, você pode controlar quais permissões um usuário pode anexar a outras entidades de segurança, adicionando uma condição à política.

No exemplo a seguir, a condição garante que as permissões AttachGroupPolicy e AttachRolePolicy sejam concedidas somente quando a política sendo anexada corresponda a uma das políticas especificadas. A condição usa a iam:PolicyARN chave de condição para determinar qual política (ou políticas) pode ser anexada. A política de exemplo a seguir expande o exemplo anterior. Ela permite que um usuário anexe somente as políticas gerenciadas que incluem o caminho /TEAM-A/ apenas aos grupos de usuários e às funções que incluem o caminho /TEAM-A/. Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte Criar políticas usando o editor de JSON.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "iam:AttachGroupPolicy", "iam:AttachRolePolicy" ], "Resource": [ "arn:aws:iam::account-id:group/TEAM-A/*", "arn:aws:iam::account-id:role/TEAM-A/*" ], "Condition": {"ArnLike": {"iam:PolicyARN": "arn:aws:iam::account-id:policy/TEAM-A/*"} } } }

Esta política usa o operador de condição ArnLike, mas você também pode usar o operador de condição ArnEquals porque esses dois operadores de condição se comportam de forma idêntica. Para obter mais informações sobre ArnLike e ArnEquals, consulte Operadores de condição de nome do recurso da Amazon (ARN) na seção Tipos de condição da Referência sobre elementos de políticas.

Por exemplo, é possível limitar o uso dessas ações para envolver somente as políticas gerenciadas que você especifica. Isso é feito especificando-se o ARN da política no elemento Condition da política que concede essas permissões. Por exemplo, para especificar o ARN de uma política gerenciada pelo cliente:

"Condition": {"ArnEquals": {"iam:PolicyARN": "arn:aws:iam::123456789012:policy/POLICY-NAME"} }

Você pode especificar o ARN de uma política gerenciada da AWS no elemento Condition da política. O ARN de uma política gerenciada da AWS usa o alias especial aws no ARN da política, em vez de um ID de conta, como neste exemplo:

"Condition": {"ArnEquals": {"iam:PolicyARN": "arn:aws:iam::aws:policy/AmazonEC2FullAccess"} }

Controlar o acesso aos recursos

Você pode controlar o acesso aos recursos usando uma política baseada em identidade ou em recurso. Em uma política baseada em identidade, você anexa a política a uma identidade e especifica que recursos essa identidade pode acessar. Em uma política baseada em recursos, você anexa uma política ao recurso que deseja controlar. Na política, você especifica quais entidades principais podem acessar esse recurso. Para obter mais informações sobre ambos os tipos de políticas, consulte Políticas baseadas em identidade e em recurso.

Para obter mais informações, consulte estes recursos:

Criadores de recursos não têm permissões automaticamente

Se você fizer login usando as credenciais do Usuário raiz da conta da AWS, terá permissão para executar qualquer ação nos recursos que pertencem à conta. No entanto, isso não é verdadeiro para usuários do IAM. Um usuário do IAM pode receber acesso para criar um recurso, mas as permissões do usuário, mesmo para esse recurso, são limitadas ao que foi explicitamente concedido. Isso significa que só pelo fato de criar um recurso, como uma função do IAM, você não tem automaticamente permissão para editar ou excluir essa função. Além disso, sua permissão pode ser revogada a qualquer momento pelo proprietário da conta ou por outro usuário que tenha recebido acesso para gerenciar suas permissões.

Controle de acesso a entidades de segurança em uma conta específica

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 a seus recursos, você poderá criar uma função do IAM. Uma função é 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, assumir 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.