Melhores práticas de segurança no IAM - AWS Identity and Access Management

Melhores práticas de segurança no IAM

Para ajudar a proteger seus recursos da AWS, siga estas recomendações para o serviço do AWS Identity and Access Management (IAM).

Bloquear as chaves de acesso Usuário raiz da conta da AWS

Você usa uma chave de acesso (um ID de chave de acesso e uma chave de acesso secreta) para fazer solicitações programáticas para a AWS. No entanto, não use a chave de acesso de Usuário raiz da conta da AWS. A chave de acesso da Usuário raiz da conta da AWS dá acesso completo a todos os recursos de todos os serviços da AWS, inclusive as informações de faturamento. Você não pode reduzir as permissões associadas à chave de acesso da Usuário raiz da conta da AWS.

Portanto, proteja a chave de acesso da usuário raiz como você faria com os números de cartões de crédito ou qualquer outro segredo confidencial. Aqui estão algumas maneiras de fazer isso:

  • Se você ainda não tiver uma chave de acesso para a Usuário raiz da conta da AWS, não crie uma chave a menos que seja realmente necessário. Em vez disso, use o endereço de e-mail e senha de sua conta para fazer login no Console de gerenciamento da AWS e criar um usuário do IAM para você com permissões administrativas.

  • Se você já tiver uma chave de acesso para a conta da Usuário raiz da conta da AWS, exclua-a. Se você precisar guardá-la, mude (troque) a chave de acesso regularmente. Para excluir ou mudar as chaves de acesso da usuário raiz, acesse a página Minhas credenciais de segurança no Console de gerenciamento da AWS e faça login com o endereço de e-mail e a senha da conta. Você pode gerenciar suas chaves de acesso na seção Chaves de acesso. Para obter mais informações sobre a mudança de chaves de acesso, consulte Alternar chaves de acesso

  • Jamais compartilhe a senha da Usuário raiz da conta da AWS ou as chaves de acesso com alguém. As seções restantes deste documento discutem várias maneiras de evitar ter que compartilhar suas credenciais do Usuário raiz da conta da AWS com outros usuários. Elas também explicam como evitar ter que incorporá-las em um aplicativo.

  • Use uma senha forte para ajudar a proteger o acesso no nível da conta ao Console de gerenciamento da AWS. Para obter informações sobre o gerenciamento da senha do Usuário raiz da conta da AWS, consulte Alterar a senha do usuário raiz da conta da AWS.

  • Habilite a Multi-Factor Authentication (MFA – Autenticação multifator) da AWS na conta da Usuário raiz da conta da AWS. Para obter mais informações, consulte Usar autenticação multifator (MFA) na AWS.

Criar usuários individuais do IAM

Não use as credenciais de Usuário raiz da conta da AWS para acessar a AWS e não forneça suas credenciais para outras pessoas. Em vez disso, crie usuários individuais para qualquer pessoa que precise acessar sua conta da AWS. Crie um usuário do IAM para você mesmo também, atribua a ele permissões administrativas e use esse usuário do IAM para todos os seus trabalhos. Para obter informações sobre como fazer isso, consulte Criar o primeiro grupo e usuário administrador do IAM.

Ao criar usuários individuais do IAM para as pessoas que acessam a sua conta, você pode dar a cada usuário do IAM um conjunto exclusivo de credenciais de segurança. Você também pode conceder permissões diferentes para cada usuário IAM. Se necessário, você pode alterar ou revogar as permissões de um usuário do IAM a qualquer momento. (Se você fornecer suas credenciais de usuário raiz, pode ser difícil revogá-las, e é impossível restringir suas permissões.)

nota

Mas antes de definir permissões para usuários individuais do IAM, consulte a próxima fase sobre grupos.

Usar grupos para atribuir permissões a usuários do IAM

Em vez de definir permissões para usuários individuais do IAM, normalmente é mais conveniente criar grupos relacionados a funções de trabalho (administradores, desenvolvedores, contabilidade, etc.). Em seguida, defina as permissões relevantes para cada grupo. Por fim, atribua usuários do IAM a esses grupos. Todos os usuários em um grupo do IAM herdam as permissões atribuídas ao grupo. Dessa forma, você pode fazer alterações para todos os membros de um grupo em um só lugar. À medida que as pessoas são transferidas em sua empresa, você pode simplesmente alterar o grupo do IAM ao qual o usuário do IAM pertence.

Para obter mais informações, consulte o seguinte:

Conceder privilégio mínimo

Ao criar políticas da IAM, siga a orientação de segurança padrão de concessão de privilégio mínimo ou conceda apenas as permissões necessárias para realizar uma tarefa. Determine o que os usuários (e funções) precisam fazer e crie políticas que lhes permitam executar apenas essas tarefas.

