Proteger chaves de acesso - AWS Identity and Access Management

Proteger chaves de acesso

Qualquer pessoa que tem suas chaves de acesso possui o mesmo nível de acesso a seus recursos da AWS que você tiver. Consequentemente, a AWS executa vários procedimentos para proteger suas chaves de acesso e, de acordo com o nosso modelo de responsabilidade compartilhada, você deve fazer o mesmo.

Expanda as seções a seguir para obter orientação sobre como proteger suas chaves de acesso.

nota

Sua organização pode ter requisitos e políticas de segurança diferentes dos descritos neste tópico. As sugestões fornecidas aqui devem ser usadas como diretrizes gerais.

Uma das melhores maneiras de proteger a sua conta é não ter chaves de acesso para seu Usuário raiz da conta da AWS. A não ser que você tenha que ter chaves de acesso do usuário raiz (algo que é raro), é melhor não criá-las. Em vez disso, crie um usuário administrativo AWS IAM Identity Center para as tarefas administrativas diárias. Para obter informações sobre como criar um usuário administrativo no Centro de Identidade do IAM, consulte Introdução no Guia do usuário do Centro de Identidade do IAM.

Se você já tiver uma chave de acesso para o usuário raiz, recomendamos o seguinte: encontre lugares em suas aplicações onde você usa chaves de acesso (se houver) e substitua a chave de acesso do usuário raiz por chaves de acesso de usuário do IAM. Em seguida, desabilite e remova as chaves de acesso do usuário raiz. Para obter mais informações sobre como atualizar as chaves de acesso, consulte Atualizar chaves de acesso

Em muitos casos, você não precisa de chaves de acesso de longo prazo que nunca expiram (como há no caso de um usuário do IAM). Em vez disso, você pode criar perfis do IAM e gerar credenciais de segurança temporárias. As credenciais de segurança temporárias consistem em um ID da chave de acesso e uma chave de acesso secreta, mas elas também incluem um token de segurança que indica quando as credenciais expiram.

As chaves de acesso de longo prazo, como aquelas associadas a contas de usuários do IAM e ao usuário raiz, permanecem válidas até serem revogadas manualmente. No entanto, as credenciais de segurança temporárias obtidas por meio de perfis do IAM e outros recursos do AWS Security Token Service expiram após um curto período. Use credenciais de segurança temporárias para ajudar a reduzir os riscos em caso de credenciais que sejam expostas acidentalmente.

Use um perfil do IAM e credenciais de segurança temporárias nestes cenários:

  • Você tem uma aplicação ou scripts da AWS CLI em execução em uma instância do Amazon EC2. Não use chaves de acesso diretamente em sua aplicação. Não passe uma chave de acesso para a aplicação, não incorpore-a na aplicação nem deixe que a aplicação leia chaves de acesso de nenhuma fonte. Em vez disso, defina um perfil do IAM que tenha as permissões apropriadas para sua aplicação e execute a instância do Amazon Elastic Compute Cloud (Amazon EC2) com perfis para o EC2. Fazer isso associará um perfil do IAM à instância do Amazon EC2. Essa prática também permite que a aplicação obtenha credenciais de segurança temporárias que ela pode, por sua vez, usar para fazer chamadas programáticas para a AWS. Os SDKs da AWS e a AWS Command Line Interface (AWS CLI) podem obter credenciais temporárias do perfil automaticamente.

  • Você precisa conceder acesso entre contas. Use um perfil do IAM para estabelecer confiança entre contas e, em seguida, conceda aos usuários em uma conta permissões limitadas para acessar a conta confiável. Para ter mais informações, consulte Tutorial do IAM: Delegar acesso entre contas da AWS usando funções do IAM.

  • Você tem um aplicativo móvel. Não integre chaves de acesso à aplicação, mesmo em armazenamento criptografado. Em vez disso, use o Amazon Cognito para gerenciar a identidade do usuário na sua aplicação. Esse serviço permite autenticar os usuários usando login com o Amazon, Facebook, Google ou qualquer provedor de identidade compatível com o OpenID Connect (OIDC). Em seguida, é possível usar o provedor de credenciais do Amazon Cognito para gerenciar credenciais que sua aplicação use para fazer solicitações à AWS.

  • Você deseja centralizar-se na AWS e sua organização tem suporte para SAML 2.0. Se você trabalha para uma organização que tenha um provedor de identidade compatível com o SAML 2.0, configure o provedor para usar o SAML. É possível usar o SAML para trocar informações de autenticação com a AWS e obter novamente um conjunto de credenciais de segurança temporárias. Para ter mais informações, consulte Federação SAML 2.0.

  • Você deseja se federar na AWS e sua organização tem um armazenamento de identidades on-premises. Se os usuários podem autenticar dentro da sua organização, você poderá escrever um aplicativo que emite a eles credenciais de segurança temporárias para acesso a recursos da AWS. Para ter mais informações, consulte Habilitar o acesso do intermediador de identidades personalizado ao console da AWS.

