fbpx

Segurança nos Serviços de Aplicação AWS

Compartilhar no facebook
Compartilhar no linkedin
Compartilhar no twitter
Compartilhar no whatsapp
Compartilhar no telegram

A AWS oferece uma variedade de serviços gerenciados para uso com seus aplicativos, incluindo serviços que fornecem fluxo de aplicativos, enfileiramento, notificação por push, entrega de email, pesquisa e transcodificação.

 

Segurança do Amazon Simple Queue Service (Amazon SQS)

 

O Amazon SQS é um serviço escalável e altamente confiável de enfileiramento de mensagens que permite a comunicação assíncrona baseada em mensagens entre os componentes distribuídos de um aplicativo. Os componentes podem ser computadores ou instâncias do Amazon EC2 ou uma combinação de ambos.

Com o Amazon SQS, você pode enviar qualquer número de mensagens para uma fila do Amazon SQS a qualquer momento a partir de qualquer componente. As mensagens podem ser recuperadas do mesmo componente ou de outro, imediatamente ou posteriormente (em 14 dias).

As mensagens são altamente duráveis; cada mensagem é armazenada persistentemente em filas altamente disponíveis e altamente confiáveis. Vários processos podem ler / gravar de / para uma fila do Amazon SQS ao mesmo tempo sem interferir um no outro.

 

Acesso de dados

 

O acesso ao Amazon SQS é concedido com base em uma conta da AWS ou em um usuário criado com o AWS IAM. Depois de autenticada, a conta da AWS tem acesso total a todas as operações do usuário. Um usuário do IAM, no entanto, só tem acesso às operações e filas para as quais foram acessos concedidos via política.

Por padrão, o acesso a cada fila individual é restrito à conta da AWS que o criou. No entanto, você pode permitir outro acesso a uma fila, usando uma política gerada pelo Amazon SQS ou uma política que você escreve.

 

Criptografia

O Amazon SQS pode ser acessado por terminais criptografados em SSL. Os terminais criptografados são acessíveis pela Internet e pelo Amazon EC2. Os dados armazenados no Amazon SQS não são criptografados pela AWS; no entanto, o usuário pode criptografar os dados antes de fazer o upload para o Amazon SQS, desde que o aplicativo que usa a fila tenha um meio de descriptografar a mensagem quando ela for recuperada.

A criptografia de mensagens antes de enviá-las ao Amazon SQS ajuda a proteger contra o acesso a dados confidenciais de clientes por pessoas não autorizadas, incluindo a AWS.

 

Segurança do Amazon Simple Notification Service (Amazon SNS)

 

O Amazon SNS é um serviço da Web que facilita a configuração, a operação e o envio de notificações da nuvem. Ele fornece aos desenvolvedores um recurso altamente escalável, flexível e econômico para publicar mensagens de um aplicativo e entregá-las imediatamente para assinantes ou outros aplicativos.

O Amazon SNS fornece uma interface simples de serviços da web que pode ser usado para criar tópicos sobre os quais os clientes desejam notificar aplicativos (ou pessoas), inscrever clientes nesses tópicos, publicar mensagens e enviar essas mensagens por protocolo de escolha dos clientes (por exemplo, HTTP / HTTPS, email).

O Amazon SNS entrega notificações aos clientes usando um mecanismo de envio que elimina a necessidade de verificar ou buscar novas informações e atualizações periodicamente.

O Amazon SNS pode ser aproveitado para criar fluxos de trabalho e aplicativos de mensagens altamente confiáveis ​​e controlados por eventos, sem a necessidade de gerenciamento complexo de aplicativos e middleware.

Os usos potenciais para o Amazon SNS incluem aplicativos de monitoramento, sistemas de fluxo de trabalho, atualizações de informações sensíveis ao tempo, aplicativos móveis e muitos outros.

 

Acesso de dados

O Amazon SNS fornece mecanismos de controle de acesso para que tópicos e mensagens sejam protegidos contra acesso não autorizado. Os proprietários do tópico podem definir políticas para um tópico que restrinja quem pode publicar ou assinar um tópico.

Além disso, os proprietários do tópico podem criptografar a transmissão especificando que o mecanismo de entrega deve ser HTTPS.

O acesso ao Amazon SNS é concedido com base em uma conta da AWS ou em um usuário criado com o AWS IAM. Depois de autenticada, a conta da AWS tem acesso total a todas as operações do usuário.

Um usuário do IAM, no entanto, só tem acesso às operações e tópicos aos quais eles receberam acesso via política.