Comece com um conjunto mínimo de permissões e conceda permissões adicionais conforme necessário. Fazer isso é mais seguro do que começar com permissões que são muito lenientes e, então, tentar restringi-las posteriormente.

Você pode usar agrupamentos no nível de acesso para entender o nível de acesso que a política concede. As ações da política são classificadas como List, Read, Write, Permissions management ou Tagging. Por exemplo, você pode escolher ações dos níveis de acesso List e Read para conceder acesso somente leitura a seus usuários. Para saber como usar resumos de políticas para entender as permissões no nível de acesso, consulte Use níveis de acesso para revisar permissões do IAM.

Um recurso que pode ajudar nisso são as informações acessadas por último. Visualize essas informações na guia Consultor de acesso na página de detalhes do console do IAM de um usuário, um grupo, uma função ou uma política do IAM. As informações acessadas por último também incluem informações sobre as ações acessadas pela última vez para alguns serviços, como o Amazon S3. Se você fizer login usando credenciais da conta mestre do AWS Organizations, poderá visualizar as informações do serviço acessadas mais recentemente na seção AWS Organizations do console do IAM. Você também pode usar a AWS CLI ou a API da AWS para recuperar um relatório das informações acessadas por último de entidades ou políticas no IAM ou no Organizações. Você pode usar essa informação para identificar permissões desnecessárias, de forma que você possa refinar suas políticas do IAM ou do Organizations para melhor aderir ao princípio de privilégio mínimo. Para obter mais informações, consulte Refinar permissões na AWS usando as informações acessadas por último.

Para reduzir ainda mais as permissões, você pode visualizar os eventos no Event history (Histórico de eventos) do AWS CloudTrail. Os logs de eventos do CloudTrail incluem informações detalhadas que você pode usar para reduzir as permissões da política. Os logs incluem somente as ações e os recursos que as entidades do IAM precisam. Para obter mais informações, consulte Exibir eventos CloudTrail no console do CloudTrail no Guia do usuário da AWS CloudTrail.

Para obter mais informações, consulte o seguinte:

Conceitos básicos do uso de permissões com políticas gerenciadas pela AWS

Dar aos funcionários apenas as permissões de que precisam requer tempo e conhecimento detalhado das políticas do IAM. Os funcionários precisam de tempo para saber quais serviços da AWS desejam ou precisam usar. Os administradores precisam de tempo para aprender mais e testar o IAM.

Para começar rapidamente, você pode usar as políticas gerenciadas da AWS para conceder aos funcionários as permissões de que precisam para começar. Essas políticas já estão disponíveis na conta e são mantidas e atualizadas pela AWS. Para obter mais informações sobre políticas gerenciadas pela AWS, consulte Políticas gerenciadas pela AWS.

As políticas gerenciadas pela AWS são criadas para fornecer permissões para vários casos de uso comuns. As políticas gerenciadas pela AWS de acesso total, como AmazonDynamoDBFullAccess e IAMFullAccess, definem permissões para administradores de serviço concedendo acesso total a um serviço. As políticas gerenciadas pela AWS de usuário avançado, como AWSCodeCommitPowerUser e AWSKeyManagementServicePowerUser, oferecem vários níveis de acesso a serviços da AWS sem dar permissões de gerenciamento. As políticas gerenciadas pela AWS de acesso parcial, como AmazonMobileAnalyticsWriteOnlyAccess e AmazonEC2ReadOnlyAccess, oferecem níveis de acesso específicos a serviços da AWS. As políticas gerenciadas da AWS facilitam mais a atribuição de permissões apropriadas a usuários, grupos e funções do que se você precisasse escrever as políticas por conta própria.

Políticas gerenciadas da AWS para funções de trabalho podem abranger vários serviços e se alinhar com funções de trabalho comuns no setor de TI. Para obter uma lista e descrições de políticas de função de trabalho, consulte Políticas gerenciadas pela AWS para funções de trabalho.

Usar políticas gerenciadas pelo cliente em vez de políticas em linha

Para políticas personalizadas, recomendamos usar políticas gerenciadas em vez de políticas em linha. Uma grande vantagem de usar essas políticas é que você pode exibir todas as políticas gerenciadas em um único lugar no console. Você também pode exibir essas informações com uma única operação de AWS CLI ou de API da AWS. As políticas em linha são políticas que só existem em uma identidade do IAM (usuário, grupo ou função). As políticas gerenciadas são recursos do IAM separados que podem ser anexados a várias identidades. Para obter mais informações, consulte Políticas gerenciadas e em linha.