nota

Você está usando uma instância do Amazon EC2 com uma aplicação que precisa de acesso programático a recursos da AWS? Se sim, use perfis do IAM para EC2.

Se for necessário criar chaves de acesso para acesso programático à AWS, crie-as para usuários do IAM, concedendo aos usuários somente as permissões necessárias.

Observe estas precauções para ajudar a proteger as chaves de acesso de usuários do IAM:

  • Não incorpore chaves de acesso diretamente no código. Os SDKs da AWS e as Ferramentas da linha de comando da AWS permitem colocar chaves de acesso em pontos conhecidos para que você não precise mantê-las no código.

    Coloque chaves de acesso em um dos seguintes locais:

    • O arquivo de credenciais da AWS. Os SDKs da AWS e a AWS CLI usam automaticamente as credenciais que você armazena no arquivo de credenciais da AWS.

      Para obter informações sobre como usar o arquivo de credenciais da AWS, consulte a documentação do SDK. Os exemplos incluem Configurar credenciais e região da AWS no Guia do desenvolvedor do AWS SDK for Java e Arquivos de configuração e credenciais no Guia do usuário da AWS Command Line Interface.

      Para armazenar credenciais para o AWS SDK for .NET e o AWS Tools for Windows PowerShell, recomendamos que você use a SDK Store. Para obter mais informações, consulte Utilização da SDK Store no Guia do desenvolvedor do AWS SDK for .NET.

    • Variáveis de ambiente. Em um sistema multicliente, escolha as variáveis de ambiente do usuário, não as variáveis de ambiente do sistema.

      Para obter mais informações sobre o uso de variáveis de ambiente para armazenar credenciais, consulte Variáveis de ambiente no Guia do usuário da AWS Command Line Interface.

  • Use chaves de acesso diferentes para aplicativos diferentes. Faça isso para que seja possível isolar as permissões e revogar as chaves de acesso para aplicações específicas caso elas sejam expostas. Ter chaves de acesso separadas para diferentes aplicativos também gera entradas distintas em arquivos de log do AWS CloudTrail. Essa configuração facilita a determinação de qual aplicativo executou ações específicas.

  • Atualize as chaves de acesso quando necessário. Se houver risco de comprometimento da chave de acesso, atualize a chave de acesso e exclua a chave de acesso anterior. Para obter detalhes, consulte Atualizar chaves de acesso

  • Remover chaves de acesso não utilizadas. Se um usuário sair da sua organização, remova o usuário do IAM correspondente para que ele não possa mais acessar seus recursos. Para saber quando uma chave de acesso foi usada pela última vez, use a API GetAccessKeyLastUsed (comando da AWS CLI: aws iam get-access-key-last-used).

  • Use credenciais temporárias e configure a autenticação multifator para suas operações de API mais confidenciais. Com as políticas do IAM, você pode especificar quais operações de API um usuário tem permissão para chamar. Em alguns casos, talvez você deseje obter segurança adicional para exigir que os usuários sejam autenticados com a MFA da AWS antes que eles tenham permissão para executar ações particularmente confidenciais. Por exemplo, você pode ter uma política que permita que um usuário execute as ações RunInstances, DescribeInstances e StopInstances do Amazon EC2. Mas você pode restringir uma ação destrutiva, tal como TerminateInstances e garantir que os usuários possam executar essa ação apenas se eles autenticarem com um dispositivo MFA da AWS. Para ter mais informações, consulte Acesso seguro à API com a MFA.

