O blog da AWS

Como rotacionar chaves de acesso para usuários do IAM

Por Ben Brauer, Product Manager for AWS Identity and Access Management
 

Trocar as chaves de acesso (que consistem em um ID de chave de acesso e uma chave de acesso secreta) com base em um agendamento prévio é uma prática recomendada de segurança bem conhecida, porque reduz o período em que uma chave de acesso está ativa e, portanto, reduz o impacto nos negócios caso ela seja comprometida. Ter um processo estabelecido que é executado regularmente também certifica que as etapas operacionais em torno da rotação de chaves sejam verificadas, com isso, trocar uma chave nunca é uma etapa assustadora.Em uma postagem anterior, descrevemos as roles do AWSIdentity and Access Management (IAM) para o Amazon EC2. Se você executa aplicações no EC2 que precisam de acesso aos serviços da AWS, recomendamos usar esse recurso. As roles usam credenciais de segurança temporárias que expiram e renovam automaticamente, para que você não precise se preocupar com a rotação da chave de acesso – a AWS faz isso por você. No entanto, se você estiver executando aplicações em algum lugar diferente do EC2, deverá adicionar a rotação de chave de acesso ao seu processo de gerenciamento de aplicações. Nesse Blog Post, será abordado quais são as etapas para rotacionar as chaves de acesso para um usuário do AWS IAM.


Para rotacionar as chaves de acesso, você deve seguir estes passos:

  1. Crie uma segunda chave de acesso além da que está em uso.
  2. Atualize todas s suas aplicações para usar a nova chave de acesso e confirme se as aplicações estão funcionando.
  3. Altere o estado da chave de acesso anterior para inativo.
  4. Confirme se suas aplicações ainda estão funcionando conforme o esperado.
  5. Exclua a chave de acesso inativa.

Exemplo de rotação de chave

Aqui está um exemplo das etapas de rotação de chaves listadas acima. Você é um usuário administrativo do IAM e usará a AWS Command Line Interface (CLI) para rotacionar as chaves de acesso para um único usuário, Alice. A CLI usa APIs do IAM, portanto, as mesmas etapas podem ser executadas programaticamente por meio do AWS SDK ou usando a interface web do console de gerenciamento do IAM, como mostramos em uma postagem anterior. Como as chaves são consideradas informações confidenciais, você deve executar todos esses comandos apenas em um computador confiável.

Após instalar a CLI, execute o seguinte comando para ver quais são as chaves de acesso da Alice:

aws iam list-access-keys --user-name Alice

O comando irá retornar algo assim:

{
    "AccessKeyMetadata": [
        {
            "UserName": "Alice",
            "Status": "Active",
            "CreateDate": "2013-04-03T18:49:57Z",
            "AccessKeyId": "AKIAI44QH8DHBEXAMPLE"
        }
    ]
}

Passo 1: criar uma segunda chave de acesso

Crie uma nova (segunda) chave de acesso para Alice usando este comando:

aws iam create-access-key --user-name Alice

Isso retorna:

{
    "AccessKey": {
        "UserName": "Alice",
        "Status": "Active",
        "CreateDate": "2013-09-06T17:09:10.384Z",
        "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY",
        "AccessKeyId": “AKIAIOSFODNN7EXAMPLE"
    }
}

Observe que os comandos AWS IAM usam identificadores de chave de acesso exclusivos (AKIDs) para se referir a chaves de acesso individuais. Você pode usar os AKIDs para identificar e gerenciar as chaves de acesso que seu aplicativo usa. A criação da chave é o único momento em que a AWS expõe o segredo associado à chave de acesso em texto não cifrado. Grave e armazene ele com segurança.

 

Agora Alice tem duas chaves de acesso ativas. Observe que a AWS permite apenas duas chaves por usuário. Se você já possui duas chaves de acesso ativas, não poderá criar uma terceira.

Listar as chaves usando o comando list-access-keys mostra ambas as chaves:

aws iam list-access-keys --user-name Alice
{

    "AccessKeyMetadata": [
        {
            "UserName": "Alice",
            "Status": "Active",
            "CreateDate": "2013-04-03T18:49:57Z",
            "AccessKeyId": "AKIAI44QH8DHBEXAMPLE"
        },
        {
            "UserName": "Alice",
            "Status": "Active",
            "CreateDate": "2013-09-06T17:09:10.384Z",
            "AccessKeyId": "AKIAIOSFODNN7EXAMPLE"
        }
    ]
}