Por padrão, o acesso a cada tópico individual é restrito à conta da AWS que o criou. No entanto, você pode permitir outro acesso ao Amazon SNS, usando uma política gerada pelo Amazon SNS ou uma política que você escreve.

 

Serviços de análise

A AWS fornece serviços de análise baseados na nuvem para ajudá-lo a processar e analisar qualquer volume de dados, independentemente de sua necessidade de clusters gerenciados do Hadoop, dados de streaming em tempo real, data warehousing em escala de petabytes ou orquestração.

 

Segurança do Amazon Elastic MapReduce (Amazon EMR)

O Amazon Elastic MapReduce (Amazon EMR) é um serviço da web gerenciado que você pode usar para executar clusters do Hadoop que processam grandes quantidades de dados, distribuindo o trabalho e os dados entre vários servidores. Ele usa uma versão aprimorada da estrutura do Apache Hadoop em execução na infraestrutura de escala da Web do Amazon EC2 e Amazon S3.

Você simplesmente carrega seus dados de entrada e um aplicativo de processamento de dados no Amazon S3. O Amazon EMR inicia o número de instâncias do Amazon EC2 que você especificar. O serviço inicia a execução do fluxo de trabalho enquanto puxa os dados de entrada do Amazon S3 para as instâncias iniciadas do Amazon EC2.

Após a conclusão do fluxo de trabalho, o Amazon EMR transfere os dados de saída para o Amazon S3, onde você pode recuperá-los ou usá-los como entrada em outro fluxo de trabalho.

Ao iniciar fluxos de trabalho em seu nome, o Amazon EMR configura dois grupos de segurança do Amazon EC2: um para os nós principais e outro para os escravos. O grupo de segurança principal possui uma porta aberta para comunicação com o serviço. Ele também possui a porta SSH aberta para permitir o SSH nas instâncias usando a chave especificada na inicialização.

Os escravos iniciam em um grupo de segurança separado, que permite apenas a interação com a instância principal. Por padrão, os dois grupos de segurança são configurados para não permitir o acesso de fontes externas, incluindo instâncias do Amazon EC2 pertencentes a outros clientes. Como esses grupos são de segurança na sua conta, você pode reconfigurá-los usando as ferramentas ou o painel padrão do EC2. Para proteger os conjuntos de dados de entrada e saída do cliente, o Amazon EMR transfere dados de e para o Amazon S3 usando SSL.

O Amazon EMR fornece várias maneiras de controlar o acesso aos recursos do seu cluster. Você pode usar o AWS IAM para criar contas e funções de usuário e configurar permissões que controlam quais recursos da AWS esses usuários e funções podem acessar. Ao iniciar um cluster, você pode associar um par de chaves do Amazon EC2 ao cluster, que pode ser usado quando você se conecta ao cluster usando SSH.

Você também pode definir permissões que permitam usuários diferentes do padrão de usuário do Hadoop para enviar tarefas ao seu cluster. Por padrão, se um usuário do IAM iniciar um cluster, esse cluster estará oculto de outros usuários do IAM a conta da AWS.

Essa filtragem ocorre em todas as interfaces do Amazon EMR (console de gerenciamento da AWS, CLI, API e SDKs) e ajuda a impedir que os usuários do IAM acessem e alterem inadvertidamente os clusters criados por outros usuários do IAM.

Para uma camada adicional de proteção, você pode iniciar as instâncias do Amazon EC2 do cluster do Amazon EMR em um Amazon VPC, o que é como iniciá-lo em uma sub-rede privada.

Isso permite que você controle o acesso a toda a sub-rede. Você também pode iniciar o cluster em um Amazon VPC e permitir que o cluster acesse recursos em sua rede interna usando uma conexão VPN.

Você pode criptografar os dados de entrada antes de carregá-los no Amazon S3 usando qualquer ferramenta comum de criptografia de dados. Se você criptografar os dados antes do upload, precisará adicionar uma etapa de descriptografia ao início do seu fluxo de trabalho quando o Amazon EMR buscar os dados do Amazon S3.

 

Segurança do Amazon Kinesis

O Amazon Kinesis é um serviço gerenciado projetado para lidar com o streaming em tempo real de big data. Ele pode aceitar qualquer quantidade de dados, de qualquer número de fontes, aumentando e diminuindo conforme necessário.

Você pode usar o Amazon Kinesis em situações que exigem ingestão e processamento em larga escala de dados em tempo real, como logs de servidor, mídias sociais ou feeds de dados de mercado e dados de fluxo de cliques na Web.