Se tiver políticas em linha na conta, você poderá convertê-las em políticas gerenciadas. Para fazer isso, copie a política para uma nova política gerenciada. Depois, anexe a nova política à identidade que tem a política em linha. Depois disso, exclua a política em linha. Você não pode fazer isso as instruções abaixo.

Para converter uma política em linha em uma política gerenciada

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

  2. No painel de navegação, selecione Grupos, Usuários ou Funções.

  3. Na lista, selecione o nome do grupo, usuário ou função que tem a política que você deseja remover.

  4. Escolha a guia Permissions. Se você escolheu Grupos, se necessário, expanda a seção Políticas em linha.

  5. Para grupos, escolha Show Policy (Mostrar política) próximo da política em linha que você deseja remover. Para usuários e funções, escolha Show n more (Mostrar n mais), se necessário, e, em seguida, escolha a seta próxima da política em linha que você deseja remover.

  6. Copie o documento da política JSON.

  7. No painel de navegação, selecione Policies (Políticas).

  8. Escolha Create policy (Criar política) e escolha a guia JSON.

  9. Substitua o texto existente pelo texto da política JSON e escolha Review policy (Revisar política).

  10. Digite um nome para a política e escolha Create policy (Criar política).

  11. No painel de navegação, escolha Groups (Grupos), Users (Usuários) ou Roles (Funções) e novamente o nome do grupo, usuário ou função que tem a política que você deseja remover.

  12. Para grupos, escolha Attach Policy (Anexar política). Para usuários e funções, escolha Add permissions (Adicionar permissões).

  13. Para grupos, marque a caixa de seleção próxima do nome da nova política e escolha Attach Policy (Anexar política). Para usuários ou funções, escolha Add permissions (Adicionar permissões). Na próxima página, escolha Attach existing policies directly (Anexar políticas existentes diretamente), marque a caixa de seleção próxima do nome da nova política, escolha Next: Review (Avançar: revisar) e Add permissions (Adicionar permissões).

    Você retorna à página Summary (Resumo) do grupo, do usuário ou da função.

  14. Para grupos, escolha Remove Policy (Remover política) próximo da política em linha que você deseja remover. Para usuários ou funções, escolha X próximo da política em linha que você deseja remover.

Em algumas circunstâncias, recomendamos escolher políticas em linha em vez de políticas gerenciadas. Para obter mais detalhes, consulte Escolher entre políticas gerenciadas e em linha.

Use níveis de acesso para revisar permissões do IAM

Para melhorar a segurança da sua conta da AWS, você deve revisar e monitorar regularmente cada uma de suas políticas do IAM. Certifique-se de que suas políticas concedem o menor privilégio necessário para executar apenas as ações necessárias.

Ao rever uma política, você pode visualizar o resumo da política que inclui um resumo do nível de acesso para cada serviço dentro da política. A AWS categoriza cada ação de serviço em um de cinco níveis de acesso com base no que cada ação realiza: List, Read, Write, Permissions management ou Tagging. Você pode usar esses níveis de acesso para determinar quais ações incluir em suas políticas.

Por exemplo, no serviço do Amazon S3, você pode permitir que um grande grupo de usuários acesse as ações List e Read. Tais ações permitem que esses usuários listem os buckets e obtenham objetos no Amazon S3. No entanto, você deve permitir que apenas um pequeno grupo de usuários acesse as ações Write do Amazon S3 para excluir buckets ou colocar objetos em um bucket do S3. Além disso, você deve reduzir permissões para só permitir que administradores acessem as ações Permissions management do Amazon S3. Isso garante que apenas um número limitado de pessoas possa gerenciar políticas de bucket no Amazon S3. Isso é especialmente importante para ações Permissions management nos serviços do IAM e do AWS Organizations. Permitir ações Tagging concede a um usuário permissão para executar ações que somente modificam as tags de um recurso. No entanto, algumas ações Write, como CreateRole, permitem marcar um recurso quando você cria o recurso ou modifica outros atributos desse recurso. Portanto, negar o acesso a ações Tagging não impede que um usuário marque recursos. Para obter detalhes e exemplos da classificação de nível de acesso, consulte Noções básicas sobre resumos de nível de acesso dentro de resumos de políticas.

Para visualizar a classificação de nível de acesso atribuída a cada ação em um serviço, consulte Ações, recursos e chaves de condição de serviços da AWS.

Para ver os níveis de acesso de uma política, você deve primeiro localizar o resumo da política. O resumo da política é incluído na página Políticas para políticas gerenciadas e na página Usuários para políticas que estão anexadas a um usuário. Para obter mais informações, consulte Resumo da política (lista de serviços).

