Referência geral da AWS
Guia de referência (Versão 1.0)

Diretrizes de auditoria de segurança da AWS

Você deve auditar sua configuração de segurança periodicamente para se certificar de que ela atende às suas necessidades de negócios atuais. Uma auditoria oferece a você a oportunidade de remover usuários, funções, grupos e políticas de IAM desnecessários, e de garantir que seus usuários e o software têm apenas as permissões que são necessárias.

Veja a seguir diretrizes para analisar e monitorar sistematicamente seus recursos da AWS quanto às melhores práticas de segurança.

Quando você deve realizar uma auditoria de segurança?

Você deve auditar sua configuração de segurança nas seguintes situações:

  • Periodicamente. As etapas descritas neste documento devem ser executadas em intervalos regulares como melhores práticas de segurança.

  • Se houver alterações na sua organização, como demissões.

  • Se você tiver parado de usar um ou mais serviços específicos da AWS. Isto é importante para remover permissões que os usuários da sua conta não precisam mais.

  • Se você tiver adicionado ou removido software das suas contas, como aplicativos em instâncias do Amazon EC2, pilhas do AWS OpsWorks, modelos do AWS CloudFormation, etc.

  • Se você tiver alguma suspeita de que uma pessoa não autorizada possa ter acesso à sua conta.

Diretrizes gerais de auditoria

À medida que você examina a configuração de segurança da sua conta, siga estas diretrizes:

  • Seja minucioso. Examine todos os aspectos da configuração de segurança, incluindo aqueles que você possa não usar regularmente.

  • Não suponha nada. Se você não estiver familiarizado com alguns aspectos da sua configuração de segurança (por exemplo, o raciocínio referente a uma política específica ou a existência de uma função), investigue a necessidade da empresa até ficar satisfeito.

  • Simplifique as coisas. Para facilitar a auditoria (e o gerenciamento), use grupos, esquemas de nomenclatura consistentes e políticas diretas de IAM.

Confira as credenciais da sua conta da AWS

Ao auditar suas credenciais da conta da AWS, execute estas etapas:

  1. Se não estiver usando chaves de acesso raiz para sua conta, remova-as. É altamente recomendável não usar chaves de acesso raiz para o trabalho diário com a AWS. Em vez disto, crie usuários do IAM.

  2. Se precisa ter chaves de acesso para a sua conta, altere-as regularmente.

Analisar seus usuários do IAM

Ao auditar seus usuários do IAM, execute estas etapas:

  1. Exclua usuários que não estão ativos.

  2. Remova usuários de grupos dos quais não precisam fazer parte.

  3. Analise as políticas associadas aos grupos nos quais o usuário está. Consulte Dicas para analisar políticas do IAM.

  4. Exclua credenciais de segurança que o usuário não precisa ou que podem ter sido expostas. Por exemplo, um usuário do IAM que é usado para um aplicativo não precisa de uma senha (que é necessária apenas para fazer login em sites da AWS). Da mesma forma, se um usuário não usar chaves de acesso, não há motivo para que ele tenha uma. Para obter mais informações, consulte Gerenciar senhas para usuários do IAM e Gerenciar chaves de acesso para usuários do IAM no Guia do usuário do IAM.

    Você pode gerar e fazer o download de um relatório de credenciais que lista todos os usuários do IAM em sua conta e o status de diversas credenciais deles, incluindo senhas, chaves de acesso e dispositivos MFA. Em caso de senhas e chaves de acesso, o relatório de credenciais mostra quando uma senha ou chave de acesso foi usada recentemente. Credenciais que não tenham sido usadas recentemente podem ser indicadas para remoção. Para obter mais informações, consulte Como obter relatórios de credenciais para sua conta da AWS no Guia do usuário do IAM.

  5. Rotacione (altere) credenciais de segurança de usuário periodicamente, ou imediatamente, se você as tiver compartilhado alguma vez com uma pessoa não autorizada. Para obter mais informações, consulte Gerenciar senhas para usuários do IAM e Gerenciar chaves de acesso para usuários do IAM no Guia do usuário do IAM.

Analisar seus grupos do IAM

Ao auditar seus grupos do IAM, execute estas etapas:

  1. Exclua grupos não utilizados.

  2. Analise os usuários em cada grupo e remova usuários que não fizerem parte deles. Consulte Analisar seus usuários do IAM acima.

  3. Analise as políticas associadas ao grupo. Consulte Dicas para analisar políticas do IAM.