Os aplicativos leem e gravam registros de dados no Amazon Kinesis em fluxos. Você pode criar qualquer número de fluxos do Amazon Kinesis para capturar, armazenar e transportar dados.

Você pode controlar o acesso lógico aos recursos e funções de gerenciamento do Amazon Kinesis criando usuários na sua conta da AWS usando o AWS IAM e controlando quais operações do Amazon Kinesis esses usuários têm permissão para executar.

Para facilitar a execução de aplicativos produtores ou consumidores em uma instância do Amazon EC2, você pode configurar essa instância com uma função do IAM. Dessa forma, as credenciais da AWS que refletem as permissões associadas à função do IAM são disponibilizadas para aplicativos na instância, o que significa que você não precisa usar suas credenciais de segurança da AWS a longo prazo.

As funções têm o benefício adicional de fornecer credenciais temporárias que expiram dentro de um curto período de tempo, o que adiciona uma medida adicional de proteção.

A API Amazon Kinesis só pode ser acessada por meio de um ponto de extremidade criptografado por SSL (kinesis.us-east-1.amazonaws.com) para ajudar a garantir a transmissão segura de seus dados para a AWS. Você deve se conectar a esse terminal para acessar o Amazon Kinesis, mas poderá usar a API para direcionar o Amazon Kinesis para criar um fluxo em qualquer região da AWS.

 

Serviços de implantação e gerenciamento

A AWS fornece uma variedade de ferramentas para ajudar na implantação e gerenciamento de seus aplicativos. Isso inclui serviços que permitem criar contas de usuário individuais com credenciais para acesso aos serviços da AWS.

Ele também inclui serviços para criar e atualizar pilhas de recursos da AWS, implantar aplicativos nesses recursos e monitorar a integridade desses recursos da AWS. Outras ferramentas ajudam a gerenciar chaves criptográficas usando HSMs e registrar a atividade da API da AWS para fins de segurança e conformidade.

 

Segurança do AWS Identity and Access Management (IAM)

O AWS IAM permite criar vários usuários e gerenciar as permissões para cada um desses usuários na sua conta da AWS. Um usuário é uma identidade (dentro de uma conta da AWS) com credenciais de segurança exclusivas que podem ser usadas para acessar os serviços em nuvem da AWS.

O IAM elimina a necessidade de compartilhar senhas ou chaves e facilita a habilitação ou desabilitação do acesso de um usuário, conforme apropriado.

O AWS IAM permite implementar práticas recomendadas de segurança, como privilégios mínimos, concedendo credenciais exclusivas a todos os usuários da sua conta da AWS e concedendo apenas permissão para acessar os serviços e recursos da AWS Cloud necessários para que os usuários realizem suas tarefas.

O IAM é seguro por padrão; novos usuários não têm acesso à AWS até que as permissões sejam concedidas explicitamente.

O AWS IAM também está integrado ao AWS Marketplace, para que você possa controlar quem em sua organização pode se inscrever no software e serviços oferecidos no AWS Marketplace.

Como a assinatura de um determinado software no AWS Marketplace inicia uma instância do Amazon EC2 para executar o software, esse é um recurso importante de controle de acesso.

O uso do IAM para controlar o acesso ao AWS Marketplace também permite que os proprietários da conta da AWS tenham controle refinado sobre o uso e custos de software. O AWS IAM permite minimizar o uso das credenciais da sua conta da AWS.

Depois de criar contas de usuário do IAM, todas as interações com os serviços e recursos da AWS Cloud devem ocorrer com as credenciais de segurança do usuário do IAM.

 

Funções

Uma função do IAM usa credenciais de segurança temporárias para permitir que você delegue o acesso a usuários ou serviços que normalmente não têm acesso aos seus recursos da AWS.

Uma função é um conjunto de permissões para acessar recursos específicos da AWS, mas essas permissões não estão vinculadas a um usuário ou grupo específico do IAM. Uma entidade autorizada (por exemplo, usuário móvel ou instância do Amazon EC2) assume uma função e recebe credenciais de segurança temporárias para autenticação nos recursos definidos na função.

As credenciais de segurança temporárias fornecem segurança aprimorada devido à sua curta vida útil (a expiração padrão é de 12 horas) e ao fato de que elas não podem ser reutilizadas depois que expiram. Isso pode ser particularmente útil ao fornecer acesso limitado e controlado em determinadas situações:

 

Acesso de usuário federado (não pertencente à AWS)

