Vídeo: [Caso de Sucesso] Diebold GAS na AWS | Segurança, escalabilidade e agilidade 2024
Aqui está uma pergunta óbvia ao lidar com proxies de terceiros: se essas ferramentas atuarem em seu nome, como a Amazon Web Services (AWS) sabe que a pessoa em cujo nome eles estão agindo é de fato você? Em outras palavras, como a AWS pode autenticar sua identidade para garantir que os comandos que recebe são de você?
Na verdade, a mesma questão é válida mesmo se você interage diretamente com a AWS API. Como a AWS pode validar sua identidade para garantir que ela execute comandos somente para você?
Uma maneira, é claro, é que você inclua o nome de usuário e a senha da sua conta nas chamadas da API. Embora alguns provedores da nuvem tenham essa abordagem, a Amazon não.
Em vez de confiar em um nome de usuário e senha, ele depende de outros dois identificadores para autenticar suas chamadas de serviço API: a chave de acesso e a chave de acesso secreto. Ele usa essas chaves em chamadas de serviço para implementar a segurança de forma muito mais segura do que usar apenas seu nome de usuário e senha.
Então, como isso funciona? Quando você se inscreve para uma conta com a AWS, você tem a oportunidade de criar uma chave de acesso e ter uma chave secreta de acesso enviada para você. Cada um é uma longa seqüência de caracteres aleatórios, e a chave de acesso secreto é o mais longo dos dois. Quando você baixar a chave de acesso secreto, você deve armazená-la em algum lugar muito seguro porque é a chave (desculpa - pontuação ruim) para implementar chamadas de serviço seguras.
Depois de fazer isso, você e Amazon têm uma cópia da chave de acesso e a chave de acesso secreta. A retenção de uma cópia da chave de acesso secreto é crucial porque é usada para criptografar informações enviadas de um lado a outro entre você e a AWS, e se você não possui a Chave de Acesso Secreto, não pode executar nenhuma chamada de serviço no AWS.
A maneira como as duas chaves são usadas é conceitualmente simples, embora um pouco desafiadora em detalhes.
Essencialmente, para cada chamada de serviço que deseja realizar, você (ou uma ferramenta que opera em seu nome) faça o seguinte:
-
Crie a carga útil da chamada de serviço.
Este é o dado que você precisa enviar para o AWS. Pode ser um objeto que deseja armazenar em S3 ou o identificador de imagem de uma imagem que deseja iniciar. (Você também irá anexar outras informações à carga útil, mas porque elas variam de acordo com as especificações da chamada de serviço, elas não estão listadas aqui. Uma peça de dados é a hora atual.)
-
Criptografar a carga útil usando a chave de acesso secreta.
Fazer isso garante que ninguém possa examinar a carga e descobrir o que está nele.
-
Assine digitalmente a carga útil criptografada adicionando a chave de acesso secreto à carga útil criptografada e executando um processo de assinatura digital usando a chave de acesso secreta.
As chaves de acesso secreto são mais longas e mais aleatórias do que as senhas de usuário típicas; A longa chave secreta de acesso torna a criptografia executada com ela mais segura do que seria se fosse executada com uma senha de usuário típica.
-
Envie a carga total criptografada, juntamente com a sua chave de acesso, para a AWS através de uma chamada de serviço.
A Amazon usa a chave de acesso para procurar sua chave de acesso secreta, que ela usa para descriptografar a carga útil. Se a carga útil descodificada representa um texto legível que pode ser executado, o AWS executa a chamada de serviço. Caso contrário, conclui que algo está errado com a chamada de serviço (talvez seja chamado por um ator malévolo) e não executa a chamada de serviço.
Além da criptografia que acabamos de descrever, a AWS possui outros dois métodos para garantir a legitimidade da chamada de serviço:
-
A primeira baseia-se nas informações de data incluídas com a carga útil da chamada de serviço, que ela usa para determinar se o tempo associado à realização da chamada de serviço é apropriado; se a data na chamada de serviço for muito diferente do que deveria ser (muito mais cedo ou posterior à hora atual, em outras palavras), a AWS conclui que não é uma chamada de serviço legítimo e descarta-a.
-
A segunda medida de segurança adicional envolve uma soma de checagem que você calcula para a carga útil. (A checksum é um número que representa o conteúdo de uma mensagem.) AWS calcula uma soma de verificação para a carga útil; Se a soma de verificação não concorda com a sua, ela não permite a chamada de serviço e não a executa.
Esta abordagem de soma de verificação garante que ninguém manipule o conteúdo de uma mensagem e impede um ator malévolo de interceptar uma chamada de serviço legítimo e mudá-la para executar uma ação inaceitável. Se alguém testar a mensagem, quando a AWS calcula uma soma de verificação, essa soma de verificação não corresponde mais àquela incluída na mensagem, e a AWS se recusa a executar a chamada de serviço.
Se, como a maioria dos usuários da AWS, você usa um método de proxy para interagir com o AWS - o console de gerenciamento do AWS, uma biblioteca de idiomas ou uma ferramenta de terceiros - você precisa fornecer sua chave de acesso e chave de acesso secreto ao proxy. Quando o proxy executa chamadas de serviço AWS em seu nome, ele inclui a chave de acesso na chamada e usa a chave de acesso secreta para executar criptografia de carga útil.
Devido ao papel crítico que essas chaves atendem no AWS, você deve compartilhar apenas com entidades nas quais você confia. Se você deseja experimentar uma nova ferramenta de terceiros e você não sabe muito sobre a empresa, configure uma conta de teste AWS para o teste, em vez de usar as credenciais de sua conta de produção AWS.
Dessa forma, se você decidir não avançar com a ferramenta, pode soltá-la, encerrar a conta AWS de teste e avançar, sem preocupações sobre potenciais vulnerabilidades de segurança em suas principais contas de produção. Claro, você sempre pode criar novas chaves de acesso e chaves de acesso secretas, mas usar suas chaves de produção para testes e, em seguida, alterar as chaves cria muito trabalho, porque você precisa atualizar todos os locais que fazem referência às suas chaves existentes.
Se você é como muitos outros usuários do AWS, você usará várias ferramentas e bibliotecas, e voltar para elas para atualizar suas chaves é uma dor. Você está melhor usando contas de não produção para testar novas ferramentas.