Analisar suas funções do IAM

Ao auditar suas funções do IAM, execute estas etapas:

  1. Exclua funções que não estão sendo usadas.

  2. Analise a política de confiança da função. Certifique-se de que você sabe quem é o “principal” e que você entende por que essa conta ou usuário precisa ser capaz de assumir a função.

  3. Revise a política de acesso da função para garantir que ela conceda permissões adequadas para quem assumir a função — consulte Dicas para analisar políticas do IAM.

Analisar seus provedores de IAM para SAML e OpenID Connect (OIDC)

Se você tiver criado uma entidade do IAM para estabelecer confiança com um provedor de identidade de SAML ou OIDC, execute estas etapas:

  1. Exclua provedores não utilizados.

  2. Faça o download e analise os documentos de metadados da AWS de cada provedor de SAML e certifique-se de que os documentos espelham suas necessidades de negócios atuais. Como alternativa, obtenha os documentos de metadados mais recentes dos IdPs SAML com os quais você deseja estabelecer confiança e atualize o provedor no IAM.

Analisar seus aplicativos para dispositivos móveis

Se você tiver criado um aplicativo para dispositivos móveis que faça solicitações para a AWS, execute estas etapas:

  1. Certifique-se de que o aplicativo para dispositivos móveis não contêm chaves de acesso incorporadas, mesmo se elas estiverem em armazenamento criptografado.

  2. Obtenha credenciais temporárias para o aplicativo usando APIs projetadas para essa finalidade. Recomendamos usar o Amazon Cognito para gerenciar a identidade de usuários em seu aplicativo. Esse serviço permite que você autentique os usuários usando o Login with Amazon, Facebook, Google ou qualquer provedor de identidade compatível com o OpenID Connect (OIDC). Em seguida, você pode usar o provedor de credenciais do Amazon Cognito para gerenciar credenciais que seu aplicativo usa para fazer solicitações à AWS.

    Se seu aplicativo para dispositivos móveis não oferece suporte para autenticação usando login com o Amazon, Facebook, Google ou qualquer outro provedor de identidade compatível com OIDC, você pode criar um servidor de proxy que possa fornecer credenciais temporárias para seu aplicativo.

Analisar a configuração de segurança do Amazon EC2

Execute as etapas a seguir para cada região da AWS:

  1. Exclua pares de chaves do Amazon EC2 não utilizadas ou que possam ser conhecidas por pessoas de fora da organização.

  2. Revise seus grupos de segurança do Amazon EC2:

    • Remova security groups que não atendam mais às suas necessidades.

    • Remova regras de security groups que não atendam mais às suas necessidades. Certifique-se de que você sabe por que as portas, protocolos e intervalos de endereço IP que os habilitam foram permitidos.

  3. Encerre instâncias que não estão atendendo a uma necessidade da empresa ou que podem ter sido iniciadas por alguém de fora da organização para fins não aprovados. Lembre-se de que, se uma instância é iniciada com uma função, os aplicativos que são executados naquela instância podem acessar recursos da AWS usando as permissões que são concedidas por essa função.

  4. Cancele solicitações de instâncias spot que não estão atendendo a uma necessidade da empresa ou que podem ter sido feitas por alguém de fora da organização.

  5. Analise seus grupos e configurações de Auto Scaling. Desative qualquer um deles que não atenda mais às suas necessidades ou que possa ter sido configurado por alguém de fora da organização.

Analisar políticas da AWS em outros serviços

Analise as permissões de serviços que usam políticas baseadas em recursos ou que oferecem suporte a outros mecanismos de segurança. Certifique-se de que, em cada caso, apenas usuários e funções com uma necessidade comercial atual têm acesso aos recursos do serviço, e que as permissões concedidas para os recursos são as mínimas necessárias para atender às suas necessidades comerciais.

Monitorar atividades em sua conta da AWS

Para monitorar atividades da AWS, siga essas diretrizes:

  • Ative o AWS CloudTrail em cada conta e use-o em cada região com suporte.

  • Examine periodicamente os arquivos de log do CloudTrail. (O CloudTrail tem vários parceiros que fornecem ferramentas para ler e analisar arquivos de log.)

  • Habilite o registro em log do bucket do Amazon S3 para monitorar solicitações feitas para cada bucket.

  • Se você achar que houve uso não autorizado da sua conta, preste atenção especial às credenciais temporárias que foram emitidas. Caso tenham sido emitidas credenciais temporárias que você não reconhece, desative suas permissões.

  • Ative alertas de faturamento em cada conta e defina um limite de custo que lhe permita saber se suas cobranças excedem o uso normal.