Usuários federados são usuários (ou aplicativos) que não possuem contas da AWS. Com as funções, você pode conceder acesso a seus recursos da AWS por um período limitado.

Isso é útil se você tiver usuários que não são da AWS e que podem se autenticar com um serviço externo, como Microsoft Active Directory, LDAP (Lightweight Directory Access Protocol) ou Kerberos.

As credenciais temporárias da AWS usadas com as funções fornecem federação de identidade entre a AWS e seus usuários não pertencentes à AWS em seu sistema de identidade e autorização corporativa.

 

Linguagem de Marcação de Asserção de Segurança (SAML) 2.0

Se sua organização oferecer suporte ao SAML 2.0, você poderá criar confiança entre sua organização como um provedor de identidade (IdP) e outras organizações como provedores de serviços.

Na AWS, você pode configurar a AWS como o provedor de serviços e usar o SAML para fornecer aos usuários SSO federado (SSO) no AWS Management Console ou obter acesso federado para chamar as APIs da AWS.

As funções também são úteis se você criar um aplicativo móvel ou baseado na Web que acesse os recursos da AWS. Os recursos da AWS exigem credenciais de segurança para solicitações programáticas; no entanto, você não deve incorporar credenciais de segurança de longo prazo em seu aplicativo, pois elas são acessíveis aos usuários do aplicativo e podem ser difíceis de alternar.

Em vez disso, você pode permitir que os usuários façam login no seu aplicativo usando o Login com Amazon, Facebook ou Google e, em seguida, use as informações de autenticação para assumir uma função e obter credenciais de segurança temporárias.

 

Acesso entre contas

Para organizações que usam várias contas da AWS para gerenciar seus recursos, você pode configurar funções para fornecer aos usuários que têm permissões em uma conta para acessar recursos em outra conta.

Para organizações que possuem funcionários que raramente precisam acessar recursos em outra conta, o uso de funções ajuda a garantir que as credenciais sejam fornecidas temporariamente e somente quando necessário.

 

Aplicativos em execução em instâncias EC2 que precisam acessar os recursos da AWS

Se um aplicativo é executado em uma instância do Amazon EC2 e precisa fazer solicitações de recursos da AWS, como buckets do Amazon S3 ou uma tabela do DynamoDB, ele deve ter credenciais de segurança. Usando funções em vez de criar contas individuais do IAM para cada aplicativo em cada instância, pode economizar tempo significativo para os clientes que gerenciam um grande número de instâncias ou uma frota de escala elástica usando o AWS Auto Scaling.

As credenciais temporárias incluem um token de segurança, um ID da chave de acesso e uma chave de acesso secreta. Para conceder ao usuário acesso a determinados recursos, você distribui as credenciais de segurança temporárias ao usuário a quem você está concedendo acesso temporário. Quando o usuário faz chamadas para seus recursos, ele passa o token e o ID da chave de acesso e assina a solicitação com a Chave de acesso secreta. O token não funcionará com chaves de acesso diferentes.

O uso de credenciais temporárias fornece proteção adicional para você, porque você não precisa gerenciar ou distribuir credenciais de longo prazo para usuários temporários. Além disso, as credenciais temporárias são carregadas automaticamente na instância de destino, para que você não precise incorporá-las em algum lugar inseguro como o seu código.

As credenciais temporárias são giradas ou alteradas automaticamente várias vezes ao dia, sem nenhuma ação da sua parte, e são armazenadas com segurança por padrão.

 

Serviços Móveis

Os serviços móveis da AWS facilitam a criação, o envio, a execução, o monitoramento, a otimização e o dimensionamento de aplicativos para dispositivos móveis baseados na nuvem.

Esses serviços também ajudam a autenticar usuários no seu aplicativo móvel, sincronizar dados e coletar e analisar o uso do aplicativo.

Amazon Cognito Security

O Amazon Cognito fornece serviços de identidade e sincronização para aplicativos móveis e baseados na Web. Ele simplifica a tarefa de autenticar usuários e armazenar, gerenciar e sincronizar seus dados em vários dispositivos, plataformas e aplicativos.

Ele fornece credenciais temporárias com privilégios limitados para usuários autenticados e não autenticados sem precisar gerenciar nenhuma infraestrutura de back-end.

O Amazon Cognito trabalha com provedores de identidade conhecidos como Google, Facebook e Amazon para autenticar usuários finais de seus aplicativos móveis e da Web. Você pode tirar proveito dos recursos de identificação e autorização fornecidos por esses serviços, em vez de precisar criar e manter seus próprios.