Dentro de um resumo de política, a coluna Nível de acesso mostra que a política fornece acesso Completo ou Limitado a um ou mais dos quatro níveis de acesso da AWS para o serviço. Ou então, ela pode mostrar que a política fornece Acesso completo a todas as ações dentro do serviço. Você pode usar as informações na coluna Nível de acesso para entender o nível de acesso que a política fornece. Em seguida, você pode agir para tornar a sua conta da AWS mais segura. Para obter detalhes e exemplos da classificação de nível de acesso, consulte Noções básicas sobre resumos de nível de acesso dentro de resumos de políticas.

Configurar uma política de senha forte para seus usuários

Se você permitir que os usuários troquem suas próprias senhas, exija que eles criem senhas fortes e que mudem suas senhas periodicamente. Na página Configurações da conta do console do IAM, você pode criar uma política de senha para sua conta. É possível usar a política de senha para definir os requisitos de senha, como comprimento mínimo, se ela exige caracteres não alfabéticos, a frequência com que ela deve ser mudada e assim por diante.

Para obter mais informações, consulte Definir uma política de senhas de contas para usuários do IAM.

Habilitar MFA

Para segurança extra, recomendamos que você exija multi-factor authentication (MFA) de todos os usuários em sua conta. Com a MFA, os usuários têm um dispositivo que gera uma resposta a um desafio de autenticação. As credenciais do usuário e a resposta gerada por dispositivo são necessárias para concluir o processo de login. Se a senha ou as chaves de acesso de um usuário estiverem comprometidas, os recursos da sua conta ainda estarão seguros devido ao requisito de autenticação adicional.

A resposta é gerada de uma das seguintes formas:

  • Os dispositivos MFA virtuais e de hardware geram um código que você visualiza no app ou no dispositivo e então insere na tela de login.

  • As chaves de segurança U2F geram uma resposta quando você toca no dispositivo. O usuário não insere manualmente um código na tela de login.

Para usuários do IAM privilegiados que têm permissão para acessar recursos confidenciais ou operações de API, recomendamos o uso de dispositivos MFA de hardware ou U2F.

Para obter mais informações sobre MFA, consulte Usar autenticação multifator (MFA) na AWS.

Para saber como configurar o acesso à API protegido por MFA para chaves de acesso, consulte Configurar acesso à API protegido por MFA.

Usar funções para aplicações que são executadas em instâncias do Amazon EC2

Os aplicativos que são executados em uma instância do Amazon EC2 precisam de credenciais para acessar outros serviços da AWS. Para fornecer credenciais para o aplicativo de uma maneira segura, use as funções do IAM. Uma função é uma entidade que tem seu próprio conjunto de permissões, mas que não é um usuário ou grupo. As funções também não têm seu próprio conjunto de credenciais permanentes como os usuários do IAM possuem. No caso do Amazon EC2, o IAM dinamicamente fornece credenciais temporárias para a instância do EC2 e essas credenciais são automaticamente mudadas para você.

Quando você executa uma instância do EC2, você pode especificar uma função para a instância como um parâmetro de execução. Os aplicativos que são executados na instância do EC2 podem usar as credenciais da função ao acessarem recursos da AWS. As permissões da função determinam o que o aplicativo tem permissão para fazer.

Para obter mais informações, consulte Usar uma função do IAM para conceder permissões às aplicações em execução nas instâncias do Amazon EC2.

Usar funções para delegar permissões

Não compartilhe credenciais de segurança entre contas para permitir que usuários de outra conta da AWS acessem recursos na conta da AWS. Em vez disso, use funções do IAM. Você pode definir uma função que especifique quais permissões os usuários do IAM na outra conta podem ter. Também é possível designar quais contas da AWS têm os usuários do IAM com permissão para assumir a função. Para saber se os principais de contas fora de sua zona de confiança (organização confiável ou conta) têm acesso para assumir as suas funções, consulte O que é IAM Access Analyzer?.

Para obter mais informações, consulte Termos e conceitos das funções.

Não compartilhar as chaves de acesso

As chaves de acesso fornecem acesso programático à AWS. Não incorpore chaves de acesso no código não criptografado ou compartilhe essas credenciais de segurança entre os usuários da sua conta da AWS. Para aplicativos que precisam de acesso à AWS, configure o programa para recuperar credenciais de segurança temporárias usando uma função do IAM. Para permitir que os usuários tenham acesso programático individual, crie um usuário do IAM com chaves de acesso pessoais.

Para obter mais informações, consulte Alternar para uma função do IAM (API da AWS) e Gerenciamento de chaves de acesso para usuários do IAM.