Dicas para analisar políticas do IAM

As políticas são poderosas e sutis, de modo que é importante analisar e compreender as permissões que são concedidas pelas políticas. Ao analisar políticas, use as diretrizes a seguir:

  • Como melhores práticas, associe políticas a grupos, em vez de a usuários individuais. Se um usuário específico tiver uma política, certifique-se de que você entende por que esse usuário precisa da política.

  • Certifique-se de que usuários, grupos e funções do IAM têm apenas as permissões que eles precisam.

  • Use o IAM Policy Simulator para testar políticas anexadas a usuários ou grupos.

  • Lembre-se de que as permissões de um usuário são o resultado de todas as políticas aplicáveis — políticas de usuário, políticas de grupo e políticas com base em recursos (em buckets do Amazon S3, filas do Amazon SQS, tópicos do Amazon SNS, e chaves do AWS KMS). É importante examinar todas as políticas que se aplicam a um usuário e compreender o conjunto completo de permissões concedidas a um usuário específico.

  • Lembre-se de que permitir que um usuário crie um usuário, grupo, função ou política do IAM, e associar uma política à entidade principal, estão sendo concedidas efetivamente a esse usuário todas as permissões para todos os recursos na sua conta. Ou seja, os usuários que têm permissão para criar políticas e associá-las a um usuário, grupo ou função, podem conceder quaisquer permissões por eles mesmos. Em geral, não conceda permissões do IAM com acesso total aos recursos na sua conta a usuários ou funções em quem você não confia. A lista a seguir contém permissões do IAM que você deve analisar minuciosamente:

    • iam:PutGroupPolicy

    • iam:PutRolePolicy

    • iam:PutUserPolicy

    • iam:CreatePolicy

    • iam:CreatePolicyVersion

    • iam:AttachGroupPolicy

    • iam:AttachRolePolicy

    • iam:AttachUserPolicy

  • Certifique-se de que as políticas não concedem permissões para serviços que você não utiliza. Por exemplo, se você usar políticas gerenciadas da AWS, certifique-se de que as políticas gerenciadas da AWS que estão sendo usadas em sua conta são para serviços que você usa realmente. Para saber quais políticas gerenciadas da AWS são usadas em sua conta, use a API GetAccountAuthorizationDetails do IAM (comando da AWS CLI: aws iam get-account-authorization-details).

  • Se a política conceder permissão a um usuário para executar uma instância do Amazon EC2, ela também poderá permitir a ação iam:PassRole, mas, neste caso, deverá listar explicitamente as funções que o usuário terá permissão de passar para a instância do Amazon EC2.

  • Examine atentamente todos os valores de Action ou do elemento de Resource que inclui *. Melhores práticas são conceder Allow acesso apenas a ações e recursos específicos que os usuários precisam. No entanto, as razões pelas quais pode ser adequado usar * em uma política são:

    • A política foi projetada para conceder privilégios de nível administrativo.

    • O caractere curinga é usado para um conjunto de ações semelhantes (por exemplo, Describe*) como uma facilidade e você está familiarizado com a lista completa de ações que são referenciadas dessa forma.

    • O caractere curinga é usado para indicar uma classe de recursos ou um caminho de recursos (por exemplo, arn:aws:iam::account-id:users/division_abc/*) e você se sente à vontade de conceder acesso a todos os recursos na classe ou caminho.

    • Uma ação de serviço não oferece suporte a permissões em nível de recursos, e a única opção para um recurso é *.

  • Examine os nomes de políticas para garantir que eles espelham a função da política. Por exemplo, embora uma política possa ter um nome que inclui "somente leitura", a política pode, na verdade, conceder permissões de escrita ou de alteração.

Mais informações

Para obter mais informações sobre o gerenciamento de recursos do IAM, consulte o seguinte:

Para obter mais informações sobre segurança do Amazon EC2, consulte o seguinte:

Para obter mais informações sobre o monitoramento de um conta da AWS, consulte a apresentação re: Invent 2013 "Detecção de intrusão na nuvem" (vídeo, PDF de apresentação de slides). Você também pode fazer download de um programa de exemplo do Python que mostra como automatizar as funções de auditoria de segurança.