Seu aplicativo se autentica com um desses provedores de identidade usando o SDK do provedor. Depois que o usuário final é autenticado com o fornecedor, um token OAuth ou OpenID Connect retornado do provedor é passado pelo seu aplicativo para o Amazon Cognito, que retorna um novo ID do Amazon Cognito para o usuário e um conjunto de credenciais temporárias da AWS com privilégios limitados.

Para começar a usar o Amazon Cognito, você cria um pool de identidades por meio do console do Amazon Cognito. O pool de identidades é um armazenamento de informações de identidade do usuário específicas da sua conta da AWS.

Durante a criação do pool de identidades, você será solicitado a criar uma nova função do IAM ou escolher uma existente para seus usuários finais. Uma função do IAM é um conjunto de permissões para acessar recursos específicos da AWS, mas essas permissões não estão vinculadas a um usuário ou grupo específico do IAM.

Uma entidade autorizada (por exemplo, usuário móvel, instância do Amazon EC2) assume uma função e recebe credenciais de segurança temporárias para autenticação nos recursos da AWS definidos na função.

As credenciais de segurança temporárias fornecem segurança aprimorada devido à sua curta vida útil (a expiração padrão é de 12 horas) e ao fato de que elas não podem ser reutilizadas depois que expiram.

A função que você seleciona afeta os serviços da AWS Cloud que seus usuários finais poderão acessar com credenciais temporárias. Por padrão, o Amazon Cognito cria uma nova função com permissões limitadas; os usuários finais têm acesso apenas ao serviço Amazon Cognito Sync e Amazon Mobile Analytics. Se seu aplicativo precisar acessar outros recursos da AWS, como Amazon S3 ou Amazon DynamoDB, você poderá modificar suas funções diretamente no console do IAM.

Com o Amazon Cognito, não há necessidade de criar contas individuais da AWS ou mesmo contas do IAM para todos os usuários finais de aplicativos da Web / dispositivos móveis que precisarão acessar seus recursos da AWS.

Em conjunto com as funções do IAM, os usuários móveis podem acessar com segurança a recursos da AWS e recursos de aplicativos e até mesmo salvar dados na nuvem da AWS sem precisar criar uma conta ou fazer login.

Se optarem por criar uma conta ou fazer login posteriormente, o Amazon Cognito mesclará informações de dados e identificação.

Como o Amazon Cognito armazena dados localmente e também no serviço, seus usuários finais podem continuar interagindo com os dados, mesmo quando estão offline. Seus dados offline podem estar obsoletos, mas eles podem recuperar imediatamente qualquer coisa que colocarem no conjunto de dados, estejam eles online ou não.

O SDK do cliente gerencia um armazenamento SQLite local para que o aplicativo possa funcionar mesmo quando não estiver conectado.

O armazenamento SQLite funciona como um cache e é o alvo de todas as operações de leitura e gravação. O recurso de sincronização do Amazon Cognito compara a versão local dos dados à versão em nuvem e aumenta ou diminui os deltas, conforme necessário. Observe que, para sincronizar dados entre dispositivos, seu pool de identidades deve suportar identidades autenticadas.

Identidades não autenticadas estão vinculadas ao dispositivo, portanto, a menos que um usuário final se autentique, nenhum dado poderá ser sincronizado em vários dispositivos.

Com o Amazon Cognito, seu aplicativo se comunica diretamente com um provedor de identidade pública suportado (Amazon, Facebook ou Google) para autenticar usuários. O Amazon Cognito não recebe ou armazena credenciais de usuário, apenas o token OAuth ou OpenID Connect recebido do provedor de identidade.

Depois que o Amazon Cognito recebe o token, ele retorna um novo ID do Amazon Cognito para o usuário e um conjunto de credenciais temporárias da AWS com privilégios limitados. Cada identidade do Amazon Cognito tem acesso apenas a seus próprios dados no armazenamento de sincronização, e esses dados são criptografados quando armazenados. Além disso, todos os dados de identidade são transmitidos por HTTPS.

O identificador exclusivo do Amazon Cognito no dispositivo é armazenado no local seguro apropriado. Por exemplo, no iOS, o identificador do Amazon Cognito é armazenado no chaveiro do iOS. Os dados do usuário são armazenados em cache em um banco de dados SQLite local na caixa de proteção do aplicativo; se você precisar de segurança adicional, poderá criptografar esses dados de identidade no cache local implementando a criptografia no seu aplicativo.