Passo 2: Distribua sua chave de acesso para todas as instâncias de seus aplicativos

Depois de criar a nova chave, você irá distribuir e configurar sua aplicação a fazer a transição para usá-la. Antes de passar para a próxima etapa, se certifique de que todas as instâncias de sua aplicação estejam realmente usando a nova chave e que estejam funcionando corretamente.

Passo 3: altere o estado da chave de acesso anterior para inativo.

Desative a chave de acesso antiga usando este comando:

aws iam update-access-key --access-key-id AKIAI44QH8DHBEXAMPLE --status Inactive --user-name Alice

Para verificar se a chave foi desativada, use este comando para listar as chaves ativas e inativas de Alice:

aws iam list-access-keys --user-name Alice

Você verá algo assim:

{
    "AccessKeyMetadata": [
        {
            "UserName": "Alice",
            "Status": "Inactive",
            "CreateDate": "2013-04-03T18:49:57Z",
            "AccessKeyId": "AKIAI44QH8DHBEXAMPLE"
        },
        {
            "UserName": "Alice",
            "Status": "Active",
            "CreateDate": "2013-09-06T17:09:10.384Z",
            "AccessKeyId": "AKIAIOSFODNN7EXAMPLE"
        }
    ]
}

Passo 4: Validar se sua aplicação ainda está funcionando conforme o esperado

Depois que a chave for marcada como inativa, ela não poderá ser usada para autenticar chamadas de API de serviço da AWS; portanto, você deve verificar neste ponto se sua aplicação ainda funciona. É por isso que desativamos a chave de acesso antiga primeiro, se algo der errado, você pode reativar rapidamente a chave de acesso anterior usando o comando aws iam update-access-key.

Passo 5: exclua a chave de acesso inativa

A última etapa é excluir a chave de acesso inativa usando este comando:

aws iam delete-access-key --access-key-id AKIAI44QH8DHBEXAMPLE --user-name Alice

Observe que a ação de exclusão – ao contrário de desabilitar a chave de acesso – é uma operação irreversível. Após a exclusão, a chave de acesso não estará mais disponível. Você pode listar as chaves de acesso de Alice novamente para confirmar que removeu a chave de acesso antiga:

aws iam list-access-keys --user-name Alice

A chave de acesso antiga desapareceu dos resultados:

{
    "AccessKeyMetadata": [
        {
            "UserName": "Alice",
            "Status": "Active",
            "CreateDate": "2013-09-06T17:09:10.384Z",
            "AccessKeyId": "AKIAIOSFODNN7EXAMPLE"
        }
    ]
}

Conclusão:

Se você estiver usando instâncias do EC2, recomendamos o uso de roles para EC2 para rotacionar automaticamente as chaves de acesso. Se você não estiver usando o EC2, sugerimos alternar manualmente as chaves periodicamente como uma prática recomendada de segurança. Para obter mais informações sobre chaves de acesso e procedimentos de rotação, visite a documentação do AWS IAM.

– Ben

 

Este artigo foi traduzido do Blog da AWS em Inglês.

 


Sobre o autor

Ben Brauer, autor do blog.

 

 

 

 

 

Revisores

Ricardo Makino atualmente é arquiteto de soluções na AWS apoiando os clientes de governo em sua jornada para a nuvem, possui mais de 20 anos de experiência em TI onde já passou pelos setores de governo, educação e pesquisa atuando como administrador de redes e sistemas, analista de segurança da informação, pesquisador de segurança da informação e especialista em nuvem, e esteve envolvido em diversos projetos de tecnologias de orquestração de infraestrutura e plataforma, otimização de aplicações, migrações, segurança de redes e aplicações e outros.

 

 

 

 

Carolina Carneiro atua como Technical Trainer na AWS. Ministra treinamentos de Segurança, Machine Learning, Arquitetura, Operação de Sistemas, dentre outros. Iniciou a sua jornada na nuvem da AWS em 2020 fazendo parte do Programa Tech U, um programa de capacitação na nuvem da AWS. Após o Tech U, iniciou a sua jornada no time de Training and Certification LATAM, o qual teve a oportunidade de se aprofundar em tópicos como Segurança e Machine Learning. Hoje busca ensinar AWS de maneira acessível e engajada.