O blog da AWS
Aumentando a Segurança da sua Conta na AWS
Por David Reis – AWS Solutions Architect
A criação de uma conta na AWS é bem simples, requer um e-mail e uma senha. Esta credencial é conhecida como conta “root” (Principal), pois dá poderes ilimitados aos recursos que você gerencia, e é muito importante protegê-la adequadamente.
Este artigo mostra as melhores práticas para aumentar a segurança da sua conta na nuvem.
Remover as Chaves de Acesso da sua Conta Principal
Na AWS você pode usar uma chave de acesso (composta por um identificador – access key ID e um segredo – secret access key) para realizar chamadas nas diversas APIs. Ao criar a sua conta, ela vem com uma chave habilitada que permite realizar quaisquer operações na sua infraestrutura. Os poderes desta chave permitem acessar todos os recursos da sua conta, incluindo informações de faturamento, e estas permissões não podem ser restringidas.
Devido ao grande poder associado a esta chave de acesso, você deve tratá-la da mesma maneira que gerencia informações confidenciais como cartão de crédito ou senha de banco. Seguem algumas recomendações de como mantê-la segura:
- Se você já removeu a chave de acesso da sua conta “root”, não crie uma nova a menos que seja extremamente necessário. Ao invés de usá-la, você pode criar através da Console de Gerenciamento da AWS um usuário IAM pessoal para realizar as tarefas de administração. Você pode fazer isto seguindo os passos mostrados nos tópicos abaixo
- Se você ainda possuir uma chave ativa, você deve parar de usá-la. Primeiramente, você precisa determinar se ela está em uso e identificar os sistemas que a estão utilizando. Após a identificação, você deve avaliar a melhor forma de migrar para um mecanismo mais seguro, como usar um Role para a instância ou um usuário com apenas as permissões necessárias. Por fim, você deve inativá-la antes de apagá-la definitivamente. Se precisar mantê-la, o melhor é rotacioná-la regularmente. Para apagar ou rotacionar a sua chave de acesso, acesse a página Security Credentials na Console de Gerenciamento da AWS com sua conta de e-mail e senha. Você poderá gerenciar as chaves da sua conta na seção “Access Keys”
- Nunca compartilhe as suas credencias (usuário e senha) com ninguém. A AWS oferece vários mecanismos para você não precisar fazer isto e ainda evitar distibuí-las com a sua aplicação
- Use uma senha forte para proteger o acesso a Console de Gerenciamento da AWS. Para aprender como gerenciar a senha da sua conta, acesse Changing the AWS Account (“root”) Password
Habilitar o MFA para a sua Conta Principal
O Multi Factor Authentication ou MFA é um mecanismo de segurança que requer mais de um método de autenticação baseado em uma categoria diferente para permitir o acesso a um recurso. Na AWS, o primeiro fator de autenticação é a senha do cliente e o segundo pode ser baseado em um aplicativo para celular, como Amazon Virtual MFA ou Google Authenticator, ou um token físico. Ao habilitar este mecanismo, a segurança da sua conta aumenta, pois o comprometimento de um único fator, não permite o acesso aos seus recursos.
Você deve habilitar o MFA na conta principal e também considerar o uso dele nas contas que possuem permissões privilegiadas como as de Administradores. Os detalhes de como ativar o MFA estão em Using Multi-Factor Authentication (MFA) in AWS
Criar Usuários Individuais
Uma forma de aumentar a rastreabilidade e a segurança das operações feitas na sua conta é criar usuários individualizados para cada pessoa que gerenciará a infraestrutura na AWS. Com o IAM, isto pode ser feito de maneira bem simples.
Estes usuários devem ter apenas as permissões necessárias para as tarefas sob a responsabilidade deles para evitar eventuais abusos ou erros na operação do dia a dia. Por exemplo, se o usuário Usuario1 é responsável apenas por gerenciar os servidores, as permissões atribuídas a ele, devem ser apenas para fazer estas tarefas. O Usuario2 que trabalha na equipe de banco de dados precisa de acesso apenas para trabalhar com o serviço RDS. Neste caso, o Usuario2 deve ter acesso ao RDS, mas não aos outros serviços.
Usar Grupos para Associar as Permissões aos Usuários IAM
Você pode simplificar a atribuição das permissões aos seus usuários IAM incluindo eles em grupos funcionais (DBA, Desenvolvedores, Administradores, etc) ao invés de vincular individualmente as permissões para cada usuário. Usando este recurso, você poderá fazer mudanças nas permissões de um grupo atualizando apenas um lugar. Outra vantagem é que se uma pessoa mudar de área, você poderá simplesmente movê-la de grupo.
Configurar uma Política de Senha Forte para os Usuários
Usando o IAM, você pode configurar uma política de senha para assegurar que seus usuários criem senhas com a complexidade necessária ou aderente aos padrões de segurança da empresa. Além disto, você pode definir o período para troca de senha e prevenir que os usuários reutilizem a mesma senha.
Você também deve ter em mente que reutilizar senhas iguais a usadas em outros sistemas (sites web, e-mail) pode diminuir consideravelmente a segurança, pois o comprometimento destes sites pode facilitar o acesso aos recursos da AWS.
Habillitar o CloudTrail
O CloudTrail é o serviço que registra as chamadas usando credenciais vinculadas a sua conta realizadas nas principais APIs da AWS. Habilitar esta configuração é bem simples e permite acompanhar as operações da sua infraestrutura. Este serviço deve ser habilitado individualmente em cada região. As instruções em Creating a Trail for the First Time mostram como você pode habilitar este log na sua conta.
Usando este serviço você ainda pode configurar alarmes para atividades suspeitas.
Habilitar um Alarme quando a Conta Principal for Utilizada
Considerando que os acessos com a conta principal serão feitos raramente, uma recomendação importante é habilitar um alarme toda vez que algum acesso for feito com a conta “root”. Desta maneira, o responsável pela infraestrutura será notificado e poderá avaliar a legitimidade do acesso.
Você pode habilitar este alarme seguindo os passos mostrados em How to Receive Notifications When Your AWS Account’s Root Access Keys Are Used
Remover Credenciais que não são Usadas
Muitas vezes algumas credenciais são criadas temporariamente e nunca desativadas. Estas credenciais expõe a sua conta desnecessariamente, o que poderia ser evitado fazendo uma análise simples do uso. A recomendação é remover ou desabilitar quaisquer credenciais que não são utilizadas, isto inclui, usuários ou chaves de acesso.
Através do console do IAM, você pode obter um relatório das credenciais existentes para identificar quais poderiam ser desabilitadas. Ele contém informações sobre senhas, chaves de acesso e as respectivas datas de uso. Os detalhes de como obter este relatório são descritos em Getting Credential Reports for Your AWS Account.
Você também pode usar a as API’s da AWS para obter estas informações ou automatizar este mecanismo usando o AWS CLI.
Usar Roles para Aplicações que Rodam em Instâncias EC2
Aplicações que rodam em instâncias EC2 precisam de credenciais para acessar outros serviços da AWS, como Amazon S3 ou Amazon DynamoDB. Neste caso, você pode usar IAM Roles para permitir que a sua aplicação acesse estes serviços de maneira segura ao invés de salvar as credenciais necessárias em um arquivo de configuração. Um Role é um mecanismo que permite agrupar permissões, mas que não está associado a um usuário ou grupo específico.
Ao lançar uma instância EC2, você pode escolher qual Role será atrelado a ela e as aplicações que estão rodando nesta instância, usando o SDKs ou a Command Line Interface (CLI), poderão acessar os recursos da AWS sem se preocupar com o gerenciamento das credenciais. Estas aplicações terão permissão apenas para executar as operações determinadas no Role atribuído a instância. Além disto, o IAM rotaciona as credenciais vinculadas ao Role de maneira automática sem que você realize nenhum tipo de manipulação e ainda permite que você atualize as permissões do Role em um único lugar, propagando automaticamente as mudanças para todas as instâncias do mesmo Role.
Para saber mais detalhes de como usar este mecanismo, acesse Using an IAM Role to Grant Permissions to Applications Running on Amazon EC2 Instances.
Delegar o Acesso a um Recurso usando Roles ao invés de Compartilhar uma Credencial
Usando o IAM você pode delegar o acesso a recursos da sua conta na AWS de maneira segura. A delegação pode ser usada, por exemplo, para permitir que um usuário de outra empresa ou parceiro (outra conta AWS) leia o conteúdo de um bucket S3 na sua conta.
Se isto for necessário, não compartilhe a sua credencial, isto é, usuário/senha ou chave de acesso com a outra pessoa. Você pode criar um Role com as permissões necessárias e determinar qual usuário IAM de outra conta poderá assumir este Role. As instruções para usar este recurso estão em Delegating Access Across AWS Accounts For Accounts You Own Using IAM Roles.
Rotacionar as Credenciais Regularmente
Troque a sua senha e chaves de acesso regularmente e assegure que todos os usuários IAM também sigam esta política. Desta forma, se uma senha ou chave for comprometida sem o seu conhecimento, você conseguirá limitar o tempo que o atacante poderá se aproveitar desta brecha. Você pode criar uma política para troca de senha na sua conta e exigir que os usuários rotacionem a senha com a frequência que você determinar.
- Para saber mais sobre como configurar uma política de senha na sua conta, veja Setting an Account Password Policy for IAM Users
- Para saber mais sobre como rotacionar as chaves de acessos dos seus usuários IAM, veja Rotating Access Keys (AWS CLI, Tools for Windows PowerShell, and AWS API)