Alternar credenciais regularmente

Troque suas próprias senhas e chaves de acesso regularmente, e certifique-se de que todos os usuários do IAM em sua conta também o façam. Dessa forma, se uma senha ou chave de acesso é comprometida sem o seu conhecimento, você limita por quanto tempo as credenciais podem ser usadas para acessar seus recursos. Você pode aplicar uma política de senha à sua conta para exigir que todos os seus usuários do IAM mudem suas senhas. Você também pode escolher a frequência com que isso deve ser feito.

Para obter mais informações sobre a configuração de uma política de senha em sua conta, consulte Definir uma política de senhas de contas para usuários do IAM.

Para obter mais informações sobre a mudança de chaves de acesso para usuários do IAM, consulte Alternar chaves de acesso.

Remover credenciais desnecessárias

Remova credenciais de usuários do IAM (senhas e chaves de acesso) que não sejam necessárias. Por exemplo, se você tiver criado um usuário do IAM para um aplicativo que não use o console e, o usuário do IAM não precisará de uma senha. Da mesma forma, se um usuário usar apenas o console, remova as chaves de acesso. Senhas e chaves de acesso que não tenham sido usadas recentemente podem ser bons candidatos para remoção. Você pode encontrar senhas ou chaves de acesso não utilizadas usando o console, usando a CLI ou a API ou fazendo download do relatório de credenciais.

Para obter mais informações sobre como localizar credenciais de usuários do IAM que não tenham sido usadas recentemente, consulte Encontrar credenciais não utilizadas.

Para obter mais informações sobre a exclusão de senhas de um usuário IAM, consulte Gerenciar senhas de usuários do IAM.

Para obter mais informações sobre a desativação ou exclusão de chaves de acesso de um usuário do IAM, consulte Gerenciamento de chaves de acesso para usuários do IAM.

Para obter mais informações sobre relatórios de credenciais do IAM, consulte Obter relatórios de credenciais da sua conta da AWS.

Usar condições de política para segurança extra

Na medida do possível, defina as condições sob as quais suas políticas do IAM permitem acesso a um recurso. Por exemplo, você pode gravar condições para especificar um intervalo de endereços IP permitidos do qual a solicitação deve partir. Você também pode especificar que uma solicitação seja permitida apenas em um intervalo de datas ou intervalo de tempo especificado. Você também pode definir as condições que exigem o uso de SSL ou autenticação multifator (MFA). Por exemplo, você pode exigir que um usuário tenha se autenticado com um dispositivo MFA para que ele tenha permissão para encerrar uma instância do Amazon EC2.

Para obter mais informações, consulte Elementos de política JSON do IAM: Condition na referência de elementos de políticas do IAM.

Monitorar atividades na conta da AWS

Você pode usar recursos de registro na AWS para determinar as ações que os usuários executaram em sua conta e os recursos que foram usados. Os arquivos de registro mostram a data e a hora das ações, o IP de origem de uma ação, quais ações falharam devido à permissões inadequadas e muito mais.

Os recursos de registro estão disponíveis nos seguintes serviços da AWS:

  • Amazon CloudFront – Registra em log solicitações de usuário recebidas pelo CloudFront. Para obter mais informações, consulte Logs de acesso no Guia do desenvolvedor do Amazon CloudFront.

  • AWS CloudTrail – Registra em log chamadas de API da AWS e eventos relacionados realizados pela conta da AWS ou em seu nome. Para obter mais informações, consulte o AWS CloudTrail User Guide.

  • Amazon CloudWatch – Monitora seus recursos da nuvem AWS e os aplicativos que você executa na AWS. Você pode definir alarmes no CloudWatch com base em métricas que você define. Para obter mais informações, consulte o Guia do usuário do Amazon CloudWatch.

  • AWS Config – Fornece informações históricas detalhadas sobre a configuração de seus recursos da AWS, incluindo seus usuários, grupos, funções e políticas do IAM. Por exemplo, você pode usar o AWS Config para determinar as permissões que pertenciam a um usuário ou grupo em um horário específico. Para obter mais informações, consulte o AWS Config Developer Guide.

  • Amazon Simple Storage Service (Amazon S3) – Registra em log solicitações de acesso aos seus buckets do Amazon S3. Para obter mais informações, consulte Registro em log do acesso ao servidor no Guia do desenvolvedor do Amazon Simple Storage Service.

Apresentação de vídeo sobre as melhores práticas do IAM

O vídeo a seguir inclui uma apresentação de conferência que aborda essas melhores práticas e mostra detalhes adicionais sobre como trabalhar com os recursos discutidos aqui.