Você pode acessar um conjunto limitado de serviços e recursos da AWS usando o aplicativo móvel AWS. O aplicativo móvel ajuda a oferecer suporte à resposta a incidentes em trânsito. Para obter mais informações e fazer download do aplicativo, consulte Aplicativo móvel do console da AWS.

Você pode fazer login no aplicativo móvel usando sua senha do console ou suas chaves de acesso. Como prática recomendada, não use chaves de acesso de usuário raiz. Em vez disso, recomendamos enfaticamente que, além de utilizar uma senha ou um acesso biométrico no seu dispositivo móvel, criar um usuário do IAM especificamente para gerenciar os recursos da AWS usando a aplicação móvel. Caso você perca dispositivo móvel, poderá remover o acesso do usuário do IAM.

Para fazer login usando chaves de acesso (aplicativo móvel)
  1. Abra o aplicativo no dispositivo móvel.

  2. Se esta for a primeira vez que você adiciona uma identidade ao dispositivo, escolha Add an identity (Adicionar uma identidade) e selecione Access keys (Chaves de acesso).

    Se você já fez login usando outra identidade, escolha o ícone de menu e selecione Switch identity (Alternar identidade). Depois escolha Sign in as a different identity (Fazer login como uma identidade diferente) e Access keys (Chaves de acesso).

  3. Na página Access keys (Chaves de acesso), insira suas informações:

    • ID da chave de acesso: insira o ID da sua chave de acesso.

    • Chave de acesso secreta: insira sua chave de acesso secreta.

    • Nome da identidade: insira o nome da identidade que aparecerá na aplicação móvel. Ele não precisa ser igual ao seu nome de usuário do IAM.

    • PIN de identidade: crie um número de identificação pessoal (PIN) que você usará para futuros logins.

      nota

      Se habilitar a biometria para o aplicativo móvel da AWS, você será solicitado a usar sua impressão digital ou o reconhecimento facial para verificação em vez do PIN. Se a biometria falhar, você poderá ser solicitado a fornecer o PIN.

  4. Escolha Verify and add keys (Verificar e adicionar chaves).

    Agora você pode acessar um conjunto selecionado dos seus recursos usando o aplicativo móvel.

Os tópicos a seguir fornecem diretrizes para a configuração dos SDKs da AWS e da AWS CLI para o uso das chaves de acesso.

Fazer auditoria de chaves de acesso

Você pode revisar as chaves de acesso da AWS em seu código para determinar se as chaves são de uma conta que você possui. Você pode transmitir um ID da chave de acesso usando o comando aws sts get-access-key-info da AWS CLI ou a operação de API GetAccessKeyInfo da AWS.

As operações de API da AWS e da AWS CLI retornam o ID da Conta da AWS à qual a chave de acesso pertence. Os IDs de chave de acesso que começam com AKIA são credenciais de longo prazo para um usuário do IAM ou um Usuário raiz da conta da AWS. Os IDs de chave de acesso que começam com ASIA são credenciais temporárias que são criadas usando operações do AWS STS. Se a conta na resposta pertencer a você, você poderá fazer login como usuário raiz e revisar suas chaves de acesso de usuário raiz. Em seguida, você pode obter um relatório de credenciais para saber qual usuário do IAM é o proprietário das chaves. Para saber quem solicitou as credenciais temporárias para uma chave de acesso ASIA, visualize os eventos do AWS STS nos logs do CloudTrail.

Por motivos de segurança, você pode revisar logs do AWS CloudTrail para saber quem executou uma ação na AWS. Você pode usar a chave de condição sts:SourceIdentity na política de confiança da função para exigir que os usuários especifiquem uma identidade quando assumirem uma função. Por exemplo, você pode exigir que os usuários do IAM especifiquem seu próprio nome de usuário como a identidade-fonte. Isso pode ajudar você a determinar qual usuário executou uma ação específica na AWS. Para ter mais informações, consulte sts:SourceIdentity.

Essa operação não indica o estado da chave de acesso. A chave pode estar ativa, inativa ou excluída. As chaves ativas podem não ter permissões para executar uma operação. Fornecer uma chave de acesso excluída pode retornar um erro informando que a chave não existe.